|
ATLAS Offline Software
|
|
def | WrapIntoHTML (content, title="Run query result", extracss=None) |
|
def | OpenWindow (content, title="Run query result", extracss=None, size="normal") |
|
def | CreatePopupHtmlPage (name, wincontent) |
|
def | CreateLBTable (run) |
|
def | CreateLBTooltip (run) |
|
def | CreateDQTooltip (run) |
|
def | CreateStreamOverlapTooltip (run, k) |
|
def | createRatePopupWindow (v, run) |
|
def | createRateWinContent (loopcntr, v, lbduration, triggers_in_range, run, path) |
|
def | makeSummaryPlotForLHC (run) |
|
def | makeSummaryPageForLHC (run, yvec, path) |
|
◆ CreateDQTooltip()
def python.html.AtlRunQueryHtmlUtils.CreateDQTooltip |
( |
|
run | ) |
|
Definition at line 87 of file AtlRunQueryHtmlUtils.py.
88 if 'DQ' not in Run.ShowOrder:
91 def_with_primaries = run.stats[
'DQ'][
"primaries"]
94 for x
in sorted(def_with_primaries.keys()):
95 l_ready = [y
for y
in def_with_primaries[x]
if run.data.isReady( (y.since,y.until) )]
98 content =
'<strong><b>%s: comments for run %i:</b></strong><br><span style="font-size: 80%%">ATLAS READY in LBs %s</span>' % (x,run.runNr,
', '.
join([
"%i−%i" % (r.startlb, r.endlb-1)
for r
in run.data.isReady()]))
99 content +=
'<hr width="100%%">'
100 content +=
'<table style="width: auto; white-space: nowrap; border: 0px solid; margin: 0 0 0 0; border-spacing: 0px; border-collapse: separate; padding: 0px;">'
102 s =
"%i−%i" % (y.since,y.until-1)
if y.until-y.since!=1
else "%i" % (y.since)
103 content +=
'<tr><td style="color:blue; padding-right: 5px;">LB %s</td>' % s
104 content +=
'<td style="font-weight:bold; padding-right: 5px;">%s</td><td><i>%s</i></td></tr>' % (y.description.split(
"->")[-1], y.comment)
105 content +=
'</table>'
106 run.addToolTip(
"dqdefect_%i_%s" % (run.runNr,x), content)
108 from itertools
import groupby
109 from operator
import attrgetter
111 for k
in def_with_primaries:
113 for p,v
in groupby(
sorted(def_with_primaries[k]), key=attrgetter(
'description',
'comment')):
114 d[p] = [(e.since, e.until)
for e
in v]
118 content =
'<strong><b>%s: comments for run %i:</b></strong><br><span style="font-size: 80%%">ATLAS READY in LBs %s</span>' % (x,run.runNr,
', '.
join([
"%i−%i" % (r.startlb, r.endlb-1)
for r
in run.data.isReady()]))
119 content +=
'<hr width="100%%">'
120 content +=
'<table style="width: auto; white-space: nowrap; border: 0px solid; margin: 0 0 0 0; border-spacing: 0px; border-collapse: separate; padding: 0px;">'
121 for pdef
in sorted(gr[x]):
122 l_ready = [y
for y
in gr[x][pdef]
if run.data.isReady( y )]
125 s =
", ".
join([
"%i−%i" % y
if y[1]-y[0]!=1
else "%i" % (y[0])
for y
in l_ready])
126 content +=
'<tr><td colspan="2" style="color:blue; padding-right: 5px; max-width: 130;">LB %s</td></tr>' % s
127 content +=
'<tr><td style="font-weight:bold; padding-right: 5px;">%s</td><td><i>%s</i></td></tr>' % (pdef[0].
split(
"->")[-1], pdef[1])
128 content +=
'</table>'
129 run.addToolTip(
"dqdefect_%i_%s" % (run.runNr,x), content)
◆ CreateLBTable()
def python.html.AtlRunQueryHtmlUtils.CreateLBTable |
( |
|
run | ) |
|
Definition at line 42 of file AtlRunQueryHtmlUtils.py.
43 body =
'<table class="outer">'
44 body +=
'<tr><td><b>LB start times (%s) and durations for run %i:</b><br>' % (QC.tzdesc(),run.runNr)
45 body +=
'<font size="-1" color="#888888">(Begin/end of run: %s)</font>' % run.timestr(
'html', run.runNr != Run.runnropen)
46 body +=
'<hr color="black" size=1>'
47 body +=
'<table class="lb">'
48 body +=
'<tr><th>LB</th><th>Start time (%s)</th><th>Duration (sec)</th></tr>' % QC.tzdesc()
50 for idx,(lbtime,lbendtime)
in enumerate(run.lbtimes):
52 timetuple = time.localtime(lbtime/1.E9)
if QC.localtime
else time.gmtime(lbtime/1.E9)
53 body +=
'<tr><td>%s</td><td>%s</td><td>%.2f</td></tr>' % (lb, time.strftime(
'%X',timetuple), (
float(lbendtime)-
float(lbtime))/1.E9)
54 if run.runNr == Run.runnropen:
55 body +=
'<tr><td style="text-align:left"colspan="3"><i> Run still ongoing ...</i></td></tr>'
56 body +=
'</tr></table>'
57 body +=
'<hr color="red" size=1><font color="#777777"><font size="-1"><i><font size="-2">Created by AtlRunQuery on: %s</font></i></font></td></tr></table>' %
str(datetime.datetime.now())
58 body +=
'</td></tr></table>'
59 return body.replace(
'"',
'"')
◆ CreateLBTooltip()
def python.html.AtlRunQueryHtmlUtils.CreateLBTooltip |
( |
|
run | ) |
|
Definition at line 63 of file AtlRunQueryHtmlUtils.py.
64 if len(run.lbtimes)==0:
67 content =
'<strong><b>LB start times (%s) and durations for run %i:</b></strong><br>Begin/end of run: %s' % (QC.tzdesc(), run.runNr, run.timestr(
'html', run.runNr != Run.runnropen))
68 content +=
'<hr style="width:100%; background-color: #BBBBBB; height:1px; margin-left:0; border:0"/>'
69 content +=
'<table style="width: auto; border: 0px solid; border-width: margin: 0 0 0 0; 0px; border-spacing: 0px; border-collapse: separate; padding: 0px; font-size: 90%">'
71 if len(run.lbtimes) > 150:
72 content +=
'<td><i>Too many LBs to show ... (click instead!)</i></td>'
74 for idx,(lbstart, lbend)
in enumerate(run.lbtimes):
76 timetuple = time.localtime(lbstart/1.E9)
if QC.localtime
else time.gmtime(lbstart/1.E9)
77 content +=
'<td style="text-align:right"> %s: %s </td><td style="text-align:right">(%.1f sec)</td>' % (lb, time.strftime(
"%X",timetuple), (
float(lbend)-
float(lbstart))/1.E9)
79 content +=
'</tr><tr>'
80 content +=
'</tr></table>'
81 content +=
'<hr style="width:100%; background-color: #BBBBBB; height:1px; margin-left:0; border:0"/>'
82 content +=
'<font color="#AA0000">Click to obtain full list in independent window!</font>'
83 run.addToolTip(
'LBStart_%i' % run.runNr, content )
◆ CreatePopupHtmlPage()
def python.html.AtlRunQueryHtmlUtils.CreatePopupHtmlPage |
( |
|
name, |
|
|
|
wincontent |
|
) |
| |
Definition at line 28 of file AtlRunQueryHtmlUtils.py.
29 filename =
'popupContent_%s.html' % name
30 outfn =
'%s/%s' % (QC.datapath, filename)
32 if type(wincontent)==list:
33 for line
in wincontent:
34 print (line, file = fh)
36 print (wincontent, file = fh)
◆ createRatePopupWindow()
def python.html.AtlRunQueryHtmlUtils.createRatePopupWindow |
( |
|
v, |
|
|
|
run |
|
) |
| |
Definition at line 261 of file AtlRunQueryHtmlUtils.py.
262 from CoolRunQuery.output.AtlRunQueryRoot
import makeRatePlot
265 lbduration = [(idx+1,lbtime,(lbendtime-lbtime)/1e9)
for idx,(lbtime,lbendtime)
in enumerate(run.lbtimes) ]
267 duration = (run.lbtimes[-1][1] - run.lbtimes[0][0])/1e9
270 averrate.append((tr,
sum([
int(co[3])
for co
in v[tr]])/duration))
271 averrate.sort(
lambda x,y: y[1]-x[1])
279 triggers_in_range = averrate[plotstart:plotstart+plotrange]
280 while len(triggers_in_range)>0:
281 path =
makeRatePlot( v, lbduration, triggers_in_range, averrate,
'Luminosity block number',
'Rate [Hz]',
282 'trigcounts%i_vs_lb_run_%i' % (loopcntr,run.runNr),
283 'Trigger Rates for run %i' % (run.runNr),
284 QC.datapath, histoText )
290 triggergroups += [triggers_in_range]
293 plotstart += plotrange
294 triggers_in_range = averrate[plotstart:plotstart+plotrange]
296 return triggergroups,paths,wincmds
◆ createRateWinContent()
def python.html.AtlRunQueryHtmlUtils.createRateWinContent |
( |
|
loopcntr, |
|
|
|
v, |
|
|
|
lbduration, |
|
|
|
triggers_in_range, |
|
|
|
run, |
|
|
|
path |
|
) |
| |
Definition at line 301 of file AtlRunQueryHtmlUtils.py.
303 triggers = [tr[0]
for tr
in triggers_in_range]
306 wincontent = [
'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">']
307 wincontent += [
'<html xmlns:"my">']
308 wincontent += [
' <head>']
309 wincontent += [
' <title>Run query result for trigger rates</title>']
310 wincontent += [
' <LINK href="atlas-runquery-lb.css" rel="stylesheet" type="text/css">']
311 wincontent += [
' </head>']
312 wincontent += [
' <body>']
313 wincontent += [
' <table class="outer" style="padding: 5px">']
314 wincontent += [
' <tr><td><strong><b>Trigger rates for run %s:</b></strong><br><font size="-1" color="#888888">(Begin/end of run: %s)</font></td></tr>' % (run.runNr, run.timestr(
'html', run.runNr != Run.runnropen))]
315 wincontent += [
' <tr><td colspan="2"><hr color="black" size=1></td></tr>']
316 wincontent += [
' <tr><td><img src="%s" align="left"></td>' % path.rsplit(
'/')[-1]]
317 wincontent += [
' <td><img src="%s" align="left"></td></tr>' % path.rsplit(
'/')[-1].
replace(
'.png',
'_log.png')]
318 wincontent += [
' <tr><td colspan="2"><hr color="black" size=1></td></tr>']
319 wincontent += [
' <tr><td colspan="2" style="font-size:70%; height:30px; text-align: right; vertical-align: middle;"><b>TBP</b> - <i>trigger before prescale</i>,<b>TAV</b> - <i>trigger after veto</i>, <b>DTF</b> - <i>dead time fraction</i></td></tr>']
320 wincontent += [
' <tr><td colspan="2">']
321 wincontent += [
' <table class="LB">']
322 header =
'<th>LB</th><th>Start time</th><th>Duration</th>'
323 header2 =
'<th></th><th>(%s)</th><th>(s)</th>' % QC.tzdesc()
325 if "UNPAIRED" in tr
or "EMPTY" in tr
or "FILLED" in tr:
326 header +=
'<th colspan="3">%s<BR>_%s</th>' % tuple(tr.rsplit(
'_',1))
328 header +=
'<th colspan="3">%s</th>' % tr
329 header2 +=
'<th>TBP</th><th>TAV</th><th>DTF</th>'
330 wincontent += [
' <thead>']
331 wincontent += [
' <tr>%s</tr>' % header]
332 wincontent += [
' <tr class="second">%s</tr>' % header2]
333 wincontent += [
' </thead>']
334 wincontent += [
' <tbody>']
335 for lb, lbstart, dt
in lbduration:
336 timetuple = time.localtime(lbstart/1.E9)
if QC.localtime
else time.gmtime(lbstart/1.E9)
337 linecontent =
'<td>%i</td><td>%s</td><td class="dt">%3.1f</td>' % (lb,time.strftime(
"%X",timetuple),dt)
339 _lb,bp,ap,av = v[tr][lb-1]
355 deadtime = ( apr - avr ) / apr
357 bg=
' style="background-color: #ff0000;"'
359 bg=
' style="background-color: #ff3333;"'
361 bg=
' style="background-color: #ff6666;"'
363 bg=
' style="background-color: #ff9999;"'
365 bg=
' style="background-color: #ffcccc;"'
366 linecontent +=
'<td>%3.1f</td><td>%3.1f</td><td%s class="dt">(%2.1f%%)</td>' % (bpr,avr,bg,100*deadtime)
371 wincontent += [
' <tr style="background:%s">%s</tr>' % (col,linecontent)]
373 if run.runNr == Run.runnropen:
374 wincontent += [
' <tr><td style="text-align:left"colspan="%i"><i> Run still ongoing ...</i></td></tr>' % (len(triggers)+1)]
375 wincontent += [
' </tbody>']
376 wincontent += [
' </table>']
377 wincontent += [
' </td></tr>']
378 wincontent += [
' <tr><td colspan="2"><hr color="red" size=1></td></tr>']
379 wincontent += [
' <tr><td colspan="2">']
380 wincontent += [
' <font color="#777777" size="-1"><i><font size="-2">Created by AtlRunQuery on: %s</font></i></font>' %
str(datetime.datetime.now())]
381 wincontent += [
' </td></tr>']
382 wincontent += [
' </table>']
383 wincontent += [
' </body>']
384 wincontent += [
'</html>']
◆ CreateStreamOverlapTooltip()
def python.html.AtlRunQueryHtmlUtils.CreateStreamOverlapTooltip |
( |
|
run, |
|
|
|
k |
|
) |
| |
Definition at line 132 of file AtlRunQueryHtmlUtils.py.
133 if not run.stats[k.ResultKey][
'StrOverlap']:
134 ovstr =
'<tr><td width="200"><b><i>None (or not available for this run)</i></b></td></tr>'
138 for stream, fraction
in run.stats[k.ResultKey][
'StrOverlap']:
140 tdstr =
'<td class="tdov%i">' % (nacc%2+1)
141 fs =
"%.2g" % fraction
144 ovstr +=
'<tr>%s%s</td>%s = </td>%s%s%%</td></tr>' % (tdstr, stream, tdstr, tdstr, fs)
145 strpairs = [(
'STR:physics_MuonswBeam',
'physics_L1Calo'),
146 (
'STR:physics_MinBias',
'physics_L1Calo'),
147 (
'STR:physics_Muons',
'physics_Egamma'),
148 (
'STR:physics_Muons',
'physics_JetTauEtmiss'),
149 (
'STR:physics_Egamma',
'physics_JetTauEtmiss'),
150 (
'STR:physics_MinBias',
'physics_JetTauEtmiss')]
152 if k==st[0]
and stream==st[1]:
154 fname =
'data_' + s1.strip() +
'_' + st[1].strip() +
'.txt'
155 f =
open(QC.datapath +
'/' + fname,
'a')
156 f.write(
'%i %f\n' % (run.runNr,fraction))
160 boxcontent =
'<table class="streamtiptable"><tr><td>'
161 boxcontent +=
'<strong><b>Info for stream: <font color="#AA0000">%s</font></b></strong>' % k.Header[4:]
162 boxcontent +=
'</td></tr><tr><td>'
163 boxcontent +=
'<hr style="width:100%; background-color: #999999; height:1px; margin-left:0; border:0"/>'
164 boxcontent +=
'</td></tr>'
165 boxcontent +=
'<tr><td>'
166 boxcontent +=
'<strong><b>Stream overlaps</b></strong> (nonzero overlaps only):'
167 boxcontent +=
'</td></tr><tr><td>'
168 boxcontent +=
'<table class="overlaptable">%s</table><strong>' % ovstr
169 boxcontent +=
'</td></tr>'
172 prodsteps = [
'StrTier0TypesRAW',
'StrTier0TypesESD' ]
175 if p
in run.stats[k.ResultKey]:
176 typelist =
list(run.stats[k.ResultKey][p])
182 for i, t0out
in enumerate(typelist):
183 if 'TMP' not in t0out:
187 t0outtxt =
'NTUP_... <font size="-2">(types as above)</font>'
190 if run.stats[k.ResultKey][p][t0out]:
191 t0text +=
'<font color="#BB0000">%s</font>, ' % t0outtxt
193 t0text +=
'%s, ' % t0outtxt
196 allt0text +=
'<strong><b><i>'
198 allt0text +=
'Produced by reconstruction step'
199 if 'StrTier0AMI' in run.stats[k.ResultKey]
and run.stats[k.ResultKey][
'StrTier0AMI']:
200 if p
in run.stats[k.ResultKey][
'StrTier0AMI']:
201 allt0text +=
' (AMI tag: %s)' % run.stats[k.ResultKey][
'StrTier0AMI'][p]
203 allt0text +=
' (AMI tag: %s)' %
'UNKNOWN'
205 allt0text +=
'Produced by merge step'
207 allt0text +=
':</i></b></strong>'
209 allt0text +=
'<table class="overlaptable"><tr><td style="padding-left:10px">' + t0text[:len(t0text)-2] +
'</td></tr></table>'
210 if p != prodsteps[-1]:
214 boxcontent +=
'<tr><td>'
215 boxcontent +=
'<hr style="width:100%; background-color:#999999; height:1px; margin-left:0; border:0"/>'
216 boxcontent +=
'</td></tr><tr><td>'
217 boxcontent +=
'<strong><b>Tier-0 output types for this stream:</b></strong><br>(Datasets in <font color="#BB000"><strong><b>red</b></strong></font> are <font color="#BB000">replicated to CAF</font>'
218 boxcontent +=
'</td></tr><tr><td>'
219 boxcontent +=
'<table class="overlaptable" style="color:#222222"><tr><td>%s</td></tr></table>' % allt0text
220 boxcontent +=
'</td></tr>'
223 lbrecinfo = run.stats[k.ResultKey][
'LBRecInfo']
225 lbrecinfo =
'<tr><td style="font-size:75%"><i>No LB information in SFO DB. <br> Probably because files for this stream <br>were not closed at LB boundaries by SFO.</i></td></tr>'
230 for lb,nev
in lbrecinfo:
236 output +=
'<td style="font-size:75%%;text-align:right">%i (%s)</td>' % (lbs[idx],ev[lbs[idx]])
237 if len(lbs)>50
and idx==23:
238 output +=
'</tr><tr><td style="font-size:75%; text-align:left" colspan="8"> ... <i>too many LBs ... show begin and end of run only...</i></td></tr>'
241 output +=
'</tr><tr>'
246 boxcontent +=
'<tr><td>'
247 boxcontent +=
'<hr style="width:100%; background-color:#999999; height:1px; margin-left:0; border:0"/>'
248 boxcontent +=
'<strong><b>Recorded LB (#Events)</b></strong></strong>:'
249 boxcontent +=
'</td></tr><tr><td>'
250 boxcontent +=
'<table class="eventsperlbstreamtable" style="color:#222222">%s</table>' % lbrecinfo
251 boxcontent +=
'</td></tr></table>'
252 if 'No LB information' not in lbrecinfo:
253 boxcontent +=
'<font color="#AA0000"><strong><b>Click to obtain the full LB list and plots in independent window!</b></strong></font>'
255 run.addToolTip(
"STROV_%i_%s" % (run.runNr, k.ResultKey[4:]), boxcontent)
◆ makeSummaryPageForLHC()
def python.html.AtlRunQueryHtmlUtils.makeSummaryPageForLHC |
( |
|
run, |
|
|
|
yvec, |
|
|
|
path |
|
) |
| |
Definition at line 437 of file AtlRunQueryHtmlUtils.py.
439 wincontent =
'<table class="outer" style="padding: 5px; font-family: sans-serif; font-size: 85%"><tr><td>'
440 wincontent +=
'<strong><b>LHC beam energy and intensities during run %i:</b></strong><br><font size="-1"><font color="#888888">(Begin/end of run: %s)</font></font><hr color="black" size=1>' % (run.runNr, run.timestr(
'html', run.runNr != Run.runnropen))
441 wincontent +=
'<table style="padding: 0px"><tr><td>'
442 wincontent +=
'<img src="%s" align="left"></td>' % path
443 wincontent +=
'</td></tr></table>'
444 wincontent +=
'<hr color="black" size=1>'
445 wincontent +=
'<table class="lb">'
446 wincontent +=
'<tr><th style="text-align:right">LB</th><th style="text-align:right"> Start time<br> (%s)</th><th style="text-align:right"> Duration<br>(sec)</th><th style="text-align:right"> Beam energy<br>(GeV)</th><th style="text-align:right"> Intensity Beam-1<br>(1e11 protons)</th><th style="text-align:right"> Intensity Beam-2<br>(1e11 protons)</th>' % QC.tzdesc()
447 wincontent +=
'</tr><tr style="background:%s">' %
'#eeeeee'
448 nbeam1intensity = len(yvec[0])
449 nbeam2intensity = len(yvec[1])
450 nbeamenergy = len(yvec[2])
451 for idx,(lbtime,lbendtime)
in enumerate(run.lbtimes):
453 timetuple = time.localtime(lbtime/1.E9)
if QC.localtime
else time.gmtime(lbtime/1.E9)
454 beam1intensity = yvec[0][idx]
if idx<nbeam1intensity
else 0
455 beam2intensity = yvec[1][idx]
if idx<nbeam2intensity
else 0
456 beamenergy = yvec[2][idx]
if idx<nbeamenergy
else 0
457 wincontent +=
'<td>%i</td><td>%s</td><td>%.2f</td><td>%i</td><td>%.4g</td><td>%.4g</td>' % (lb, time.strftime(
"%X",timetuple), (
float(lbendtime)-
float(lbtime))/1.E9, beamenergy, beam1intensity, beam2intensity)
462 wincontent +=
'</tr><tr style="background:%s">' % col
463 if run.runNr == Run.runnropen:
464 wincontent +=
'<tr><td style="text-align:left"colspan="4"><i> Run still ongoing ...</i></td></tr>'
465 wincontent +=
'</tr></table>'
466 wincontent +=
"""<hr color="red" size=1><font color="#777777"><font size="-1"><i><font size="-2">Created by AtlRunQuery on: %s</font></i></font></td></tr></table>""" %
str(datetime.datetime.now())
◆ makeSummaryPlotForLHC()
def python.html.AtlRunQueryHtmlUtils.makeSummaryPlotForLHC |
( |
|
run | ) |
|
Definition at line 393 of file AtlRunQueryHtmlUtils.py.
394 from CoolRunQuery.output.AtlRunQueryRoot
import makeLBPlotSummaryForLHC
398 lbrange =
range(run.lastlb+1)
399 yvec = [(run.lastlb+1)*[0], (run.lastlb+1)*[0], (run.lastlb+1)*[-1]]
403 hasStableBeamsInfo, xvecStb = run.getStableBeamsVector()
404 for ik,k
in enumerate( [
'olc:beam1intensity',
'olc:beam2intensity',
'lhc:beamenergy' ] ):
405 if k
not in Run.ShowOrder:
407 for entry
in run.data[k]:
408 if entry.startlb == 0:
411 val =
float(entry.value)
if (entry.value!=
'n.a.')
else 0
421 lastlb =
min(entry.lastlb,run.lastlb)
423 for lb
in range(entry.startlb,lastlb+1):
426 for ilb
in range(entry.startlb,lastlb+1):
428 if not hasStableBeamsInfo
or ilb
in xvecStb:
434 return path, lbrange, yvec, ymax
◆ OpenWindow()
def python.html.AtlRunQueryHtmlUtils.OpenWindow |
( |
|
content, |
|
|
|
title = "Run query result" , |
|
|
|
extracss = None , |
|
|
|
size = "normal" |
|
) |
| |
Definition at line 20 of file AtlRunQueryHtmlUtils.py.
20 def OpenWindow(content, title="Run query result", extracss=None, size="normal"):
22 openWindowCmd =
'openWindow'
24 openWindowCmd =
'openLargeWindow'
25 return "<a href=\"javascript:%s('Print', '%s')\">" % ( openWindowCmd, wrap.replace(
'"',
'"') )
◆ WrapIntoHTML()
def python.html.AtlRunQueryHtmlUtils.WrapIntoHTML |
( |
|
content, |
|
|
|
title = "Run query result" , |
|
|
|
extracss = None |
|
) |
| |
Definition at line 8 of file AtlRunQueryHtmlUtils.py.
8 def WrapIntoHTML(content, title="Run query result", extracss=None):
9 wrap =
'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'
10 wrap +=
'<html xmlns:"my"><head><title>%s</title>' % title
11 wrap +=
'<LINK href="atlas-runquery-lb.css" rel="stylesheet" type="text/css">'
14 wrap +=
'<LINK href="%s" rel="stylesheet" type="text/css">' % css
16 wrap +=
'<body>%s</body></html>' % content
std::string replace(std::string s, const std::string &s2, const std::string &s3)
def createRateWinContent(loopcntr, v, lbduration, triggers_in_range, run, path)
def WrapIntoHTML(content, title="Run query result", extracss=None)
def OpenWindow(content, title="Run query result", extracss=None, size="normal")
def makeSummaryPageForLHC(run, yvec, path)
def createRatePopupWindow(v, run)
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
std::string join(const std::vector< std::string > &v, const char c=',')
def makeRatePlot(v, lbduration, plottriggers, averrate, xtit, ytit, name, title, datapath, printText='')
def CreatePopupHtmlPage(name, wincontent)
def makeLBPlotSummaryForLHC(lbrange, xvecStb, yvec, runNr, datapath, printText='')
def CreateStreamOverlapTooltip(run, k)
def makeSummaryPlotForLHC(run)