ATLAS Offline Software
HLTMenuConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 
8 
9 from AthenaCommon.Logging import logging
10 log = logging.getLogger(__name__)
11 
13  """
14  Repository of all configured chains. Contains chain dictionaries and Menu Chain objects.
15  """
16  __allChainDicts = {}
17 
18  @classmethod
19  def registerChain(cls, chainDict):
20  """Register chain for future use"""
21  chainName = chainDict['chainName']
22  assert chainName not in cls.__allChainDicts, f'Chain dictionary {chainName} already registered'
23 
24  cls.__allChainDicts[chainName] = chainDict
25  log.debug("Registered chain %s", chainName)
26 
27  @classmethod
28  def destroy(cls):
29  """Release memory and make the class unusable"""
30  del cls.__allChainDicts
31 
32  @classmethod
33  def isChainRegistered(cls, chainName):
34  return chainName in cls.__allChainDicts
35 
36  @classmethod
37  def dicts(cls):
38  return cls.__allChainDicts
39 
40  @classmethod
41  def dictsList(cls):
42  return cls.__allChainDicts.values()
43 
44  @classmethod
45  def getChainDictFromChainName(cls, chainName):
46  return cls.__allChainDicts[chainName]
47 
48 
49 if __name__ == "__main__": # selftest
50  log.info('Self testing')
51 
52  HLTMenuConfig.registerChain({'chainName':'HLT_bla1'})
53  HLTMenuConfig.registerChain({'chainName':'HLT_bla2'})
54  try:
55  HLTMenuConfig.registerChain({'chainName':'HLT_bla2'})
56  except AssertionError:
57  log.info("ok, cannot register same chain twice")
58  else:
59  log.error("registered same chain twice")
60 
61  HLTMenuConfig.getChainDictFromChainName('HLT_bla1') # if missing will assert
62  HLTMenuConfig.getChainDictFromChainName('HLT_bla2') # if missing will assert
63 
64  log.info("ok, registration works")
65  try:
66  HLTMenuConfig.getChainDictFromChainName('HLT_blabla')
67  except Exception as e:
68  if isinstance(e, KeyError):
69  log.info("ok, unregistered chain handling works")
70  else:
71  log.error("unhandled missing chain")
72 
HLTMenuConfig.HLTMenuConfig.destroy
def destroy(cls)
Definition: HLTMenuConfig.py:28
HLTMenuConfig.HLTMenuConfig.dicts
def dicts(cls)
Definition: HLTMenuConfig.py:37
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
HLTMenuConfig.HLTMenuConfig.__allChainDicts
__allChainDicts
Definition: HLTMenuConfig.py:16
HLTMenuConfig.HLTMenuConfig
Definition: HLTMenuConfig.py:12
HLTMenuConfig.HLTMenuConfig.dictsList
def dictsList(cls)
Definition: HLTMenuConfig.py:41
HLTMenuConfig.HLTMenuConfig.registerChain
def registerChain(cls, chainDict)
Definition: HLTMenuConfig.py:19
HLTMenuConfig.HLTMenuConfig.getChainDictFromChainName
def getChainDictFromChainName(cls, chainName)
Definition: HLTMenuConfig.py:45
HLTMenuConfig.HLTMenuConfig.isChainRegistered
def isChainRegistered(cls, chainName)
Definition: HLTMenuConfig.py:33