ATLAS Offline Software
InDetGlobalTrackMonAlgCfg.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 """
6 @file InDetGlobalTrackMonAlgCfg.py
7 @author Leonid Serkin and Per Johansson
8 @date April 2020
9 @brief Configuration for Run 3 based on InDetGlobalTrackMonTool.cxx
10 """
11 
12 from math import pi as M_PI
13 from AthenaConfiguration.Enums import BeamType
14 from AthenaConfiguration.ComponentFactory import CompFactory
15 
17 
18  # values
19  m_nBinsEta = 50
20  m_nBinsPhi = 50
21  m_trackBin = 150
22  m_c_etaRange = 2.5
23  m_c_etaRangeTRT = 2.0
24  m_c_range_LB = 3000
25  m_trackMax = 150
26 
27  # this creates a "trackGroup" called "alg" which will put its histograms into the subdirectory "Track"
28  trackGroup = helper.addGroup(alg, 'Track')
29  pathtrack = '/InDetGlobal/Track'
30  pathhits = '/InDetGlobal/Hits'
31  pathTIDE = '/InDetGlobal/TIDE'
32 
33 
34  varName = 'm_nBase;nCOMBtrks' #done
35  title = 'Track multiplicity (baseline tracks);Track multiplicity;Events'
36  trackGroup.defineHistogram(varName, type='TH1F', path=pathtrack, title=title, xbins=m_trackBin, xmin=0.5, xmax=m_trackMax + 0.5)
37 
38  # Eta-phi maps
39  varName = 'm_eta_perigee,m_phi_perigee;Trk_Base_eta_phi' #done
40  title = 'Distribution of eta vs phi for combined tracks passing Loose Primary selection;#eta;#phi_{0}'
41  trackGroup.defineHistogram(varName, type='TH2F', path=pathtrack, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
42 
43  varName = 'm_eta_perigee_loose,m_phi_perigee_loose;Trk_Loose_eta_phi' #done
44  title = 'Distribution of eta vs phi for combined tracks passing Loose selection;#eta;#phi_{0}'
45  trackGroup.defineHistogram(varName, type='TH2F', path=pathtrack, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
46 
47  varName = 'm_eta_perigee,m_phi_perigee,m_track_pass_tight;Trk_Tight_eta_phi_ratio' #done
48  title = 'Distribution of eta vs phi for combined tracks passing Tight selection;#eta;#phi_{0}'
49  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathtrack, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
50 
51  varName = 'm_eta_perigee,m_phi_perigee,m_noTRTHits;Trk_noTRText_eta_phi_ratio' #done
52  title = 'Distribution of eta vs phi for combined tracks passing with no TRT extension;#eta;#phi_{0}'
53  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathtrack, title=title, xbins=20, xmin=-m_c_etaRangeTRT, xmax=m_c_etaRangeTRT, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
54 
55  varName = 'm_eta_perigee,m_phi_perigee,m_NextToInnermostPixelLayerHit;Trk_noBLhit_eta_phi_ratio' #done
56  title = 'Eta-phi of tracks with no b-layer hit but a hit is expected, ratio to total tracks;#eta;#phi_{0}'
57  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathtrack, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
58 
59  varName = 'm_eta_perigee,m_phi_perigee,m_InnermostPixelLayerHit;Trk_noIBLhit_eta_phi_ratio' #done
60  title = 'Eta-phi of tracks with no IBL hit but a hit is expected, ratio to total tracks;#eta;#phi_{0}'
61  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathtrack, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
62 
63  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfInnermostPixelLayerHits;Trk_nIBLhits_eta_phi' # done
64  title = 'Number of IBL hits per track, eta-phi profile;#eta;#phi'
65  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
66 
67  varName = 'm_eta_perigee,m_phi_perigee,m_pixHits;Trk_nPIXhits_eta_phi' #done
68  title = 'Number of PIX hits per track, eta-phi profile;#eta;#phi'
69  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
70 
71  varName = 'm_eta_perigee,m_phi_perigee,m_sctHits;Trk_nSCThits_eta_phi' #done
72  title = 'Number of SCT hits per track, eta-phi profile;#eta;#phi'
73  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
74 
75  varName = 'm_eta_perigee,m_phi_perigee,m_trtHits;Trk_nTRThits_eta_phi' #done
76  title = 'Number of TRT hits per track, eta-phi profile;#eta;#phi'
77  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
78 
79  varName = 'm_lb,m_numberOfInnermostPixelLayerHits;trk_nIBLhits_LB' #done
80  title = 'Average number of IBL hits by LB;LB;Average number of hits in LB'
81  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
82 
83  varName = 'm_lb,m_pixHits;trk_nPIXhits_LB' #done
84  title = 'Average number of PIX hits by LB;LB;Average number of hits in LB'
85  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
86 
87  varName = 'm_lb,m_sctHits;trk_nSCThits_LB' #done
88  title = 'Average number of SCT hits by LB;LB;Average number of hits in LB'
89  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
90 
91  varName = 'm_lb,m_trtHits;trk_nTRThits_LB' #done
92  title = 'Average number of TRT hits by LB;LB;Average number of hits in LB'
93  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
94 
95  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfPixelDeadSensors;Trk_nPIXdisabled_eta_phi' # done
96  title = 'Number of PIX disabled detector elements per track, eta-phi profile;#eta;#phi'
97  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
98 
99  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfSCTDeadSensors;Trk_nSCTdisabled_eta_phi' #done
100  title = 'Number of SCT disabled detector elements per track, eta-phi profile;#eta;#phi'
101  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
102 
103  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfTRTDeadStraws;Trk_nTRTdisabled_eta_phi' #done
104  title = 'Number of TRT disabled detector elements per track, eta-phi profile;#eta;#phi'
105  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
106 
107  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfPixelSharedHits;Trk_nPixShared_eta_phi' #done
108  title = 'Number of Pixel shared hits per track, eta-phi profile;#eta;#phi'
109  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
110 
111  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfPixelSplitHits;Trk_nPixSplit_eta_phi' #done
112  title = 'Number of Pixel split hits per track, eta-phi profile;#eta;#phi'
113  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
114 
115  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfSCTSharedHits;Trk_nSCTShared_eta_phi' #done
116  title = 'Number of SCT shared hits per track, eta-phi profile;#eta;#phi'
117  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
118 
119  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfPixelHoles;Trk_nPixHoles_eta_phi' #done
120  title = 'Number of Pixel holes per track, eta-phi profile;#eta;#phi'
121  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
122 
123  varName = 'm_eta_perigee,m_phi_perigee,m_numberOfSCTHoles;Trk_nSCTHoles_eta_phi' #done
124  title = 'Number of SCT holes per track, eta-phi profile;#eta;#phi'
125  trackGroup.defineHistogram(varName, type='TProfile2D', path=pathhits, title=title, xbins=m_nBinsEta, xmin=-m_c_etaRange, xmax=m_c_etaRange, ybins=m_nBinsPhi, ymin=-M_PI, ymax=M_PI)
126 
127  varName = 'm_lb,m_nBase_LB;Trk_nBase_LB' #done
128  title = 'Average number of baseline tracks per event in LB;LB number;Average number of loose primary tracks per event in LB'
129  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
130 
131  varName = 'm_lb,m_nTight_LB;Trk_nTight_LB' #done
132  title = 'Average number of tight tracks per event in LB;LB number;Average number of tight tracks per event in LB'
133  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
134 
135  varName = 'm_lb,m_nNoIBL_LB;Trk_noIBLhits_LB' #done
136  title = 'Average number of tracks with missing IBL hit per event in LB;LB number;Average number of tracks with missing IBL hit per event in LB'
137  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
138 
139  varName = 'm_lb,m_NoIBL_LB;Trk_noIBLhits_frac_LB' #done
140  title = 'Fraction of tracks with missing IBL hit per event in LB;LB number;Fraction of tracks with missing IBL hit per event in LB'
141  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
142 
143  varName = 'm_lb,m_nNoBL_LB;Trk_noBLhits_LB' #done
144  title = 'Average number of tracks with missing b-layer hit per event in LB;LB number;Average number of tracks with missing b-layer hit per event in LB'
145  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
146 
147  varName = 'm_lb,m_NoBL_LB;Trk_noBLhits_frac_LB' #done
148  title = 'Fraction of tracks with missing b-layer hit per event in LB;LB number;Fraction of tracks with missing b-layer hit per event in LB'
149  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
150 
151  varName = 'm_lb,m_nNoTRText_LB;Trk_noTRText_LB' #done
152  title = 'Average number of tracks without TRT extension per event in LB;LB number;Average number of tracks with without TRT extension per event in LB'
153  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
154 
155  varName = 'm_lb,m_NoTRText_LB;Trk_noTRText_frac_LB' #done
156  title = 'Fraction of tracks without TRT extension per event in LB;LB number;Fraction of tracks with without TRT extension per event in LB'
157  trackGroup.defineHistogram(varName, type='TProfile', path=pathtrack, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
158 
159 # TIDE Histogram Group
160  varName = 'm_jetassocdR,m_jetassocd0Reso;Trk_jetassoc_d0_dr'
161  title = 'IP resolution per ghost associated track vs #DeltaR of track and jet;#DeltaR of track and jet;IP resolution per ghost associated track'
162  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=20, xmin=0, xmax=0.4)
163 
164  varName = 'm_jetassocdR,m_jetassocz0Reso;Trk_jetassoc_z0_dr'
165  title = 'IP resolution per ghost associated track vs #DeltaR of track and jet;#DeltaR of track and jet;IP resolution per ghost associated track'
166  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=20, xmin=0, xmax=0.4)
167 
168  varName = 'm_lb,m_jetassocIPReso;Trk_jetassoc_ip_reso_lb'
169  title = 'IP resolution per ghost associated track vs LB;LB;IP resolution per ghost associated track'
170  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
171 
172  varName = 'm_pixSplitdR,m_pixSplitFrac;Trk_jetassoc_split_pix_dr'
173  title = 'Fraction of split Pixel hits per ghost associated track vs #DeltaR of track and jet;#DeltaR;Fraction'
174  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=20, xmin=0, xmax=0.4)
175 
176  varName = 'm_lb,m_pixSplitFrac;Trk_jetassoc_split_pix_lb'
177  title = 'Fraction of split Pixel hits vs LB;LB;Fraction'
178  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
179 
180  varName = 'm_pixShareddR,m_pixSharedFrac;Trk_jetassoc_shared_pix_dr'
181  title = 'Fraction of shared Pixel hits per ghost associated track vs #DeltaR of track and jet;#DeltaR;Fraction'
182  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=20, xmin=0, xmax=0.4)
183 
184  varName = 'm_lb,m_pixSharedFrac;Trk_jetassoc_shared_pix_lb'
185  title = 'Fraction of shared Pixel hits vs LB;LB;Fraction'
186  trackGroup.defineHistogram(varName, type='TProfile', path=pathTIDE, title=title, xbins=m_c_range_LB, xmin=0, xmax=m_c_range_LB)
187 
188 # end histograms
189 
190 
192  flags, name="InDetGlobalTrackMonAlg", **kwargs):
193 
194  from InDetConfig.InDetTrackSelectionToolConfig import (
195  InDetTrackSelectionTool_TightPrimary_TrackTools_Cfg,
196  InDetTrackSelectionTool_Loose_Cfg)
197 
198  if "TrackSelectionTool" not in kwargs:
199  if (flags.Beam.Type is BeamType.Cosmics or flags.Beam.Energy < 500000 or
200  flags.Reco.EnableHI):
201  kwargs.setdefault("TrackSelectionTool", acc.popToolsAndMerge(
202  InDetTrackSelectionTool_Loose_Cfg(flags, name='LowECMTrackSelectionTool',
203  minPt = 500)))
204  else:
205  kwargs.setdefault("TrackSelectionTool", acc.popToolsAndMerge(
207  flags,
208  maxNPixelHoles = 1, # Default for TightPrimary is 0
209  minPt = 5000)))
210 
211  if "Tight_TrackSelectionTool" not in kwargs:
212  kwargs.setdefault("Tight_TrackSelectionTool", acc.popToolsAndMerge(
214  flags,
215  minPt = 5000)))
216 
217  if "Loose_TrackSelectionTool" not in kwargs:
218  kwargs.setdefault("Loose_TrackSelectionTool", acc.popToolsAndMerge(
220  flags,
221  minPt = 1000)))
222 
223  if "TrackToVertexIPEstimator" not in kwargs:
224  from TrkConfig.TrkVertexFitterUtilsConfig import TrackToVertexIPEstimatorCfg
225  kwargs.setdefault("TrackToVertexIPEstimator", acc.popToolsAndMerge(
227 
228  from AthenaMonitoring.FilledBunchFilterToolConfig import FilledBunchFilterToolCfg
229  from AthenaMonitoring.AtlasReadyFilterConfig import AtlasReadyFilterCfg
230 
231  monAlg = helper.addAlgorithm(
232  CompFactory.InDetGlobalTrackMonAlg, name,
233  addFilterTools = [FilledBunchFilterToolCfg(flags), AtlasReadyFilterCfg(flags)],
234  **kwargs)
235 
236  HistoInDetGlobalTrackMonAlgCfg(helper, monAlg)
237  return
python.FilledBunchFilterToolConfig.FilledBunchFilterToolCfg
def FilledBunchFilterToolCfg(AthConfigFlags flags)
Definition: FilledBunchFilterToolConfig.py:9
python.InDetTrackSelectionToolConfig.InDetTrackSelectionTool_TightPrimary_TrackTools_Cfg
def InDetTrackSelectionTool_TightPrimary_TrackTools_Cfg(flags, name="InDetTrackSelectionTool_TightPrimary", **kwargs)
Definition: InDetTrackSelectionToolConfig.py:68
python.TrkVertexFitterUtilsConfig.TrackToVertexIPEstimatorCfg
def TrackToVertexIPEstimatorCfg(flags, name='TrackToVertexIPEstimator', **kwargs)
Definition: TrkVertexFitterUtilsConfig.py:48
python.InDetTrackSelectionToolConfig.InDetTrackSelectionTool_Loose_Cfg
def InDetTrackSelectionTool_Loose_Cfg(flags, name="InDetTrackSelectionTool_Loose", **kwargs)
Configs based on CutLevel Loose #####.
Definition: InDetTrackSelectionToolConfig.py:36
InDetGlobalTrackMonAlgCfg.HistoInDetGlobalTrackMonAlgCfg
def HistoInDetGlobalTrackMonAlgCfg(helper, alg)
Definition: InDetGlobalTrackMonAlgCfg.py:16
python.AtlasReadyFilterConfig.AtlasReadyFilterCfg
def AtlasReadyFilterCfg(flags)
Definition: AtlasReadyFilterConfig.py:10
InDetGlobalTrackMonAlgCfg.InDetGlobalTrackMonAlgCfg
def InDetGlobalTrackMonAlgCfg(helper, acc, flags, name="InDetGlobalTrackMonAlg", **kwargs)
Definition: InDetGlobalTrackMonAlgCfg.py:191