263def getHLTMonitoringAccess( flags = None, filterOnActiveChains = False ) -> HLTMonitoringAccess:
264 tc = getTrigConfigFromFlag( flags )
265 if tc["SOURCE"] == "FILE":
266 cfg = HLTMonitoringAccess( filename = getHLTMonitoringFileName( flags ) )
267 elif tc["SOURCE"] == "COOL":
268 """This is the case when reconstructing the data."""
269 if len(flags.Input.RunNumbers) == 0:
270 raise RuntimeError("No run number available in input metadata")
271 keysFromConditions = getKeysFromConditions( flags.Input.RunNumbers[0], 0, flags )
272 cfg = HLTMonitoringAccess( dbalias = keysFromConditions["DB"], smkey = keysFromConditions['SMK'] )
273 elif tc["SOURCE"] == "DB":
274 cfg = HLTMonitoringAccess( dbalias = tc["DBCONN"], smkey = tc["SMK"] )
275 elif tc["SOURCE"] == "INFILE":
276 jsonHLTMon = _getJSONFromMetadata(flags, key='TriggerMenuJson_HLTMonitoring')
277 if jsonHLTMon is not None:
278 cfg = HLTMonitoringAccess(jsonString=jsonHLTMon)
279 else:
280 keysFromInfileMD = getDBKeysFromMetadata(flags)
281 smkey = keysFromInfileMD['SMK'] if keysFromInfileMD is not None else 0
282 if flags.Trigger.EDMVersion < 3 and not flags.Input.isMC:
283
284 log.info("Trigger metadata with key 'TriggerMenuJson_HLTMonitoring' is not available for Run 2 data. Returning empty dummy.")
285 jsonHLTMon = '{"filetype": "hltmonitoringsummary","name": "EmptyDefault", "signatures": {}}'
286 cfg = HLTMonitoringAccess(jsonString=jsonHLTMon)
287 else:
288
289 try:
290 if smkey < 3000:
291 log.info("Falling back on reading the HLTMonitoring from the TRIGGERDBREPR_RUN3 for SMK %i.", smkey)
292 cfg = HLTMonitoringAccess( dbalias = "TRIGGERDBREPR_RUN3", smkey = smkey )
293 else:
294 log.info("Falling back on reading the HLTMonitoring from the TRIGGERDB_RUN3 for SMK %i.", smkey)
295 cfg = HLTMonitoringAccess( dbalias = "TRIGGERDB_RUN3", smkey = smkey )
296 except KeyError:
297
298 log.info("Trigger HLTMonitoring is not available for SMK %i. Returning empty dummy.", smkey)
299 jsonHLTMon = '{"filetype": "hltmonitoringsummary","name": "EmptyDefault", "signatures": {}}'
300 cfg = HLTMonitoringAccess(jsonString=jsonHLTMon)
301
302 else:
303 raise RuntimeError("Unknown source of trigger configuration: %s" % tc["SOURCE"])
304
305
306
307 if filterOnActiveChains:
308 hltPs = getHLTPrescalesSetAccess(flags)
309 if hltPs:
310 for sig in cfg["signatures"]:
311 for chain in list(cfg["signatures"][sig]):
312 if chain in hltPs.chainNames() and not hltPs.enabled(chain):
313 del cfg["signatures"][sig][chain]
314
315 return cfg