7def AthenaMonitoringCfg(flags):
8 import logging
9 local_logger = logging.getLogger('AthenaMonitoringCfg')
10 info = local_logger.info
11 debug = local_logger.debug
12 warning = local_logger.warning
13 error = local_logger.error
14 result = ComponentAccumulator()
15
16 result.merge(AthenaMonitoringAODRecoCfg(flags))
17
18 if flags.DQ.Steering.doPixelMon and flags.GeoModel.Run is not LHCPeriod.Run1:
19
20 info('Set up Pixel monitoring')
21 from PixelMonitoring.PixelMonitoringConfig import PixelMonitoringConfig
23
24 if flags.DQ.Steering.doSCTMon:
25 info('Set up SCT monitoring')
26 from SCT_Monitoring.SCTMonitoringConfig import SCTMonitoringConfig
28
29 if flags.DQ.Steering.doTRTMon:
30 info('Set up TRT monitoring')
31 from TRTMonitoringRun3.TRTMonitoringRun3Config import TRTMonitoringRun3Cfg
32 result.merge(TRTMonitoringRun3Cfg(flags))
33
34 if flags.DQ.Steering.doInDetMon:
35 if flags.DQ.Steering.InDet.doGlobalMon:
36 info('Set up InDet Global monitoring')
37 from InDetGlobalMonitoringRun3Test.InDetGlobalMonitoringRun3TestConfig import InDetGlobalMonitoringRun3TestConfig
39 if flags.DQ.Steering.InDet.doAlignMon:
40 info('Set up Alignment monitoring')
41 from InDetAlignmentMonitoringRun3.InDetAlignmentMonitoringRun3Config import InDetAlignmentMonitoringRun3Config
43
44 if flags.DQ.Steering.doLArMon:
45 info('Set up LAr monitoring')
46 from LArConfiguration.LArMonitoringConfig import LArMonitoringConfig
47 result.merge(LArMonitoringConfig(flags))
48
49 if flags.DQ.Steering.doTileMon:
50 info('Set up Tile monitoring')
51 from TileMonitoring.TileMonitoringConfig import TileMonitoringCfg
52 result.merge(TileMonitoringCfg(flags))
53
54 if flags.DQ.Steering.doCaloGlobalMon:
55 info('Set up Calo monitoring')
56 from CaloMonitoring.CaloMonitoringConfig import CaloMonitoringCfg
57 result.merge(CaloMonitoringCfg(flags))
58
59 if flags.DQ.Steering.doMuonMon:
60 info('Set up Muon monitoring')
61 from MuonDQAMonitoring.MuonDQAMonitoringConfig import MuonDQAMonitoringConfig
63
64 if flags.DQ.Steering.doHLTMon:
65 info('Set up HLT monitoring')
66 if flags.DQ.Environment == 'AOD':
67 warning("HLT Monitoring enabled on AOD: this might cause issues as not all HLT collections are written to standard AOD!")
68 from TrigHLTMonitoring.TrigHLTMonitorAlgorithm import TrigHLTMonTopConfig
69 result.merge(TrigHLTMonTopConfig(flags))
70
71 if flags.DQ.Steering.doJetTagMon:
72 info('Set up JetTagging monitoring')
73 from JetTagMonitoring.JetTagMonitorAlgorithm import JetTagMonitorConfig
74 result.merge(JetTagMonitorConfig(flags))
75
76 if flags.DQ.Steering.doEgammaMon:
77 info('Set up Egamma monitoring')
78 from egammaPerformance.egammaMonitoringConfig import egammaMonitoringConfig
80
81 if flags.DQ.Steering.doJetMon:
82 info('Set up Jet monitoring')
83 from JetMonitoring.JetMonitoringStandard import standardJetMonitoring
84 result.merge(standardJetMonitoring(flags))
85
86
87 if flags.DQ.Environment != 'tier0ESD':
88
89 if not flags.Reco.EnableHI or (flags.Reco.EnableHI and flags.Tracking.doUPC) :
90 from eflowRec.PFCfg import PFGlobalFlowElementLinkingCfg
91 result.merge(PFGlobalFlowElementLinkingCfg(flags))
92
93 if flags.DQ.Steering.doJetInputsMon:
94 info('Set up Jet Inputs monitoring')
95 from JetInputsMonitoring.ClusterMonitorAlgorithm import ClusterMonitoringConfig
96 result.merge(ClusterMonitoringConfig(flags))
97 from JetInputsMonitoring.PFOMonitorAlgorithm import PFOMonitoringConfig
98 result.merge(PFOMonitoringConfig(flags))
99
100 if flags.DQ.Steering.doMissingEtMon:
101 info('Set up MET monitoring')
102 from MissingETMonitoring.METMonitorAlgorithm import METMonitoringConfig
103 result.merge(METMonitoringConfig(flags))
104
105 if flags.DQ.Steering.doDataFlowMon:
106 info('Set up Data Flow monitoring')
107 from DataQualityTools.DQTDataFlowMonAlg import DQTDataFlowMonAlgConfig
108 result.merge(DQTDataFlowMonAlgConfig(flags))
109
110 if flags.DQ.Steering.doGlobalMon:
111 info('Set up Global monitoring')
112 from DataQualityTools.DataQualityToolsConfig import DataQualityToolsConfig
114
115 if flags.DQ.Steering.doTauMon:
116 info('Set up Tau monitoring')
117 from tauMonitoring.TauMonitoringConfig import TauMonitoringConfig
119
120 if flags.DQ.Steering.doAFPMon:
121 info('Set up AFP monitoring')
122 from Run3AFPMonitoring.Run3AFPExampleMonitorAlgorithm import Run3AFPExampleMonitoringConfig
123 result.merge(Run3AFPExampleMonitoringConfig(flags))
124
125 if flags.DQ.Steering.doZDCMon and not flags.Input.isMC and flags.GeoModel.Run > LHCPeriod.Run2:
126 info('Set up ZDC monitoring')
127 from ZdcMonitoring.ZdcMonitorAlgorithm import ZdcMonitoringConfig
128 result.merge(ZdcMonitoringConfig(flags))
129
130
131 if flags.DQ.Steering.doLVL1CaloMon and flags.GeoModel.Run > LHCPeriod.Run1:
132 info('Set up LVL1Calo monitoring')
133 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig import LVL1CaloMonitoringConfig
135 if flags.DQ.Steering.doLVL1InterfacesMon:
136 info('Set up LVL1Interfaces monitoring')
137 from TrigT1Monitoring.LVL1InterfacesMonitoringCfg import LVL1InterfacesMonitoringCfg
139
140 if flags.DQ.Steering.doCTPMon:
141 info('Set up CTP monitoring')
142 from TrigT1CTMonitoring.CTPMonitoringConfig import CTPMonitoringConfig
144
145
146 definedhists = {}
147 for algo in result.getEventAlgos():
148 import os.path, json
149 if hasattr(algo, 'GMTools'):
150 for t in algo.GMTools:
151 for h in t.Histograms:
152 ho = json.loads(h)
153 fullpath = os.path.join(t.HistPath, ho['path'], ho['alias']) + ':' + ho['convention']
154 if fullpath in definedhists:
155 previous = definedhists[fullpath]
156
157
158 if previous[2]==ho:
159 info(f'Multiple matching definition of histogram {fullpath} by:\n\t{algo.getName()}/{t.getName()} ({ho}) and\n\t{previous[0]}/{previous[1]}')
160 else:
161 error(f
'Multiple differing definition of histogram {fullpath} by:\n\t{algo.getName()}/{t.getName()} ({ho}) and\n\t{previous[0]}/{previous[1]} ({previous[2]})')
162 raise ValueError()
163 definedhists[fullpath] = (algo.getName(), t.getName(), ho)
164
165 debug(
'Passed histogram duplication check')
166
167 return result
168