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