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  hltprescales[value["hash"]] = (value["prescale"],rerun)
209  else:
210  hltprescales = getHLTPrescalesRun2('oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2', lbrange[0])
211  tmphltList.append(( lbstart, lbend,hltprescales) )
212 
213  tmpl1List = []
214  for lbrange in info['l1psk']:
215  lbstart, lbend = lbrange[2], lbrange[4]
216  if lbend ==-1: lbend = 2000
217  if run > 400000:
218  l1ps = L1PrescalesSetAccess(dbalias='TRIGGERDB_RUN3',l1pskey=lbrange[0])
219  l1prescales = {name: l1ps.prescale(name) for name in l1ps.itemNames()}
220  else:
221  l1psname, l1prescales = getL1Prescales('oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2', lbrange[0])
222  l1prescales = list(l1prescales)
223  l1prescales = {l1name: l1prescales[int(l1id)] for (l1name, l1id) in six.iteritems (items)}
224  tmpl1List.append(( lbstart, lbend,l1prescales) )
225 
226  logging.root.setLevel(lvl)
227  tcsLogger.setLevel(tcsLogLevel)
228 
229  #merge the lb ranges of HLT and L1
230  hltindex, l1index = 0,0
231  mergedList = []
232  while hltindex < len(tmphltList) and l1index < len(tmpl1List) :
233  if tmphltList[hltindex][1] == tmpl1List[l1index][1]:
234  lbstart, lbend = max(tmphltList[hltindex][0],tmpl1List[l1index][0]), tmphltList[hltindex][1]
235  mergedList.append((lbstart, lbend,tmphltList[hltindex][2],tmpl1List[l1index][2]))
236  hltindex += 1
237  l1index += 1
238  elif tmphltList[hltindex][1] > tmpl1List[l1index][1]:
239  lbstart, lbend = max(tmphltList[hltindex][0],tmpl1List[l1index][0]), tmpl1List[l1index][1]
240  mergedList.append((lbstart, lbend,tmphltList[hltindex][2],tmpl1List[l1index][2]))
241  l1index += 1
242  else:
243  lbstart, lbend = max(tmphltList[hltindex][0],tmpl1List[l1index][0]), tmphltList[hltindex][1]
244  mergedList.append((lbstart, lbend,tmphltList[hltindex][2],tmpl1List[l1index][2]))
245  hltindex += 1
246 
247  # if user does a "touch liveFractions.txt" then we will populate info to that file for further debugging
248  f = open("liveFractions.txt","a") if os.path.exists("liveFractions.txt") else None
249 
250  hltMap = {}
251  for lbstart, lbend, hltprescales, l1prescales in mergedList:
252  if run in LBexceptions.exceptions:
253  if any([lbstart>=exc_start and lbstart<=exc_end for exc_start, exc_end in LBexceptions.exceptions[run]]): continue
254  if any([lbend>=exc_start and lbend<=exc_end for exc_start, exc_end in LBexceptions.exceptions[run]]): continue
255 
256  for grllbstart,grllbend in grlblocks:
257  lboverlap = (min(lbend,grllbend) - max(lbstart,grllbstart))+1
258  if lboverlap <= 0: continue
259 
260  lbCount += lboverlap
261  for hltid, (hltps, hltrerun) in six.iteritems (hltprescales):
262  if hltid not in chainsHLT: continue
263  if hltps < 1: hltps = 1e99
264  l1seeds = chainsHLT[hltid][1]
265  l1ps = 1e99
266  for l1seed in l1seeds.split(","): #protect 'L1_MU20,L1_MU21'
267  if l1seed not in l1prescales and len(l1seeds) > 10: continue #Protection against buggy HLT_noalg_Standby
268  tmpl1ps = l1prescales[l1seed]
269  if tmpl1ps < 1: tmpl1ps = 1e99
270  l1ps = min(l1ps, tmpl1ps)
271 
272 
273  if hltps*l1ps < 1e99: efflb = lboverlap/(hltps*l1ps)
274  else: efflb = 0
275  if not chainsHLT[hltid][0] in hltMap: hltMap[chainsHLT[hltid][0]] = [l1seeds, 0, hltrerun>0, defaultdict(int)]
276  hltMap[chainsHLT[hltid][0]][1] += efflb
277  hltMap[chainsHLT[hltid][0]][3][run] += efflb
278  if f: f.write(f"{chainsHLT[hltid][0]},{run},{lbstart},{lbend},{grllbstart},{grllbend},{lboverlap},{l1ps},{hltps}\n")
279 
280  if f: f.close()
281 
282  for hlt,(l1,efflb,rerun,efflbByRun) in six.iteritems (hltMap_prev):
283  if hlt in hltMap:
284  hltMap[hlt][1] += efflb
285  hltMap[hlt][2] |= rerun
286  for run,runefflb in efflbByRun.items():
287  hltMap[hlt][3][run] += runefflb
288  else: hltMap[hlt] = [l1, efflb,rerun, efflbByRun]
289  return hltMap, lbCount
290 
291 
292 def getChainsWithL1seed(connection, smk):
293  '''copy of getChains but retrieving also the L1 seed and assuming always run2
294  https://gitlab.cern.ch/atlas/athena/blob/master/Trigger/TrigConfiguration/TrigConfigSvc/python/TrigConfigSvcUtils.py#L611
295  '''
296  from TrigConfigSvc.TrigConfigSvcUtils import getTriggerDBCursor, executeQuery
297  cursor,schemaname = getTriggerDBCursor(connection)
298 
299  output = ['TC.HTC_ID', 'TC.HTC_CHAIN_COUNTER', 'TC.HTC_NAME', 'TC.HTC_LOWER_CHAIN_NAME']
300  tables = {}
301  tables['SM'] = 'SUPER_MASTER_TABLE'
302  tables['M2C'] = 'HLT_TM_TO_TC'
303  tables['TC'] = 'HLT_TRIGGER_CHAIN'
304  tables['MT'] = 'HLT_MASTER_TABLE'
305 
306  condition = [ "SM.SMT_ID = :smk",
307  'SM.SMT_HLT_MASTER_TABLE_ID = MT.HMT_ID',
308  'MT.HMT_TRIGGER_MENU_ID = M2C.HTM2TC_TRIGGER_MENU_ID',
309  'M2C.HTM2TC_TRIGGER_CHAIN_ID = TC.HTC_ID' ]
310 
311  bindvars = { "smk": smk }
312 
313  res = executeQuery(cursor, output, condition, schemaname, tables, bindvars)
314 
315  chainsef = {}
316  for x in res:
317  if len(x)!=4: continue #protect against HLT_noalg_bkg_L1Bkg and similars
318  chainsef[x[1]] = (x[2],x[3])
319 
320  return chainsef
321 
322 
323 
324 def getHLTmap_fromDB(period, customGRL):
325  ''' Return a map of HLT chain: (L1 seed, active LBs, is-rerun) for a given period
326  '''
327 
328  triggerPeriod = TriggerPeriodData( period, customGRL ).grl
329  if not triggerPeriod: return {},0
330  runsWithReadyForPhysics = getReadyForPhysicsInRange(triggerPeriod)
331  keys = getKeys( runsWithReadyForPhysics)
332 
333  hltMap = {}
334  lbCount = 0
335  lbByRun = {}
336  import tqdm
337  pbar = tqdm.tqdm(keys,unit=" runs",bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}')
338  for run in pbar:
339  pbar.set_description(f"Getting prescales for run {run}")
340  prev_lbCount = int(lbCount)
341  hltMap, lbCount = fillHLTmap( keys[run], hltMap, lbCount , run, triggerPeriod[run])
342  lbByRun[run] = (lbCount - prev_lbCount)
343 
344  return hltMap, lbCount, lbByRun
345 
346 def getHLTmap_fromTM(flags, period, release):
347  ''' Return a map of HLT chain: (L1 seed, active LBs, is-rerun) for a given period
348  Only "Future" periods make sense here
349  The format is the same as for TriggerDBAccess for compatibility but rerun is always false
350  '''
351 
352  if not period & TriggerPeriod.future: return {}, 0
353  hltMap = {}
354  dummyfutureLBs = 1e6
355 
356  from TrigConfigSvc.TrigConfigSvcCfg import getTrigConfigFromFlag
357  if (flags.Input.Files and os.path.exists(flags.Input.Files[0]) and getTrigConfigFromFlag(flags)["SOURCE"]=='INFILE' and
358  (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
359  # get menu out of the first input file
360  from TrigConfigSvc.TriggerConfigAccess import getHLTMenuAccess
361  try:
362  menu = getHLTMenuAccess(flags)
363  for hltname,chain in menu.chains().items():
364  l1seed = chain["l1item"]
365  if l1seed == "": l1seed = "All"
366  primary = any('Primary' in g or 'TagAndProbe' in g for g in chain["groups"])
367  ps = 1 if primary else 0
368  hltMap[hltname] = (l1seed, dummyfutureLBs*ps, False, {}) #third arg is hasRerun=False
369  except RuntimeError:
370  log.info("Failed to read infile menu, which can happen with old MC, reverting to release menu")
371 
372  if not hltMap:
373  # use the generated menus from the release, and pick the menu given according to the flags (Trigger.triggerMenuSetup)
374  from TriggerMenuMT.HLT.Config.GenerateMenuMT import GenerateMenuMT
375  menu = GenerateMenuMT()
376  menu.getChainsFromMenu(flags)
377  for chain in itertools.chain.from_iterable(menu.chainsInMenu.values()):
378  hltname = chain.name
379  l1seed = chain.name[chain.name.rfind("_L1")+3:] #surely a better way to do this
380  primary = any('Primary' in g or 'TagAndProbe' in g for g in chain.groups)
381  ps = 1 if primary else 0
382  hltMap[hltname] = (l1seed, dummyfutureLBs*ps, False, {}) #third arg is hasRerun=False
383 
384  return hltMap, dummyfutureLBs, {}
385 
387  if release: #already format-proofed in TriggerAPI
388  return "/cvmfs/atlas.cern.ch/repo/sw/software/21.1/AthenaP1/%s/InstallArea/x86_64-slc6-gcc62-opt/python/TriggerMenu/menu"%release
389  #21.1.50 contains the final menu, no need to find the last release
390  return "/cvmfs/atlas.cern.ch/repo/sw/software/21.1/AthenaP1/21.1.50/InstallArea/x86_64-slc6-gcc62-opt/python/TriggerMenu/menu"
391 
392 
393 def getHLTlist(period, customGRL, release, flags=None):
394  ''' For a given period it returns: [HLT chain, L1 seed, average livefraction, active LB, is-rerun], total LB
395  The average livefraction is an approximation weighting the PS by number of lumiblocks.
396  *** Don't use this number in analysis!!! ***
397  For "future" periods, the average livefraction is 1 for items flagged as primary in TM and 0 for non-primaries
398  '''
399  if not period & TriggerPeriod.future or TriggerPeriod.isRunNumber(period):
400  hltmap, totalLB, totalLBByRun = getHLTmap_fromDB(period, customGRL)
401  # # add empty chainGroups list to every item
402  # for name,vals in hltmap.items():
403  # hltmap[name] = vals + [[],]
404  else:
405  if flags is None:
406  raise RuntimeError('ConfigFlags need to be provided via TriggerAPI.setConfigFlags for "future" periods.')
407  hltmap, totalLB, totalLBByRun = getHLTmap_fromTM(flags, period, release)
408 
409  hltlist = cleanHLTmap(hltmap, totalLB)
410  return (hltlist, totalLB, totalLBByRun)
411 
412 def cleanHLTmap(hltmap, totalLB):
413 
414  from copy import deepcopy
415  for name, (l1seed, activeLB, hasRerun,activLBByRun) in six.iteritems (deepcopy(hltmap)): #since it will modify on the fly
416  for pair in TriggerRenaming.pairs:
417  if name==pair[0] and pair[1] in hltmap:
418  hltmap[pair[1]][1] += activeLB
419  for run,efflb in activLBByRun.items(): hltmap[pair[1]][3][run] += efflb
420  #if name==pair[0] and not pair[1] in hltmap: hltmap[pair[1]] = [l1seed, activeLB, hasRerun]
421  if name==pair[1] and pair[0] in hltmap:
422  hltmap[pair[0]][1] += activeLB
423  for run,efflb in activLBByRun.items(): hltmap[pair[0]][3][run] += efflb
424  #if name==pair[1] and not pair[0] in hltmap: hltmap[pair[0]] = [l1seed, activeLB, hasRerun]
425 
426  vetoes = ['calib','noise','noalg','satmon','peb']
427  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)]
428  return hltlist
429 
430 def test():
431  log.info(getHLTlist(TriggerPeriod.future,None, None))
432 
433 if __name__ == "__main__":
434  sys.exit(test())
python.TrigConfigSvcUtils.getL1Items
def getL1Items(connection, smk)
Definition: TrigConfigSvcUtils.py:696
max
#define max(a, b)
Definition: cfImp.cxx:41
python.TriggerAPI.TriggerDataAccess.getMenuPathFromRelease
def getMenuPathFromRelease(release)
Definition: TriggerDataAccess.py:386
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.utils.AtlRunQueryTriggerUtils.getTriggerDBCursor
def getTriggerDBCursor(run_number=None, smk=None, lhcRun=None)
Definition: AtlRunQueryTriggerUtils.py:387
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:324
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:412
python.TriggerAPI.TriggerDataAccess.test
def test()
Definition: TriggerDataAccess.py:430
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:346
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:292
min
#define min(a, b)
Definition: cfImp.cxx:40
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:393
python.AtlRunQuerySFO.executeQuery
def executeQuery(run, cu, q, cachekey)
Definition: AtlRunQuerySFO.py:115
python.TriggerAPI.TriggerDataAccess.getHLTPrescalesRun2
def getHLTPrescalesRun2(connection, psk)
Definition: TriggerDataAccess.py:131