ATLAS Offline Software
Loading...
Searching...
No Matches
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
9from AthenaCommon.Logging import logging
10log = 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
49if __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
registerChain(cls, chainDict)
isChainRegistered(cls, chainName)
getChainDictFromChainName(cls, chainName)