ATLAS Offline Software
InDetGlobalTrackMonTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
20 //Local
22 
24 #include "CLHEP/Geometry/Transform3D.h"
25 #include "GaudiKernel/StatusCode.h"
26 #include "StoreGate/ReadHandle.h"
28 #include "TrkSurfaces/Surface.h"
29 #include "LWHists/TH1F_LW.h"
30 #include "LWHists/TH2F_LW.h"
31 #include "LWHists/TH1I_LW.h"
32 #include "TH1I.h"
33 #include "LWHists/TProfile_LW.h"
34 #include "TProfile2D.h"
37 
38 
39 //Standard c++
40 #include <vector>
41 #include <string>
42 #include <cmath>
43 
44 
46  const std::string & name,
47  const IInterface* parent)
49  m_baseline_selTool( "InDet::InDetTrackSelectionTool/TrackSelectionTool", this ),
50  m_tight_selTool( "InDet::InDetTrackSelectionTool/TrackSelectionTool", this ),
51  m_doHolePlots(false),
52  m_DoHoles_Search(false),
53  m_doHitMaps(false),
54  m_doTide(true),
55  m_doTideResiduals(false),
56  m_doForwardTracks(m_dataType == AthenaMonManager::collisions),
57  m_doIBL(true),
58  m_nBinsEta( 50 ),
59  m_nBinsPhi( 50 ),
60  m_trackBin( 100 ),
61  m_c_etaRange(2.5),
62  m_c_etaTrackletsMin(2.4),
63  m_c_etaTrackletsMax(2.7),
64  m_c_etaRangeTRT(2.0),
65  m_c_range_LB(3000),
66  m_c_detector_labels{ "IBL", "PIX", "SCT", "TRT" },
67  m_IBLParameterSvc("IBLParameterSvc",name),
68  m_holes_search_tool("InDet::InDetTrackHoleSearchTool/InDetHoleSearchTool"),
69  m_residualPullCalculator("Trk::ResidualPullCalculator/ResidualPullCalculator"),
70  m_iUpdator("Trk::KalmanUpdator"),
71  m_sct_holes(nullptr),
72  m_trt_holes(nullptr),
73  m_pixel_holes(nullptr),
74  m_comb_holes(nullptr),
75  m_silicon_vs_trt(nullptr),
76  m_sct_vs_pixels(nullptr),
77  m_holes_quality(nullptr),
78  m_holes_quality_profile(nullptr),
79  m_Trk_eta_phi_Base(nullptr),
80  m_Trk_eta_phi_Tight(nullptr),
81  m_Trk_eta_phi_Tight_ratio(nullptr),
82  m_Trk_eta_phi_noIBLhit_ratio(nullptr),
83  m_Trk_eta_phi_noBLhit_ratio(nullptr),
84  m_Trk_eta_phi_noTRText_ratio(nullptr),
85  m_Trk_nBase_LB(nullptr),
86  m_Trk_nTight_LB(nullptr),
87  m_Trk_noIBLhits_LB(nullptr),
88  m_Trk_noBLhits_LB(nullptr),
89  m_Trk_noTRText_LB(nullptr),
90  m_Trk_noIBLhits_frac_LB(nullptr),
91  m_Trk_noBLhits_frac_LB(nullptr),
92  m_Trk_noTRText_frac_LB(nullptr),
93  m_trtID(nullptr),
94  m_sctID(nullptr),
95  m_pixelID(nullptr),
96  m_holes_eta_phi(nullptr),
97  m_holes_eta_pt(nullptr),
98  m_holes_phi_pt(nullptr),
99  m_holes_eta_phi_n(nullptr),
100  m_holes_hits(nullptr),
101  m_holesvshits(nullptr),
102  m_holesvshits_ECA(nullptr),
103  m_holesvshits_ECC(nullptr),
104  m_holesvshits_BA(nullptr),
105  m_ID_hitmap_x_y(nullptr),
106  m_ID_hitmap_x_y_eca(nullptr),
107  m_ID_hitmap_x_y_ecc(nullptr),
108  m_HolesMAP_XY(nullptr),
109  m_HolesMAP_ZX(nullptr),
110  m_HolesMAP_ZR(nullptr),
111  m_trk_hits_eta_phi{nullptr},
112  m_trk_disabled_eta_phi{nullptr},
113  m_trk_hits_LB{nullptr},
114  m_trk_shared_pix_eta_phi(nullptr),
115  m_trk_split_pix_eta_phi(nullptr),
116  m_trk_shared_sct_eta_phi(nullptr),
117  m_trk_holes_pix_eta_phi(nullptr),
118  m_trk_holes_sct_eta_phi(nullptr),
119  m_Trk_FORW_FA_eta_phi(nullptr),
120  m_Trk_FORW_FC_eta_phi(nullptr),
121  m_Trk_FORW_qoverp(nullptr),
122  m_Trk_FORW_chi2(nullptr),
123  m_Trk_FORW_FA_nPIXhits(nullptr),
124  m_Trk_FORW_FC_nPIXhits(nullptr)
125 {
126  declareProperty("DoHoleSearch",m_DoHoles_Search,"Write hole data?");
127  declareProperty("DoTide",m_doTide,"Make TIDE plots?");
128  declareProperty("DoTideResiduals",m_doTideResiduals,"Make TIDE residual plots?");
129  declareProperty("HoleSearchTool", m_holes_search_tool,"Tool to search for holes on track");
130  declareProperty("UpdatorTool" , m_iUpdator);
131  declareProperty("DoHitMaps", m_doHitMaps,"Produce hit maps?");
132  declareProperty("DoForwardTracks", m_doForwardTracks,"Run over forward tracks?");
133  declareProperty("DoIBL", m_doIBL,"IBL present?");
134  declareProperty("trackMax",m_trackMax,"Maximum number of tracks in track histograms");
135  declareProperty("trackBin",m_trackBin,"Number of bins for the track histograms");
136  declareProperty("ResidualPullCalculatorTool", m_residualPullCalculator);
137 
138  declareProperty( "Baseline_SelTool", m_baseline_selTool );
139  declareProperty( "Tight_SelTool", m_tight_selTool );
140 }
141 
143  StatusCode sc;
144 
145  // If any of the ID helpers are not found then we don't make the hit maps
146  m_trtID = nullptr;
147  if (detStore()->retrieve(m_trtID, "TRT_ID").isFailure()) {
148  ATH_MSG_DEBUG("Could not get TRT ID helper");
149  m_doHitMaps = false;
150  }
151 
152  m_sctID = nullptr;
153  if (detStore()->retrieve(m_sctID, "SCT_ID").isFailure()) {
154  ATH_MSG_DEBUG("Could not get SCT ID helper");
155  m_doHitMaps = false;
156  }
157 
158  m_pixelID = nullptr;
159  if (detStore()->retrieve(m_pixelID, "PixelID").isFailure()) {
160  ATH_MSG_DEBUG("Could not get Pixel ID helper");
161  m_doHitMaps = false;
162  }
163 
164  if (m_IBLParameterSvc.retrieve().isFailure()) {
165  if(msgLvl(MSG::FATAL)) msg(MSG::FATAL) << "Could not retrieve " << m_IBLParameterSvc << endmsg;
166  return StatusCode::FAILURE;
167  } else {
168  if(msgLvl(MSG::INFO)) msg(MSG::INFO) << "Retrieved tool " << m_IBLParameterSvc << endmsg;
169  }
170 
171  if ( m_residualPullCalculator.retrieve().isFailure() )
172  {
173  if(msgLvl(MSG::FATAL)) msg(MSG::FATAL) << "Could not retrieve " << m_residualPullCalculator << endmsg;
174  return StatusCode::FAILURE;
175  } else {
176  if(msgLvl(MSG::INFO)) msg(MSG::INFO) << "Retrieved tool " << m_residualPullCalculator << endmsg;
177  }
178 
179  ATH_CHECK( m_iUpdator.retrieve() );
180 
181 
183 
184 
185  m_doIBL = m_IBLParameterSvc->containsIBL();
186 
187  ATH_CHECK( m_baseline_selTool.retrieve() );
188  ATH_CHECK( m_tight_selTool.retrieve() );
189  if (m_holes_search_tool.empty() && m_DoHoles_Search) {
190  ATH_MSG_FATAL("Hole search enabled but HoleSearchTool not configured.");
191  }
192  ATH_CHECK( m_holes_search_tool.retrieve( DisableTool{!m_DoHoles_Search} ));
193 
195  if(!sc.isSuccess()) return sc;
196 
199  ATH_CHECK( m_JetsName.initialize() );
200  ATH_CHECK( m_vertexKey.initialize() );
201 
202  return StatusCode::SUCCESS;
203 }
204 
206 {
208 
209  registerManHist( m_Trk_Base, "InDetGlobal/Track", detailsInterval,
210  "nCOMBtrks", "Track multiplicity (baseline tracks)",
211  m_trackBin, 0.5, m_trackMax+0.5,
212  "Track multiplicity" ).ignore();
213 
214  // Eta-phi maps
215  registerManHist( m_Trk_eta_phi_Base, "InDetGlobal/Track", detailsInterval,
216  "Trk_Base_eta_phi","Distribution of eta vs phi for combined tracks passing Loose Primary selection",
218  m_nBinsPhi, -M_PI, M_PI,
219  "eta", "#phi_{0}" ).ignore();
220 
221  registerManHist( m_Trk_eta_phi_Tight, "InDetGlobal/Track", detailsInterval,
222  "Trk_Tight_eta_phi","Distribution of eta vs phi for combined tracks passing monitoring selection",
224  m_nBinsPhi, -M_PI, M_PI,
225  "eta", "#phi_{0}" ).ignore();
226 
227  registerManHist( m_Trk_eta_phi_Tight_ratio, "InDetGlobal/Track", detailsInterval,
228  "Trk_Tight_eta_phi_ratio","Distribution of eta vs phi for combined tracks passing Tight selection",
230  m_nBinsPhi, -M_PI, M_PI,
231  "eta", "#phi_{0}" ).ignore();
232 
233  registerManHist( m_Trk_eta_phi_noTRText_ratio, "InDetGlobal/Track", detailsInterval,
234  "Trk_noTRText_eta_phi_ratio","Distribution of eta vs phi for combined tracks with no TRT extension",
236  m_nBinsPhi, -M_PI, M_PI,
237  "eta", "#phi_{0}" ).ignore();
238 
239  registerManHist( m_Trk_eta_phi_noBLhit_ratio, "InDetGlobal/Track", detailsInterval,
240  "Trk_noBLhit_eta_phi_ratio","Eta-phi of tracks with no b-layer hit but a hit is expected, ratio to total tracks",
242  m_nBinsPhi, -M_PI, M_PI,
243  "#eta", "#phi_{0}").ignore();
244 
245  if ( m_doIBL )
246  {
247  registerManHist( m_Trk_eta_phi_noIBLhit_ratio, "InDetGlobal/Track", detailsInterval,
248  "Trk_noIBLhit_eta_phi_ratio","Eta-phi of tracks with no IBL hit but a hit is expected, ratio to total tracks",
250  m_nBinsPhi, -M_PI, M_PI,
251  "#eta", "#phi_{0}").ignore();
252  }
253 
254  // Hit maps
255  if ( m_doHitMaps )
256  {
257  registerManHist( m_ID_hitmap_x_y, "InDetGlobal/Hits", run,
258  "ID_hitmap_x_y","Map of ID hits (BARREL) in x vs y (mm)",
259  400,-1100,1100,
260  400,-1100,1100,
261  "x [mm]", "y [mm]" ).ignore();
262 
263  registerManHist( m_ID_hitmap_x_y_eca, "InDetGlobal/Hits", run,
264  "ID_hitmap_x_y_eca","Map of ID hits (ECA) in x vs y (mm)",
265  400,-1100,1100,
266  400,-1100,1100,
267  "x [mm]", "y [mm]" ).ignore();
268 
269  registerManHist( m_ID_hitmap_x_y_ecc, "InDetGlobal/Hits", run,
270  "ID_hitmap_x_y_ecc","Map of ID hits (ECC) in x vs y (mm)",
271  400,-1100,1100,
272  400,-1100,1100,
273  "x [mm]", "y [mm]" ).ignore();
274  }
275 
276  for (unsigned int i = ( (m_doIBL) ? 0 : 1) ; i < m_trk_hits_eta_phi.size(); i++ )
277  {
278  registerManHist( m_trk_hits_eta_phi[i], "InDetGlobal/Hits", detailsInterval,
279  "Trk_n"+m_c_detector_labels[i]+"hits_eta_phi","Number of "+m_c_detector_labels[i]+" hits per track, eta-phi profile",
282  "#eta", "#phi" ).ignore();
283 
284  registerManHist( m_trk_hits_LB[i], "InDetGlobal/Track", detailsInterval,
285  "trk_n"+m_c_detector_labels[i]+"hits_LB","Average number of " + m_c_detector_labels[i] + " hits by LB",
287  "LB #", "Average number of hits in LB").ignore();
288  }
289 
290  for (unsigned int i = 1; i < m_trk_disabled_eta_phi.size(); i++ )
291  {
292  registerManHist( m_trk_disabled_eta_phi[i], "InDetGlobal/Hits", detailsInterval,
293  "Trk_n"+m_c_detector_labels[i]+"disabled_eta_phi","Number of "+m_c_detector_labels[i]+" disabled detector elements per track, eta-phi profile",
296  "#eta", "#phi" ).ignore();
297  }
298 
299  registerManHist( m_trk_shared_pix_eta_phi, "InDetGlobal/Hits", detailsInterval,
300  "Trk_nPixShared_eta_phi","Number of Pixel shared hits per track, eta-phi profile",
303  "#eta", "#phi" ).ignore();
304 
305  registerManHist( m_trk_split_pix_eta_phi, "InDetGlobal/Hits", detailsInterval,
306  "Trk_nPixSplit_eta_phi","Number of Pixel split hits per track, eta-phi profile",
309  "#eta", "#phi" ).ignore();
310 
311  registerManHist( m_trk_jetassoc_d0_reso_dr, "InDetGlobal/Hits", detailsInterval,
312  "Trk_jetassoc_d0_dr", "IP resolution per ghost associated track vs #DeltaR of track and jet",
313  20, 0, 0.4, "#Delta R", "Fraction" ).ignore();
314  registerManHist( m_trk_jetassoc_z0_reso_dr, "InDetGlobal/Hits", detailsInterval,
315  "Trk_jetassoc_z0_dr", "IP resolution per ghost associated track vs #DeltaR of track and jet",
316  20, 0, 0.4, "#Delta R", "Fraction" ).ignore();
317 
318  registerManHist( m_trk_jetassoc_split_pix_dr, "InDetGlobal/Hits", detailsInterval,
319  "Trk_jetassoc_split_pix_dr", "Fraction of split Pixel hits per ghost associated track vs #DeltaR of track and jet",
320  20, 0, 0.4, "#Delta R", "Fraction" ).ignore();
321 
322  registerManHist( m_trk_jetassoc_shared_pix_dr, "InDetGlobal/Hits", detailsInterval,
323  "Trk_jetassoc_shared_pix_dr", "Fraction of shared Pixel hits per ghost associated track vs #DeltaR of jet",
324  20, 0, 0.4, "#DeltaR", "Fraction" ).ignore();
325 
326  registerManHist( m_trk_jetassoc_res_pix_l0_x_dr, "InDetGlobal/Hits", detailsInterval,
327  "Trk_jetassoc_res_pix_x_l0_dr", "Average Pixel L0 residual (X) per ghost associated track vs #DeltaR of jet",
328  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
329  registerManHist( m_trk_jetassoc_res_pix_l1_x_dr, "InDetGlobal/Hits", detailsInterval,
330  "Trk_jetassoc_res_pix_x_l1_dr", "Average Pixel L1 residual (X) per ghost associated track vs #DeltaR of jet",
331  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
332  registerManHist( m_trk_jetassoc_res_pix_l2_x_dr, "InDetGlobal/Hits", detailsInterval,
333  "Trk_jetassoc_res_pix_x_l2_dr", "Average Pixel L2 residual (X) per ghost associated track vs #DeltaR of jet",
334  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
335  registerManHist( m_trk_jetassoc_res_pix_l3_x_dr, "InDetGlobal/Hits", detailsInterval,
336  "Trk_jetassoc_res_pix_x_l3_dr", "Average Pixel L3 residual (X) per ghost associated track vs #DeltaR of jet",
337  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
338 
339  registerManHist( m_trk_jetassoc_res_pix_eca_x_dr, "InDetGlobal/Hits", detailsInterval,
340  "Trk_jetassoc_res_pix_x_eca_dr", "Average Pixel ECA residual (X) per ghost associated track vs #DeltaR of jet",
341  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
342  registerManHist( m_trk_jetassoc_res_pix_ecc_x_dr, "InDetGlobal/Hits", detailsInterval,
343  "Trk_jetassoc_res_pix_x_ecc_dr", "Average Pixel ECC residual (X) per ghost associated track vs #DeltaR of jet",
344  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
345 
346  registerManHist( m_trk_jetassoc_res_pix_l0_y_dr, "InDetGlobal/Hits", detailsInterval,
347  "Trk_jetassoc_res_pix_y_l0_dr", "Average Pixel L0 residual (Y) per ghost associated track vs #DeltaR of jet",
348  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
349  registerManHist( m_trk_jetassoc_res_pix_l1_y_dr, "InDetGlobal/Hits", detailsInterval,
350  "Trk_jetassoc_res_pix_y_l1_dr", "Average Pixel L1 residual (Y) per ghost associated track vs #DeltaR of jet",
351  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
352  registerManHist( m_trk_jetassoc_res_pix_l2_y_dr, "InDetGlobal/Hits", detailsInterval,
353  "Trk_jetassoc_res_pix_y_l2_dr", "Average Pixel L2 residual (Y) per ghost associated track vs #DeltaR of jet",
354  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
355  registerManHist( m_trk_jetassoc_res_pix_l3_y_dr, "InDetGlobal/Hits", detailsInterval,
356  "Trk_jetassoc_res_pix_y_l3_dr", "Average Pixel L3 residual (Y) per ghost associated track vs #DeltaR of jet",
357  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
358 
359  registerManHist( m_trk_jetassoc_res_pix_eca_y_dr, "InDetGlobal/Hits", detailsInterval,
360  "Trk_jetassoc_res_pix_y_eca_dr", "Average Pixel ECA residual (Y) per ghost associated track vs #DeltaR of jet",
361  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
362  registerManHist( m_trk_jetassoc_res_pix_ecc_y_dr, "InDetGlobal/Hits", detailsInterval,
363  "Trk_jetassoc_res_pix_y_ecc_dr", "Average Pixel ECC residual (Y) per ghost associated track vs #DeltaR of jet",
364  20, 0, 0.4, "#DeltaR", "Biased Residual" ).ignore();
365 
366 
367  registerManHist( m_trk_jetassoc_ip_reso_lb, "InDetGlobal/Hits", detailsInterval,
368  "Trk_jetassoc_ip_reso_lb", "IP resolution per ghost associated track vs LB",
369  m_c_range_LB, 0, m_c_range_LB, "#Delta R", "Fraction" ).ignore();
370 
371  registerManHist( m_trk_jetassoc_split_pix_lb, "InDetGlobal/Hits", detailsInterval,
372  "Trk_jetassoc_split_pix_lb", "Fraction of split Pixel hits vs LB",
373  m_c_range_LB, 0, m_c_range_LB, "#Delta R", "Fraction" ).ignore();
374 
375  registerManHist( m_trk_jetassoc_shared_pix_lb, "InDetGlobal/Hits", detailsInterval,
376  "Trk_jetassoc_shared_pix_lb", "Fraction of shared Pixel hits vs LB",
377  m_c_range_LB, 0, m_c_range_LB, "#DeltaR", "Fraction" ).ignore();
378 
379  registerManHist( m_trk_shared_sct_eta_phi, "InDetGlobal/Hits", detailsInterval,
380  "Trk_nSCTShared_eta_phi","Number of SCT shared hits per track, eta-phi profile",
383  "#eta", "#phi" ).ignore();
384 
385  registerManHist( m_trk_holes_pix_eta_phi, "InDetGlobal/Hits", detailsInterval,
386  "Trk_nPixHoles_eta_phi","Number of Pixel holes per track, eta-phi profile",
389  "#eta", "#phi" ).ignore();
390 
391  registerManHist( m_trk_holes_sct_eta_phi, "InDetGlobal/Hits", detailsInterval,
392  "Trk_nSCTHoles_eta_phi","Number of SCT holes per track, eta-phi profile",
395  "#eta", "#phi" ).ignore();
396 
397  // Forward Pixel tracks
398  if ( m_doForwardTracks )
399  {
400  registerManHist( m_Trk_FORW_FA_eta_phi, "InDetGlobal/Track", detailsInterval,
401  "Trk_FORW_FA_eta_phi", "Eta-phi for pixel tracklets in the forward region (positive eta)",
403  m_nBinsPhi, -M_PI, M_PI,
404  "#eta", "#phi_{0}" ).ignore();
405 
406  registerManHist( m_Trk_FORW_FC_eta_phi, "InDetGlobal/Track", detailsInterval,
407  "Trk_FORW_FC_eta_phi", "Eta-phi for pixel tracklets in the forward region (negative eta)",
409  m_nBinsPhi, -M_PI, M_PI,
410  "#eta", "#phi_{0}" ).ignore();
411 
412  registerManHist( m_Trk_FORW_chi2, "InDetGlobal/Track", detailsInterval,
413  "Trk_FORW_chi2", "#chi^{2}/DoF of reconstructed forward tracklets",
414  80, -0., 20.,
415  "#chi^{2}/DoF").ignore();
416 
417  registerManHist( m_Trk_FORW_qoverp, "InDetGlobal/Track", detailsInterval,
418  "Trk_FORW_qoverp", "Distribution of qoverp (forward Pixel tracklets)",
419  400, -2.5, 2.5,
420  "Inverse momentum [GeV^{-1}]" ).ignore();
421 
422  registerManHist( m_Trk_FORW_FA_nPIXhits, "InDetGlobal/Hits", detailsInterval,
423  "Trk_FORW_nPIXhits_FA","Number of Pixel hits per track (Forward tracks FA)",
424  5, 0.5, 5.5,
425  "# of hits per track" ).ignore();
426 
427  registerManHist( m_Trk_FORW_FC_nPIXhits, "InDetGlobal/Hits", detailsInterval,
428  "Trk_FORW_nPIXhits_FC","Number of Pixel hits per track (Forward tracks FC)",
429  5, 0.5, 5.5,
430  "# of hits per track" ).ignore();
431  }
432 
433  // LB histograms
434  registerManHist( m_Trk_nBase_LB, "InDetGlobal/Track", detailsInterval,
435  "Trk_nBase_LB","Average number of baseline tracks per event in LB",
437  "LB #", "Average number of loose primary tracks per event in LB").ignore();
438 
439  registerManHist( m_Trk_nTight_LB, "InDetGlobal/Track", detailsInterval,
440  "Trk_nTight_LB","Average number of tight tracks per event in LB",
442  "LB #", "Average number of tight tracks per event in LB").ignore();
443 
444  if ( m_doIBL )
445  {
446  registerManHist( m_Trk_noIBLhits_LB, "InDetGlobal/Track", detailsInterval,
447  "Trk_noIBLhits_LB","Average number of tracks with missing IBL hit per event in LB",
449  "LB #", "Average number of tracks with missing IBL hit per event in LB").ignore();
450  registerManHist( m_Trk_noIBLhits_frac_LB, "InDetGlobal/Track", detailsInterval,
451  "Trk_noIBLhits_frac_LB","Fraction of tracks with missing IBL hit per event in LB",
453  "LB #", "Fraction of tracks with missing IBL hit per event in LB").ignore();
454  }
455 
456  registerManHist( m_Trk_noBLhits_LB, "InDetGlobal/Track", detailsInterval,
457  "Trk_noBLhits_LB","Average number of tracks with missing b-layer hit per event in LB",
459  "LB #", "Average number of tracks with missing b-layer hit per event in LB").ignore();
460 
461  registerManHist( m_Trk_noBLhits_frac_LB, "InDetGlobal/Track", detailsInterval,
462  "Trk_noBLhits_frac_LB","Fraction of tracks with missing b-layer hit per event in LB",
464  "LB #", "Fraction of tracks with missing b-layer hit per event in LB").ignore();
465 
466  registerManHist( m_Trk_noTRText_LB, "InDetGlobal/Track", detailsInterval,
467  "Trk_noTRText_LB","Average number of tracks without TRT extension per event in LB",
469  "LB #", "Average number of tracks with without TRT extension per event in LB").ignore();
470  registerManHist( m_Trk_noTRText_frac_LB, "InDetGlobal/Track", detailsInterval,
471  "Trk_noTRText_frac_LB","Fraction of tracks without TRT extension per event in LB",
473  "LB #", "Fraction of tracks with without TRT extension per event in LB").ignore();
474 
475  // Holes
476  if ( m_doHolePlots )
477  {
478  registerManHist( m_sct_holes, "InDetGlobal/Hits", detailsInterval,
479  "sct_holes", "Distribution of SCT Holes ",
480  104,-3.5,100.5,
481  "Number of SCT holes").ignore();
482 
483  registerManHist( m_trt_holes, "InDetGlobal/Hits", detailsInterval,
484  "trt_holes", "Distribution of TRT Holes ",
485  104,-3.5,100.5,
486  "Number of TRT holes").ignore();
487 
488  registerManHist( m_pixel_holes, "InDetGlobal/Hits", detailsInterval,
489  "pixel_holes", "Distribution of Pixel Holes ",
490  104,-3.5,100.5,
491  "Number of Pixel holes").ignore();
492 
493  registerManHist( m_comb_holes, "InDetGlobal/Hits", detailsInterval,
494  "comb_holes", "Distribution of Combined Holes ",
495  104,-3.5,100.5,
496  "Total number of holes").ignore();
497 
498  registerManHist( m_silicon_vs_trt, "InDetGlobal/Hits", detailsInterval,
499  "silicon_vs_trt", "Silicon vs TRT holes ",
500  104,-3.5,100.5,
501  104,-3.5,100.5,
502  "Silicon Combined holes", "TRT holes").ignore();
503 
504  registerManHist( m_sct_vs_pixels, "InDetGlobal/Hits", detailsInterval,
505  "sct_vs_pixels", "SCT vs Pixels holes ",
506  104,-3.5,100.5,
507  104,-3.5,100.5,
508  "SCT", "Pixels").ignore();
509 
510  registerManHist( m_holes_quality, "InDetGlobal/Hits", detailsInterval,
511  "holes_quality", "Number of holes/track vs #chi^{2}/ndf",
512  160,-0.5,15.5,
513  104,-3.5,100.5,
514  "#chi^{2}/ndf", "Combined Holes").ignore();
515 
516  registerManHist( m_holes_eta_phi, "InDetGlobal/Hits", detailsInterval,
517  "holes_eta_phi", "Holes Map #eta #phi",
520  "#eta", "#phi").ignore();
521 
522 
523  registerManHist( m_holes_eta_pt, "InDetGlobal/Hits", detailsInterval,
524  "holes_eta_pt", "Holes #eta vs p_{t}",
526  30,-0.,30.,
527  "#eta", "#p_{t}").ignore();
528 
529  registerManHist( m_holes_phi_pt, "InDetGlobal/Hits", detailsInterval,
530  "holes_phi_pt", "Holes #phi vs p_{t}",
532  30,-0.,30.,
533  "#phi", "#p_{t}").ignore();
534 
535  registerManHist( m_holes_eta_phi_n, "InDetGlobal/Hits", detailsInterval,
536  "holes_eta_phi_n", "Holes Map (Norm) #eta #phi",
539  "#eta", "#phi").ignore();
540 
541  registerManHist( m_holes_quality_profile, "InDetGlobal/Hits", detailsInterval,
542  "holes_quality_profile", "#chi^{2}/ndf vs Number of holes/track profile",
543  104,-3.5,100.5,
544  "<#chi^{2}/ndf> / comb hole", "Combined Holes").ignore();
545  m_holes_quality_profile->SetErrorOption("S");
546  m_holes_quality_profile->SetMaximum( 1000 );
547  m_holes_quality_profile->SetMinimum( 0 );
548 
549 
550  registerManHist( m_holes_hits, "InDetGlobal/Hits", detailsInterval,
551  "holes_hits", "Number of holes vs number of hits per track Combined",
552  101,-0.5,100.5,
553  "nb. of hits/track", "nb. holes/track").ignore();
554  m_holes_hits->SetErrorOption("S");
555  m_holes_hits->SetMaximum( 1000 );
556  m_holes_hits->SetMinimum( -10 );
557 
558  registerManHist( m_holesvshits, "InDetGlobal/Hits", detailsInterval,
559  "holesvshits","Number of Holes/track vs Number of Hits/track if holes >0 ",
560  101,-0.5,100.5,
561  101,-0.5,100.5,
562  "nb. of hits/track", "nb holes/track").ignore();
563 
564  registerManHist( m_holesvshits_ECA, "InDetGlobal/Hits", detailsInterval,
565  "holesvshits_ECA", "Number of Holes/track vs Number of Hits/track if holes >0 EndCap A",
566  101,-0.5,100.5,
567  101,-0.5,100.5,
568  "nb. of hits/track", "nb holes/track").ignore();
569 
570  registerManHist( m_holesvshits_ECC, "InDetGlobal/Hits", detailsInterval,
571  "holesvshits_ECC", "Number of Holes/track vs Number of Hits/track if holes >0 EndCap C",
572  101,-0.5,100.5,
573  101,-0.5,100.5,
574  "nb. of hits/track", "nb holes/track").ignore();
575 
576  registerManHist( m_holesvshits_BA, "InDetGlobal/Hits", detailsInterval,
577  "holesvshits_BA", "Number of Holes/track vs Number of Hits/track if holes >0 BARREL",
578  101,-0.5,100.5,
579  101,-0.5,100.5,
580  "nb. of hits/track", "nb holes/track").ignore();
581 
582  registerManHist( m_HolesMAP_XY, "InDetGlobal/Hits", detailsInterval,
583  "HolesMAP_XY", "Map of ID holes x vs y (mm)",
584  400,-1100,1100,
585  400,-1100,1100,
586  "X [mm]", "Y [mm]").ignore();
587 
588  registerManHist( m_HolesMAP_ZR, "InDetGlobal/Hits", detailsInterval,
589  "HolesMAP_ZR", "Map of ID holes z vs r (mm)",
590  3000,-3100,3100,
591  1100,0,1100,
592  "Z [mm]", "R [mm]").ignore();
593 
594  registerManHist( m_HolesMAP_ZX, "InDetGlobal/Hits", detailsInterval,
595  "HolesMAP_ZX", "Map of ID holes z vs x (mm)",
596  1000,-3100,3100,
597  300,-1100,1100,
598  "Z [mm]", "X [mm]").ignore();
599  }
600 
601  return StatusCode::SUCCESS;
602 }
603 
604 /*---------------------------------------------------------*/
606 {
607  return StatusCode::SUCCESS;
608 }
609 
610 /*---------------------------------------------------------*/
612 {
614  if ( !trackParticles.isValid() )
615  {
616  ATH_MSG_WARNING( "Failed to retrieve TrackParticles in StoreGate " + m_TrackParticleName.key() );
617  return StatusCode::SUCCESS;
618  }
619 
620  int nBase = 0;
621  int nTight = 0;
622  int nNoIBL = 0;
623  int nNoBL = 0;
624  int nNoTRText = 0;
625 
626  uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
627 
628  for (const auto *const trackPart: *trackParticles)
629  {
630  const Trk::Track * track = trackPart->track();
631  if ( !track || track->perigeeParameters() == nullptr )
632  {
633  ATH_MSG_DEBUG( "NULL track pointer in collection" );
634  continue;
635  }
636 
637  // Skip tracks that are not inside out
639  && ! ( track->info().patternRecoInfo( Trk::TrackInfo::SiSPSeededFinder ) ||
640  track->info().patternRecoInfo( Trk::TrackInfo::SiSpacePointsSeedMaker_HeavyIon ) ) )
641  continue;
642 
643  if ( ! m_baseline_selTool->accept(*track) )
644  continue;
645 
646  nBase++;
647 
648  FillHits( trackPart );
649  FillEtaPhi( trackPart );
650 
651  if ( m_doIBL )
652  {
653  int expInHit = trackPart->summaryValue(iSummaryValue, xAOD::expectInnermostPixelLayerHit) ? iSummaryValue : 0;
654  int nInHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfInnermostPixelLayerHits) ? iSummaryValue : 0;
655 
656  if ( expInHit==1 && nInHits==0 )
657  {
658  nNoIBL++;
660  }
661  else
662  {
664  }
665  }
666 
669  int expNInHit = trackPart->summaryValue(iSummaryValue, expNInHitField) ? iSummaryValue : 0;
670  int nNInHits = trackPart->summaryValue(iSummaryValue, nNInHitField) ? iSummaryValue : 0;
671 
672  if ( expNInHit==1 && nNInHits==0 )
673  {
674  nNoBL++;
676  }
677  else
678  {
680  }
681 
682  int nTRTHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTHits) ? iSummaryValue : 0;
683  int nTRTOutliers = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTOutliers ) ? iSummaryValue : 0;
684 
685  if ( (nTRTHits + nTRTOutliers) == 0 )
686  {
687  nNoTRText++;
689  }
690  else
691  {
693  }
694 
695  if ( m_tight_selTool->accept(*track) )
696  {
697  nTight++;
698  }
699 
700  if ( m_doHitMaps )
701  {
702  FillHitMaps( trackPart );
703  }
704 
705  if ( m_doHolePlots )
706  {
707  FillHoles( trackPart );
708  }
709 
710  m_Trk_Base->Fill( nBase );
711 
715 
718  }
719 
720  if ( m_doTide ) FillTIDE();
721 
722  if ( m_doForwardTracks )
723  {
725  if ( forwardTrackParticles.isPresent() )
726  {
727  if ( !forwardTrackParticles.isValid() )
728  {
729  ATH_MSG_DEBUG( "No forward TrackParticles in StoreGate " + m_ForwardTrackParticleName.key() );
730  return StatusCode::SUCCESS;
731  }
732 
733  for (const auto *const trackPart: *forwardTrackParticles) {
734  FillForwardTracks( trackPart );
735  }
736  }
737  }
738 
739  return StatusCode::SUCCESS;
740 }
741 
742 
744 {
745  return StatusCode::SUCCESS;
746 }
747 
749 {
750  uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
751 
752  const Trk::Track * track = trackPart->track();
753  if( !track) return;
754 
755  const Trk::Perigee *perigee = track->perigeeParameters();
756  if ( !perigee )
757  return;
758 
759  if ( m_doIBL )
760  {
761  int nInPixHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfInnermostPixelLayerHits) ? iSummaryValue : 0;
762  m_trk_hits_eta_phi[0]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nInPixHits );
763  m_trk_hits_LB[0]->Fill( AthenaMonManager::lumiBlockNumber(), nInPixHits );
764  }
765 
766  int nPixHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHits) ? iSummaryValue : 0;
767  int nPixDead = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelDeadSensors) ? iSummaryValue : 0;
768  int pixHits = nPixHits + nPixDead;
769  int nPixSharedHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelSharedHits) ? iSummaryValue : 0;
770  int nPixHoles = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHoles) ? iSummaryValue : 0;
771  int nPixSplit = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelSplitHits) ? iSummaryValue : 0;
772 
773  m_trk_hits_eta_phi[1]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], pixHits );
774  m_trk_disabled_eta_phi[1]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nPixDead );
775  m_trk_hits_LB[1]->Fill( AthenaMonManager::lumiBlockNumber(), pixHits );
776 
777  m_trk_shared_pix_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nPixSharedHits );
778  m_trk_holes_pix_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nPixHoles );
779  m_trk_split_pix_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nPixSplit );
780 
781  int nSCTHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTHits) ? iSummaryValue : 0;
782  int nSCTDead = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTDeadSensors) ? iSummaryValue : 0;
783  int sctHits = nSCTHits + nSCTDead;
784  int nSCTSharedHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTSharedHits) ? iSummaryValue : 0;
785  int nSCTHoles = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTHoles) ? iSummaryValue : 0;
786 
787  m_trk_hits_eta_phi[2]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], sctHits );
788  m_trk_disabled_eta_phi[2]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nSCTDead ) ;
789  m_trk_hits_LB[2]->Fill( AthenaMonManager::lumiBlockNumber(), sctHits );
790 
791  m_trk_shared_sct_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nSCTSharedHits );
792  m_trk_holes_sct_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nSCTHoles );
793 
794  int nTRTHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTHits) ? iSummaryValue : 0;
795  int nTRTDead = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTDeadStraws) ? iSummaryValue : 0;
796  int trtHits = nTRTHits + nTRTDead;
797 
798  m_trk_hits_eta_phi[3]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],trtHits );
799  m_trk_disabled_eta_phi[3]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], nTRTDead);
800  m_trk_hits_LB[3]->Fill( AthenaMonManager::lumiBlockNumber(), trtHits );
801 }
802 
803 
805 {
806  uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
807 
808  const Trk::Track * track = trackPart->track();
809  if ( ! track ) return;
810 
811  const Trk::Perigee *perigee = track->perigeeParameters();
812  float eta = perigee->eta();
813  float phi = perigee->parameters()[Trk::phi0];
814 
815  // Loose primary tracks
816  if ( m_baseline_selTool->accept(*track) )
817  {
818  m_Trk_eta_phi_Base->Fill( eta, phi );
819  if ( m_doIBL )
820  {
821  int expInHit = trackPart->summaryValue(iSummaryValue, xAOD::expectInnermostPixelLayerHit) ? iSummaryValue : 0;
822  int nInHit = trackPart->summaryValue(iSummaryValue, xAOD::numberOfInnermostPixelLayerHits) ? iSummaryValue : 0;
823  if ( expInHit==1 && nInHit==0 )
824  {
826  }
827  else
828  {
830  }
831 
833  int expNInHit = trackPart->summaryValue(iSummaryValue, xAOD::expectNextToInnermostPixelLayerHit) ? iSummaryValue : 0;
834  int nNInHit = trackPart->summaryValue(iSummaryValue, xAOD::numberOfNextToInnermostPixelLayerHits) ? iSummaryValue : 0;
835  if ( expNInHit==1 && nNInHit==0 )
836  {
838  }
839  else
840  {
842  }
843  }
844  else
845  {
846  int expInHit = trackPart->summaryValue(iSummaryValue, xAOD::expectInnermostPixelLayerHit) ? iSummaryValue : 0;
847  int nInHit = trackPart->summaryValue(iSummaryValue, xAOD::numberOfInnermostPixelLayerHits) ? iSummaryValue : 0;
848  if ( expInHit==1 && nInHit==0 )
849  {
851  }
852  else
853  {
855  }
856  }
857 
858  // No TRT extension
859  int nTRTHit = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTHits) ? iSummaryValue : 0;
860  if ( nTRTHit == 0 )
862  else
864  }
865 
866  m_Trk_eta_phi_Tight->Fill( eta, phi);
867 
869  if ( m_tight_selTool->accept(*track) )
870  {
872  }
873  else
874  {
876  }
877 
878  }
879 
881 {
882  uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
883 
884  int nPixHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHits) ? iSummaryValue : 0;
885  int nPixDead = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelDeadSensors) ? iSummaryValue : 0;
886 
887  const Trk::Track * track = trackPart->track();
888  if ( ! track ) return;
889 
890  const Trk::Perigee *perigee = track->perigeeParameters();
891  if ( perigee )
892  {
893  float eta = perigee->eta();
894  float phi = perigee->parameters()[Trk::phi0];
895 
896  if ( eta > 0. )
897  {
898  m_Trk_FORW_FA_eta_phi->Fill( eta, phi );
899  m_Trk_FORW_FA_nPIXhits->Fill ( nPixHits + nPixDead );
900  }
901  else
902  {
903  m_Trk_FORW_FC_eta_phi->Fill( eta, phi );
904  m_Trk_FORW_FC_nPIXhits->Fill ( nPixHits + nPixDead );
905  }
906 
907  m_Trk_FORW_qoverp->Fill( perigee->parameters()[Trk::qOverP] *1000.0 );
908  }
909 
910  if ( track->fitQuality() && track->fitQuality()->numberDoF() > 0 )
911  m_Trk_FORW_chi2->Fill(track->fitQuality()->chiSquared()/track->fitQuality()->numberDoF());
912 }
913 
915 {
918  if ( jets.isValid() ) {
919  for ( const auto *const jetItr : *jets )
920  {
921  if ( jetItr->pt() < 20000. )
922  continue;
923 
924  std::vector<const xAOD::IParticle*> trackVector;
925  if ( !jetItr->getAssociatedObjects<xAOD::IParticle>(xAOD::JetAttribute::GhostTrack, trackVector) )
926  continue;
927 
928  for ( const auto *const trkItr : trackVector )
929  {
930  const xAOD::TrackParticle* trackPart = dynamic_cast<const xAOD::TrackParticle*>(trkItr);
931 
932  if ( !trackPart )
933  continue;
934 
935  uint8_t split;
936  uint8_t shared;
937  uint8_t pix;
938 
939  if ( trackPart->summaryValue(pix, xAOD::numberOfPixelHits) && pix )
940  {
941  const Trk::Perigee perigee = trackPart->perigeeParameters();
942  const xAOD::Vertex* foundVertex { nullptr };
943  if ( vertices.isValid() )
944  {
945  for ( const auto *const vx : *vertices )
946  {
947  for ( const auto& tpLink : vx->trackParticleLinks() )
948  {
949  if ( *tpLink == trackPart )
950  {
951  foundVertex = vx;
952  break;
953  }
954  }
955  if (foundVertex) break;
956  }
957  }
958  if ( foundVertex )
959  {
960  std::unique_ptr<const Trk::ImpactParametersAndSigma> myIPandSigma(m_trackToVertexIPEstimator->estimate(trackPart, foundVertex ));
961  if ( myIPandSigma )
962  {
963  float dr = trackPart->p4().DeltaR( jetItr->p4() );
964  float sigmad0 = myIPandSigma->sigmad0;
965  float PVsigmad0 = myIPandSigma->PVsigmad0;
966  float d0sig = std::abs( myIPandSigma->IPd0 ) / std::sqrt( sigmad0*sigmad0 + PVsigmad0*PVsigmad0 );
967  float sigmaz0 = myIPandSigma->sigmaz0;
968  float PVsigmaz0 = myIPandSigma->PVsigmaz0;
969  float z0sig = std::abs( myIPandSigma->IPz0 ) / std::sqrt( sigmaz0*sigmaz0 + PVsigmaz0*PVsigmaz0 );
970 
971  m_trk_jetassoc_d0_reso_dr->Fill( dr, d0sig );
972  m_trk_jetassoc_z0_reso_dr->Fill( dr, z0sig );
974  }
975  }
976  if ( trackPart->summaryValue( split, xAOD::numberOfPixelSplitHits) )
977  {
978  float frac = (double)split / pix;
979  m_trk_jetassoc_split_pix_dr->Fill( trackPart->p4().DeltaR( jetItr->p4() ), frac );
981  }
982 
983  if ( trackPart->summaryValue( shared, xAOD::numberOfPixelSharedHits) )
984  {
985  float frac = (float)shared / pix;
986  m_trk_jetassoc_shared_pix_dr->Fill( trackPart->p4().DeltaR( jetItr->p4() ), frac );
988  }
989 
990  if ( m_doTideResiduals )
991  {
992  const auto *track = trackPart->track();
993  if ( ! track )
994  continue;
995 
996  const Trk::TrackStates* trackStates = track->trackStateOnSurfaces();
997  if ( trackStates == nullptr ) return;
998 
999  for (const auto *const tsos : *trackStates) {
1000 
1001  if (tsos == nullptr) continue;
1002 
1003  //SILICON (SCT + Pixel)
1004  const InDet::SiClusterOnTrack *clus = dynamic_cast<const InDet::SiClusterOnTrack*>( tsos->measurementOnTrack() );
1005  if ( !clus ) continue;
1006 
1007  const InDet::SiCluster *RawDataClus = dynamic_cast<const InDet::SiCluster*>(clus->prepRawData());
1008  if (!RawDataClus) continue;
1009 
1010  if ( RawDataClus->detectorElement()->isPixel() ) {
1011  const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>( tsos->measurementOnTrack() );
1012 
1013  if (hit && tsos->trackParameters()) {
1014  const Trk::TrackParameters* PropagatedTrackParams = tsos->trackParameters()->clone();
1015  const Trk::TrackParameters* UnbiasedTrackParams = m_iUpdator->removeFromState(*PropagatedTrackParams,
1016  tsos->measurementOnTrack()->localParameters(),
1017  tsos->measurementOnTrack()->localCovariance()).release();
1018  delete PropagatedTrackParams;
1019  if ( !UnbiasedTrackParams )
1020  if(msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "RemoveFromState did not work, using original TrackParameters" << endmsg;
1021 
1022 
1023  std::optional<Trk::ResidualPull> residualPull = m_residualPullCalculator->residualPull(
1024  tsos->measurementOnTrack(), ( UnbiasedTrackParams ) ? UnbiasedTrackParams:tsos->trackParameters(), Trk::ResidualPull::Unbiased);
1025  if (residualPull) {
1026  {
1027  float dr = trackPart->p4().DeltaR( jetItr->p4() );
1028  float pull_x = residualPull->pull()[Trk::loc1];
1029  float pull_y = residualPull->pull()[Trk::loc2];
1030 
1031  switch ( m_pixelID->barrel_ec( RawDataClus->identify() ) )
1032  {
1033  case 0:
1034  switch ( m_pixelID->layer_disk( RawDataClus->identify() ) )
1035  {
1036  case 0:
1039  break;
1040  case 1:
1043  break;
1044  case 2:
1047  break;
1048  case 3:
1051  break;
1052  }
1053  break;
1054  case -2:
1057  break;
1058  case 2:
1061  break;
1062  }
1063  }
1064  }
1065  }
1066  }
1067  }
1068  }
1069  }
1070  }
1071  }
1072  }
1073  else
1074  {
1075  ATH_MSG_WARNING( "Unable to get jets, turning TIDE plots off!" );
1076  m_doTide = false;
1077  }
1078 
1079  }
1080 
1082 {
1083  const Trk::Track * track = trackPart->track();
1084  if ( ! track ) return;
1085 
1086  const Trk::TrackStates* trackStates = track->trackStateOnSurfaces();
1087  if ( trackStates == nullptr ) return;
1088 
1089  for (const auto *const trackState : *trackStates) {
1090 
1091  if (trackState == nullptr) continue;
1092 
1093  //TRT
1094  const InDet::TRT_DriftCircleOnTrack *trtcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(trackState->measurementOnTrack());
1095  if ( trtcircle )
1096  {
1097  switch ( m_trtID->barrel_ec( trtcircle->identify() ) ) {
1098  case -2:
1099  m_ID_hitmap_x_y_ecc->Fill( trtcircle->globalPosition()[0], trtcircle->globalPosition()[1] );
1100  break;
1101  case -1:
1102  m_ID_hitmap_x_y->Fill( trtcircle->globalPosition()[0], trtcircle->globalPosition()[1] );
1103  break;
1104  case 1:
1105  m_ID_hitmap_x_y->Fill( trtcircle->globalPosition()[0], trtcircle->globalPosition()[1] );
1106  break;
1107  case 2:
1108  m_ID_hitmap_x_y_eca->Fill( trtcircle->globalPosition()[0], trtcircle->globalPosition()[1] );
1109  break;
1110  }
1111  }
1112 
1113  //SILICON (SCT + Pixel)
1114  const InDet::SiClusterOnTrack *clus = dynamic_cast<const InDet::SiClusterOnTrack*>( trackState->measurementOnTrack() );
1115  if ( !clus ) continue;
1116 
1117  const InDet::SiCluster *RawDataClus = dynamic_cast<const InDet::SiCluster*>(clus->prepRawData());
1118  if (!RawDataClus) continue;
1119 
1120  if ( RawDataClus->detectorElement()->isSCT() ) {
1121  switch ( m_sctID->barrel_ec( RawDataClus->identify() ) ) {
1122  case -2:
1123  m_ID_hitmap_x_y_ecc->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
1124  break;
1125  case 0:
1126  m_ID_hitmap_x_y->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
1127  break;
1128  case 2:
1129  m_ID_hitmap_x_y_eca->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
1130  break;
1131  }
1132 
1133  }else{
1134  switch ( m_pixelID->barrel_ec( RawDataClus->identify() ) ) {
1135  case -2:
1136  m_ID_hitmap_x_y_ecc->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
1137  break;
1138  case 0:
1139  m_ID_hitmap_x_y->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
1140  break;
1141  case 2:
1142  m_ID_hitmap_x_y_eca->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
1143  break;
1144  }
1145  }
1146  }
1147  }
1148 
1149 
1151 {
1152  uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
1153 
1154  int nPixHoles = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHoles) ? iSummaryValue : -1;
1155  int nSCTHoles = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTHoles) ? iSummaryValue : -1;
1156  int nTRTHoles = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTHoles) ? iSummaryValue : -1;
1157 
1158  const Trk::Track * track = trackPart->track();
1159  if ( ! track ) return;
1160 
1161  m_pixel_holes->Fill(nPixHoles);
1162  m_sct_holes->Fill(nSCTHoles);
1163  m_trt_holes->Fill(nTRTHoles);
1164 
1165  // Filling Combined Holes and Excluding case Tracks on surface does not exist
1166  if (nPixHoles>=0)
1167  m_comb_holes->Fill(nPixHoles);
1168  if (nSCTHoles>=0)
1169  m_comb_holes->Fill(nSCTHoles);
1170  if (nTRTHoles>=0)
1171  m_comb_holes->Fill(nTRTHoles);
1172 
1173  nPixHoles = std::max(nPixHoles, 0);
1174  nSCTHoles = std::max(nSCTHoles, 0);
1175  nTRTHoles = std::max(nTRTHoles, 0);
1176  int nSiHoles = nPixHoles + nSCTHoles;
1177  int nTotHoles = nPixHoles + nSCTHoles + nTRTHoles;
1178 
1179  m_silicon_vs_trt->Fill(nSiHoles, nTRTHoles);
1180  m_sct_vs_pixels->Fill(nSCTHoles, nPixHoles);
1181 
1182  if ( track->fitQuality() && track->fitQuality()->numberDoF() > 0 ){
1183  float chi2_ndf = track->fitQuality()->chiSquared()/track->fitQuality()->numberDoF();
1184  m_holes_quality->Fill(chi2_ndf, nTotHoles);
1185  m_holes_quality_profile->Fill(nTotHoles, chi2_ndf);
1186  }
1187 
1188  // Filling Number of holes vs number of hits for tracks with at least a hole.
1189 
1190  int nPixHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHits) ? iSummaryValue : 0;
1191  int nPixDead = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelDeadSensors) ? iSummaryValue : 0;
1192  int nSCTHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTHits) ? iSummaryValue : 0;
1193  int nSCTDead = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTDeadSensors) ? iSummaryValue : 0;
1194  int nTRTHits = trackPart->summaryValue(iSummaryValue, xAOD::numberOfTRTHits) ? iSummaryValue : 0;
1195  int nTotHits = nPixHits + nPixDead + nSCTHits + nSCTDead + nTRTHits;
1196 
1197  if (nPixHoles>0 || nSCTHoles>0 || nTRTHoles>0) {
1198  m_holes_hits->Fill(nTotHits, nTotHoles);
1199  m_holesvshits->Fill(nTotHits, nTotHoles);
1200  }
1201 
1202  // Here The Perigee Parameters of Holes
1203  const Trk::Perigee *perigee = dynamic_cast<const Trk::Perigee *>(track->perigeeParameters());
1204 
1205  m_holes_eta_phi_n->Fill(perigee->eta(), perigee->parameters()[Trk::phi], float(nSiHoles)/nTotHits);
1206  m_holes_eta_phi->Fill(perigee->eta(), perigee->parameters()[Trk::phi]);
1207  m_holes_eta_pt->Fill(perigee->eta(), perigee->pT()/1000.0, nSiHoles);
1208  m_holes_phi_pt->Fill(perigee->parameters()[Trk::phi], perigee->pT()/1000.0, nSiHoles);
1209 
1210  // Filling holes vs hits in eta bins
1211  if (nPixHoles >0 || nSCTHoles >0 || nTRTHoles >0){
1212  // Filling ECA
1213  if (perigee->eta()>=-2.5 && perigee->eta()<=-1.5) {
1214  m_holesvshits_ECA->Fill(nTotHits, nTotHoles);
1215  }
1216 
1217  else if (perigee->eta()>=-1.5 && perigee->eta()<=1.5) {
1218  m_holesvshits_BA->Fill(nTotHits, nTotHoles);
1219  }
1220 
1221  else if (perigee->eta()>=1.5 && perigee->eta()<=2.5) {
1222  m_holesvshits_ECC->Fill(nTotHits, nTotHoles);
1223  }
1224  }
1225 
1226  if (m_DoHoles_Search) FillHoleMaps(trackPart);
1227 }
1228 
1230 {
1231  const Trk::Track * track = trackPart->track();
1232  if ( ! track ) return;
1233 
1234  std::unique_ptr<const Trk::TrackStates > holesOnTrack( m_holes_search_tool->getHolesOnTrack(*track, track->info().particleHypothesis()) );
1235 
1236  // loop over holes
1237  if (!holesOnTrack) {
1238  msg(MSG::WARNING) << "Got no holes on track" << endmsg;
1239  } else {
1240  for( const auto *const it : *holesOnTrack ) {
1241  if (!it) {
1242  msg(MSG::WARNING) << "TrackStateOnSurface from hole search tool == Null" << endmsg;
1243  continue;
1244  }
1245  // Here The X Y Z of Holes
1246  const Trk::TrackParameters *clus = it->trackParameters() ;
1247  if (clus){
1248  m_HolesMAP_XY->Fill(clus->position()[0], clus->position()[1]);
1249  m_HolesMAP_ZX->Fill(clus->position()[2], clus->position()[0]);
1250  m_HolesMAP_ZR->Fill(clus->position()[2], std::sqrt( std::pow( clus->position()[0], 2) + std::pow( clus->position()[1], 2) ));
1251 
1252  }
1253  }
1254  }
1255 
1256  }
InDetGlobalTrackMonTool::m_trk_jetassoc_ip_reso_lb
TProfile * m_trk_jetassoc_ip_reso_lb
Definition: InDetGlobalTrackMonTool.h:256
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
InDetGlobalTrackMonTool::m_trt_holes
TH1F * m_trt_holes
Definition: InDetGlobalTrackMonTool.h:157
InDetGlobalTrackMonTool::m_ID_hitmap_x_y_eca
TH2F * m_ID_hitmap_x_y_eca
Definition: InDetGlobalTrackMonTool.h:217
InDetGlobalTrackMonTool::m_c_range_LB
const float m_c_range_LB
Definition: InDetGlobalTrackMonTool.h:134
InDetGlobalTrackMonTool::m_Trk_eta_phi_noTRText_ratio
TProfile2D * m_Trk_eta_phi_noTRText_ratio
Definition: InDetGlobalTrackMonTool.h:177
InDetGlobalTrackMonTool::m_trackBin
unsigned int m_trackBin
Definition: InDetGlobalTrackMonTool.h:125
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:261
InDetGlobalTrackMonTool::m_trk_shared_pix_eta_phi
TProfile2D * m_trk_shared_pix_eta_phi
Definition: InDetGlobalTrackMonTool.h:228
InDetGlobalTrackMonTool::m_ForwardTrackParticleName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_ForwardTrackParticleName
Definition: InDetGlobalTrackMonTool.h:146
InDetGlobalTrackMonTool::m_silicon_vs_trt
TH2F * m_silicon_vs_trt
Definition: InDetGlobalTrackMonTool.h:163
InDetGlobalTrackMonTool::m_c_etaRangeTRT
const float m_c_etaRangeTRT
Definition: InDetGlobalTrackMonTool.h:132
ManagedMonitorToolBase::Interval_t
Interval_t
An enumeration describing how detailed a particular monitoring object is.
Definition: ManagedMonitorToolBase.h:114
TH1F_LW.h
TH2F_LW.h
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDetGlobalTrackMonTool::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent()
An inheriting class should either override this function, bookHists() or bookHistograms().
Definition: InDetGlobalTrackMonTool.cxx:605
InDetGlobalTrackMonTool::m_pixel_holes
TH1F * m_pixel_holes
Definition: InDetGlobalTrackMonTool.h:159
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_eca_x_dr
TProfile * m_trk_jetassoc_res_pix_eca_x_dr
Definition: InDetGlobalTrackMonTool.h:250
max
#define max(a, b)
Definition: cfImp.cxx:41
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:272
MeasurementBase.h
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_eca_y_dr
TProfile * m_trk_jetassoc_res_pix_eca_y_dr
Definition: InDetGlobalTrackMonTool.h:251
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
InDetGlobalTrackMonTool::m_holes_quality_profile
TProfile * m_holes_quality_profile
Definition: InDetGlobalTrackMonTool.h:168
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
InDetGlobalTrackMonTool::m_doForwardTracks
bool m_doForwardTracks
Definition: InDetGlobalTrackMonTool.h:120
InDetGlobalTrackMonTool::m_trtID
const TRT_ID * m_trtID
the TRT ID helper
Definition: InDetGlobalTrackMonTool.h:195
InDetGlobalTrackMonTool::m_Trk_noIBLhits_LB
TProfile * m_Trk_noIBLhits_LB
Definition: InDetGlobalTrackMonTool.h:183
Surface.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
InDetGlobalTrackMonTool::m_ID_hitmap_x_y
TH2F * m_ID_hitmap_x_y
Definition: InDetGlobalTrackMonTool.h:216
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
PixelID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: PixelID.h:619
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
InDetGlobalTrackMonTool::m_c_detector_labels
const std::array< std::string, 4 > m_c_detector_labels
Definition: InDetGlobalTrackMonTool.h:136
InDetGlobalTrackMonTool::FillHits
void FillHits(const xAOD::TrackParticle *trackPart)
Definition: InDetGlobalTrackMonTool.cxx:748
InDetGlobalTrackMonTool::m_vertexKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexKey
Definition: InDetGlobalTrackMonTool.h:149
InDetGlobalTrackMonTool::m_holes_search_tool
ToolHandle< Trk::ITrackHoleSearchTool > m_holes_search_tool
Definition: InDetGlobalTrackMonTool.h:139
Trk::ImpactParametersAndSigma::PVsigmaz0
double PVsigmaz0
Definition: ITrackToVertexIPEstimator.h:41
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l1_y_dr
TProfile * m_trk_jetassoc_res_pix_l1_y_dr
Definition: InDetGlobalTrackMonTool.h:246
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:736
InDetGlobalTrackMonTool::m_Trk_eta_phi_noBLhit_ratio
TProfile2D * m_Trk_eta_phi_noBLhit_ratio
Definition: InDetGlobalTrackMonTool.h:176
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
InDetGlobalTrackMonTool::m_Trk_FORW_FC_nPIXhits
TH1I * m_Trk_FORW_FC_nPIXhits
Definition: InDetGlobalTrackMonTool.h:269
Trk::ResidualPull::Unbiased
@ Unbiased
RP with track state that has measurement not included.
Definition: ResidualPull.h:57
skel.it
it
Definition: skel.GENtoEVGEN.py:423
InDetGlobalTrackMonTool::m_Trk_FORW_FA_eta_phi
TH2F * m_Trk_FORW_FA_eta_phi
Definition: InDetGlobalTrackMonTool.h:261
InDetGlobalTrackMonTool::m_nBinsEta
unsigned int m_nBinsEta
Definition: InDetGlobalTrackMonTool.h:123
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDetGlobalTrackMonTool::m_Trk_noBLhits_LB
TProfile * m_Trk_noBLhits_LB
Definition: InDetGlobalTrackMonTool.h:184
ManagedMonitorToolBase::m_dataType
AthenaMonManager::DataType_t m_dataType
Definition: ManagedMonitorToolBase.h:901
Trk::loc2
@ loc2
generic first and second local coordinate
Definition: ParamDefs.h:41
Trk::ImpactParametersAndSigma::IPd0
double IPd0
Definition: ITrackToVertexIPEstimator.h:34
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
TProfile_LW.h
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
xAOD::expectInnermostPixelLayerHit
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
Definition: TrackingPrimitives.h:236
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:275
SiClusterOnTrack.h
InDetGlobalTrackMonTool::m_trk_holes_pix_eta_phi
TProfile2D * m_trk_holes_pix_eta_phi
Definition: InDetGlobalTrackMonTool.h:232
InDetGlobalTrackMonTool::m_holes_quality
TH2F * m_holes_quality
Definition: InDetGlobalTrackMonTool.h:167
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
InDetGlobalTrackMonTool::m_doTideResiduals
bool m_doTideResiduals
Definition: InDetGlobalTrackMonTool.h:119
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l0_y_dr
TProfile * m_trk_jetassoc_res_pix_l0_y_dr
Definition: InDetGlobalTrackMonTool.h:245
InDetGlobalTrackMonTool::m_sctID
const SCT_ID * m_sctID
the SCT ID helper
Definition: InDetGlobalTrackMonTool.h:198
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
InDetGlobalTrackMonTool::m_TrackParticleName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackParticleName
Definition: InDetGlobalTrackMonTool.h:145
InDetGlobalTrackMonTool::m_doTide
bool m_doTide
Definition: InDetGlobalTrackMonTool.h:118
InDetGlobalTrackMonTool::FillForwardTracks
void FillForwardTracks(const xAOD::TrackParticle *trackPart)
Functions to fill individual sets of histograms.
Definition: InDetGlobalTrackMonTool.cxx:880
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l1_x_dr
TProfile * m_trk_jetassoc_res_pix_l1_x_dr
Definition: InDetGlobalTrackMonTool.h:241
InDetGlobalTrackMonTool::fillHistograms
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: InDetGlobalTrackMonTool.cxx:611
InDetGlobalTrackMonTool::m_doHitMaps
bool m_doHitMaps
Switch for hitmaps.
Definition: InDetGlobalTrackMonTool.h:116
InDetGlobalTrackMonTool::m_Trk_noBLhits_frac_LB
TProfile * m_Trk_noBLhits_frac_LB
Definition: InDetGlobalTrackMonTool.h:188
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
InDetGlobalTrackMonTool::m_HolesMAP_XY
TH2F * m_HolesMAP_XY
Definition: InDetGlobalTrackMonTool.h:219
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
InDetGlobalTrackMonTool::m_holesvshits_ECC
TH2F * m_holesvshits_ECC
Definition: InDetGlobalTrackMonTool.h:213
AthenaMonManager::environment
static Environment_t environment()
Returns the running environment of the monitoring application to help ManagedMonitorToolBase objects ...
Definition: AthenaMonManager.cxx:321
InDetGlobalTrackMonTool::bookHistograms
virtual StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: InDetGlobalTrackMonTool.cxx:205
InDetGlobalTrackMonTool::m_doIBL
bool m_doIBL
Definition: InDetGlobalTrackMonTool.h:121
InDetGlobalTrackMonTool::m_trk_jetassoc_split_pix_dr
TProfile * m_trk_jetassoc_split_pix_dr
Definition: InDetGlobalTrackMonTool.h:237
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l0_x_dr
TProfile * m_trk_jetassoc_res_pix_l0_x_dr
Definition: InDetGlobalTrackMonTool.h:240
xAOD::TrackParticle_v1::p4
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
Definition: TrackParticle_v1.cxx:129
Trk::ImpactParametersAndSigma::PVsigmad0
double PVsigmad0
Definition: ITrackToVertexIPEstimator.h:40
xAOD::TrackParticle_v1::perigeeParameters
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Definition: TrackParticle_v1.cxx:485
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:262
xAOD::SummaryType
SummaryType
Enumerates the different types of information stored in Summary.
Definition: TrackingPrimitives.h:228
InDet::SiClusterOnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override
returns global position (gathered through Surface constraint)
Definition: SiClusterOnTrack.h:115
InDetGlobalTrackMonTool::m_Trk_FORW_FA_nPIXhits
TH1I * m_Trk_FORW_FA_nPIXhits
Number of PIX hits per track.
Definition: InDetGlobalTrackMonTool.h:268
InDetGlobalTrackMonTool::m_c_etaTrackletsMax
const float m_c_etaTrackletsMax
Definition: InDetGlobalTrackMonTool.h:131
AthenaMonManager
An Algorithm that manages a set of modules, each inheriting from ManagedMonitorToolBase,...
Definition: AthenaMonManager.h:34
xAOD::expectNextToInnermostPixelLayerHit
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
Definition: TrackingPrimitives.h:247
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
InDetGlobalTrackMonTool::m_trk_holes_sct_eta_phi
TProfile2D * m_trk_holes_sct_eta_phi
Definition: InDetGlobalTrackMonTool.h:233
InDetGlobalTrackMonTool::m_trk_jetassoc_split_pix_lb
TProfile * m_trk_jetassoc_split_pix_lb
Definition: InDetGlobalTrackMonTool.h:257
InDetGlobalTrackMonTool::m_HolesMAP_ZR
TH2F * m_HolesMAP_ZR
Definition: InDetGlobalTrackMonTool.h:221
InDetGlobalTrackMonTool::m_Trk_nBase_LB
TProfile * m_Trk_nBase_LB
Definition: InDetGlobalTrackMonTool.h:180
lumiFormat.i
int i
Definition: lumiFormat.py:92
AthenaMonManager::collisions
@ collisions
Definition: AthenaMonManager.h:58
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
checkxAOD.frac
frac
Definition: Tools/PyUtils/bin/checkxAOD.py:256
AthenaMonManager::online
@ online
Definition: AthenaMonManager.h:49
TH1I_LW.h
InDetGlobalTrackMonTool::m_c_etaTrackletsMin
const float m_c_etaTrackletsMin
Definition: InDetGlobalTrackMonTool.h:130
Trk::ImpactParametersAndSigma::IPz0
double IPz0
Definition: ITrackToVertexIPEstimator.h:35
InDetGlobalTrackMonTool::m_holes_phi_pt
TProfile2D * m_holes_phi_pt
Definition: InDetGlobalTrackMonTool.h:208
InDetGlobalTrackMonTool::m_iUpdator
ToolHandle< Trk::IUpdator > m_iUpdator
Definition: InDetGlobalTrackMonTool.h:143
test_pyathena.parent
parent
Definition: test_pyathena.py:15
TProfile2D::Fill
int Fill(double, double, double)
Definition: rootspy.cxx:541
InDetGlobalTrackMonTool::m_holes_eta_pt
TProfile2D * m_holes_eta_pt
Definition: InDetGlobalTrackMonTool.h:207
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
InDetGlobalTrackMonTool::m_holesvshits_BA
TH2F * m_holesvshits_BA
Definition: InDetGlobalTrackMonTool.h:214
InDetGlobalTrackMonTool::m_tight_selTool
ToolHandle< InDet::IInDetTrackSelectionTool > m_tight_selTool
Definition: InDetGlobalTrackMonTool.h:110
run
Definition: run.py:1
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::ImpactParametersAndSigma::sigmad0
double sigmad0
Definition: ITrackToVertexIPEstimator.h:37
TRT_DriftCircleOnTrack.h
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::numberOfPixelSplitHits
@ numberOfPixelSplitHits
number of Pixel all-layer hits split by cluster splitting [unit8_t].
Definition: TrackingPrimitives.h:263
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:270
InDetGlobalTrackMonTool::m_trk_disabled_eta_phi
std::array< TProfile2D *, 4 > m_trk_disabled_eta_phi
Definition: InDetGlobalTrackMonTool.h:225
InDetGlobalTrackMonTool::m_Trk_Base
TH1I * m_Trk_Base
Definition: InDetGlobalTrackMonTool.h:170
DataVector< const Trk::TrackStateOnSurface >
InDetGlobalTrackMonTool::m_trackToVertexIPEstimator
PublicToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimator
Definition: InDetGlobalTrackMonTool.h:142
InDet::SiCluster::detectorElement
virtual const InDetDD::SiDetectorElement * detectorElement() const override final
return the detector element corresponding to this PRD The pointer will be zero if the det el is not d...
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Trk::TrackInfo::SiSpacePointsSeedMaker_HeavyIon
@ SiSpacePointsSeedMaker_HeavyIon
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:223
InDetGlobalTrackMonTool::m_trk_split_pix_eta_phi
TProfile2D * m_trk_split_pix_eta_phi
Definition: InDetGlobalTrackMonTool.h:229
InDetDD::SiDetectorElement::isPixel
bool isPixel() const
InDetGlobalTrackMonTool::m_sct_holes
TH1F * m_sct_holes
Definition: InDetGlobalTrackMonTool.h:155
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
InDetGlobalTrackMonTool::m_ID_hitmap_x_y_ecc
TH2F * m_ID_hitmap_x_y_ecc
Definition: InDetGlobalTrackMonTool.h:218
xAOD::numberOfNextToInnermostPixelLayerHits
@ numberOfNextToInnermostPixelLayerHits
these are the hits in the 1st pixel barrel layer
Definition: TrackingPrimitives.h:248
python.EventInfoMgtInit.release
release
Definition: EventInfoMgtInit.py:24
InDetGlobalTrackMonTool::registerManHist
StatusCode registerManHist(histClass *&target, const std::string &path, Interval_t interval, const std::string &name, const std::string &title, int nbinsx, double xlow, double xhi, const std::string &xlabel, const std::string &ylabel="")
Definition: InDetGlobalTrackMonTool.h:274
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l2_y_dr
TProfile * m_trk_jetassoc_res_pix_l2_y_dr
Definition: InDetGlobalTrackMonTool.h:247
InDetGlobalTrackMonTool::m_holes_hits
TProfile * m_holes_hits
Definition: InDetGlobalTrackMonTool.h:210
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SiCluster.h
TauGNNUtils::Variables::Track::nSCTHits
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:549
InDetGlobalTrackMonTool::m_trk_jetassoc_d0_reso_dr
TProfile * m_trk_jetassoc_d0_reso_dr
Definition: InDetGlobalTrackMonTool.h:235
InDetGlobalTrackMonTool::FillHitMaps
void FillHitMaps(const xAOD::TrackParticle *trackPart)
Definition: InDetGlobalTrackMonTool.cxx:1081
InDetGlobalTrackMonTool::m_Trk_eta_phi_noIBLhit_ratio
TProfile2D * m_Trk_eta_phi_noIBLhit_ratio
Definition: InDetGlobalTrackMonTool.h:175
InDetGlobalTrackMonTool::m_sct_vs_pixels
TH2F * m_sct_vs_pixels
Definition: InDetGlobalTrackMonTool.h:164
InDetGlobalTrackMonTool::m_trackMax
unsigned int m_trackMax
Definition: InDetGlobalTrackMonTool.h:126
InDetGlobalTrackMonTool::m_holes_eta_phi_n
TProfile2D * m_holes_eta_phi_n
Definition: InDetGlobalTrackMonTool.h:209
ManagedMonitorToolBase::lowStat
@ lowStat
Definition: ManagedMonitorToolBase.h:115
Trk::RIO_OnTrack::prepRawData
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
InDetGlobalTrackMonTool::m_holesvshits_ECA
TH2F * m_holesvshits_ECA
Definition: InDetGlobalTrackMonTool.h:212
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l3_x_dr
TProfile * m_trk_jetassoc_res_pix_l3_x_dr
Definition: InDetGlobalTrackMonTool.h:243
InDetGlobalTrackMonTool::m_doHolePlots
bool m_doHolePlots
Switch for hole searching.
Definition: InDetGlobalTrackMonTool.h:113
InDetGlobalTrackMonTool::m_Trk_FORW_FC_eta_phi
TH2F * m_Trk_FORW_FC_eta_phi
Definition: InDetGlobalTrackMonTool.h:262
InDetGlobalTrackMonTool::m_Trk_eta_phi_Tight
TH2F * m_Trk_eta_phi_Tight
Definition: InDetGlobalTrackMonTool.h:173
InDetGlobalTrackMonTool::m_baseline_selTool
ToolHandle< InDet::IInDetTrackSelectionTool > m_baseline_selTool
Definition: InDetGlobalTrackMonTool.h:109
InDetGlobalTrackMonTool::m_trk_hits_eta_phi
std::array< TProfile2D *, 4 > m_trk_hits_eta_phi
Definition: InDetGlobalTrackMonTool.h:224
xAOD::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Definition: TrackingPrimitives.h:276
InDetGlobalTrackMonTool::m_Trk_nTight_LB
TProfile * m_Trk_nTight_LB
Definition: InDetGlobalTrackMonTool.h:181
Trk::TrackInfo::SiSPSeededFinder
@ SiSPSeededFinder
Tracks from SiSPSeedFinder.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:102
InDetGlobalTrackMonTool::m_Trk_FORW_qoverp
TH1F * m_Trk_FORW_qoverp
Definition: InDetGlobalTrackMonTool.h:264
InDetGlobalTrackMonTool::m_holes_eta_phi
TH2F * m_holes_eta_phi
Definition: InDetGlobalTrackMonTool.h:206
InDetGlobalTrackMonTool::m_trk_shared_sct_eta_phi
TProfile2D * m_trk_shared_sct_eta_phi
Definition: InDetGlobalTrackMonTool.h:230
TProfile::Fill
int Fill(double, double)
Definition: rootspy.cxx:523
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
InDetGlobalTrackMonTool::m_Trk_noTRText_LB
TProfile * m_Trk_noTRText_LB
Definition: InDetGlobalTrackMonTool.h:185
InDetGlobalTrackMonTool::m_nBinsPhi
unsigned int m_nBinsPhi
Definition: InDetGlobalTrackMonTool.h:124
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:273
InDetGlobalTrackMonTool::FillEtaPhi
void FillEtaPhi(const xAOD::TrackParticle *trackPart)
Definition: InDetGlobalTrackMonTool.cxx:804
InDetGlobalTrackMonTool.h
InDetGlobalTrackMonTool::m_trk_jetassoc_z0_reso_dr
TProfile * m_trk_jetassoc_z0_reso_dr
Definition: InDetGlobalTrackMonTool.h:236
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
InDetGlobalTrackMonTool::initialize
virtual StatusCode initialize()
Definition: InDetGlobalTrackMonTool.cxx:142
InDetGlobalTrackMonTool::m_Trk_FORW_chi2
TH1F * m_Trk_FORW_chi2
Definition: InDetGlobalTrackMonTool.h:265
InDetGlobalTrackMonTool::m_Trk_eta_phi_Base
TH2F * m_Trk_eta_phi_Base
Distribution of eta vs phi for combined tracks.
Definition: InDetGlobalTrackMonTool.h:172
InDetGlobalTrackMonTool::FillHoleMaps
void FillHoleMaps(const xAOD::TrackParticle *trackPart)
Definition: InDetGlobalTrackMonTool.cxx:1229
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
InDetGlobalTrackMonTool::m_IBLParameterSvc
ServiceHandle< IBLParameterSvc > m_IBLParameterSvc
Definition: InDetGlobalTrackMonTool.h:138
InDetGlobalTrackMonTool::m_Trk_eta_phi_Tight_ratio
TProfile2D * m_Trk_eta_phi_Tight_ratio
Definition: InDetGlobalTrackMonTool.h:174
Trk::ImpactParametersAndSigma::sigmaz0
double sigmaz0
Definition: ITrackToVertexIPEstimator.h:38
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
InDetGlobalTrackMonTool::FillHoles
void FillHoles(const xAOD::TrackParticle *trackPart)
Definition: InDetGlobalTrackMonTool.cxx:1150
InDetGlobalTrackMonTool::m_residualPullCalculator
ToolHandle< Trk::IResidualPullCalculator > m_residualPullCalculator
Definition: InDetGlobalTrackMonTool.h:140
Trk::RIO_OnTrack::identify
virtual Identifier identify() const final
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:155
InDetGlobalTrackMonTool::m_pixelID
const PixelID * m_pixelID
the Pixel ID helper
Definition: InDetGlobalTrackMonTool.h:201
InDetGlobalTrackMonTool::m_Trk_noIBLhits_frac_LB
TProfile * m_Trk_noIBLhits_frac_LB
Definition: InDetGlobalTrackMonTool.h:187
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_ecc_y_dr
TProfile * m_trk_jetassoc_res_pix_ecc_y_dr
Definition: InDetGlobalTrackMonTool.h:254
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
InDetGlobalTrackMonTool::m_comb_holes
TH1F * m_comb_holes
Definition: InDetGlobalTrackMonTool.h:161
InDetGlobalTrackMonTool::m_trk_hits_LB
std::array< TProfile *, 4 > m_trk_hits_LB
Definition: InDetGlobalTrackMonTool.h:226
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
Trk::phi
@ phi
Definition: ParamDefs.h:81
InDetDD::SiDetectorElement::isSCT
bool isSCT() const
SG::VarHandleBase::isPresent
bool isPresent() const
Is the referenced object present in SG?
Definition: StoreGate/src/VarHandleBase.cxx:397
InDetGlobalTrackMonTool::procHistograms
virtual StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
Definition: InDetGlobalTrackMonTool.cxx:743
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:266
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_ecc_x_dr
TProfile * m_trk_jetassoc_res_pix_ecc_x_dr
Definition: InDetGlobalTrackMonTool.h:253
InDetGlobalTrackMonTool::m_c_etaRange
const float m_c_etaRange
Contants for various histogram properties.
Definition: InDetGlobalTrackMonTool.h:129
AthenaMonManager::lumiBlockNumber
static unsigned int lumiBlockNumber()
Definition: AthenaMonManager.cxx:352
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::TrackParticle_v1::track
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
Definition: TrackParticle_v1.cxx:805
AthenaMonManager::userDefined
@ userDefined
Definition: AthenaMonManager.h:58
InDetGlobalTrackMonTool::InDetGlobalTrackMonTool
InDetGlobalTrackMonTool(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
Definition: InDetGlobalTrackMonTool.cxx:45
ReadHandle.h
Handle class for reading from StoreGate.
InDet::TRT_DriftCircleOnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
return the global position of this RIO_OnTrack
Definition: TRT_DriftCircleOnTrack.cxx:160
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l2_x_dr
TProfile * m_trk_jetassoc_res_pix_l2_x_dr
Definition: InDetGlobalTrackMonTool.h:242
InDetGlobalTrackMonTool::m_trk_jetassoc_res_pix_l3_y_dr
TProfile * m_trk_jetassoc_res_pix_l3_y_dr
Definition: InDetGlobalTrackMonTool.h:248
pix
Definition: PixelMapping.cxx:16
Trk::loc1
@ loc1
Definition: ParamDefs.h:40
xAOD::JetAttribute::GhostTrack
@ GhostTrack
Definition: JetAttributes.h:252
InDetGlobalTrackMonTool::m_DoHoles_Search
bool m_DoHoles_Search
Definition: InDetGlobalTrackMonTool.h:114
xAOD::numberOfTRTHoles
@ numberOfTRTHoles
number of TRT holes [unit8_t].
Definition: TrackingPrimitives.h:277
InDetGlobalTrackMonTool::m_Trk_noTRText_frac_LB
TProfile * m_Trk_noTRText_frac_LB
Definition: InDetGlobalTrackMonTool.h:189
xAOD::numberOfTRTDeadStraws
@ numberOfTRTDeadStraws
number of dead TRT straws crossed [unit8_t].
Definition: TrackingPrimitives.h:282
InDetGlobalTrackMonTool::m_trk_jetassoc_shared_pix_dr
TProfile * m_trk_jetassoc_shared_pix_dr
Definition: InDetGlobalTrackMonTool.h:238
readCCLHist.float
float
Definition: readCCLHist.py:83
InDetGlobalTrackMonTool::m_trk_jetassoc_shared_pix_lb
TProfile * m_trk_jetassoc_shared_pix_lb
Definition: InDetGlobalTrackMonTool.h:258
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
InDet::SiCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiCluster.h:40
InDetGlobalTrackMonTool::m_holesvshits
TH2F * m_holesvshits
Definition: InDetGlobalTrackMonTool.h:211
InDetGlobalTrackMonTool::FillTIDE
void FillTIDE()
Definition: InDetGlobalTrackMonTool.cxx:914
Trk::phi0
@ phi0
Definition: ParamDefs.h:71
InDetGlobalTrackMonTool::m_JetsName
SG::ReadHandleKey< xAOD::JetContainer > m_JetsName
Definition: InDetGlobalTrackMonTool.h:148
Trk::ParametersBase::clone
virtual ParametersBase< DIM, T > * clone() const override=0
clone method for polymorphic deep copy
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
InDet::SiClusterOnTrack
Definition: SiClusterOnTrack.h:39
InDetGlobalTrackMonTool::m_HolesMAP_ZX
TH2F * m_HolesMAP_ZX
Definition: InDetGlobalTrackMonTool.h:220
collisions
Definition: collisions.py:1