176 collect_runs =
getRunLB(beg_run, end_run,dbInst)
180 physics_runs = [
Run(run, lbs.values())
for run,lbs
in collect_runs.items()]
182 dbInst.closeDatabase()
184 if len(physics_runs) == 0:
185 print(
'WARNING::Found 0 physics runs')
188 physics_runs.sort(key =
lambda x: x.run_number)
193 for run
in physics_runs:
196 key_since = run.GetRunStartTime() - 100000
197 key_until = run.GetRunEndTime() + 100000
199 f = oflDb.getFolder(
'/TRIGGER/OFLLUMI/LumiAccounting')
203 objs = f.browseObjects(key_since, key_until, cool.ChannelSelection.all(), tag)
205 filledTags[tag] = len(objs)
207 if len(filledTags) == 0:
208 print (
"ERROR: no filled tag")
210 elif len(filledTags) > 1:
211 print (
"WARNING: the number filled tags is more than 1")
213 filledTags =
sorted(filledTags.items(),key=
lambda x:x[1],reverse=
True)
214 objs = f.browseObjects(key_since, key_until, cool.ChannelSelection.all(), filledTags[0][0])
217 crun = obj.payload()[
'Run']
218 clb = obj.payload()[
'LumiBlock']
220 if crun != run.run_number:
225 lb.ReadPhysicsLumiInfo(obj.payload())
229 i_LB = obj.payload()[
'LumiBlock']
231 'AtlasPhysics' : obj.payload()[
'AtlasPhysics'],
232 'InstLumi' : obj.payload()[
'InstLumi']/10000.,
233 'LiveFraction' : obj.payload()[
'LiveFraction'],
234 'Duration' : lb.GetLBSecs(),
235 'start_time' : lb.start_time,
236 'end_time' : lb.end_time
239 if len(run.lbs) != icount:
240 print(
'WARNING::getRunPhysicsLumi - number of missed lbs=%d' ,(len(run.lbs) - icount))
241 print(
'WARNING:: number of run lbs=%d' ,(len(run.lbs)))
242 print(
'WARNING:: number of matched lbs=%d' ,(icount))
244 RunsLumiDic = LumiDic
246 oflDb.closeDatabase()