ATLAS Offline Software
TriggerDataAccess.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 __author__ = 'Javier Montejo'
4 __version__="$Revision: 2.0 $"
5 __doc__="Access to Trigger DB and TriggerMenu to read past and future prescales"
6 
7 import itertools
8 import sys
9 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, LBexceptions, TriggerRenaming
10 from TriggerMenuMT.TriggerAPI.TriggerPeriodData import TriggerPeriodData
11 from AthenaCommon.Logging import logging
12 log = logging.getLogger(__name__)
13 
14 import six
15 import os
16 
17 def getRunLBFromU64(runlb):
18  run = runlb >> 32
19  lb = runlb & ((1<<32)-1)
20  return ( int(run), int(lb) )
21 
22 
24  """
25  returns all runs in the given period which have the ReadyForPhysics flag set in at least 1 LB
26  """
27 
28  log.info("Loading COOL libs...")
29  from CoolLumiUtilities.CoolDataReader import CoolDataReader
30  log.info("Done loading libs, starting now ...")
31 
32  myReader = CoolDataReader('COOLONL_TDAQ/CONDBR2', '/TDAQ/RunCtrl/DataTakingMode')
33  runsWithReady = {}
34 
35  firstRun = min([x for x in period.keys()])
36  lastRun = max([x for x in period.keys()])+1
37  since = (firstRun << 32)
38  until = (lastRun << 32)
39 
40  myReader.setIOVRange( since, until )
41  myReader.readData()
42 
43  for obj in myReader.data:
44  isReady = (obj.payload()['ReadyForPhysics'] == 1)
45  if not isReady:
46  continue
47  sincerun, sincelb = getRunLBFromU64(obj.since())
48  untilrun, untillb = getRunLBFromU64(obj.until())
49  if sincerun != untilrun:
50  log.info("WARNING: ready block crosses run boundaries:", sincerun, untilrun)
51  if sincerun not in period: continue
52  if sincerun in runsWithReady:
53  runsWithReady[sincerun] += [ (sincelb, untillb) ]
54  else:
55  runsWithReady[sincerun] = [ (sincelb, untillb) ]
56 
57 
58  return runsWithReady
59 
60 
61 def getKeys( listOfRuns, doPrint = False ):
62 
63  from CoolLumiUtilities.CoolDataReader import CoolDataReader
64 
65  keysByRun = {}
66 
67  mySmkReader = CoolDataReader('COOLONL_TRIGGER/CONDBR2', '/TRIGGER/HLT/HltConfigKeys')
68  myL1pskReader = CoolDataReader('COOLONL_TRIGGER/CONDBR2', '/TRIGGER/LVL1/Lvl1ConfigKey')
69  myHltpskReader = CoolDataReader('COOLONL_TRIGGER/CONDBR2', '/TRIGGER/HLT/PrescaleKey')
70  #myBgskReader = CoolDataReader('COOLONL_TRIGGER/CONDBR2', '/TRIGGER/LVL1/BunchGroupKey')
71 
72  import tqdm
73  pbar = tqdm.tqdm(sorted(listOfRuns),unit=" runs",bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}')
74  for run in pbar:
75 
76  listOfReadyBlocks = listOfRuns[run]
77 
78  pbar.set_description(f"Getting keys for run {run}")
79 
80  since = (run << 32)
81  until = ((run+1) << 32)
82 
83  # super master key
84  mySmkReader.setIOVRange( since, until - 1 )
85  mySmkReader.readData()
86  for obj in mySmkReader.data:
87  smk = obj.payload()['MasterConfigurationKey']
88  sincerun, sincelb = getRunLBFromU64(obj.since())
89  untilrun, untillb = getRunLBFromU64(obj.until())
90  keysByRun.setdefault(run,{})['smk'] = smk
91 
92  for sincelb, untillb in listOfReadyBlocks:
93 
94  since = (run << 32) + sincelb
95  until = (run << 32) + untillb
96 
97  # l1 prescale keys
98  myL1pskReader.setIOVRange( since, until )
99  myL1pskReader.readData()
100  for obj in myL1pskReader.data:
101  l1psk = obj.payload()['Lvl1PrescaleConfigurationKey']
102  sincerun2, sincelb2 = getRunLBFromU64(obj.since())
103  untilrun2, untillb2 = getRunLBFromU64(obj.until())
104  if sincelb2 == untillb: break
105  keysByRun.setdefault(run,{}).setdefault('l1psk',[]).append((l1psk,sincerun2, sincelb2,untilrun2, untillb2-1)) #use same convention as GRL, last lb is included
106 
107  # hlt prescale keys
108  myHltpskReader.setIOVRange( since, until )
109  myHltpskReader.readData()
110  for obj in myHltpskReader.data:
111  hltpsk = obj.payload()['HltPrescaleKey']
112  sincerun2, sincelb2 = getRunLBFromU64(obj.since())
113  untilrun2, untillb2 = getRunLBFromU64(obj.until())
114  if sincelb2 == untillb: break
115  keysByRun.setdefault(run,{}).setdefault('hltpsk',[]).append((hltpsk,sincerun2, sincelb2,untilrun2, untillb2-1)) #use same convention as GRL, last lb is included
116 
117 
125 
126  if doPrint:
127  log.info(keysByRun)
128 
129  return keysByRun
130 
131 def getHLTPrescalesRun2(connection,psk):
132  """returns set name, prescale and passthrough
133  values for a given HLT prescale key
134  @connection - connection string, e.g. TRIGGERDB
135  @psk - HLT prescale key
136  @return (ps name, [('L2/EF',chainId,prescale,pass-through),...])
137  """
138 
139  res = queryHLTPrescaleTableRun2(connection,psk)
140  prescales = {r[0]:r[3] for r in res if r and r[1]=='Prescale'}
141  rerun = {r[0]:r[3] for r in res if r and r[1]=='ReRun'}
142  for x in prescales:
143  if x not in rerun: rerun[x] = False
144  return {x: (prescales[x],rerun[x]) for x in prescales}
145 
146 def queryHLTPrescaleTableRun2(connection,psk):
147 
148  from TrigConfigSvc.TrigConfigSvcUtils import getTriggerDBCursor, executeQuery
149 
150  global cursor, schemaname
151  cursor,schemaname = getTriggerDBCursor(connection)
152 
153  output = [ "PS.HPR_CHAIN_COUNTER", "PS.HPR_TYPE", "PS.HPR_CONDITION" , "PS.HPR_VALUE"]
154 
155  tables = {}
156  tables['PS'] = 'HLT_PRESCALE'
157 
158  condition = [ "PS.HPR_PRESCALE_SET_ID = :psk" ]
159 
160  bindvars = { "psk": psk }
161 
162  res = executeQuery(cursor, output, condition, schemaname, tables, bindvars)
163 
164  return res
165 
166 
167 def fillHLTmap( info, hltMap_prev , lbCount, run, grlblocks):
168  from TrigConfigSvc.TrigConfigSvcUtils import getL1Items, getL1Prescales
169 
170  from TrigConfIO.L1TriggerConfigAccess import L1MenuAccess,L1PrescalesSetAccess # run3 menu access
171  from TrigConfIO.HLTTriggerConfigAccess import HLTMenuAccess,HLTPrescalesSetAccess # run3 menu access
172 
173  from collections import defaultdict
174 
175  # for run2 or earlier, need to quieten output of TrigConfigSvcUtils
176  tcsLogger = logging.getLogger("TrigConfigSvcUtils.py")
177  tcsLogLevel = tcsLogger.level
178  tcsLogger.setLevel(logging.ERROR)
179 
180  lvl = int(logging.root.level)
181  logging.root.setLevel(logging.WARNING)
182 
183  # obtain map l1 item name => CTP ID
184  # obtain map hltid => (hltname, l1seed)
185  if run > 400000:
186  items = {}; chainsHLT = {}
187  for name,value in L1MenuAccess(dbalias = 'TRIGGERDB_RUN3', smkey = info['smk']).items().items():
188  items[name] = value["ctpid"]
189  for name,value in HLTMenuAccess(dbalias = 'TRIGGERDB_RUN3', smkey = info['smk']).chains().items():
190  if "L1" not in value["l1item"]: continue # filtering
191  chainsHLT[value["nameHash"]] = (name,value["l1item"])
192  else:
193  items = getL1Items('oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2', info['smk'])
194  chainsHLT = getChainsWithL1seed('oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2', info['smk']) # returns map HLT ID => (HLT name, L1 seed)
195  chainsHLT = {k:v for (k,v) in six.iteritems (chainsHLT) if "L1" in v[1]} # filtering
196 
197 
198 
199  tmphltList = []
200  for lbrange in info['hltpsk']:
201  lbstart, lbend = lbrange[2], lbrange[4]
202  if lbend ==-1: lbend = 2000
203  if run > 400000:
204  hltprescales = {}
205  for name,value in HLTPrescalesSetAccess(dbalias='TRIGGERDB_RUN3',hltpskey=lbrange[0]).prescales().items():
206  rerun=-1.0 # how to determine?
207  # key seems to be a float (from looking at type(list(getHLTPrescalesRun2("TRIGGERDB",3000).keys())[0]))
208  # ATR-30554: There is at least one instance in smk:3393 hltpsk:11710 where the prescale is string encoded
209  hltprescales[value["hash"]] = (float(value["prescale"]),rerun)
210  else:
211  hltprescales = getHLTPrescalesRun2('oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2', lbrange[0])
212  tmphltList.append(( lbstart, lbend,hltprescales) )
213 
214  tmpl1List = []
215  for lbrange in info['l1psk']:
216  lbstart, lbend = lbrange[2], lbrange[4]
217  if lbend ==-1: lbend = 2000
218  if run > 400000:
219  l1ps = L1PrescalesSetAccess(dbalias='TRIGGERDB_RUN3',l1pskey=lbrange[0])
220  l1prescales = {name: l1ps.prescale(name) for name in l1ps.itemNames()}
221  else:
222  l1psname, l1prescales = getL1Prescales('oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2', lbrange[0])
223  l1prescales = list(l1prescales)
224  l1prescales = {l1name: l1prescales[int(l1id)] for (l1name, l1id) in six.iteritems (items)}
225  tmpl1List.append(( lbstart, lbend,l1prescales) )
226 
227  logging.root.setLevel(lvl)
228  tcsLogger.setLevel(tcsLogLevel)
229 
230  #merge the lb ranges of HLT and L1
231  hltindex, l1index = 0,0
232  mergedList = []
233  while hltindex < len(tmphltList) and l1index < len(tmpl1List) :
234  if tmphltList[hltindex][1] == tmpl1List[l1index][1]:
235  lbstart, lbend = max(tmphltList[hltindex][0],tmpl1List[l1index][0]), tmphltList[hltindex][1]
236  mergedList.append((lbstart, lbend,tmphltList[hltindex][2],tmpl1List[l1index][2]))
237  hltindex += 1
238  l1index += 1
239  elif tmphltList[hltindex][1] > tmpl1List[l1index][1]:
240  lbstart, lbend = max(tmphltList[hltindex][0],tmpl1List[l1index][0]), tmpl1List[l1index][1]
241  mergedList.append((lbstart, lbend,tmphltList[hltindex][2],tmpl1List[l1index][2]))
242  l1index += 1
243  else:
244  lbstart, lbend = max(tmphltList[hltindex][0],tmpl1List[l1index][0]), tmphltList[hltindex][1]
245  mergedList.append((lbstart, lbend,tmphltList[hltindex][2],tmpl1List[l1index][2]))
246  hltindex += 1
247 
248  # if user does a "touch liveFractions.txt" then we will populate info to that file for further debugging
249  f = open("liveFractions.txt","a") if os.path.exists("liveFractions.txt") else None
250 
251  hltMap = {}
252  for lbstart, lbend, hltprescales, l1prescales in mergedList:
253  if run in LBexceptions.exceptions:
254  if any([lbstart>=exc_start and lbstart<=exc_end for exc_start, exc_end in LBexceptions.exceptions[run]]): continue
255  if any([lbend>=exc_start and lbend<=exc_end for exc_start, exc_end in LBexceptions.exceptions[run]]): continue
256 
257  for grllbstart,grllbend in grlblocks:
258  lboverlap = (min(lbend,grllbend) - max(lbstart,grllbstart))+1
259  if lboverlap <= 0: continue
260 
261  lbCount += lboverlap
262  for hltid, (hltps, hltrerun) in six.iteritems (hltprescales):
263  if hltid not in chainsHLT: continue
264  if hltps < 1: hltps = 1e99
265  l1seeds = chainsHLT[hltid][1]
266  l1ps = 1e99
267  for l1seed in l1seeds.split(","): #protect 'L1_MU20,L1_MU21'
268  if l1seed not in l1prescales and len(l1seeds) > 10: continue #Protection against buggy HLT_noalg_Standby
269  tmpl1ps = l1prescales[l1seed]
270  if tmpl1ps < 1: tmpl1ps = 1e99
271  l1ps = min(l1ps, tmpl1ps)
272 
273 
274  if hltps*l1ps < 1e99: efflb = lboverlap/(hltps*l1ps)
275  else: efflb = 0
276  if not chainsHLT[hltid][0] in hltMap: hltMap[chainsHLT[hltid][0]] = [l1seeds, 0, hltrerun>0, defaultdict(int)]
277  hltMap[chainsHLT[hltid][0]][1] += efflb
278  hltMap[chainsHLT[hltid][0]][3][run] += efflb
279  if f: f.write(f"{chainsHLT[hltid][0]},{run},{lbstart},{lbend},{grllbstart},{grllbend},{lboverlap},{l1ps},{hltps}\n")
280 
281  if f: f.close()
282 
283  for hlt,(l1,efflb,rerun,efflbByRun) in six.iteritems (hltMap_prev):
284  if hlt in hltMap:
285  hltMap[hlt][1] += efflb
286  hltMap[hlt][2] |= rerun
287  for run,runefflb in efflbByRun.items():
288  hltMap[hlt][3][run] += runefflb
289  else: hltMap[hlt] = [l1, efflb,rerun, efflbByRun]
290  return hltMap, lbCount
291 
292 
293 def getChainsWithL1seed(connection, smk):
294  '''copy of getChains but retrieving also the L1 seed and assuming always run2
295  https://gitlab.cern.ch/atlas/athena/blob/master/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcUtils.py#L611
296  '''
297  from TrigConfigSvc.TrigConfigSvcUtils import getTriggerDBCursor, executeQuery
298  cursor,schemaname = getTriggerDBCursor(connection)
299 
300  output = ['TC.HTC_ID', 'TC.HTC_CHAIN_COUNTER', 'TC.HTC_NAME', 'TC.HTC_LOWER_CHAIN_NAME']
301  tables = {}
302  tables['SM'] = 'SUPER_MASTER_TABLE'
303  tables['M2C'] = 'HLT_TM_TO_TC'
304  tables['TC'] = 'HLT_TRIGGER_CHAIN'
305  tables['MT'] = 'HLT_MASTER_TABLE'
306 
307  condition = [ "SM.SMT_ID = :smk",
308  'SM.SMT_HLT_MASTER_TABLE_ID = MT.HMT_ID',
309  'MT.HMT_TRIGGER_MENU_ID = M2C.HTM2TC_TRIGGER_MENU_ID',
310  'M2C.HTM2TC_TRIGGER_CHAIN_ID = TC.HTC_ID' ]
311 
312  bindvars = { "smk": smk }
313 
314  res = executeQuery(cursor, output, condition, schemaname, tables, bindvars)
315 
316  chainsef = {}
317  for x in res:
318  if len(x)!=4: continue #protect against HLT_noalg_bkg_L1Bkg and similars
319  chainsef[x[1]] = (x[2],x[3])
320 
321  return chainsef
322 
323 
324 
325 def getHLTmap_fromDB(period, customGRL):
326  ''' Return a map of HLT chain: (L1 seed, active LBs, is-rerun) for a given period
327  '''
328 
329  triggerPeriod = TriggerPeriodData( period, customGRL ).grl
330  if not triggerPeriod: return {},0
331  runsWithReadyForPhysics = getReadyForPhysicsInRange(triggerPeriod)
332  keys = getKeys( runsWithReadyForPhysics)
333 
334  hltMap = {}
335  lbCount = 0
336  lbByRun = {}
337  import tqdm
338  pbar = tqdm.tqdm(keys,unit=" runs",bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}')
339  for run in pbar:
340  pbar.set_description(f"Getting prescales for run {run}")
341  prev_lbCount = int(lbCount)
342  hltMap, lbCount = fillHLTmap( keys[run], hltMap, lbCount , run, triggerPeriod[run])
343  lbByRun[run] = (lbCount - prev_lbCount)
344 
345  return hltMap, lbCount, lbByRun
346 
347 def getHLTmap_fromTM(flags, period, release):
348  ''' Return a map of HLT chain: (L1 seed, active LBs, is-rerun) for a given period
349  Only "Future" periods make sense here
350  The format is the same as for TriggerDBAccess for compatibility but rerun is always false
351  '''
352 
353  if not period & TriggerPeriod.future: return {}, 0
354  hltMap = {}
355  dummyfutureLBs = 1e6
356 
357  from TrigConfigSvc.TrigConfigSvcCfg import getTrigConfigFromFlag
358  if (flags.Input.Files and os.path.exists(flags.Input.Files[0]) and getTrigConfigFromFlag(flags)["SOURCE"]=='INFILE' and
359  (flags.Input.isMC or flags.Input.DataYear>=2022) ): # R2 data should not use this infile menu for now, to keep outputs the same as before this feature was added
360  # get menu out of the first input file
361  from TrigConfigSvc.TriggerConfigAccess import getHLTMenuAccess
362  try:
363  menu = getHLTMenuAccess(flags)
364  for hltname,chain in menu.chains().items():
365  l1seed = chain["l1item"]
366  if l1seed == "": l1seed = "All"
367  primary = any('Primary' in g or 'TagAndProbe' in g for g in chain["groups"])
368  ps = 1 if primary else 0
369  hltMap[hltname] = (l1seed, dummyfutureLBs*ps, False, {}) #third arg is hasRerun=False
370  except RuntimeError:
371  log.info("Failed to read infile menu, which can happen with old MC, reverting to release menu")
372 
373  if not hltMap:
374  # use the generated menus from the release, and pick the menu given according to the flags (Trigger.triggerMenuSetup)
375  from TriggerMenuMT.HLT.Config.GenerateMenuMT import GenerateMenuMT
376  menu = GenerateMenuMT()
377  menu.getChainsFromMenu(flags)
378  for chain in itertools.chain.from_iterable(menu.chainsInMenu.values()):
379  hltname = chain.name
380  l1seed = chain.name[chain.name.rfind("_L1")+3:] #surely a better way to do this
381  primary = any('Primary' in g or 'TagAndProbe' in g for g in chain.groups)
382  ps = 1 if primary else 0
383  hltMap[hltname] = (l1seed, dummyfutureLBs*ps, False, {}) #third arg is hasRerun=False
384 
385  return hltMap, dummyfutureLBs, {}
386 
388  if release: #already format-proofed in TriggerAPI
389  return "/cvmfs/atlas.cern.ch/repo/sw/software/21.1/AthenaP1/%s/InstallArea/x86_64-slc6-gcc62-opt/python/TriggerMenu/menu"%release
390  #21.1.50 contains the final menu, no need to find the last release
391  return "/cvmfs/atlas.cern.ch/repo/sw/software/21.1/AthenaP1/21.1.50/InstallArea/x86_64-slc6-gcc62-opt/python/TriggerMenu/menu"
392 
393 
394 def getHLTlist(period, customGRL, release, flags=None):
395  ''' For a given period it returns: [HLT chain, L1 seed, average livefraction, active LB, is-rerun], total LB
396  The average livefraction is an approximation weighting the PS by number of lumiblocks.
397  *** Don't use this number in analysis!!! ***
398  For "future" periods, the average livefraction is 1 for items flagged as primary in TM and 0 for non-primaries
399  '''
400  if not period & TriggerPeriod.future or TriggerPeriod.isRunNumber(period):
401  hltmap, totalLB, totalLBByRun = getHLTmap_fromDB(period, customGRL)
402  # # add empty chainGroups list to every item
403  # for name,vals in hltmap.items():
404  # hltmap[name] = vals + [[],]
405  else:
406  if flags is None:
407  raise RuntimeError('ConfigFlags need to be provided via TriggerAPI.setConfigFlags for "future" periods.')
408  hltmap, totalLB, totalLBByRun = getHLTmap_fromTM(flags, period, release)
409 
410  hltlist = cleanHLTmap(hltmap, totalLB)
411  return (hltlist, totalLB, totalLBByRun)
412 
413 def cleanHLTmap(hltmap, totalLB):
414 
415  from copy import deepcopy
416  for name, (l1seed, activeLB, hasRerun,activLBByRun) in six.iteritems (deepcopy(hltmap)): #since it will modify on the fly
417  for pair in TriggerRenaming.pairs:
418  if name==pair[0] and pair[1] in hltmap:
419  hltmap[pair[1]][1] += activeLB
420  for run,efflb in activLBByRun.items(): hltmap[pair[1]][3][run] += efflb
421  #if name==pair[0] and not pair[1] in hltmap: hltmap[pair[1]] = [l1seed, activeLB, hasRerun]
422  if name==pair[1] and pair[0] in hltmap:
423  hltmap[pair[0]][1] += activeLB
424  for run,efflb in activLBByRun.items(): hltmap[pair[0]][3][run] += efflb
425  #if name==pair[1] and not pair[0] in hltmap: hltmap[pair[0]] = [l1seed, activeLB, hasRerun]
426 
427  vetoes = ['calib','noise','noalg','satmon','peb']
428  hltlist = [(name, l1seed, activeLB/totalLB, activeLB, hasRerun,activLBByRun) for name, (l1seed, activeLB, hasRerun,activLBByRun) in six.iteritems (hltmap) if not any(v in name for v in vetoes)]
429  return hltlist
430 
431 def test():
432  log.info(getHLTlist(TriggerPeriod.future,None, None))
433 
434 if __name__ == "__main__":
435  sys.exit(test())
python.TrigConfigSvcUtils.getL1Items
def getL1Items(connection, smk)
Definition: TrigConfigSvcUtils.py:696
python.TriggerAPI.TriggerDataAccess.getMenuPathFromRelease
def getMenuPathFromRelease(release)
Definition: TriggerDataAccess.py:387
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.utils.AtlRunQueryTriggerUtils.getTriggerDBCursor
def getTriggerDBCursor(run_number=None, smk=None, lhcRun=None)
Definition: AtlRunQueryTriggerUtils.py:387
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
python.TriggerAPI.TriggerDataAccess.getKeys
def getKeys(listOfRuns, doPrint=False)
Definition: TriggerDataAccess.py:61
python.TrigConfigSvcCfg.getTrigConfigFromFlag
def getTrigConfigFromFlag(flags)
Definition: TrigConfigSvcCfg.py:80
GenerateMenuMT
Definition: GenerateMenuMT.py:1
python.TriggerAPI.TriggerDataAccess.getReadyForPhysicsInRange
def getReadyForPhysicsInRange(period)
Definition: TriggerDataAccess.py:23
python.TriggerAPI.TriggerDataAccess.getHLTmap_fromDB
def getHLTmap_fromDB(period, customGRL)
Definition: TriggerDataAccess.py:325
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
python.TriggerAPI.TriggerDataAccess.getRunLBFromU64
def getRunLBFromU64(runlb)
Definition: TriggerDataAccess.py:17
RatesAnalysisFullMenu.prescales
prescales
Definition: RatesAnalysisFullMenu.py:119
python.TriggerAPI.TriggerDataAccess.cleanHLTmap
def cleanHLTmap(hltmap, totalLB)
Definition: TriggerDataAccess.py:413
python.TriggerAPI.TriggerDataAccess.test
def test()
Definition: TriggerDataAccess.py:431
python.TriggerAPI.TriggerDataAccess.queryHLTPrescaleTableRun2
def queryHLTPrescaleTableRun2(connection, psk)
Definition: TriggerDataAccess.py:146
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.TriggerAPI.TriggerDataAccess.getHLTmap_fromTM
def getHLTmap_fromTM(flags, period, release)
Definition: TriggerDataAccess.py:347
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
python.TriggerAPI.TriggerDataAccess.getChainsWithL1seed
def getChainsWithL1seed(connection, smk)
Definition: TriggerDataAccess.py:293
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:79
python.TriggerAPI.TriggerDataAccess.fillHLTmap
def fillHLTmap(info, hltMap_prev, lbCount, run, grlblocks)
Definition: TriggerDataAccess.py:167
python.TriggerConfigAccess.getHLTMenuAccess
HLTMenuAccess getHLTMenuAccess(flags=None)
Definition: TriggerConfigAccess.py:196
python.copyTCTOutput.chains
chains
Definition: copyTCTOutput.py:81
Trk::open
@ open
Definition: BinningType.h:40
python.utils.AtlRunQueryTriggerUtils.getL1Prescales
def getL1Prescales(l1prescalekey, run_number)
Definition: AtlRunQueryTriggerUtils.py:562
python.TriggerAPI.TriggerDataAccess.getHLTlist
def getHLTlist(period, customGRL, release, flags=None)
Definition: TriggerDataAccess.py:394
python.AtlRunQuerySFO.executeQuery
def executeQuery(run, cu, q, cachekey)
Definition: AtlRunQuerySFO.py:115
readCCLHist.float
float
Definition: readCCLHist.py:83
python.TriggerAPI.TriggerDataAccess.getHLTPrescalesRun2
def getHLTPrescalesRun2(connection, psk)
Definition: TriggerDataAccess.py:131