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 smkey < 3000 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 log.info("Falling back on reading the HLTMonitoring from the TRIGGERDB_RUN3 for SMK %i.", smkey)
291 cfg = HLTMonitoringAccess( dbalias = "TRIGGERDB_RUN3", smkey = smkey )
292 except KeyError:
293
294 log.info("Trigger HLTMonitoring is not available for SMK %i. Returning empty dummy.", smkey)
295 jsonHLTMon = '{"filetype": "hltmonitoringsummary","name": "EmptyDefault", "signatures": {}}'
296 cfg = HLTMonitoringAccess(jsonString=jsonHLTMon)
297
298 else:
299 raise RuntimeError("Unknown source of trigger configuration: %s" % tc["SOURCE"])
300
301
302
303 if filterOnActiveChains:
304 hltPs = getHLTPrescalesSetAccess(flags)
305 if hltPs:
306 for sig in cfg["signatures"]:
307 for chain in list(cfg["signatures"][sig]):
308 if chain in hltPs.chainNames() and not hltPs.enabled(chain):
309 del cfg["signatures"][sig][chain]
310
311 return cfg