ATLAS Offline Software
MuonTrackStatisticsTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /***************************************************************************
6  MuonTrackStatisticsTool
7  ***************************************************************************/
8 
10 
11 #include <math.h>
12 
13 #include "AtlasHepMC/GenParticle.h"
14 #include "TString.h"
17 
18 // INCLUDE GAUDI HEADER FILES:
19 #include "GaudiKernel/MsgStream.h"
20 
22 
23 // CONSTRUCTOR:
24 MuonTrackStatisticsTool::MuonTrackStatisticsTool(const std::string& t, const std::string& n, const IInterface* p) :
25  AthAlgTool(t, n, p),
26  m_doTruth(false)
27 
28 {
29  declareInterface<MuonTrackStatisticsTool>(this);
30  declareProperty("doTruth", m_doTruth);
31 }
32 
33 // INITIALIZE METHOD:
34 
36  ATH_CHECK(m_edmHelperSvc.retrieve());
37  return StatusCode::SUCCESS;
38 }
39 
41 // ATHENA FINALIZE:
42 
44  if (m_doTruth) {
45  // empty for now, will impliment access of truth later
46  }
47  return StatusCode::SUCCESS;
48 }
49 
53  for (; counterTruth_it != counterTruth_itEnd; ++counterTruth_it) {
54  if ((*counterTruth_it)->trackLocation.compare(name) == 0) { return updateTruthTrackCounters(**counterTruth_it, *truthMap); }
55  }
56  ATH_MSG_WARNING("Failed to match the collection " << name << " to any counter");
57  return StatusCode::SUCCESS;
58 }
59 
61  const DetailedTrackTruthCollection& TruthMap) {
62  ATH_MSG_DEBUG("MuonTrackStatisticsTool calling updateTruthTrackCounters: " << counters.trackLocation);
63  ++counters.nEvents;
64  if (TruthMap.empty()) return StatusCode::SUCCESS;
65 
66  // update each set of trackcounters for each track
67  DetailedTrackTruthCollection::const_iterator it_start = TruthMap.begin();
68  DetailedTrackTruthCollection::const_iterator it_end = TruthMap.end();
69  DetailedTrackTruthCollection::const_iterator it = it_start;
70  int myindex = 0;
71 
72  for (it = it_start; it != it_end; ++it) {
73  counters.nPIXELhits[0] += (*it).second.statsCommon()[SubDetHitStatistics::Pixel];
74  counters.nSCThits[0] += (*it).second.statsCommon()[SubDetHitStatistics::SCT];
75  counters.nTRThits[0] += (*it).second.statsCommon()[SubDetHitStatistics::TRT];
76  counters.nMDThits[0] += (*it).second.statsCommon()[SubDetHitStatistics::MDT];
77  counters.nRPChits[0] += (*it).second.statsCommon()[SubDetHitStatistics::RPC];
78  counters.nTGChits[0] += (*it).second.statsCommon()[SubDetHitStatistics::TGC];
79  counters.nCSChits[0] += (*it).second.statsCommon()[SubDetHitStatistics::CSC];
80 
81  counters.nPIXELhits[1] += (*it).second.statsTrack()[SubDetHitStatistics::Pixel];
82  counters.nSCThits[1] += (*it).second.statsTrack()[SubDetHitStatistics::SCT];
83  counters.nTRThits[1] += (*it).second.statsTrack()[SubDetHitStatistics::TRT];
84  counters.nMDThits[1] += (*it).second.statsTrack()[SubDetHitStatistics::MDT];
85  counters.nRPChits[1] += (*it).second.statsTrack()[SubDetHitStatistics::RPC];
86  counters.nTGChits[1] += (*it).second.statsTrack()[SubDetHitStatistics::TGC];
87  counters.nCSChits[1] += (*it).second.statsTrack()[SubDetHitStatistics::CSC];
88 
89  counters.nPIXELhits[2] += (*it).second.statsTruth()[SubDetHitStatistics::Pixel];
90  counters.nSCThits[2] += (*it).second.statsTruth()[SubDetHitStatistics::SCT];
91  counters.nTRThits[2] += (*it).second.statsTruth()[SubDetHitStatistics::TRT];
92  counters.nMDThits[2] += (*it).second.statsTruth()[SubDetHitStatistics::MDT];
93  counters.nRPChits[2] += (*it).second.statsTruth()[SubDetHitStatistics::RPC];
94  counters.nTGChits[2] += (*it).second.statsTruth()[SubDetHitStatistics::TGC];
95  counters.nCSChits[2] += (*it).second.statsTruth()[SubDetHitStatistics::CSC];
96 
97  ATH_MSG_DEBUG(myindex << ".) "
98  << "Index: " << (*it).first.index() << " " << (*it).second
99  << " (Pixel, SCT, TRT, MDT, RPC, TGC, CSC) ");
100  ATH_MSG_DEBUG(" GenParticle info:");
101  for (unsigned int i = 0; i < (*it).second.trajectory().size(); i++) {
102  ATH_MSG_DEBUG(" Particle " << i);
103  if (!(*it).second.trajectory().at(i).cptr()) {
104  ATH_MSG_DEBUG(" has a null pointer: " << (*it).second.trajectory().at(i).cptr());
105  } else {
106  ATH_MSG_DEBUG(" - pdg_id: " << (*it).second.trajectory().at(i).cptr()->pdg_id());
107  ATH_MSG_DEBUG(" - status: " << (*it).second.trajectory().at(i).cptr()->status());
108  counters.nTracks++;
109  }
110  }
111  myindex++;
112  }
113  return StatusCode::SUCCESS;
114  ;
115 }
116 
120  for (; counter_it != counter_itEnd; ++counter_it) {
121  if ((*counter_it)->trackLocation.compare(name) == 0) { return updateTrackCounters(**counter_it, *tracks); }
122  }
123  ATH_MSG_WARNING("Failed to match the collection " << name << " to any counter");
124  return StatusCode::SUCCESS;
125 }
126 
128  ATH_MSG_DEBUG("MuonTrackStatisticsTool calling updateTrackCounters: " << counters.trackLocation);
129  ++counters.nEvents;
130 
131  if (tracks.empty()) return StatusCode::SUCCESS;
132  // update each set of trackcounters for each track
133  counters.nTracks += tracks.size();
134 
136  TrackCollection::const_iterator it_end = tracks.end();
137  for (; it != it_end; ++it) {
138  const Trk::Track* track = *it;
139  if (!track->trackSummary() || !track->trackSummary()->muonTrackSummary()) continue;
140  const Trk::MuonTrackSummary& summary = *track->trackSummary()->muonTrackSummary();
141 
142  double chi2dof = ((*it)->fitQuality()->chiSquared()) / ((*it)->fitQuality()->doubleNumberDoF());
143  counters.nHits += summary.netaHits() + summary.nphiHits();
144  counters.nEtaHits += summary.netaHits();
145  counters.nPhiHits += summary.nphiHits();
146  counters.nEtaTrig += 0;
147  counters.nScatter += summary.nscatterers();
148  counters.nPsudo += summary.npseudoMeasurements();
149  counters.nHoles += summary.nholes();
150  counters.summedchi2 += chi2dof;
151  }
152  return StatusCode::SUCCESS;
153 }
154 
155 void MuonTrackStatisticsTool::addTrackCounters(const std::string& trkLoc) {
156  TString temp_string(trkLoc);
157 
158  if (temp_string.Contains("Truth") && m_doTruth) {
159  ATH_MSG_INFO("MuonTrackStatisticsTool calling addTrackCounters for truth: " << trkLoc);
160  TruthTrackCounters* counters;
161  counters = new TruthTrackCounters(trkLoc);
162  m_allTruthCounters.push_back(counters);
163  } else if (!temp_string.Contains("Truth")) {
164  ATH_MSG_INFO("MuonTrackStatisticsTool calling addTrackCounters for reco: " << trkLoc);
165  TrackCounters* counters;
166  counters = new TrackCounters(trkLoc);
167  m_allCounters.push_back(counters);
168  }
169  return;
170 }
171 
173  std::ostringstream sout;
174 
175  std::vector<MuonTrackStatisticsTool::TrackCounters*>::const_iterator counter_it = m_allCounters.begin();
176  std::vector<MuonTrackStatisticsTool::TrackCounters*>::const_iterator counter_itEnd = m_allCounters.end();
177  std::vector<MuonTrackStatisticsTool::TruthTrackCounters*>::const_iterator truthcounter_it_start = m_allTruthCounters.begin();
178  std::vector<MuonTrackStatisticsTool::TruthTrackCounters*>::const_iterator truthcounter_itEnd = m_allTruthCounters.end();
179  std::vector<MuonTrackStatisticsTool::TruthTrackCounters*>::const_iterator truthcounter_it = m_allTruthCounters.begin();
180 
181  double trksPerEvent;
182  double hitsPerTrk;
183  double etaPerTrk;
184  double tetaPerTrk;
185  double phiPerTrk;
186  double scatPerTrk;
187  double holePerTrk;
188  double chi2PerTrk;
189 
190  for (; counter_it != counter_itEnd; ++counter_it) {
191  if ((*counter_it)->nEvents != 0 && (*counter_it)->nTracks != 0) {
192  trksPerEvent = (double)(*counter_it)->nTracks / (*counter_it)->nEvents;
193  hitsPerTrk = (double)(*counter_it)->nHits / (*counter_it)->nTracks;
194  etaPerTrk = (double)(*counter_it)->nEtaHits / (*counter_it)->nTracks;
195  tetaPerTrk = (double)(*counter_it)->nEtaTrig / (*counter_it)->nTracks;
196  phiPerTrk = (double)(*counter_it)->nPhiHits / (*counter_it)->nTracks;
197  scatPerTrk = (double)(*counter_it)->nScatter / (*counter_it)->nTracks;
198  holePerTrk = (double)(*counter_it)->nHoles / (*counter_it)->nTracks;
199  chi2PerTrk = (*counter_it)->summedchi2 / (*counter_it)->nTracks;
200 
201  } else {
202  trksPerEvent = 0.;
203  hitsPerTrk = 0.;
204  etaPerTrk = 0.;
205  tetaPerTrk = 0.;
206  phiPerTrk = 0.;
207  scatPerTrk = 0.;
208  holePerTrk = 0.;
209  chi2PerTrk = 0.;
210  }
211 
212  int TruthTrackCounter = -1;
213  double trksPerTrtrk = -1;
214 
215  if (m_doTruth) {
216  for (truthcounter_it = truthcounter_it_start; truthcounter_it != truthcounter_itEnd; ++truthcounter_it) {
217  TString TruthCollectionName = (*truthcounter_it)->trackLocation;
218  if (TruthCollectionName.Contains((*counter_it)->trackLocation)) {
219  TruthTrackCounter = (*truthcounter_it)->nTracks;
220  ATH_MSG_INFO("MuonTrackStatisticsTool - Found matching TruthCollection for: " << (*counter_it)->trackLocation);
221  }
222  }
223 
224  if (TruthTrackCounter == 0 && (*counter_it)->nTracks == 0) {
225  trksPerTrtrk = 1;
226  } else if (TruthTrackCounter == 0 && (*counter_it)->nTracks != 0) {
227  trksPerTrtrk = -1;
228  } else {
229  trksPerTrtrk = (double)(*counter_it)->nTracks / (double)TruthTrackCounter;
230  }
231  }
232 
233  if (trksPerTrtrk < 0 && m_doTruth) {
234  ATH_MSG_INFO("MuonTrackStatisticsTool - Could not find matching TruthCollection for: " << (*counter_it)->trackLocation);
235  sout.precision(4);
236  sout << std::endl;
237  sout << ">>>> MuonTrackStatisticsAlg Summary: Track Container = " << (*counter_it)->trackLocation << std::endl;
238  sout << "----------------------------------------------------------------------------------------------------------------------"
239  "-------------"
240  << std::endl;
241  sout << "|| Events || Tracks || Trk/Evt || Hit/Trk || Eta/Trk ||"
242  << " TrigEta/T || Phi/Trk || Scat/Tk || Hole/Tk || Ch2/dof/T || Trks/TruthT ||" << std::endl;
243 
244  sout << "|| " << std::setw(7) << (*counter_it)->nEvents << " || " << std::setw(7) << (*counter_it)->nTracks << " || "
245  << std::setw(7) << trksPerEvent << " || " << std::setw(7) << hitsPerTrk << " || " << std::setw(7) << etaPerTrk << " || "
246  << std::setw(9) << tetaPerTrk << " || " << std::setw(7) << phiPerTrk << " || " << std::setw(7) << scatPerTrk << " || "
247  << std::setw(7) << holePerTrk << " || " << std::setw(9) << chi2PerTrk << " || " << std::setw(11) << "NOT DEFINED"
248  << " || " << std::endl;
249  sout << "----------------------------------------------------------------------------------------------------------------------"
250  "-------------"
251  << std::endl;
252  sout << std::endl << std::endl;
253  } else if (trksPerTrtrk < 0 && !m_doTruth) {
254  sout.precision(4);
255  sout << std::endl;
256  sout << ">>>> MuonTrackStatisticsAlg Summary: Track Container = " << (*counter_it)->trackLocation << std::endl;
257  sout << "--------------------------------------------------------------------------------------------------------------------"
258  << std::endl;
259  sout << "|| Events || Tracks || Trk/Evt || Hit/Trk || Eta/Trk ||"
260  << " TrigEta/T || Phi/Trk || Scat/Tk || Hole/Tk || Ch2/dof/T ||" << std::endl;
261 
262  sout << "|| " << std::setw(7) << (*counter_it)->nEvents << " || " << std::setw(7) << (*counter_it)->nTracks << " || "
263  << std::setw(7) << trksPerEvent << " || " << std::setw(7) << hitsPerTrk << " || " << std::setw(7) << etaPerTrk << " || "
264  << std::setw(9) << tetaPerTrk << " || " << std::setw(7) << phiPerTrk << " || " << std::setw(7) << scatPerTrk << " || "
265  << std::setw(7) << holePerTrk << " || " << std::setw(9) << chi2PerTrk << " || " << std::endl;
266  sout << "--------------------------------------------------------------------------------------------------------------------"
267  << std::endl;
268  sout << std::endl << std::endl;
269  } else {
270  sout.precision(4);
271  sout << std::endl;
272  sout << ">>>> MuonTrackStatisticsAlg Summary: Track Container = " << (*counter_it)->trackLocation << std::endl;
273  sout << "----------------------------------------------------------------------------------------------------------------------"
274  "-------------"
275  << std::endl;
276  sout << "|| Events || Tracks || Trk/Evt || Hit/Trk || Eta/Trk ||"
277  << " TrigEta/T || Phi/Trk || Scat/Tk || Hole/Tk || Ch2/dof/T || Trks/TruthT ||" << std::endl;
278 
279  sout << "|| " << std::setw(7) << (*counter_it)->nEvents << " || " << std::setw(7) << (*counter_it)->nTracks << " || "
280  << std::setw(7) << trksPerEvent << " || " << std::setw(7) << hitsPerTrk << " || " << std::setw(7) << etaPerTrk << " || "
281  << std::setw(9) << tetaPerTrk << " || " << std::setw(7) << phiPerTrk << " || " << std::setw(7) << scatPerTrk << " || "
282  << std::setw(7) << holePerTrk << " || " << std::setw(9) << chi2PerTrk << " || " << std::setw(11) << trksPerTrtrk << " || "
283  << std::endl;
284  sout << "----------------------------------------------------------------------------------------------------------------------"
285  "-------------"
286  << std::endl;
287  sout << std::endl << std::endl;
288  }
289  }
290 
291  if (m_doTruth) {
292  for (truthcounter_it = truthcounter_it_start; truthcounter_it != truthcounter_itEnd; ++truthcounter_it) {
293  double TruthTrksPerEvent;
294  double PIXELhitsPerTrk;
295  double SCThitsPerTrk;
296  double TRThitsPerTrk;
297  double MDThitsPerTrk;
298  double RPChitsPerTrk;
299  double TGChitsPerTrk;
300  double CSChitsPerTrk;
301 
302  sout << std::endl;
303  sout << ">>>> MuonTrackStatisticsAlg Summary: Track Container = " << (*truthcounter_it)->trackLocation << std::endl;
304  for (unsigned int i = 0; i < 3; i++) {
305  if ((*truthcounter_it)->nEvents != 0 && (*truthcounter_it)->nTracks != 0) {
306  TruthTrksPerEvent = (double)(*truthcounter_it)->nTracks / (*truthcounter_it)->nEvents;
307  PIXELhitsPerTrk = (double)(*truthcounter_it)->nPIXELhits[i] / (*truthcounter_it)->nTracks;
308  SCThitsPerTrk = (double)(*truthcounter_it)->nSCThits[i] / (*truthcounter_it)->nTracks;
309  TRThitsPerTrk = (double)(*truthcounter_it)->nTRThits[i] / (*truthcounter_it)->nTracks;
310  MDThitsPerTrk = (double)(*truthcounter_it)->nMDThits[i] / (*truthcounter_it)->nTracks;
311  RPChitsPerTrk = (double)(*truthcounter_it)->nRPChits[i] / (*truthcounter_it)->nTracks;
312  TGChitsPerTrk = (double)(*truthcounter_it)->nTGChits[i] / (*truthcounter_it)->nTracks;
313  CSChitsPerTrk = (double)(*truthcounter_it)->nCSChits[i] / (*truthcounter_it)->nTracks;
314 
315  } else {
316  TruthTrksPerEvent = 0;
317  PIXELhitsPerTrk = 0;
318  SCThitsPerTrk = 0;
319  TRThitsPerTrk = 0;
320  MDThitsPerTrk = 0;
321  RPChitsPerTrk = 0;
322  TGChitsPerTrk = 0;
323  CSChitsPerTrk = 0;
324  }
325 
326  sout.precision(4);
327  sout << "------------------------------------------------------------------------------------------------------------------"
328  "----------------------------"
329  << std::endl;
330  if (i == 0)
331  sout << "-------------------------------------------------------->>>> SubDetStat is COMMON "
332  "<<<<--------------------------------------------------------"
333  << std::endl;
334  else if (i == 1)
335  sout << "-------------------------------------------------------->>>> SubDetStat is ONTRUTH "
336  "<<<<-------------------------------------------------------"
337  << std::endl;
338  else if (i == 2)
339  sout << "-------------------------------------------------------->>>> SubDetStat is ONTRACK "
340  "<<<<-------------------------------------------------------"
341  << std::endl;
342  sout << "------------------------------------------------------------------------------------------------------------------"
343  "----------------------------"
344  << std::endl;
345  sout << "|| Events || Tracks || Trk/Evt || PIXELhits/Trk || SCThits/Trk ||"
346  << " TRThits/Trk || MDThits/Trk || RPChits/Trk || TGChits/Trk || CSChits/Trk ||" << std::endl;
347 
348  sout << "|| " << std::setw(7) << (*truthcounter_it)->nEvents << " || " << std::setw(7) << (*truthcounter_it)->nTracks
349  << " || " << std::setw(7) << TruthTrksPerEvent << " || " << std::setw(13) << PIXELhitsPerTrk << " || " << std::setw(11)
350  << SCThitsPerTrk << " || " << std::setw(11) << TRThitsPerTrk << " || " << std::setw(11) << MDThitsPerTrk << " || "
351  << std::setw(11) << RPChitsPerTrk << " || " << std::setw(11) << TGChitsPerTrk << " || " << std::setw(11)
352  << CSChitsPerTrk << " || " << std::endl;
353  }
354 
355  sout << "----------------------------------------------------------------------------------------------------------------------"
356  "------------------------"
357  << std::endl;
358  sout << std::endl << std::endl;
359  }
360  }
361  return sout.str();
362 }
363 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MuonTrackStatisticsTool::TrackCounters::trackLocation
std::string trackLocation
Definition: MuonTrackStatisticsTool.h:55
MuonTrackStatisticsTool::TruthTrackCounters::nRPChits
int nRPChits[3]
Definition: MuonTrackStatisticsTool.h:88
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
SubDetHitStatistics::SCT
@ SCT
Definition: SubDetHitStatistics.h:74
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
MuonTrackStatisticsTool::m_doTruth
bool m_doTruth
Definition: MuonTrackStatisticsTool.h:111
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonTrackSummary.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
MuonTrackStatisticsTool::TruthTrackCounters::nEvents
int nEvents
Definition: MuonTrackStatisticsTool.h:82
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
MuonTrackStatisticsTool::TruthTrackCounters::nCSChits
int nCSChits[3]
Definition: MuonTrackStatisticsTool.h:90
MuonTrackStatisticsTool::TrackCounters::nScatter
int nScatter
Definition: MuonTrackStatisticsTool.h:62
skel.it
it
Definition: skel.GENtoEVGEN.py:423
MuonTrackStatisticsTool::printTrackCounters
std::string printTrackCounters() const
Definition: MuonTrackStatisticsTool.cxx:172
MuonTrackStatisticsTool::finalize
StatusCode finalize()
Definition: MuonTrackStatisticsTool.cxx:43
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
MuonTrackStatisticsTool::TruthTrackCounters::nTGChits
int nTGChits[3]
Definition: MuonTrackStatisticsTool.h:89
SubDetHitStatistics::CSC
@ CSC
Definition: SubDetHitStatistics.h:74
GenParticle.h
MuonTrackStatisticsTool::TruthTrackCounters::nSCThits
int nSCThits[3]
Definition: MuonTrackStatisticsTool.h:85
MuonTrackStatisticsTool::TruthTrackCounters::nTRThits
int nTRThits[3]
Definition: MuonTrackStatisticsTool.h:86
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
MuonTrackStatisticsTool::TrackCounters::nTracks
int nTracks
Definition: MuonTrackStatisticsTool.h:57
MuonTrackStatisticsTool::TruthTrackCounters::nMDThits
int nMDThits[3]
Definition: MuonTrackStatisticsTool.h:87
MuonTrackStatisticsTool::m_allCounters
std::vector< MuonTrackStatisticsTool::TrackCounters * > m_allCounters
Definition: MuonTrackStatisticsTool.h:113
lumiFormat.i
int i
Definition: lumiFormat.py:92
MuonTrackStatisticsTool::TrackCounters
Definition: MuonTrackStatisticsTool.h:41
beamspotman.n
n
Definition: beamspotman.py:731
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
MuonTrackStatisticsTool::storeTruthTracks
void storeTruthTracks(void)
Definition: MuonTrackStatisticsTool.cxx:364
MuonTrackStatisticsTool::TrackCounters::nPhiHits
int nPhiHits
Definition: MuonTrackStatisticsTool.h:61
SubDetHitStatistics::MDT
@ MDT
Definition: SubDetHitStatistics.h:74
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::MuonTrackSummary
Detailed track summary for the muon system Give access to hit counts per chamber.
Definition: MuonTrackSummary.h:26
MuonTrackStatisticsTool::m_edmHelperSvc
ServiceHandle< Muon::IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuonTrackStatisticsTool.h:108
TrackSummary.h
MuonTrackStatisticsTool::addTrackCounters
void addTrackCounters(const std::string &trkLoc)
Definition: MuonTrackStatisticsTool.cxx:155
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
MuonTrackStatisticsTool::TrackCounters::summedchi2
double summedchi2
Definition: MuonTrackStatisticsTool.h:65
DataVector< Trk::Track >
MuonTrackStatisticsTool::TrackCounters::nEtaTrig
int nEtaTrig
Definition: MuonTrackStatisticsTool.h:60
SubDetHitStatistics::TGC
@ TGC
Definition: SubDetHitStatistics.h:74
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
MuonTrackStatisticsTool::TruthTrackCounters
Definition: MuonTrackStatisticsTool.h:68
MuonTrackStatisticsTool::MuonTrackStatisticsTool
MuonTrackStatisticsTool(const std::string &, const std::string &, const IInterface *)
Definition: MuonTrackStatisticsTool.cxx:24
MuonTrackStatisticsTool::TrackCounters::nPsudo
int nPsudo
Definition: MuonTrackStatisticsTool.h:64
MuonTrackStatisticsTool::TrackCounters::nHoles
int nHoles
Definition: MuonTrackStatisticsTool.h:63
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
MuonTrackStatisticsTool::updateTruthTrackCounters
StatusCode updateTruthTrackCounters(const std::string &name, const DetailedTrackTruthCollection *truthMap)
Definition: MuonTrackStatisticsTool.cxx:50
SubDetHitStatistics::RPC
@ RPC
Definition: SubDetHitStatistics.h:74
MuonTrackStatisticsTool::TruthTrackCounters::nTracks
int nTracks
Definition: MuonTrackStatisticsTool.h:83
SubDetHitStatistics::TRT
@ TRT
Definition: SubDetHitStatistics.h:74
MuonTrackStatisticsTool::updateTrackCounters
StatusCode updateTrackCounters(const std::string &name, const TrackCollection *tracks)
Definition: MuonTrackStatisticsTool.cxx:117
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonTrackStatisticsTool::m_allTruthCounters
std::vector< MuonTrackStatisticsTool::TruthTrackCounters * > m_allTruthCounters
Definition: MuonTrackStatisticsTool.h:114
MuonTrackStatisticsTool::TruthTrackCounters::nPIXELhits
int nPIXELhits[3]
Definition: MuonTrackStatisticsTool.h:84
DetailedTrackTruthCollection
Definition: DetailedTrackTruthCollection.h:20
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
MuonTrackStatisticsTool::TrackCounters::nHits
int nHits
Definition: MuonTrackStatisticsTool.h:58
AthAlgTool
Definition: AthAlgTool.h:26
MuonTrackStatisticsTool::TruthTrackCounters::trackLocation
std::string trackLocation
Definition: MuonTrackStatisticsTool.h:79
SubDetHitStatistics::Pixel
@ Pixel
Definition: SubDetHitStatistics.h:74
MuonTrackStatisticsTool.h
MuonTrackStatisticsTool::TrackCounters::nEtaHits
int nEtaHits
Definition: MuonTrackStatisticsTool.h:59
MuonTrackStatisticsTool::initialize
StatusCode initialize()
Definition: MuonTrackStatisticsTool.cxx:35
MuonTrackStatisticsTool::TrackCounters::nEvents
int nEvents
Definition: MuonTrackStatisticsTool.h:56
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65