83 if tuple(lbr)
in lumicache:
84 return lumicache[tuple(lbr)]
86 lblbdb = dbSvc.openDatabase(
'COOLONL_TRIGGER/CONDBR2',
True)
87 lblb = lblbdb.getFolder(
'/TRIGGER/LUMI/LBLB')
88 lblestonl = lblbdb.getFolder(
'/TRIGGER/LUMI/LBLESTONL')
90 lbs = lblb.browseObjects((run<<32)+lbr[0],
92 cool.ChannelSelection(0))
97 inf[(run, obj.since() & 0xFFFFFFFF)] = (lbpy[
'EndTime']-lbpy[
'StartTime'])/1e9
98 if obj.since() & 0xFFFFFFFF == lbr[1]:
99 print (
'Oops: this should not happen, appears to be off-by-one error')
100 lbls = lblestonl = lblestonl.browseObjects((run<<32)+lbr[0],
102 cool.ChannelSelection(0))
105 lblpy = obj.payload()
106 infl[(run, obj.since() & 0xFFFFFFFF)] = lblpy[
'LBAvInstLumi']
112 totlum += inf[lb]*infl[lb]
114 print (
'Missing run %d, LB %d' % lb)
115 lumicache[tuple(lbr)] = totlum
121 for runnum
in rundict.keys():
124 s = xmlrpc.client.ServerProxy(SERVER)
125 flaginfo = s.get_dqmf_summary_flags_lb({
'run_list': list(runset)}, FLAGS_WE_CARE_ABOUT,
'SHIFTOFL')
128 for flag
in FLAGS_WE_CARE_ABOUT:
131 if str(run)
not in flaginfo:
132 print (
'%s not in flaginfo' % run)
135 for sublb
in rundict[run]:
136 for flag, periods
in flaginfo[str(run)].items():
137 for period
in periods:
142 record[flag].append((ip[1]-ip[0], period[2], lumi(run, ip)))
147 for pair
in rundict[run]:
148 totallum += lumi(run, pair)
149 print (
'Total lumi:', totallum)
153 for flag
in FLAGS_WE_CARE_ABOUT:
156 cols =
set([x[1]
for x
in lr])
159 llum = sum([x[2]
for x
in lr
if x[1] == col])
161 print (flag, col, llum,
'%.2f%%' % (llum/totallum*100))
162 flagsum[flag][col] = (llum/totallum*100)
163 if abs(accounted-totallum) > 1e-8:
164 print (flag,
'n.a.', totallum-accounted,
'%.2f%%' % ((1-accounted/totallum)*100))
165 flagsum[flag][
'n.a.'] = ((1-accounted/totallum)*100)
169 for key
in set(d1.keys() + d2.keys()):
170 rv[key] = d1.get(key, 0) + d2.get(key, 0)
174 for flagtop, flaggroup
in FLAGGROUPS.items():
175 vals = reduce(_sum, [flagsum[f]
for f
in flaggroup], {})
178 print (
' %s: %.2f%%' % (typ, vals[typ]/len(flaggroup)))
185 runs = dic[DataKey(
'Run')]
186 times = dic[DataKey(
'Start and endtime')]
188 starttime = float(times[-1].partition(
',')[0])
189 endtime = float(times[0].partition(
',')[2])
191 s =
'<table style="color: #777777; font-size: 85%; margin-left: 14px" cellpadding="0" cellspacing="3">\n'
193 s +=
'<tr><td><i>Number of runs selected:</i></td><td> %g</td><td></td></tr>\n' % (len(runs))
194 s +=
'<tr><td><i>First run selected:</i></td><td> %s</td><td> (%s)</td></tr>\n' % (runs[-1], time.strftime(
"%a %b %d, %Y, %X",time.gmtime(starttime)))
195 s +=
'<tr><td><i>Last run selected:</i></td><td> %s</td><td> (%s)</td></tr>\n' % (runs[0], time.strftime(
"%a %b %d, %Y, %X",time.gmtime(endtime)))
201 s +=
'<table style="margin-left: 14px">\n'
202 s +=
'<tr><td><b>Run / Event Summary</b></td></tr>\n'