6 from AthenaCommon.Logging
import logging
7 from pycrest.api.crest_api
import CrestApi
8 log = logging.getLogger(
'athenaHLT')
10 from functools
import cache
25 return '/TDAQ/RunCtrl/SOR'
27 return '/TDAQ/RunCtrl/SOR_Params'
31 from CoolConvUtilities
import AtlCoolLib
33 log.info(
'Reading SOR record for run %s from COOL', run_number)
36 dbcon = AtlCoolLib.readOpen(
'COOLONL_TDAQ/%s' % cdb.db_instance())
37 folder = dbcon.getFolder(cdb.sor_folder())
44 sor = folder.findObject(run_number << 32, 0)
48 payload = sor.payload()
49 d = {k: payload[k]
for k
in payload}
54 from TrigConfStorage.TriggerCrestUtil
import TriggerCrestUtil
55 log.info(
'Reading EOR record for run %s from Crest', run_number)
56 return TriggerCrestUtil.getEORParams(run_number, server=crest_server)
60 """Read Trigger keys from COOL"""
62 from TrigConfStorage.TriggerCoolUtil
import TriggerCoolUtil
63 confKeys: dict[str, Any] = TriggerCoolUtil.getTrigConfKeys(run_number, lb_number)
64 confKeys[
'DBAlias'] = confKeys.pop(
'DB',
None)
70 """Read Trigger keys from CREST"""
71 from TrigConfStorage.TriggerCrestUtil
import TriggerCrestUtil
72 log.info(
"Using CREST server %s", crest_server)
73 api: CrestApi = TriggerCrestUtil.getCrestApi(server=crest_server)
74 confKeys: dict[str, Any] = TriggerCrestUtil.getTrigConfKeys(run_number, lb_number, api=api)
75 confKeys[
'DBAlias'] = confKeys.pop(
'DB',
None)
79 """Return the CA Cfg function based on joboptions path.
80 The format is MODULE[.FNC]. If no FNC is given, 'main' will be tried."""
88 module = importlib.import_module(jopath)
89 except ModuleNotFoundError:
93 mod_name, fnc_name = jopath.rsplit(
'.', maxsplit=1)
94 module = importlib.import_module(mod_name)
101 log.info(
"Loading %s.%s", module.__name__, fnc_name)
102 return getattr(module, fnc_name)
106 """Re-launch athenaHLT from the given json file. Optionally suppress
107 the list of command line args (e.g. flags)."""
111 for arg_index, arg
in enumerate(sys.argv):
112 if arg ==
'--dump-config-reload':
114 if arg
in [
'--precommand',
'-c',
'--postcommand',
'-C']:
116 if arg_index > 0
and sys.argv[arg_index-1]
in [
'--precommand',
'-c',
'--postcommand',
'-C']:
118 if arg.startswith(
'--precommand')
or arg.startswith(
'--postcommand'):
120 if arg
in suppress_args:
125 log.info(
'Restarting %s from %s ...', argv[0], argv[-1])
128 os.execvp(argv[0], argv)
134 if __name__==
'__main__':
142 assert(d
is not None)
145 assert(d[
'DetectorMask']==
'0000000000000000c10069fffffffff7')
148 assert(d
is not None)
151 assert(d[
'DetectorMask']==
'0000000000000000c10069fffffffff7')
154 assert(d
is not None)
157 assert(d[
'DetectorMask']==281474976710647)
162 assert(d[
'SMK']==2749)
163 assert(d[
'LVL1PSK']==15186)
164 assert(d[
'HLTPSK']==17719)
169 assert(d[
'SMK']==2749)
170 assert(d[
'LVL1PSK']==15186)
171 assert(d[
'HLTPSK']==17719)
175 assert(d[
'SMK']==2749)
176 assert(d[
'LVL1PSK']==23504)
177 assert(d[
'HLTPSK']==17792)