5 Produces the backlog plot, parsing the output of the EventLoopManager. 6 Lines with the pattern "Event backlog" are looked for. 7 Events in flight are looked for as well. 17 Colors = [kBlue, kGreen + 2]
18 MarkerStyles = [kOpenCircle, kFullCircle]
30 global NEventsInFlight
32 ifile = open(logfilename,
"r") 33 lines = ifile.readlines() 37 if "Event backlog" in line:
39 re.match(
".* \(max= ([0-9]*), min= ([0-9]*) \) = ([0-9]*).*",
41 elif "Running with" in line:
42 NEventsInFlight, NThreads =
map(
44 re.match(
".*Running with ([0-9]*).* ([0-9]*) threads",
53 graph = TGraph(len(max_min_blog_vals))
55 for maxn, minn, blog
in max_min_blog_vals:
57 graph.SetPoint(counter, counter + 1, float(blog))
62 graph.SetMarkerSize(MarkesSize)
63 graph.SetMarkerStyle(MarkerStyles[graphCounter])
64 graph.SetMarkerColor(Colors[graphCounter])
65 graph.SetLineWidth(LineWidth)
66 graph.SetLineColor(Colors[graphCounter])
67 graph.SetLineStyle(LineStyles[graphCounter])
75 global NEventsInFlight
77 graph.SetPoint(0, 0., float(NEventsInFlight))
78 graph.SetPoint(1, float(nevts) + 1, float(NEventsInFlight))
80 graph.SetLineColor(kRed)
83 "GaudiHive Backlog (Brunel, 100 evts);Events Finished;Event Backlog")
88 def getText(x, y, text, scale, angle, colour, font, NDC=False):
91 "#scale[%s]{#color[%s]{#font[%s]{%s}}}" % (scale, colour, font, text))
95 lat.SetTextAngle(angle)
99 def doPlot(logfilename, logfilename_copy):
100 global NEventsInFlight
110 canvas = TCanvas(
"Backlog",
"Backlog", 1100, 900)
113 inFlightgraph.Draw(
"APL")
114 inFlightgraph.GetYaxis().SetRangeUser(0., maxY * 1.2)
115 inFlightgraph.GetXaxis().SetRangeUser(0., float(n_vals + 1))
117 graph_c.Draw(
"PLSame")
121 float(n_vals + 1) * 1.03, NEventsInFlight,
122 "#splitline{# Simultaneous}{ Events}", .6, 270, 2, 12)
123 eventInFlightLabel.Draw()
124 nThreadsLabel =
getText(.15, .7,
"%s Threads" % NThreads, .6, 0, 2, 12,
129 legend = TLegend(.7, .75, .9, .9)
130 legend.SetFillColor(kWhite)
131 legend.SetHeader(
"Algo Management")
132 legend.AddEntry(graph,
"No Cloning", LegendDrawOpts)
133 legend.AddEntry(graph_c,
"Cloning enabled", LegendDrawOpts)
136 a = raw_input(
"press enter to continue")
138 canvas.Print(
"EventBacklog.png")
141 if __name__ ==
"__main__":
144 print "Usage: plotBacklogPyRoot.py logfilename logfilename_copy" 146 doPlot(sys.argv[1], sys.argv[2])
def getText(x, y, text, scale, angle, colour, font, NDC=False)
struct GAUDI_API map
Parametrisation class for map-like implementation.
def parseLog(logfilename)
def createInFlightGraph(nevts)
def doPlot(logfilename, logfilename_copy)
def createGraph(max_min_blog_vals)