ATLAS Offline Software
TrigCaloMonitorAlgorithm.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 '''@file TrigCaloMonitorAlgorithm.py
6 @author D. Maximov
7 @author E. Bergeaas Kuutmann
8 @author T. Bold
9 @author D. Bakshi Gupta
10 @date 2022-11-17
11 @brief Calorimeter trigger python configuration for the Run III AthenaMonitoring package, based on the example by E. Bergeaas Kuutmann
12 '''
13 
14 def TrigCaloMonConfig(inputFlags):
15  '''Function to configures some algorithms in the monitoring system.'''
16  import math
17  import re
18 
19  # The following class will make a sequence, configure algorithms, and link
20  # them to GenericMonitoringTools
21  from AthenaMonitoring import AthMonitorCfgHelper
22  helper = AthMonitorCfgHelper(inputFlags,'TrigCaloAthMonitorCfg')
23 
24  # Finalize. The return value should be a tuple of the ComponentAccumulator
25  # and the sequence containing the created algorithms. If we haven't called
26  # any configuration other than the AthMonitorCfgHelper here, then we can
27  # just return directly (and not create "result" above)
28 
29  # Get BunchCrossingCondAlg
30  from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
31  result=BunchCrossingCondAlgCfg(inputFlags)
32 
33 
34  from TrigConfigSvc.TriggerConfigAccess import getHLTMonitoringAccess
35  moniAccess=getHLTMonitoringAccess(inputFlags)
36  caloChainsT0=moniAccess.monitoredChains(signatures="caloMon",monLevels=["t0"])
37 
38 
41  HLTChainsEgammaT0 = ['All']
42  HLTChainsEgammaHIT0 = ['All']
43  HLTChainsJetMetT0 = ['All']
44  HLTChainsTauT0 = ['All']
45 
46  if len(caloChainsT0) > 1:
47  for chain in caloChainsT0:
48  if re.match(r'HLT_\d?e.*',chain) or re.match(r'HLT_\d?g.*',chain):
49  if 'ion' in chain:
50  HLTChainsEgammaHIT0.append(chain)
51  else:
52  HLTChainsEgammaT0.append(chain)
53  elif re.match(r'HLT_\d?j.*',chain) or re.match(r'HLT_\d?xe.*',chain):
54  HLTChainsJetMetT0.append(chain)
55  else:
56  HLTChainsTauT0.append(chain)
57 
58  # Add monitor algorithm
59  from AthenaConfiguration.ComponentFactory import CompFactory
60 
61 
65 
66  algs = ['HLT_FastCaloEMClustersMonAlg', 'HLT_FastCaloEMClustersHIMonAlg']
67  EgammaChain = [HLTChainsEgammaT0 , HLTChainsEgammaHIT0]
68  list_len = [len(i) for i in EgammaChain]
69  max_len = max(list_len)
70  L2CaloEMClustersMonGroup = [[0]*max_len]*len(algs)
71  for i in range(len(algs)):
72  for j in range(len(EgammaChain[i])):
73  L2CaloEMClustersMonAlg = helper.addAlgorithm(CompFactory.HLTCalo_L2CaloEMClustersMonitor, algs[i]+'_'+EgammaChain[i][j])
74  if algs[i] == 'HLT_FastCaloEMClustersHIMonAlg':
75  path_name = 'HLT_FastCaloEMClustersHI'
76  else:
77  path_name = 'HLT_FastCaloEMClusters'
78 
79  L2CaloEMClustersMonAlg.HLTContainer = 'HLT_FastCaloEMClusters'
80  L2CaloEMClustersMonAlg.OFFContainer = 'egammaClusters'
81  L2CaloEMClustersMonAlg.MonGroupName = 'TrigCaloMonitor'
82  L2CaloEMClustersMonAlg.OFFTypes = []
83  L2CaloEMClustersMonAlg.HLThighET= 10000.0
84  L2CaloEMClustersMonAlg.HLTMinET = -1.0
85  L2CaloEMClustersMonAlg.OFFMinET = -1.0
86  L2CaloEMClustersMonAlg.MaxDeltaR = 0.04
87  L2CaloEMClustersMonAlg.HLTChainsT0 = EgammaChain[i][j]
88  # Algorithm must be scheduled after the decoding of the trigger bytestream ROB
89  from TrigDecisionTool.TrigDecisionToolConfig import getRun3NavigationContainerFromInput
90  L2CaloEMClustersMonAlg.ExtraInputs |= {('xAOD::TrigCompositeContainer' , 'StoreGateSvc+'+getRun3NavigationContainerFromInput(inputFlags))}
91 
92  # Add group
93  L2CaloEMClustersMonGroup[i][j] = helper.addGroup(L2CaloEMClustersMonAlg, 'TrigCaloMonitor','HLT/HLTCalo')
94 
95  hist_path= path_name+'/HLT_Clusters/'+EgammaChain[i][j]
96  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_num',title='Number of HLT Clusters; Num Clusters; Entries',
97  path=hist_path,xbins=51,xmin=-0.5,xmax=50.5)
98  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi',title='Number of HLT Clusters; #eta; #phi; ', type='TH2F',
99  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
100  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_et',title='HLT Clusters E_{T}; E_{T} [GeV]; Entries',
101  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
102  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta',title='HLT Clusters #eta; #eta; Entries',
103  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0)
104  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_phi',title='HLT Cluster #phi; #phi; Entries',
105  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
106  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_size',title='HLT Cluster Size; Number of Cells; Entries',
107  path=hist_path,xbins=91,xmin=-10.0,xmax=1810.0)
108  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_et_vs_BC',title='HLT Clusters E_{T} vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
109  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
110 
111  # Declare high-ET HLT histograms
112  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_barrel_high_et_num',title='Number of high-E_{T} HLT Clusters; Num Clusters; Entries',
113  path=hist_path,xbins=101,xmin=-0.5,xmax=100.5)
114  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi;HLT_barrel_high_et_phi_vs_HLT_barrel_high_et_eta',cutmask="HLT_barrel_high_et",title='Number of high-E_{T} HLT Clusters; #eta; #phi; ', type='TH2F',
115  path=hist_path,xbins=50,xmin=-2.6,xmax=2.6,ybins=64,ymin=-math.pi,ymax=math.pi)
116  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_et;HLT_barrel_high_et_et',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Clusters E_{T}; E_{T} [GeV]; Entries',
117  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
118  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta;HLT_barrel_high_et_eta',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Clusters #eta; #eta; Entries',
119  path=hist_path,xbins=50,xmin=-2.6,xmax=2.6)
120  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_phi;HLT_barrel_high_et_phi',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Cluster #phi; #phi; Entries',
121  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
122  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_size;HLT_barrel_high_et_size',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Cluster Size; Number of Cells; Entries',
123  path=hist_path,xbins=91,xmin=-10.0,xmax=1810.0)
124  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_barrel_high_et_vs_BC',cutmask="HLT_barrel_high_et",title='hight-E_{T} HLT Clusters E_{T} vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
125  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
126 
127 
128 
131 
132  # Declare OFF histograms
133  hist_path = path_name+'/OFF_Clusters/'+EgammaChain[i][j]
134  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_num',title='Number of OFF Clusters; Num Clusters; Entries',
135  path=hist_path,xbins=101,xmin=-1.0,xmax=201.0)
136  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi',title='Number of OFF Clusters; #eta; #phi; ', type='TH2F',
137  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
138  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_et',title='OFF Clusters E_{T}; E_{T} [GeV]; Entries',
139  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
140  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta',title='OFF Clusters #eta; #eta; Entries',
141  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0)
142  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_phi',title='OFF Cluster #phi; #phi; Entries',
143  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
144  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_type',title='OFF Cluster Type; Size Enum; Entries',
145  path=hist_path,xbins=16,xmin=0.5,xmax=16.5)
146  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,OFF_et;OFF_et_vs_BC',title='OFF Clusters E_{T} vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
147  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
148 
149 
152 
153  # Declare HLT matched HLT vs. OFF cluster histograms
154  hist_path=path_name+'/HLT_Matched_to_OFF/'+ EgammaChain[i][j]
155  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_matched_fraction',title='Fraction of HLT clusters matched to HLT clusters; Matched fraction; Entries',
156  path=hist_path,xbins=100,xmin=0.0,xmax=1.0)
157  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_minimum_delta_r',title='HLT vs OFF Cluster #DeltaR; #DeltaR; Entries',
158  path=hist_path,xbins=50,xmin=0.0,xmax=0.1)
159  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_minimum_delta_eta',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster #Delta#eta; #eta_{_{OFF}} - #eta_{_{HLT}}; Entries',
160  path=hist_path,xbins=50,xmin=-0.2,xmax=0.2)
161  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_minimum_delta_phi',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster #Delta#phi; #phi_{_{OFF}} - #phi_{_{HLT}}; Entries',
162  path=hist_path,xbins=50,xmin=-0.01,xmax=0.09)
163  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_et,OFF_match_et;HLT_with_OFF_match_et_vs_OFF_match_et',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster E_{T}; E_{T_{OFF}} [GeV]; E_{T_{HLT}} [GeV]', type='TH2F',
164  path=hist_path,xbins=100,xmin=0.0,xmax=100.0, ybins=100,ymin=0.0,ymax=100.0)
165  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_resolution',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster #DeltaE_{T} / E_{T}; E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} [%]; Entries',
166  path=hist_path,xbins=100,xmin=-40.0,xmax=40.0)
167  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_et,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_et',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; E_{T,OFF} [GeV]; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
168  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
169  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
170  path=hist_path,xbins=20,xmin=-5.0,xmax=5.0)
171  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_phi,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_phi',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #phi_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
172  path=hist_path,xbins=16,xmin=-math.pi,xmax=math.pi)
173  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_phi_vs_HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta; #phi', type='TProfile2D',
174  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
175 
176  # Declare OFF histograms with HLT matches
177  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_with_OFF_match_num',title='Number of HLT Clusters (With OFF Matches); Num Clusters; Entries',
178  path=hist_path,xbins=101,xmin=-1.0,xmax=201.0)
179  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi;HLT_with_OFF_match_eta_vs_HLT_with_OFF_match_phi',cutmask='HLT_with_OFF_match',title='Number of HLT Clusters (With OFF Matches); #eta; #phi; ', type='TH2F',
180  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
181  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_et;HLT_with_OFF_match_et',cutmask='HLT_with_OFF_match',title='HLT Clusters E_{T} (With OFF Matches); E_{T} [GeV]; Entries',
182  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
183  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta;HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='HLT Clusters #eta (With OFF Matches); #eta; Entries',
184  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0)
185  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_phi;HLT_with_OFF_match_phi',cutmask='HLT_with_OFF_match',title='HLT Cluster #phi (With OFF Matches); #phi; Entries',
186  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
187  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_with_OFF_match_et_vs_BC',cutmask='HLT_with_OFF_match',title='HLT Clusters E_{T} (With OFF Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
188  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
189 
190  # Declare OFF histograms without HLT matches
191  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_no_OFF_match_num',title='Number of HLT Clusters (No OFF Matches); Num Clusters; Entries',
192  path=hist_path,xbins=101,xmin=-1.0,xmax=201.0)
193  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi;HLT_no_OFF_match_eta_vs_HLT_no_OFF_match_phi',cutmask='HLT_no_OFF_match',title='Number of HLT Clusters (No OFF Matches); #eta; #phi; ', type='TH2F',
194  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
195  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_et;HLT_no_OFF_match_et',cutmask='HLT_no_OFF_match',title='HLT Clusters E_{T} (No OFF Matches); E_{T} [GeV]; Entries',
196  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
197  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_eta;HLT_no_OFF_match_eta',cutmask='HLT_no_OFF_match',title='HLT Clusters #eta (No OFF Matches); #eta; Entries',
198  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0)
199  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_phi;HLT_no_OFF_match_phi',cutmask='HLT_no_OFF_match',title='HLT Cluster #phi (No OFF Matches); #phi; Entries',
200  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
201  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_no_OFF_match_et_vs_BC',cutmask='HLT_no_OFF_match',title='HLT Clusters E_{T} (No OFF Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
202  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
203 
204 
207 
208  # Declare OFF matched HLT vs. OFF cluster histograms
209  hist_path=path_name+'/OFF_Matched_to_HLT/'+ EgammaChain[i][j]
210  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_matched_fraction',title='Fraction of OFF clusters matched to HLT clusters; Matched fraction; Entries',
211  path=hist_path,xbins=100,xmin=0.0,xmax=1.0)
212  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_minimum_delta_r',title='HLT vs OFF Cluster #DeltaR; #DeltaR; Entries',
213  path=hist_path,xbins=50,xmin=0.0,xmax=0.1)
214  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_minimum_delta_eta',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster #Delta#eta; #eta_{_{OFF}} - #eta_{_{HLT}}; Entries',
215  path=hist_path,xbins=50,xmin=-0.2,xmax=0.2)
216  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_minimum_delta_phi',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster #Delta#phi; #phi_{_{OFF}} - #phi_{_{HLT}}; Entries',
217  path=hist_path,xbins=50,xmin=-0.01,xmax=0.09)
218  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_et,HLT_match_et;HLT_match_et_vs_OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster E_{T}; E_{T_{OFF}} [GeV]; E_{T_{HLT}} [GeV]', type='TH2F',
219  path=hist_path,xbins=100,xmin=0.0,xmax=100.0, ybins=100,ymin=0.0,ymax=100.0)
220  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_resolution',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster #DeltaE_{T} / E_{T}; E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} [%]; Entries',
221  path=hist_path,xbins=100,xmin=-40.0,xmax=40.0)
222  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_et,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; E_{T,OFF} [GeV]; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
223  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
224  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
225  path=hist_path,xbins=20,xmin=-5.0,xmax=5.0)
226  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_phi,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_phi',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #phi_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
227  path=hist_path,xbins=16,xmin=-math.pi,xmax=math.pi)
228  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_phi_vs_OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta; #phi', type='TProfile2D',
229  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
230 
231  # Declare OFF histograms with HLT matches
232  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_with_HLT_match_num',title='Number of OFF Clusters (With HLT Matches); Num Clusters; Entries',
233  path=hist_path,xbins=101,xmin=-1.0,xmax=201.0)
234  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi;OFF_with_HLT_match_phi_vs_OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='Number of OFF Clusters (With HLT Matches); #eta; #phi; ', type='TH2F',
235  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
236  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_et;OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='OFF Clusters E_{T} (With HLT Matches); E_{T} [GeV]; Entries',
237  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
238  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta;OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='OFF Clusters #eta (With HLT Matches); #eta; Entries',
239  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0)
240  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_phi;OFF_with_HLT_match_phi',cutmask='OFF_with_HLT_match',title='OFF Cluster #phi (With HLT Matches); #phi; Entries',
241  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
242  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_type;OFF_with_HLT_match_type',cutmask='OFF_with_HLT_match',title='OFF Cluster Type (With HLT Matches); Size Enum; Entries',
243  path=hist_path,xbins=16,xmin=0.5,xmax=16.5)
244  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,OFF_et;OFF_with_HLT_match_et_vs_BC',cutmask='OFF_with_HLT_match',title='OFF Clusters E_{T} (With HLT Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
245  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
246 
247  # Declare OFF histograms without HLT matches
248  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_no_HLT_match_num',title='Number of OFF Clusters (No HLT Matches); Num Clusters; Entries',
249  path=hist_path,xbins=101,xmin=-1.0,xmax=201.0)
250  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi;OFF_no_HLT_match_phi_vs_OFF_no_HLT_match_eta',cutmask='OFF_no_HLT_match',title='Number of OFF Clusters (No HLT Matches); #eta; #phi; ', type='TH2F',
251  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
252  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_et;OFF_no_HLT_match_et',cutmask='OFF_no_HLT_match',title='OFF Clusters E_{T} (No HLT Matches); E_{T} [GeV]; Entries',
253  path=hist_path,xbins=100,xmin=0.0,xmax=100.0)
254  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_eta;OFF_no_HLT_match_eta',cutmask='OFF_no_HLT_match',title='OFF Clusters #eta (No HLT Matches); #eta; Entries',
255  path=hist_path,xbins=50,xmin=-5.0,xmax=5.0)
256  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_phi;OFF_no_HLT_match_phi',cutmask='OFF_no_HLT_match',title='OFF Cluster #phi (No HLT Matches); #phi; Entries',
257  path=hist_path,xbins=64,xmin=-math.pi,xmax=math.pi)
258  L2CaloEMClustersMonGroup[i][j].defineHistogram('OFF_type;OFF_no_HLT_match_type',cutmask='OFF_no_HLT_match',title='OFF Cluster Type (No HLT Matches); Size Enum; Entries',
259  path=hist_path,xbins=16,xmin=0.5,xmax=16.5)
260  L2CaloEMClustersMonGroup[i][j].defineHistogram('HLT_bc,OFF_et;OFF_no_HLT_match_et_vs_BC',cutmask='OFF_no_HLT_match',title='OFF Clusters E_{T} (No HLT Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
261  path=hist_path,xbins=21,xmin=-0.5,xmax=20.5)
262 
263 
264 
265 
268 
269  # Add monitor algorithm
270 
271  algs = ['TopoCaloClustersFSMonAlg', 'TopoCaloClustersRoIMonAlg','TopoCaloClustersHIRoIMonAlg', 'TopoCaloClustersLCMonAlg']
272  EgammaJetMetTauChain = [HLTChainsJetMetT0, HLTChainsEgammaT0 , HLTChainsEgammaHIT0, HLTChainsTauT0]
273  list_len = [len(i) for i in EgammaJetMetTauChain]
274  max_len = max(list_len)
275  TopoCaloClustersMonGroup = [[0]*max_len]*len(algs)
276 
277  for i in range(len(algs)):
278  for j in range(len(EgammaJetMetTauChain[i])):
279  configuredAlg = helper.addAlgorithm(CompFactory.HLTCalo_TopoCaloClustersMonitor, algs[i]+'_'+EgammaJetMetTauChain[i][j])
280  if algs[i] == 'TopoCaloClustersFSMonAlg':
281  configuredAlg.HLTContainer = 'HLT_TopoCaloClustersFS'
282  path_name = 'HLT_TopoCaloClustersFS'
283  elif algs[i] == 'TopoCaloClustersRoIMonAlg':
284  configuredAlg.HLTContainer = 'HLT_TopoCaloClustersRoI'
285  path_name = 'HLT_TopoCaloClustersRoI'
286  elif algs[i] == 'TopoCaloClustersHIRoIMonAlg':
287  configuredAlg.HLTContainer = 'HLT_TopoCaloClustersHIRoI'
288  path_name = 'HLT_TopoCaloClustersHIRoI'
289  else:
290  configuredAlg.HLTContainer = 'HLT_TopoCaloClustersLC'
291  path_name = 'HLT_TopoCaloClustersLC'
292  configuredAlg.DoLC = True
293 
294  configuredAlg.OFFContainer = 'CaloCalTopoClusters'
295  configuredAlg.MonGroupName = 'TrigCaloMonitor'
296  configuredAlg.HLTTypes = []
297  configuredAlg.OFFTypes = []
298  configuredAlg.HLThighET= 5000.0
299  configuredAlg.HLTMinET = 500.0
300  configuredAlg.OFFMinET = 500.0
301  configuredAlg.MatchType = False
302  configuredAlg.MaxDeltaR = 0.04
303  configuredAlg.HLTChainsT0 = EgammaJetMetTauChain[i][j]
304  # Add group
305  TopoCaloClustersMonGroup[i][j] = helper.addGroup(configuredAlg, 'TrigCaloMonitor','HLT/HLTCalo')
306  # Algorithm must be scheduled after the decoding of the trigger bytestream ROB
307  configuredAlg.ExtraInputs |= {('xAOD::TrigCompositeContainer' , 'StoreGateSvc+'+getRun3NavigationContainerFromInput(inputFlags))}
308 
309 
313  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_num',title='Number of HLT Clusters; Num Clusters; Entries',
314  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-10.0,xmax=2010.0)
315  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi',title='Number of HLT Clusters; #eta; #phi; ', type='TH2F',
316  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
317  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et',title='HLT Clusters E_{T}; E_{T} [GeV]; Entries',
318  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
319  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta',title='HLT Clusters #eta; #eta; Entries',
320  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0)
321  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_phi',title='HLT Cluster #phi; #phi; Entries',
322  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
323  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_type',title='HLT Cluster Type; Size Enum; Entries',
324  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
325  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_time',title='HLT Cluster time; time; Entries',
326  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=60,xmin=-10.0,xmax=10.0)
327  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et,HLT_time',title='Number of HLT Clusters; E_{T} [GeV]; Time', type='TProfile',
328  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
329  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_size',title='HLT Cluster Size; Number of Cells; Entries',
330  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=91,xmin=-10.0,xmax=1810.0)
331  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_et_vs_BC',title='HLT Clusters E_{T} vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
332  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
333 
334  # Declare high-ET HLT histograms
335  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_barrel_high_et_num',title='Number of high-E_{T} HLT Clusters; Num Clusters; Entries',
336  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-0.5,xmax=100.5)
337  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi;HLT_barrel_high_et_phi_vs_HLT_barrel_high_et_eta',cutmask="HLT_barrel_high_et",title='Number of high-E_{T} HLT Clusters; #eta; #phi; ', type='TH2F',
338  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-2.6,xmax=2.6,ybins=64,ymin=-math.pi,ymax=math.pi)
339  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et;HLT_barrel_high_et_et',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Clusters E_{T}; E_{T} [GeV]; Entries',
340  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
341  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta;HLT_barrel_high_et_eta',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Clusters #eta; #eta; Entries',
342  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-2.6,xmax=2.6)
343  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_phi;HLT_barrel_high_et_phi',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Cluster #phi; #phi; Entries',
344  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
345  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_type;HLT_barrel_high_et_type',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Cluster Type; Size Enum; Entries',
346  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
347  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_time;HLT_barrel_high_et_time',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Cluster time; time; Entries',
348  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=60,xmin=-10.0,xmax=10.0)
349  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et,HLT_time;HLT_barrel_high_et_time_vs_HLT_barrel_high_et_et',cutmask="HLT_barrel_high_et",title='Number of high-E_{T} HLT Clusters; E_{T} [GeV]; Time', type='TProfile',
350  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
351  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_size;HLT_barrel_high_et_size',cutmask="HLT_barrel_high_et",title='high-E_{T} HLT Cluster Size; Number of Cells; Entries',
352  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=91,xmin=-10.0,xmax=1810.0)
353  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_barrel_high_et_vs_BC',cutmask="HLT_barrel_high_et",title='hight-E_{T} HLT Clusters E_{T} vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
354  path=path_name+'/HLT_Clusters/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
355 
356 
359 
360  # Declare OFF histograms
361  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_num',title='Number of OFF Clusters; Num Clusters; Entries',
362  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-10.0,xmax=2010.0)
363  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi',title='Number of OFF Clusters; #eta; #phi; ', type='TH2F',
364  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
365  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et',title='OFF Clusters E_{T}; E_{T} [GeV]; Entries',
366  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
367  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta',title='OFF Clusters #eta; #eta; Entries',
368  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0)
369  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_phi',title='OFF Cluster #phi; #phi; Entries',
370  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
371  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_time',title='OFF Cluster time; time; Entries',
372  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=75,xmin=-25.0,xmax=25.0)
373  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et,OFF_time',title='Number of OFF Clusters; E_{T} [GeV]; Time', type='TProfile',
374  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
375  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_type',title='HLT Cluster Type; Size Enum; Entries',
376  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
377  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,OFF_et;OFF_et_vs_BC',title='OFF Clusters E_{T} vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
378  path=path_name+'/OFF_Clusters/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
379 
380 
383 
384  # Declare HLT matched HLT vs. OFF cluster histograms
385  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_matched_fraction',title='Fraction of HLT clusters matched to OFF clusters; Matched fraction; Entries',
386  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=1.0)
387  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_minimum_delta_r',title='HLT vs OFF Cluster #DeltaR; #DeltaR; Entries',
388  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=0.1)
389  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_delta_eta',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster #Delta#eta; #eta_{_{OFF}} - #eta_{_{HLT}}; Entries',
390  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-0.2,xmax=0.2)
391  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_delta_phi',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster #Delta#phi; #phi_{_{OFF}} - #phi_{_{HLT}}; Entries',
392  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=0.02)
393  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_delta_time',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster time; Time; Entries',
394  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=80,xmin=-20.0,xmax=20.0)
395  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et,OFF_match_et;OFF_match_et_vs_HLT_with_OFF_match_et',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster E_{T}; E_{T_{OFF}} [GeV]; E_{T_{HLT}} [GeV]', type='TH2F',
396  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0, ybins=100,ymin=0.0,ymax=100.0)
397  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_vs_OFF_resolution',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster #DeltaE_{T} / E_{T}; E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} [%]; Entries',
398  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=-60.0,xmax=100.0)
399  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_et',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; E_{T,HLT} [GeV]; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
400  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
401  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
402  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=20,xmin=-5.0,xmax=5.0)
403  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_phi,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_phi',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #phi_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
404  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=-math.pi,xmax=math.pi)
405  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi,HLT_vs_OFF_resolution;HLT_vs_OFF_resolution_vs_HLT_with_OFF_match_phi_vs_HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta; #phi', type='TProfile2D',
406  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
407 
408  # Declare HLT histograms with OFF matches
409  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_with_OFF_match_num',title='Number of HLT Clusters (With OFF Matches); Num Clusters; Entries',
410  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-10.0,xmax=2010.0)
411  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi;HLT_with_OFF_match_phi_vs_HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='Number of HLT Clusters (With OFF Matches); #eta; #phi; ', type='TH2F',
412  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
413  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et;HLT_with_OFF_match_et',cutmask='HLT_with_OFF_match',title='HLT Clusters E_{T} (With OFF Matches); E_{T} [GeV]; Entries',
414  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
415  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta;HLT_with_OFF_match_eta',cutmask='HLT_with_OFF_match',title='HLT Clusters #eta (With OFF Matches); #eta; Entries',
416  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0)
417  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_phi;HLT_with_OFF_match_phi',cutmask='HLT_with_OFF_match',title='HLT Cluster #phi (With OFF Matches); #phi; Entries',
418  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
419  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_time;HLT_with_OFF_match_time',cutmask='HLT_with_OFF_match',title='HLT Cluster time (With OFF Matches); time; Entries',
420  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=75,xmin=-25.0,xmax=25.0)
421  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et,HLT_time;HLT_with_OFF_match_time_vs_HLT_with_OFF_match_et',cutmask='HLT_with_OFF_match',title='Number of HLT Clusters (With OFF Matches); E_{T} [GeV]; Time', type='TProfile',
422  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
423  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_type;HLT_with_OFF_match_type',cutmask='HLT_with_OFF_match',title='HLT Cluster Type (With OFF Matches); Size Enum; Entries',
424  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
425  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_with_OFF_match_et_vs_BC',cutmask='HLT_with_OFF_match',title='HLT Clusters E_{T} (With OFF Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
426  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
427 
428  # Declare HLT histograms without OFF matches
429  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_no_OFF_match_num',title='Number of HLT Clusters (No OFF Matches); Num Clusters; Entries',
430  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-10.0,xmax=2010.0)
431  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta,HLT_phi;HLT_no_OFF_match_phi_vs_HLT_no_OFF_match_eta',cutmask='HLT_no_OFF_match',title='Number of HLT Clusters (No OFF Matches); #eta; #phi; ', type='TH2F',
432  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
433  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et;HLT_no_OFF_match_et',cutmask='HLT_no_OFF_match',title='HLT Clusters E_{T} (No OFF Matches); E_{T} [GeV]; Entries',
434  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
435  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_eta;HLT_no_OFF_match_eta',cutmask='HLT_no_OFF_match',title='HLT Clusters #eta (No OFF Matches); #eta; Entries',
436  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0)
437  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_phi;HLT_no_OFF_match_phi',cutmask='HLT_no_OFF_match',title='HLT Cluster #phi (No OFF Matches); #phi; Entries',
438  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
439  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_time;HLT_no_OFF_match_time',cutmask='HLT_no_OFF_match',title='HLT Cluster time (No OFF Matches); time; Entries',
440  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=75,xmin=-25.0,xmax=25.0)
441  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_et,HLT_time;HLT_no_OFF_match_time_vs_HLT_no_OFF_match_et',cutmask='HLT_no_OFF_match',title='Number of HLT Clusters (No OFF Matches); E_{T} [GeV]; Time', type='TProfile',
442  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
443  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_type;HLT_no_OFF_match_type',cutmask='HLT_no_OFF_match',title='HLT Cluster Type (No OFF Matches); Size Enum; Entries',
444  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
445  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,HLT_et;HLT_no_OFF_match_et_vs_BC',cutmask='HLT_no_OFF_match',title='HLT Clusters E_{T} (No OFF Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
446  path=path_name+'/HLT_Matched_to_OFF/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
447 
448 
451 
452  # Declare OFF matched HLT vs. OFF cluster histograms
453  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_matched_fraction',title='Fraction of OFF clusters matched to HLT clusters; Matched fraction; Entries',
454  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=1.0)
455  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_minimum_delta_r',title='HLT vs OFF Cluster #DeltaR; #DeltaR; Entries',
456  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=0.1)
457  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_delta_eta',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster #Delta#eta; #eta_{_{OFF}} - #eta_{_{HLT}}; Entries',
458  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-0.2,xmax=0.2)
459  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_delta_phi',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster #Delta#phi; #phi_{_{OFF}} - #phi_{_{HLT}}; Entries',
460  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=0.02)
461  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_delta_time',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster time; Time; Entries',
462  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=80,xmin=-20.0,xmax=20.0)
463  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et,HLT_match_et;HLT_match_et_vs_OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster E_{T}; E_{T_{OFF}} [GeV]; E_{T_{HLT}} [GeV]', type='TH2F',
464  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0, ybins=100,ymin=0.0,ymax=100.0)
465  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_vs_HLT_resolution',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster #DeltaE_{T} / E_{T}; E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} [%]; Entries',
466  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=-60.0,xmax=100.0)
467  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; E_{T,OFF} [GeV]; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
468  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
469  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
470  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=20,xmin=-5.0,xmax=5.0)
471  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_phi,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_phi',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #phi_{_{ OFF}}; < E_{T_{OFF}} - E_{T_{HLT}} / E_{T_{OFF}} >', type='TProfile',
472  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=-math.pi,xmax=math.pi)
473  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi,OFF_vs_HLT_resolution;OFF_vs_HLT_resolution_vs_OFF_with_HLT_match_phi_vs_OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='HLT vs OFF Cluster < #DeltaE_{T} / E_{T} >; #eta; #phi', type='TProfile2D',
474  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
475 
476  # Declare OFF histograms with HLT matches
477  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_with_HLT_match_num',title='Number of OFF Clusters (With HLT Matches); Num Clusters; Entries',
478  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-10.0,xmax=2010.0)
479  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi;OFF_with_HLT_match_phi_vs_OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='Number of OFF Clusters (With HLT Matches); #eta; #phi; ', type='TH2F',
480  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
481  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et;OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='OFF Clusters E_{T} (With HLT Matches); E_{T} [GeV]; Entries',
482  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
483  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta;OFF_with_HLT_match_eta',cutmask='OFF_with_HLT_match',title='OFF Clusters #eta (With HLT Matches); #eta; Entries',
484  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0)
485  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_phi;OFF_with_HLT_match_phi',cutmask='OFF_with_HLT_match',title='OFF Cluster #phi (With HLT Matches); #phi; Entries',
486  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
487  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_time;OFF_with_HLT_match_time',cutmask='OFF_with_HLT_match',title='OFF Cluster time (With HLT Matches); time; Entries',
488  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=75,xmin=-25.0,xmax=25.0)
489  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et,OFF_time;OFF_with_HLT_match_time_vs_OFF_with_HLT_match_et',cutmask='OFF_with_HLT_match',title='Number of OFF Clusters (With HLT Matches); E_{T} [GeV]; Time', type='TProfile',
490  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
491  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_type;OFF_with_HLT_match_type',cutmask='OFF_with_HLT_match',title='OFF Cluster Type (With HLT Matches); Size Enum; Entries',
492  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
493  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,OFF_et;OFF_with_HLT_match_et_vs_BC',cutmask='OFF_with_HLT_match',title='OFF Clusters E_{T} (With HLT Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
494  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
495 
496  # Declare OFF histograms without HLT matches
497  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_no_HLT_match_num',title='Number of OFF Clusters (No HLT Matches); Num Clusters; Entries',
498  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=101,xmin=-10.0,xmax=2010.0)
499  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta,OFF_phi;OFF_no_HLT_match_phi_vs_OFF_no_HLT_match_eta',cutmask='OFF_no_HLT_match',title='Number of OFF Clusters (No HLT Matches); #eta; #phi; ', type='TH2F',
500  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0,ybins=64,ymin=-math.pi,ymax=math.pi)
501  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et;OFF_no_HLT_match_et',cutmask='OFF_no_HLT_match',title='OFF Clusters E_{T} (No HLT Matches); E_{T} [GeV]; Entries',
502  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=100,xmin=0.0,xmax=100.0)
503  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_eta;OFF_no_HLT_match_eta',cutmask='OFF_no_HLT_match',title='OFF Clusters #eta (No HLT Matches); #eta; Entries',
504  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=-5.0,xmax=5.0)
505  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_phi;OFF_no_HLT_match_phi',cutmask='OFF_no_HLT_match',title='OFF Cluster #phi (No HLT Matches); #phi; Entries',
506  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=64,xmin=-math.pi,xmax=math.pi)
507  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_time;OFF_no_HLT_match_time',cutmask='OFF_no_HLT_match',title='OFF Cluster time (No HLT Matches); time; Entries',
508  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=75,xmin=-25.0,xmax=25.0)
509  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_et,OFF_time;OFF_no_HLT_match_time_vs_OFF_no_HLT_match_et',cutmask='OFF_no_HLT_match',title='Number of OFF Clusters (No HLT Matches); E_{T} [GeV]; Time', type='TProfile',
510  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=50,xmin=0.0,xmax=100.0)
511  TopoCaloClustersMonGroup[i][j].defineHistogram('OFF_type;OFF_no_HLT_match_type',cutmask='OFF_no_HLT_match',title='OFF Cluster Type (No HLT Matches); Size Enum; Entries',
512  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=16,xmin=0.5,xmax=16.5)
513  TopoCaloClustersMonGroup[i][j].defineHistogram('HLT_bc,OFF_et;OFF_no_HLT_match_et_vs_BC',cutmask='OFF_no_HLT_match',title='OFF Clusters E_{T} (No HLT Matches) vs BC; BCs from front of bunch train; <E_{T}> [GeV]', type='TProfile',
514  path=path_name+'/OFF_Matched_to_HLT/'+EgammaJetMetTauChain[i][j],xbins=21,xmin=-0.5,xmax=20.5)
515 
516  result.merge(helper.result())
517  return result
518 
519 if __name__=='__main__':
520  # Setup logs
521  from AthenaCommon.Logging import log
522  from AthenaCommon.Constants import DEBUG
523  log.setLevel(DEBUG)
524 
525  # Set the Athena configuration flags
526  from AthenaConfiguration.AllConfigFlags import initConfigFlags
527 
528  # Input
529  file = '/afs/cern.ch/work/j/joheinri/public/TestAOD/AOD.pool.root'
530  flags = initConfigFlags()
531  flags.Input.Files = [file]
532  flags.Input.isMC = True
533 
534  # Output
535  flags.Output.HISTFileName = 'TrigCaloMonitorOutput.root'
536 
537  flags.lock()
538 
539  # Initialize configuration object, add accumulator, merge, and run.
540  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
541  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
542  cfg = MainServicesCfg(flags)
543  cfg.merge(PoolReadCfg(flags))
544 
545  trigCaloMonitorAcc = TrigCaloMonConfig(flags)
546  cfg.merge(trigCaloMonitorAcc)
547 
548  # If you want to turn on more detailed messages ...
549  #trigCaloMonitorAcc.getEventAlgo('TrigCaloMonAlg').OutputLevel = 2 # DEBUG
550  cfg.printConfig(withDetails=True) # set True for exhaustive info
551 
552  cfg.run() #use cfg.run(20) to only run on first 20 events
max
#define max(a, b)
Definition: cfImp.cxx:41
python.TriggerConfigAccess.getHLTMonitoringAccess
HLTMonitoringAccess getHLTMonitoringAccess(flags=None)
Definition: TriggerConfigAccess.py:256
python.BunchCrossingCondAlgConfig.BunchCrossingCondAlgCfg
def BunchCrossingCondAlgCfg(flags)
Definition: BunchCrossingCondAlgConfig.py:8
python.TrigDecisionToolConfig.getRun3NavigationContainerFromInput
def getRun3NavigationContainerFromInput(flags)
Definition: TrigDecisionToolConfig.py:75
TrigCaloMonitorAlgorithm.TrigCaloMonConfig
def TrigCaloMonConfig(inputFlags)
Definition: TrigCaloMonitorAlgorithm.py:14
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
Constants
some useful constants -------------------------------------------------—
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
GenericMonitoringTool.defineHistogram
def defineHistogram(flags, varname, type='TH1F', path=None, title=None, weight=None, xbins=100, xmin=0, xmax=1, xlabels=None, ybins=None, ymin=None, ymax=None, ylabels=None, zmin=None, zmax=None, zlabels=None, opt=None, convention=None, cutmask=None, treedef=None, merge=None)
Generate histogram definition string for the GenericMonitoringTool.Histograms property.
Definition: GenericMonitoringTool.py:306
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69