ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TriggerCommon
TriggerMenuMT
python
HLT
Config
JSON
HLTMonitoringJSON.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3
import
re
4
import
json
5
from
TrigConfigSvc.TrigConfigSvcCfg
import
getHLTMonitoringFileName
6
from
AthenaCommon.Logging
import
logging
7
__log = logging.getLogger( __name__ )
8
9
10
# remove prescale suffixes
11
def
__getMenuBaseName
(menuName):
12
pattern = re.compile(
r'_v\d+|DC14'
)
13
patternPos = pattern.search(menuName)
14
if
patternPos:
15
menuName=menuName[:patternPos.end()]
16
else
:
17
__log.info(
'Can\'t find pattern to shorten menu name, either non-existent in name or not implemented.'
)
18
return
menuName
19
20
21
def
generateDefaultMonitoringJSON
(flags, chainDicts):
22
return
generateMonitoringJSON
(flags.Trigger.triggerMenuSetup,
23
chainDicts,
24
getHLTMonitoringFileName(flags))
25
26
27
def
generateMonitoringJSON
(menuName, chainDicts, fileName):
28
29
#create a summary file
30
summaryDict = {
31
"filetype"
:
"hltmonitoringsummary"
,
32
"name"
:
__getMenuBaseName
(menuName),
33
"signatures"
: {}
34
}
35
36
# then you can iterate, say over the HLT menu:
37
for
chain
in
chainDicts:
38
chain_name = chain[
'chainName'
]
39
__log.debug(
"[HLTMonitoring::generateMonitoringJSON] Processing Chain %s ..."
, chain_name)
40
41
#if the chain is in a express stream, check presence of teh monGroup
42
if
'express'
in
chain[
'stream'
]:
43
if
len(chain[
'monGroups'
]) == 0:
44
__log.warning(
"[HLTMonitoring::generateMonitoringJSON]Chain %s is in the express stream and doesn't have any monGroup"
, chain_name)
45
46
#check if the chain needs to be monitored
47
if
len(chain[
'monGroups'
]) == 0:
48
continue
49
50
__log.debug(
"[HLTMonitoring::generateMonitoringJSON] Chain %s has monitoring groups!"
, chain_name)
51
52
#add the signatures in the summary file
53
for
entry
in
chain[
'monGroups'
]:
54
if
(entry ==
'detMon'
):
55
monSignature =
'detMon'
56
monGroup =
''
57
else
:
58
monSignature = entry.split(
':'
)[0]
59
monGroup = entry.split(
':'
)[1]
60
61
if
monSignature
not
in
summaryDict[
'signatures'
]:
62
summaryDict[
'signatures'
][monSignature] = {chain_name: [monGroup]}
63
else
:
64
#the signature is already present,
65
# now check the chain
66
if
chain_name
not
in
summaryDict[
'signatures'
][monSignature]:
67
summaryDict[
'signatures'
][monSignature].update({chain_name: [monGroup]})
68
else
:
69
summaryDict[
'signatures'
][monSignature][chain_name].append(monGroup)
70
71
# # then writing the summary to a file is as simple as:
72
__log.info(
"Writing Summary of HLT Monitoring JSON to %s"
, fileName)
73
with
open(fileName,
'w'
)
as
outfile:
74
json.dump(summaryDict, outfile, indent = 4, sort_keys=
False
)
HLTMonitoringJSON.__getMenuBaseName
__getMenuBaseName(menuName)
Definition
HLTMonitoringJSON.py:11
HLTMonitoringJSON.generateMonitoringJSON
generateMonitoringJSON(menuName, chainDicts, fileName)
Definition
HLTMonitoringJSON.py:27
HLTMonitoringJSON.generateDefaultMonitoringJSON
generateDefaultMonitoringJSON(flags, chainDicts)
Definition
HLTMonitoringJSON.py:21
Generated on
for ATLAS Offline Software by
1.17.0