ATLAS Offline Software
TrigTLAMonitorHistograms.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 TrigTLAMonitorHistograms.py
6 @author S. Franchellucci
7 @date 2023-11-28
8 @brief Definitions of groups of histograms to monitor
9 '''
10 
11 def histdefs_eventinfo(pprefix):
12  """
13  Return a list of histogram definitions for global event variables
14 
15  @param pprefix Prefix of histogram names
16  """
17  histograms=[
18  {'name' :f'{pprefix}_AvgMu',
19  'ylabel':'events',
20  'xlabel':'AvgMu',
21  'xmin' :-0.5,
22  'xmax' :69.5,
23  'xbins' :70},
24  {'name' :f'{pprefix}_NumPV',
25  'ylabel':'events',
26  'xlabel':'NumPV',
27  'xmin' :-0.5,
28  'xmax' :39.5,
29  'xbins' :40},
30  {'name' :f'{pprefix}_JetDensityEMTopo',
31  'ylabel':'events',
32  'xlabel':'JetDensityEMTopo',
33  'xmin' :-0.5,
34  'xmax' :25000,
35  'xbins' :100},
36  {'name' :f'{pprefix}_JetDensityEMPFlow',
37  'ylabel':'events',
38  'xlabel':'JetDensityEMPFlow',
39  'xmin' :-0.5,
40  'xmax' :25000,
41  'xbins' :100}
42  ]
43  return histograms
44 
45 def histdefs_jetvariables(pprefix, plabel, pflow=False):
46  """
47  Return a list of jet-specific histogram definitions for jet moment distributions
48 
49  @param pprefix Prefix of histogram names
50  @param plabel Human-readable name of the jet to use in labeling axes
51  @param pflow bool to indicate that this is the PFlow jet collection, so that the track-based variables are added.
52  False indicates that this is the calo jet collection, and additional calo variables are monitored.
53  """
54 
55  histograms=[
56  {'name' :f'{pprefix}ActiveArea',
57  'ylabel':f'{plabel}s',
58  'xlabel':f'{plabel} ActiveArea',
59  'xunit' :'',
60  'xmin' :0,
61  'xmax' :2.,
62  'xbins' :200},
63  ]
64  if pflow:
65  histograms+=[
66  {'name' :f'{pprefix}TrackWidthPt1000',
67  'ylabel':f'{plabel}s',
68  'xlabel':f'{plabel} TrackWidthPt1000',
69  'xmin' :-0.5,
70  'xmax' :0.95,
71  'xbins' :50},
72  {'name' :f'{pprefix}NumTrkPt1000',
73  'ylabel':f'{plabel}s',
74  'xlabel':f'{plabel} NumTrkPt1000',
75  'xmin' :-0.5,
76  'xmax' :39.5,
77  'xbins' :40},
78  {'name' :f'{pprefix}SumPtTrkPt500',
79  'ylabel':f'{plabel}s',
80  'xlabel':f'{plabel} SumPtTrkPt500',
81  'xmin' :-0.5,
82  'xmax' :500e3,
83  'xunit' : 'MeV',
84  'xbins' :200},
85  {'name' :f'{pprefix}SumPtChargedPFOPt500',
86  'ylabel':f'{plabel}s',
87  'xlabel':f'{plabel} SumPtChargedPFOPt500',
88  'xmin' :-0.5,
89  'xmax' :500e3,
90  'xunit' : 'MeV',
91  'xbins' :200},
92  {'name' :f'{pprefix}Jvt',
93  'ylabel':f'{plabel}s',
94  'xlabel':f'{plabel} Jvt',
95  'xmin' :-0.2,
96  'xmax' :1.2,
97  'xbins' :70},
98  {'name' :f'{pprefix}JvtRpt',
99  'ylabel':f'{plabel}s',
100  'xlabel':f'{plabel} JvtRpt',
101  'xmin' :-0.1,
102  'xmax' :1.4,
103  'xbins' :75},
104  {'name' :f'{pprefix}fastDIPS20211215_pu',
105  'ylabel':f'{plabel}s',
106  'xlabel':f'{plabel} fastDips_pu',
107  'xmin' :-0.2,
108  'xmax' :1.2,
109  'xbins' :70},
110  {'name' :f'{pprefix}fastDIPS20211215_pb',
111  'ylabel':f'{plabel}s',
112  'xlabel':f'{plabel} fastDips_pb',
113  'xmin' :-0.2,
114  'xmax' :1.2,
115  'xbins' :70},
116  {'name' :f'{pprefix}fastDIPS20211215_pc',
117  'ylabel':f'{plabel}s',
118  'xlabel':f'{plabel} fastDips_pc',
119  'xmin' :-0.2,
120  'xmax' :1.2,
121  'xbins' :70},
122  {'name' :f'{pprefix}GN120230331_pu',
123  'ylabel':f'{plabel}s',
124  'xlabel':f'{plabel} GN120230331_pu',
125  'xmin' :-0.2,
126  'xmax' :1.2,
127  'xbins' :70},
128  {'name' :f'{pprefix}GN120230331_pb',
129  'ylabel':f'{plabel}s',
130  'xlabel':f'{plabel} GN120230331_pb',
131  'xmin' :-0.2,
132  'xmax' :1.2,
133  'xbins' :70},
134  {'name' :f'{pprefix}GN120230331_pc',
135  'ylabel':f'{plabel}s',
136  'xlabel':f'{plabel} GN120230331_pc',
137  'xmin' :-0.2,
138  'xmax' :1.2,
139  'xbins' :70},
140  ]
141  else:
142  histograms+=[
143  {'name' :f'{pprefix}EMFrac',
144  'ylabel':f'{plabel}s',
145  'xlabel':f'{plabel} EMFrac',
146  'xmin' :-0.1,
147  'xmax' :1.4,
148  'xbins' :75},
149  {'name' :f'{pprefix}HECFrac',
150  'ylabel':f'{plabel}s',
151  'xlabel':f'{plabel} HECFrac',
152  'xmin' :-0.1,
153  'xmax' :1.4,
154  'xbins' :75},
155  {'name' :f'{pprefix}Timing',
156  'ylabel':f'{plabel}s',
157  'xlabel':f'{plabel} Timing',
158  'xunit' :'ns',
159  'xmin' :-50,
160  'xmax' :50,
161  'xbins' :50},
162  {'name' :f'{pprefix}N90Constituents',
163  'ylabel':f'{plabel}s',
164  'xlabel':f'{plabel} N90Constituents',
165  'xunit' :'',
166  'xmin' :0,
167  'xmax' :20,
168  'xbins' :20},
169  ]
170  return histograms
171 
172 def histdefs_jetcalibscales(pprefix, plabel, pflow=False):
173  """
174  Return a list of jet-specific histogram definitions for jet pT distributions at different calibration scales
175 
176  @param pprefix Prefix of histogram names
177  @param plabel Human-readable name of the jet to use in labeling axes
178  @param pflow bool to indicate that this is the PFlow jet collection, so that the track-based calibration scales are added.
179  """
180  histograms=[
181  {'name' :f'{pprefix}JetConstitScaleMomentum_pt',
182  'ylabel':f'{plabel}s',
183  'xlabel':f'{plabel} JetConstitScaleMomentum_pt',
184  'xunit' :'GeV',
185  'xmin' :0,
186  'xmax' :750,
187  'xbins' :1500},
188  {'name' :f'{pprefix}JetPileupScaleMomentum_pt',
189  'ylabel':f'{plabel}s',
190  'xlabel':f'{plabel} JetPileupScaleMomentum_pt',
191  'xunit' :'GeV',
192  'xmin' :0,
193  'xmax' :750,
194  'xbins' :1500},
195  {'name' :f'{pprefix}JetEtaJESScaleMomentum_pt',
196  'ylabel':f'{plabel}s',
197  'xlabel':f'{plabel} JetEtaJESScaleMomentum_pt',
198  'xunit' :'GeV',
199  'xmin' :0,
200  'xmax' :750,
201  'xbins' :1500},
202  ]
203  if pflow:
204  histograms+= [
205  {'name' :f'{pprefix}JetGSCScaleMomentum_pt',
206  'ylabel':f'{plabel}s',
207  'xlabel':f'{plabel} JetGSCScaleMomentum_pt',
208  'xunit' :'GeV',
209  'xmin' :0,
210  'xmax' :750,
211  'xbins' :1500}
212  ]
213  return histograms
214 
215 def histdefs_particle(pprefix, plabel):
216  """
217  Return a list of histogram definitions for particle kinematics.
218 
219  @param pprefix Prefix of histogram names
220  @param plabel Human-readable name of the particle to use in labeling axes
221  """
222  histograms=[
223  {'name' :f'n{pprefix}',
224  'ylabel':'events',
225  'xlabel':f'number of {plabel}s',
226  'xmin' :-0.5,
227  'xmax' :19.5,
228  'xbins' :20},
229  {'name' :f'{pprefix}pt',
230  'ylabel':f'{plabel}s',
231  'xlabel':f'{plabel} p_{{T}}',
232  'xunit' :'GeV',
233  'xmin' :0,
234  'xmax' :750,
235  'xbins' :300},
236  {'name' :f'{pprefix}eta',
237  'ylabel':f'{plabel}s',
238  'xlabel':f'{plabel} #eta',
239  'xmin' :-4,
240  'xmax' : 4,
241  'xbins' :100},
242  {'name' :f'{pprefix}phi',
243  'ylabel':f'{plabel}s',
244  'xlabel':f'leading {plabel} #phi',
245  'xmin' :-3.5,
246  'xmax' : 3.5,
247  'xbins' :100},
248  {'name' :f'{pprefix}0pt',
249  'ylabel':'events',
250  'xlabel':f'leading {plabel} p_{{T}}',
251  'xunit' :'GeV',
252  'xmin' :0,
253  'xmax' :750,
254  'xbins' :150},
255  {'name' :f'{pprefix}0eta',
256  'ylabel':'events',
257  'xlabel':f'leading {plabel} #eta',
258  'xmin' :-4,
259  'xmax' : 4,
260  'xbins' :100},
261  {'name' :f'{pprefix}0phi',
262  'ylabel':'events',
263  'xlabel':f'leading {plabel} #phi',
264  'xmin' :-3.5,
265  'xmax' : 3.5,
266  'xbins' :100}
267  ]
268  return histograms
269 
270 def histdefs_tracks(prefix='trk',plabel='track'):
271  """
272  Return a list of histogram definitions for tracks features.
273 
274  @param pprefix Prefix of histogram names
275  @param plabel Human-readable name of the particle to use in labeling axes
276  """
277  histograms = histdefs_particle(prefix,plabel)
278  # Modifify the ntracks histogram -> first on the list
279  histograms[0]['xmax']=199.5
280  histograms[0]['xbins']=200
281 
282  histograms += [
283  {'name' :prefix+'d0',
284  'ylabel':'entries',
285  'xlabel':f'{plabel} d0',
286  'xmin' :-5.,
287  'xmax' :5.,
288  'xbins' :400},
289  {'name' :prefix+'z0',
290  'ylabel':'entries',
291  'xlabel':plabel+' z0',
292  'xmin' :-50.,
293  'xmax' :50.,
294  'xbins' :400},
295  {'name' :prefix+'qOverP',
296  'ylabel':'entries',
297  'xlabel':plabel+' qOverP',
298  'xmin' :-0.003,
299  'xmax' :0.003,
300  'xbins' :150},
301  {'name' :prefix+'chiSquared',
302  'ylabel':'entries',
303  'xlabel':plabel+' chiSquared',
304  'xmin' :0.,
305  'xmax' :150.,
306  'xbins' :300},
307  {'name' :prefix+'numberDoF',
308  'ylabel':'entries',
309  'xlabel':plabel+' numberDoF',
310  'xmin' :-0.5,
311  'xmax' :50.5,
312  'xbins' :51},
313  {'name' :f'{prefix}btagIp-d0',
314  'ylabel':'entries',
315  'xlabel':'trk d0',
316  'xmin' :-5.,
317  'xmax' :5.,
318  'xbins' :400},
319  {'name' :f'{prefix}btagIp-d0Uncertainty',
320  'ylabel':'entries',
321  'xlabel':'trk d0 Uncertainty',
322  'xmin' :0.,
323  'xmax' :10.,
324  'xbins' :200},
325  {'name' :f'{prefix}btagIp-z0SinTheta',
326  'ylabel':'entries',
327  'xlabel':'trk z0SinTheta',
328  'xmin' :-100.,
329  'xmax' :100.,
330  'xbins' :500},
331  {'name' :f'{prefix}btagIp-z0SinThetaUncertainty',
332  'ylabel':'entries',
333  'xlabel':'trk z0SinTheta Uncertainty',
334  'xmin' :0.,
335  'xmax' :10.,
336  'xbins' :200},
337  ]
338  return histograms
339 
340 def histdefs_dR(p0prefix,p1prefix,p0label,p1label):
341  """
342  Return a list of histogram definitions for particle dR
343 
344  @param p0prefix Prefix of first particle in histogram
345  @param p1prefix Prefix of second particle in histogram
346  @param p0label Human-readable name of the first particle to use in labeling axes
347  @param p1label Human-readable name of the second particle to use in labeling axes
348  """
349  histograms=[
350  {'name' :f'{p0prefix}{p1prefix}dr',
351  'ylabel':'events',
352  'xlabel':f'#DeltaR_{{{p0label}, {p1label}}}',
353  'xmin' :0,
354  'xmax' :6,
355  'xbins' :60}]
356  return histograms
python.TrigTLAMonitorHistograms.histdefs_jetcalibscales
def histdefs_jetcalibscales(pprefix, plabel, pflow=False)
Definition: TrigTLAMonitorHistograms.py:172
python.TrigTLAMonitorHistograms.histdefs_dR
def histdefs_dR(p0prefix, p1prefix, p0label, p1label)
Definition: TrigTLAMonitorHistograms.py:340
python.TrigTLAMonitorHistograms.histdefs_tracks
def histdefs_tracks(prefix='trk', plabel='track')
Definition: TrigTLAMonitorHistograms.py:270
python.TrigTLAMonitorHistograms.histdefs_eventinfo
def histdefs_eventinfo(pprefix)
Definition: TrigTLAMonitorHistograms.py:11
python.TrigTLAMonitorHistograms.histdefs_particle
def histdefs_particle(pprefix, plabel)
Definition: TrigTLAMonitorHistograms.py:215
python.TrigTLAMonitorHistograms.histdefs_jetvariables
def histdefs_jetvariables(pprefix, plabel, pflow=False)
Definition: TrigTLAMonitorHistograms.py:45