6 from AthenaCommon.Logging
import logging
7 log = logging.getLogger(
'athenaHLT')
9 from functools
import cache
24 return '/TDAQ/RunCtrl/SOR'
26 return '/TDAQ/RunCtrl/SOR_Params'
30 from CoolConvUtilities
import AtlCoolLib
32 log.info(
'Reading SOR record for run %s from COOL', run_number)
35 dbcon = AtlCoolLib.readOpen(
'COOLONL_TDAQ/%s' % cdb.db_instance())
36 folder = dbcon.getFolder(cdb.sor_folder())
43 sor = folder.findObject(run_number << 32, 0)
47 payload = sor.payload()
48 d = {k: payload[k]
for k
in payload}
53 from TrigConfStorage.TriggerCrestUtil
import TriggerCrestUtil
54 log.info(
'Reading EOR record for run %s from Crest', run_number)
55 return TriggerCrestUtil.getEORParams(run_number, server=crest_server)
59 """Read Trigger keys from COOL"""
61 from TrigConfStorage.TriggerCoolUtil
import TriggerCoolUtil
64 db = TriggerCoolUtil.GetConnection(cdb.db_instance())
65 run_range = [[run_number,run_number]]
67 d[
'SMK'] = TriggerCoolUtil.getHLTConfigKeys(db, run_range)[run_number][
'SMK']
70 for (key, firstLB, lastLB)
in keys:
71 if lb_number>=firstLB
and lb_number<=lastLB:
76 d[
'LVL1PSK'] = findKey(TriggerCoolUtil.getL1ConfigKeys(db, run_range)[run_number][
'LVL1PSK'])
77 d[
'HLTPSK'] = findKey(TriggerCoolUtil.getHLTPrescaleKeys(db, run_range)[run_number][
'HLTPSK2'])
83 """Read Trigger keys from CREST"""
84 from TrigConfStorage.TriggerCrestUtil
import TriggerCrestUtil
86 def _find_lb(config: list[dict[str, Any]], lb:int) -> int:
89 if c[
'since_lb'] > lb:
93 raise RuntimeError(f
"LB {lb} not found in list of config keys {config}")
96 log.info(
"Using CREST server %s", crest_server)
97 api = TriggerCrestUtil.getCrestApi(server=crest_server)
98 cfgkeysinfo = TriggerCrestUtil.getHLTConfigKeys(run_number, api=api)
101 'SMK': cfgkeysinfo[
'SMK'],
102 'LVL1PSK': _find_lb(TriggerCrestUtil.getL1ConfigKeys(run_number, api=api), lb=lb_number),
103 'HLTPSK': _find_lb(TriggerCrestUtil.getHLTPrescaleKeys(run_number, api=api), lb=lb_number),
104 'LVL1BGK': _find_lb(TriggerCrestUtil.getBunchGroupKey(run_number, api=api),lb=lb_number),
105 'DBAlias': cfgkeysinfo[
'DB']
109 """Return the CA Cfg function based on joboptions path.
110 The format is MODULE[.FNC]. If no FNC is given, 'main' will be tried."""
118 module = importlib.import_module(jopath)
119 except ModuleNotFoundError:
120 if '.' not in jopath:
123 mod_name, fnc_name = jopath.rsplit(
'.', maxsplit=1)
124 module = importlib.import_module(mod_name)
131 log.info(
"Loading %s.%s", module.__name__, fnc_name)
132 return getattr(module, fnc_name)
136 """Re-launch athenaHLT from the given json file. Optionally suppress
137 the list of command line args (e.g. flags)."""
141 for arg_index, arg
in enumerate(sys.argv):
142 if arg ==
'--dump-config-reload':
144 if arg
in [
'--precommand',
'-c',
'--postcommand',
'-C']:
146 if arg_index > 0
and sys.argv[arg_index-1]
in [
'--precommand',
'-c',
'--postcommand',
'-C']:
148 if arg.startswith(
'--precommand')
or arg.startswith(
'--postcommand'):
150 if arg
in suppress_args:
155 log.info(
'Restarting %s from %s ...', argv[0], argv[-1])
158 os.execvp(argv[0], argv)
164 if __name__==
'__main__':
172 assert(d
is not None)
175 assert(d[
'DetectorMask']==
'0000000000000000c10069fffffffff7')
178 assert(d
is not None)
181 assert(d[
'DetectorMask']==
'0000000000000000c10069fffffffff7')
184 assert(d
is not None)
187 assert(d[
'DetectorMask']==281474976710647)
192 assert(d[
'SMK']==2749)
193 assert(d[
'LVL1PSK']==15186)
194 assert(d[
'HLTPSK']==17719)
199 assert(d[
'SMK']==2749)
200 assert(d[
'LVL1PSK']==15186)
201 assert(d[
'HLTPSK']==17719)
205 assert(d[
'SMK']==2749)
206 assert(d[
'LVL1PSK']==23504)
207 assert(d[
'HLTPSK']==17792)