95def _getTrigConfigFromFlag(*, triggerConfig, run, lb, useCrest, crestServer) -> dict[str, Any]:
96 log.info("Parsing trigger configuration from flag Trigger.triggerConfig='%s' for run=%d and lb=%d",
97 triggerConfig, run, lb)
98 log.info("Crest usage flags are: Trigger.useCrest=%s, Trigger.crestServer=%s", useCrest, crestServer)
99
100 dbconn: str
101 source, dbconn, keys = (triggerConfig+
":::").
split(
":")[:3]
102 smk,l1psk,hltpsk,bgsk = (keys+
",,,").
split(
",")[:4]
103
104 smk, l1psk, hltpsk, bgsk = (int(k) if k!="" else None for k in (smk, l1psk, hltpsk, bgsk))
105 source: str = source.upper()
106
107 if source == "DB":
108 if run < 0:
109 msg: str = "Run number is required to extract trigger conditions"
110 log.error(msg)
111 raise RuntimeError(msg)
112
113 if useCrest:
114 trigConf: dict[str, int | str] = getTrigConfFromCrest(run, lb, crestServer)
115 else:
116 trigConf: dict[str, int | str] = getTrigConfFromCool(run, lb)
117 if dbconn == "":
118 dbconn = cast(str, trigConf["DB"])
119
120 if dbconn in ["TRIGGERDB_RUN3", "TRIGGERDBDEV1_I8", "TRIGGERDBDEV1", "TRIGGERDBDEV2"]:
121 if smk is None:
122 smk = trigConf["SMK"]
123 if l1psk is None:
124 l1psk = trigConf['LVL1PSK']
125 if hltpsk is None:
126 hltpsk = trigConf['HLTPSK']
127 if bgsk is None:
128 bgsk = trigConf['BGSK']
129
130 if useCrest:
131
132 crestConn = TriggerCrestUtil.getCrestConnection(dbconn)
133 if crestConn is None:
134 msg: str = f"Could not find CREST triggerdb connection from DB connection alias '{dbconn}'"
135 log.error(msg)
136 raise RuntimeError(msg)
137 dbconn = f"{crestServer}/{crestConn}"
138
139 tcdict = {
140 "SOURCE" : source,
141 "DBCONN" : dbconn,
142 "SMK" : smk,
143 "LVL1PSK": l1psk,
144 "HLTPSK" : hltpsk,
145 "BGSK" : bgsk
146 }
147 return tcdict
148
149
std::vector< std::string > split(const std::string &s, const std::string &t=":")