ATLAS Offline Software
TrigConfigSvcCfg.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaCommon.Logging import logging
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
7 
8 from functools import cache
9 import json
10 
11 log = logging.getLogger('TrigConfigSvcCfg')
12 
13 # To avoid accidental overrwrite of the L1 JSON menu, only allow one L1 menu generation.
14 # Either via JSON conversion from Run-1&2 or native Run-3 (see ATR-24531).
16  try:
17  return l1menu_generated._hasRun # type: ignore
18  except AttributeError:
19  l1menu_generated._hasRun = True # type: ignore
20  return False
21 
22 
23 @cache
24 def getTrigConfFromCool(runNumber, lumiBlock):
25  from TrigConfStorage.TriggerCoolUtil import TriggerCoolUtil
26  db = TriggerCoolUtil.GetConnection('CONDBR2' if runNumber > 230000 else 'COMP200')
27  runRange = [[(runNumber,lumiBlock), (runNumber,lumiBlock)]]
28  d = {key: value for key, value in TriggerCoolUtil.getHLTConfigKeys(db, runRange)[runNumber].items() if key in ["SMK", "DB"]}
29  for (hltpsk, firstlb, lastlb) in TriggerCoolUtil.getHLTPrescaleKeys(db, runRange)[runNumber]['HLTPSK2']:
30  if firstlb<=lumiBlock and lumiBlock<=lastlb:
31  d['HLTPSK'] = hltpsk
32  break
33  for (l1psk, firstlb, lastlb) in TriggerCoolUtil.getL1ConfigKeys(db, runRange)[runNumber]['LVL1PSK']:
34  if firstlb<=lumiBlock and lumiBlock<=lastlb:
35  d['L1PSK'] = l1psk
36  break
37  for (bgsk, firstlb, lastlb) in TriggerCoolUtil.getBunchGroupKey(db, runRange)[runNumber]['BGKey']:
38  if firstlb<=lumiBlock and lumiBlock<=lastlb:
39  d['BGSK'] = bgsk
40  break
41 
42  if 'L1PSK' not in d:
43  msg = f"Did not find an L1 PSK for run {runNumber} and lumi block {lumiBlock} in COOL"
44  log.error(msg)
45  raise RuntimeError(msg)
46  if 'HLTPSK' not in d:
47  msg = f"Did not find an HLT PSK for run {runNumber} and lumi block {lumiBlock} in COOL"
48  log.error(msg)
49  raise RuntimeError(msg)
50  if 'BGSK' not in d:
51  msg = f"Did not find a bunch group set key for run {runNumber} and lumi block {lumiBlock} in COOL"
52  log.error(msg)
53  raise RuntimeError(msg)
54  log.info("Extracted the following info for run %d and lumi block %d from COOL: %r", runNumber, lumiBlock, d)
55  return d
56 
57 
58 @cache
59 def createJsonMenuFiles(run, lb):
60  """Retrieve Run-2 trigger configuration from the DB and save as Run3 .JSON files"""
61  import subprocess
62 
63  if l1menu_generated():
64  log.error("L1 menu has already been generated")
65  return None
66 
67  log.info("Configuring Run-1&2 to Run-3 configuration metadata conversion")
68  triggerDBKeys = getTrigConfFromCool(run, lb)
69  triggerDBKeys['DB'] = 'TRIGGERDB' if run > 230000 else 'TRIGGERDB_RUN1'
70 
71  cmd = "TrigConfReadWrite -i {DB} {SMK},{L1PSK},{HLTPSK},{BGSK} -o r3json > Run3ConfigFetchJSONFiles.log".format(**triggerDBKeys)
72  log.info("Running command '%s'", cmd)
73  filesFetchStatus = subprocess.run(cmd, shell=True)
74  assert filesFetchStatus.returncode == 0, "TrigConfReadWrite failed to fetch JSON files"
75  return triggerDBKeys
76 
77 
78 # This interprets the Trigger.triggerConfig flag according to
79 # https://twiki.cern.ch/twiki/bin/view/Atlas/TriggerConfigFlag#triggerConfig_in_Run_3
80 def getTrigConfigFromFlag( flags ):
81  # Pad the triggerConfig value and extract available fields:
82  source, dbconn, keys = (flags.Trigger.triggerConfig+":::").split(":")[:3]
83  smk,l1psk,hltpsk,bgsk = (keys+",,,").split(",")[:4]
84  # Convert to int or None:
85  smk, l1psk, hltpsk, bgsk = (int(k) if k!="" else None for k in (smk, l1psk, hltpsk, bgsk))
86 
87  if source == "DB" and (smk is None or l1psk is None or hltpsk is None or bgsk is None):
88  runNumber = flags.Input.RunNumbers[0]
89  lbNumber = flags.Input.LumiBlockNumbers[0]
90  if dbconn == "":
91  dbconn = getTrigConfFromCool(runNumber, lbNumber)["DB"]
92  if dbconn in ["TRIGGERDB_RUN3", "TRIGGERDBDEV1_I8", "TRIGGERDBDEV1", "TRIGGERDBDEV2"]:
93  d = getTrigConfFromCool(runNumber, lbNumber)
94  if smk is None:
95  smk = d["SMK"]
96  if l1psk is None:
97  l1psk = d['L1PSK']
98  if hltpsk is None:
99  hltpsk = d['HLTPSK']
100  if bgsk is None:
101  bgsk = d['BGSK']
102 
103  tcdict = {
104  "SOURCE" : source.upper(), # DB, FILE, COOL
105  "DBCONN" : dbconn, # db connection (if origin==DB or COOL) or "JOSVC" if connection is to be taken from TrigConf::IJobOptionsSvc
106  "SMK" : smk,
107  "L1PSK" : l1psk,
108  "HLTPSK" : hltpsk,
109  "BGSK" : bgsk
110  }
111  return tcdict
112 
113 
115  return "/TRIGGER/LVL1/Lvl1ConfigKey <tag>HEAD</tag>"
116 
117 
119  return "/TRIGGER/HLT/PrescaleKey <tag>HEAD</tag>"
120 
121 
122 def _doMenuConversion(flags):
123  """Do JSON menu conversion for Run-1&2 data"""
124  return flags.Input.Files and flags.Trigger.EDMVersion in [1, 2] and not flags.Input.isMC
125 
126 
127 def _getMenuFileName(flags):
128  """Return base name for menu files"""
129  if not _doMenuConversion(flags): # menu created in this release
130  from PyUtils.Helpers import release_metadata
131  return '_'+flags.Trigger.triggerMenuSetup+'_'+release_metadata()['release']
132  else: # menu files created via JSON conversion
133  return ''
134 
135 # L1 Json file name
136 def getL1MenuFileName(flags):
137  return 'L1Menu'+_getMenuFileName(flags)+'.json'
138 
139 # HLT Json file name
140 def getHLTMenuFileName( flags ):
141  return 'HLTMenu'+_getMenuFileName(flags)+'.json'
142 
143 # HLT Monitoring set json file name
145  return 'HLTMonitoring'+_getMenuFileName(flags)+'.json'
146 
147 # L1 Prescales set json file name
149  return 'L1PrescalesSet'+_getMenuFileName(flags)+'.json'
150 
151 # HLT Prescales set json file name
153  return 'HLTPrescalesSet'+_getMenuFileName(flags)+'.json'
154 
155 # L1 Bunchgroups set json file name
157  return 'BunchGroupSet'+_getMenuFileName(flags)+'.json'
158 
159 # HLT Job options json file name
161  return 'HLTJobOptions.json'
162 
163 # Creates an L1 Prescale file from the menu
164 # this is a temporary solution, in the final version the L1PrescalesSet file should come from the menu
166  menuFN = getL1MenuFileName(flags)
167  with open(menuFN,'r') as fh:
168  data = json.load(fh)
169  pso = { 'filetype': 'l1prescale',
170  'name': data['name'],
171  'cutValues': {} }
172  ps = pso['cutValues']
173  for name, item in sorted(data['items'].items()):
174  ps[name] = {"cut": 1,
175  "enabled": True,
176  "info": "prescale: 1"}
177 
178  psFN = getL1PrescalesSetFileName( flags )
179  with open(psFN, 'w') as outfile:
180  json.dump(pso, outfile, indent = 4)
181  log.info("Generated default L1 prescale set %s", outfile.name)
182 
183 # L1 menu generation
184 def generateL1Menu( flags ):
185  if l1menu_generated():
186  log.error("L1 menu has already been generated")
187  return
188 
189  log.info("Generating L1 menu %s", flags.Trigger.triggerMenuSetup)
190  from TriggerMenuMT.L1.L1MenuConfig import L1MenuConfig
191  l1cfg = L1MenuConfig(flags)
192  l1cfg.writeJSON(outputFile = getL1MenuFileName(flags),
193  bgsOutputFile = getBunchGroupSetFileName(flags))
194 
195 
196 # provide L1 config service in new JO
197 @AccumulatorCache
198 def L1ConfigSvcCfg( flags ):
199  acc = ComponentAccumulator()
200 
201  cfg = getTrigConfigFromFlag( flags )
202  log.info( "Configure LVL1ConfigSvc" )
203 
204  # configure config svc
205  l1ConfigSvc = CompFactory.getComp("TrigConf::LVL1ConfigSvc")("LVL1ConfigSvc")
206 
207  if cfg["SOURCE"] == "FILE":
208  if _doMenuConversion(flags):
209  # Save the menu in JSON format
210  dbKeys = createJsonMenuFiles(run = flags.Input.RunNumbers[0],
211  lb = flags.Input.LumiBlockNumbers[0])
212  l1ConfigSvc.SMK = dbKeys['SMK']
213 
214  l1ConfigSvc.InputType = "FILE"
215  l1ConfigSvc.L1JsonFileName = getL1MenuFileName(flags)
216  l1ConfigSvc.HLTJsonFileName = getHLTMenuFileName(flags)
217  log.info( "For run 3 style menu access configured LVL1ConfigSvc with InputType='FILE', L1JsonFileName=%s (and HLT, used to compute SMK:%s) ", l1ConfigSvc.L1JsonFileName, l1ConfigSvc.HLTJsonFileName )
218  elif cfg["SOURCE"] == "DB":
219  l1ConfigSvc.InputType = "DB"
220  l1ConfigSvc.L1JsonFileName = ""
221  l1ConfigSvc.HLTJsonFileName = ""
222  l1ConfigSvc.TriggerDB = cfg["DBCONN"]
223  l1ConfigSvc.SMK = cfg["SMK"]
224  log.info( "For run 3 style menu access configured LVL1ConfigSvc with InputType='DB', SMK %d", cfg['SMK'] )
225 
226  acc.addService( l1ConfigSvc, create=True )
227  return acc
228 
229 # provide HLT config service in new JO
230 @AccumulatorCache
231 def HLTConfigSvcCfg( flags ):
232  acc = ComponentAccumulator()
233  cfg = getTrigConfigFromFlag( flags )
234  log.info( "Configure HLTConfigSvc" )
235 
236  hltConfigSvc = CompFactory.getComp("TrigConf::HLTConfigSvc")("HLTConfigSvc")
237 
238  if cfg["SOURCE"] == "FILE":
239  if _doMenuConversion(flags):
240  # Save the menu in JSON format
241  dbKeys = createJsonMenuFiles(run = flags.Input.RunNumbers[0],
242  lb = flags.Input.LumiBlockNumbers[0])
243  hltConfigSvc.SMK = dbKeys['SMK']
244 
245  hltConfigSvc.InputType = "FILE"
246  hltConfigSvc.L1JsonFileName = getL1MenuFileName( flags )
247  hltConfigSvc.HLTJsonFileName = getHLTMenuFileName( flags )
248  hltConfigSvc.MonitoringJsonFileName = getHLTMonitoringFileName( flags )
249  log.info( "Configured HLTConfigSvc with InputType='FILE', HLTJsonFileName=%s and MonitoringJsonFileName=%s (and L1, used to compute MC-SMK:%s)",
250  hltConfigSvc.HLTJsonFileName, hltConfigSvc.MonitoringJsonFileName, hltConfigSvc.L1JsonFileName)
251  elif cfg["SOURCE"] == "DB":
252  hltConfigSvc.InputType = "DB"
253  hltConfigSvc.L1JsonFileName = ""
254  hltConfigSvc.HLTJsonFileName = ""
255  hltConfigSvc.MonitoringJsonFileName = ""
256  hltConfigSvc.TriggerDB = cfg["DBCONN"]
257  hltConfigSvc.SMK = cfg["SMK"]
258  log.info( "For run 3 style menu access configured HLTConfigSvc with InputType='DB' and SMK %d", cfg['SMK'] )
259  acc.addService( hltConfigSvc, create=True )
260  return acc
261 
262 # provide both services in new JO
263 def TrigConfigSvcCfg( flags ):
264  acc = ComponentAccumulator()
265  acc.merge( BunchGroupCondAlgCfg( flags ) )
266  acc.merge( L1ConfigSvcCfg( flags ) )
267  acc.merge( HLTConfigSvcCfg( flags ) )
268  acc.merge( L1PrescaleCondAlgCfg( flags ) )
269  acc.merge( HLTPrescaleCondAlgCfg( flags ) )
270  return acc
271 
272 def L1PrescaleCondAlgCfg( flags ):
273  log.info("Setting up L1PrescaleCondAlg")
274  acc = ComponentAccumulator()
275  TrigConf__L1PrescaleCondAlg = CompFactory.getComp("TrigConf::L1PrescaleCondAlg")
276  l1PrescaleCondAlg = TrigConf__L1PrescaleCondAlg("L1PrescaleCondAlg")
277 
278  tc = getTrigConfigFromFlag( flags )
279  l1PrescaleCondAlg.Source = tc["SOURCE"]
280  if flags.Common.isOnline:
281  from IOVDbSvc.IOVDbSvcConfig import addFolders
282  acc.merge(addFolders(flags, getL1PrescaleFolderName(), "TRIGGER_ONL", className="AthenaAttributeList"))
283  log.info("Adding folder %s to CompAcc", getL1PrescaleFolderName() )
284  if tc["SOURCE"] == "COOL":
285  l1PrescaleCondAlg.TriggerDB = tc["DBCONN"]
286  elif tc["SOURCE"] == "DB":
287  l1PrescaleCondAlg.TriggerDB = tc["DBCONN"]
288  l1PrescaleCondAlg.L1Psk = tc["L1PSK"]
289  elif tc["SOURCE"] == "FILE":
290  l1PrescaleCondAlg.Filename = getL1PrescalesSetFileName( flags )
291  if _doMenuConversion(flags):
292  # Save the menu in JSON format
293  dbKeys = createJsonMenuFiles(run = flags.Input.RunNumbers[0],
294  lb = flags.Input.LumiBlockNumbers[0])
295  l1PrescaleCondAlg.L1Psk = dbKeys['L1PSK']
296  else:
297  raise RuntimeError("trigger configuration flag 'trigConfig' starts with %s, which is not understood" % tc["SOURCE"])
298  acc.addCondAlgo(l1PrescaleCondAlg)
299  return acc
300 
301 def BunchGroupCondAlgCfg( flags ):
302  log.info("Setting up BunchGroupCondAlg")
303  acc = ComponentAccumulator()
304  TrigConf__BunchGroupCondAlg = CompFactory.getComp("TrigConf::BunchGroupCondAlg")
305  bunchGroupCondAlg = TrigConf__BunchGroupCondAlg("TrigConf__BunchGroupCondAlg")
306 
307  tc = getTrigConfigFromFlag( flags )
308  bunchGroupCondAlg.Source = tc["SOURCE"]
309  if tc["SOURCE"] == "COOL":
310  bunchGroupCondAlg.TriggerDB = tc["DBCONN"]
311  elif tc["SOURCE"] == "DB":
312  bunchGroupCondAlg.TriggerDB = tc["DBCONN"]
313  bunchGroupCondAlg.BGSK = tc["BGSK"]
314  elif tc["SOURCE"] == "FILE":
315  bunchGroupCondAlg.Filename = getBunchGroupSetFileName( flags )
316  if _doMenuConversion(flags):
317  # Save the menu in JSON format
318  dbKeys = createJsonMenuFiles(run = flags.Input.RunNumbers[0],
319  lb = flags.Input.LumiBlockNumbers[0])
320  bunchGroupCondAlg.BGSK = dbKeys['BGSK']
321  else:
322  raise RuntimeError("trigger configuration flag 'trigConfig' starts with %s, which is not understood" % tc["SOURCE"])
323  acc.addCondAlgo(bunchGroupCondAlg)
324  return acc
325 
326 
328  log.info("Setting up HLTPrescaleCondAlg")
329  acc = ComponentAccumulator()
330  hltPrescaleCondAlg = CompFactory.getComp("TrigConf::HLTPrescaleCondAlg")("HLTPrescaleCondAlg")
331 
332  tc = getTrigConfigFromFlag( flags )
333  hltPrescaleCondAlg.Source = tc["SOURCE"]
334  if flags.Common.isOnline or tc["SOURCE"]=="COOL":
335  from IOVDbSvc.IOVDbSvcConfig import addFolders
336  acc.merge(addFolders(flags, getHLTPrescaleFolderName(), "TRIGGER_ONL",
337  className = "AthenaAttributeList",
338  extensible = flags.Trigger.Online.isPartition))
339  log.info("Adding folder %s to CompAcc", getHLTPrescaleFolderName() )
340  if tc["SOURCE"] == "COOL":
341  hltPrescaleCondAlg.TriggerDB = tc["DBCONN"]
342  elif tc["SOURCE"] == "DB":
343  hltPrescaleCondAlg.TriggerDB = tc["DBCONN"]
344  hltPrescaleCondAlg.HLTPsk = tc["HLTPSK"]
345  elif tc["SOURCE"] == "FILE":
346  hltPrescaleCondAlg.Filename = getHLTPrescalesSetFileName( flags )
347  if _doMenuConversion(flags):
348  # Save the menu in JSON format
349  dbKeys = createJsonMenuFiles(run = flags.Input.RunNumbers[0],
350  lb = flags.Input.LumiBlockNumbers[0])
351  hltPrescaleCondAlg.HLTPsk = dbKeys['HLTPSK']
352  else:
353  raise RuntimeError("trigger configuration flag 'trigConfig' starts with %s, which is not understood" % tc["SOURCE"])
354  acc.addCondAlgo(hltPrescaleCondAlg)
355  return acc
356 
357 
358 if __name__ == "__main__":
359  import unittest
360 
361  class Tests(unittest.TestCase):
362 
363  def setUp(self):
364  # Allow multiple L1 menu generations for these tests
365  l1menu_generated._hasRun = False # type: ignore
366 
367  def test_currentMenu(self):
368  from AthenaConfiguration.AllConfigFlags import initConfigFlags
369  flags = initConfigFlags()
370  flags.Trigger.EDMVersion = 3
371  from AthenaConfiguration.TestDefaults import defaultTestFiles
372  flags.Input.Files = defaultTestFiles.RAW_RUN2
373  flags.lock()
374  TrigConfigSvcCfg( flags )
375 
376  def test_legacyMenu(self):
377  from AthenaConfiguration.AllConfigFlags import initConfigFlags
378  flags = initConfigFlags()
379  from AthenaConfiguration.TestDefaults import defaultTestFiles
380  flags.Input.Files = defaultTestFiles.RAW_RUN2
381  flags.lock()
382  TrigConfigSvcCfg( flags )
383 
385  keys = createJsonMenuFiles(run=360026, lb=151)
386  for k,v in {"SMK" : 2749, "L1PSK" : 23557, "HLTPSK" : 17824, "BGSK" : 2181}.items():
387  assert k in keys, "Missing key {}".format(k)
388  assert v == keys[k], "Wrong value {}".format(v)
389 
390  unittest.main(verbosity=2)
python.TrigConfigSvcCfg.TrigConfigSvcCfg
def TrigConfigSvcCfg(flags)
Definition: TrigConfigSvcCfg.py:263
python.TrigConfigSvcCfg._getMenuFileName
def _getMenuFileName(flags)
Definition: TrigConfigSvcCfg.py:127
python.TrigConfigSvcCfg._doMenuConversion
def _doMenuConversion(flags)
Definition: TrigConfigSvcCfg.py:122
python.TrigConfigSvcCfg.getHLTMenuFileName
def getHLTMenuFileName(flags)
Definition: TrigConfigSvcCfg.py:140
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.TrigConfigSvcCfg.getHLTPrescaleFolderName
def getHLTPrescaleFolderName()
Definition: TrigConfigSvcCfg.py:118
python.Helpers.release_metadata
def release_metadata()
Definition: Tools/PyUtils/python/Helpers.py:143
python.TrigConfigSvcCfg.getTrigConfigFromFlag
def getTrigConfigFromFlag(flags)
Definition: TrigConfigSvcCfg.py:80
python.TrigConfigSvcCfg.createL1PrescalesFileFromMenu
def createL1PrescalesFileFromMenu(flags)
Definition: TrigConfigSvcCfg.py:165
python.TrigConfigSvcCfg.generateL1Menu
def generateL1Menu(flags)
Definition: TrigConfigSvcCfg.py:184
python.TrigConfigSvcCfg.getL1MenuFileName
def getL1MenuFileName(flags)
Definition: TrigConfigSvcCfg.py:136
python.TrigConfigSvcCfg.getHLTJobOptionsFileName
def getHLTJobOptionsFileName()
Definition: TrigConfigSvcCfg.py:160
python.TrigConfigSvcCfg.Tests.test_legacyMenu
def test_legacyMenu(self)
Definition: TrigConfigSvcCfg.py:376
python.TrigConfigSvcCfg.getBunchGroupSetFileName
def getBunchGroupSetFileName(flags)
Definition: TrigConfigSvcCfg.py:156
python.TrigConfigSvcCfg.getL1PrescalesSetFileName
def getL1PrescalesSetFileName(flags)
Definition: TrigConfigSvcCfg.py:148
python.TrigConfigSvcCfg.createJsonMenuFiles
def createJsonMenuFiles(run, lb)
Definition: TrigConfigSvcCfg.py:59
python.TrigConfigSvcCfg.HLTPrescaleCondAlgCfg
def HLTPrescaleCondAlgCfg(flags)
Definition: TrigConfigSvcCfg.py:327
python.TrigConfigSvcCfg.getTrigConfFromCool
def getTrigConfFromCool(runNumber, lumiBlock)
Definition: TrigConfigSvcCfg.py:24
python.TrigConfigSvcCfg.getHLTMonitoringFileName
def getHLTMonitoringFileName(flags)
Definition: TrigConfigSvcCfg.py:144
python.TrigConfigSvcCfg.Tests
Definition: TrigConfigSvcCfg.py:361
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:72
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.TrigConfigSvcCfg.Tests.setUp
def setUp(self)
Definition: TrigConfigSvcCfg.py:363
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:79
python.TrigConfigSvcCfg.L1PrescaleCondAlgCfg
def L1PrescaleCondAlgCfg(flags)
Definition: TrigConfigSvcCfg.py:272
python.TrigConfigSvcCfg.L1ConfigSvcCfg
def L1ConfigSvcCfg(flags)
Definition: TrigConfigSvcCfg.py:198
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.TrigConfigSvcCfg.getL1PrescaleFolderName
def getL1PrescaleFolderName()
Definition: TrigConfigSvcCfg.py:114
python.TrigConfigSvcCfg.HLTConfigSvcCfg
def HLTConfigSvcCfg(flags)
Definition: TrigConfigSvcCfg.py:231
python.TrigConfigSvcCfg.Tests.test_currentMenu
def test_currentMenu(self)
Definition: TrigConfigSvcCfg.py:367
python.TrigConfigSvcCfg.BunchGroupCondAlgCfg
def BunchGroupCondAlgCfg(flags)
Definition: TrigConfigSvcCfg.py:301
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.TrigConfigSvcCfg.getHLTPrescalesSetFileName
def getHLTPrescalesSetFileName(flags)
Definition: TrigConfigSvcCfg.py:152
python.TrigConfigSvcCfg.Tests.test_jsonConverter
def test_jsonConverter(self)
Definition: TrigConfigSvcCfg.py:384
python.TrigConfigSvcCfg.l1menu_generated
def l1menu_generated()
Definition: TrigConfigSvcCfg.py:15