ATLAS Offline Software
TrackSummaryTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 //
8 //
11 //
13 #include "Identifier/Identifier.h"
22 //
23 #include "GaudiKernel/EventContext.h"
24 #include <algorithm>
25 #include <cmath>
26 #include <initializer_list>
27 
28 namespace {
29 template<class Indexable, class IntegerArray>
30 void
31 setTheseElements(Indexable& container,
32  const IntegerArray& indices,
33  const typename Indexable::value_type& toValue)
34 {
35  for (const auto idx : indices) {
36  container[idx] = toValue;
37  }
38 }
39 //
40 template<class Indexable>
41 void
42 setTheseElements(Indexable& container,
43  const std::initializer_list<size_t>& indices,
44  const typename Indexable::value_type& toValue)
45 {
46  for (const auto idx : indices) {
47  container[idx] = toValue;
48  }
49 }
50 }
51 
53  const std::string& n,
54  const IInterface* p)
55  : base_class(t, n, p)
56  , m_detID{}
57 {
58  declareInterface<ITrackSummaryTool>(this);
59 }
60 
62 
65 {
66  ATH_CHECK(detStore()->retrieve(m_detID, "AtlasID"));
67  if (m_idTool.empty() && m_muonTool.empty()) {
68  ATH_MSG_WARNING("Could get neither InDetHelperTool nor MuonHelperTool.");
69  }
70  if (not m_idTool.empty()) {
71  ATH_CHECK(m_idTool.retrieve());
72  }
73  if (not m_muonTool.empty()) {
74  ATH_CHECK(m_muonTool.retrieve());
75  }
76  if(m_doHolesInDet){
77  ATH_MSG_INFO("Search for InDet holes ON");
78  }
79  if(m_doHolesMuon){
80  ATH_MSG_INFO("Search for Muon holes ON");
81  }
82  return StatusCode::SUCCESS;
83 }
84 
85 /*
86  * method that creates creates/updates the summary for
87  * a non-const track.
88  *
89  * if a summary is present it uses it as starting point
90  * by cloning it and adds additional info.
91  *
92  * it sets the track summary for the non-const
93  * track.
94  */
95 void
97  const EventContext& ctx,
99  bool suppress_hole_search) const
100 {
101  track.setTrackSummary(createSummary(ctx,
102  track,
103  m_doHolesInDet & !suppress_hole_search,
104  m_doHolesMuon & !suppress_hole_search));
105 }
106 
107 /*
108  * method that creates a new summary from const track.
109  * It does not modify the const Track
110  */
111 std::unique_ptr<Trk::TrackSummary>
112 Trk::TrackSummaryTool::summary(const EventContext& ctx,
113  const Track& track) const
114 {
115  return createSummary(
116  ctx, track, m_doHolesInDet, m_doHolesMuon);
117 }
118 
119 /*
120  * method that creates a new summary from const track.
121  * It does not modify the const Track
122  * It never does a search for holes
123  */
124 std::unique_ptr<Trk::TrackSummary>
126  const Track& track) const
127 {
128  return createSummary(ctx, track, false, false);
129 }
130 
131 /*
132  * Method that creates a new summary from const track.
133  * It does not modify the const Track
134  */
135 std::unique_ptr<Trk::TrackSummary>
136 Trk::TrackSummaryTool::createSummary(const EventContext& ctx,
137  const Track& track,
138  bool doHolesInDet,
139  bool doHolesMuon) const
140 {
141  std::unique_ptr<Trk::TrackSummary> ts;
142  // first check if track has summary already and then clone it.
143  if (track.trackSummary() != nullptr) {
144  ts = std::make_unique<Trk::TrackSummary>(*(track.trackSummary()));
145  } else {
146  ts = std::make_unique<Trk::TrackSummary>();
147  }
148  // fill the summary
149  fillSummary(ctx, *ts, track, doHolesInDet, doHolesMuon);
150  return ts;
151 }
152 
153 /*
154  * Method that actually fills the summary
155  * Work is delegated mainly the tools.
156  * Here we set the summary info to initial values
157  * and call other methods/tools to fill it
158  */
159 void
160 Trk::TrackSummaryTool::fillSummary(const EventContext& ctx,
162  const Trk::Track& track,
163  bool doHolesInDet,
164  bool doHolesMuon) const
165 {
166  // Resize the vector where we will keep the information needed for the summary
167  std::vector<int>& information = ts.m_information;
168  information.resize(std::min(information.size(),
169  static_cast<size_t>(numberOfTrackSummaryTypes)));
170 
171  constexpr int toZero{ 0 };
172  if (!m_idTool.empty()) {
173  if (m_pixelExists) {
174  // Pixel counters set to 0
175  constexpr size_t numberOfPixelCounters{ 8 };
176  constexpr std::array<size_t, numberOfPixelCounters> atPixelIndices{
185  };
186  setTheseElements(information, atPixelIndices, toZero);
187  information[Trk::numberOfDBMHits] = 0;
188 
189  }
190  // SCT and TRT counters set to 0
191  constexpr size_t numberOfSctOrTrtCounters{ 9 };
192  constexpr std::array<size_t, numberOfSctOrTrtCounters> atSctOrTrtIndices{
202  };
203  setTheseElements(information, atSctOrTrtIndices, toZero);
204  }
205 
206  if (!m_muonTool.empty()) {
207  // Muon counters set to 0
208  constexpr size_t numberOfMuonRelatedCounters{ 15 };
209  constexpr std::array<size_t, numberOfMuonRelatedCounters> atMuonIndices{
218  };
219  // New Small Wheel counters set to 0
220  constexpr size_t numberOfNswRelatedCounters{ 6 };
221  constexpr std::array<size_t, numberOfNswRelatedCounters> atNswIndices{
224  };
225  setTheseElements(information, atMuonIndices, toZero);
226  setTheseElements(information, atNswIndices, toZero);
227  }
228 
229  // update the summart counters processing the track states
230  std::bitset<numberOfDetectorTypes> hitPattern;
231  if (track.trackStateOnSurfaces()) {
232  information[Trk::numberOfOutliersOnTrack] = 0;
233  processTrackStates(ctx,
234  track,
235  track.trackStateOnSurfaces(),
236  information,
237  hitPattern,
238  doHolesInDet,
239  doHolesMuon);
240  } else {
241  ATH_MSG_WARNING("Null pointer to TSoS found on Track (author = "
242  << track.info().dumpInfo()
243  << "). This should never happen! ");
244  }
245  ts.m_idHitPattern = hitPattern.to_ulong();
246 
247  //Now the possible additional summary steps
248  // Is the hole search done , could be there in the input already
249  bool holeSearchDone = (information[Trk::numberOfPixelHoles] != -1 &&
250  information[Trk::numberOfSCTHoles] != -1 &&
251  information[Trk::numberOfSCTDoubleHoles] != -1 &&
252  information[Trk::numberOfPixelDeadSensors] != -1 &&
253  information[Trk::numberOfSCTDeadSensors] != -1);
254 
255  // Do the holes search if we have to or insist to
256  if ((doHolesInDet || doHolesMuon) &&
257  (!holeSearchDone || m_alwaysRecomputeHoles.value())) {
258  if (m_pixelExists) {
259  information[numberOfPixelHoles] = 0;
260  }
261  information[numberOfSCTHoles] = 0;
262  information[numberOfSCTDoubleHoles] = 0;
263  searchHolesStepWise(track, information, doHolesInDet, doHolesMuon);
264  }
265 
266  // add detailed summary for muons
267  if (m_addMuonDetailedSummary && !m_muonTool.empty()) {
268  m_muonTool->addDetailedTrackSummary(ctx, track, ts);
269  }
270 }
271 
272 /*
273  * Internal helper processing the Track State on Surfaces
274  */
275 void
277  const EventContext& ctx,
278  const Track& track,
279  const Trk::TrackStates* tsos,
280  std::vector<int>& information,
281  std::bitset<numberOfDetectorTypes>& hitPattern,
282  bool doHolesInDet,
283  bool doHolesMuon) const
284 {
285  int cntAddChi2 = 0;
286  float chi2Sum = 0;
287  float chi2Sum2 = 0;
289  Trk::TrackStates::const_iterator itEnd = tsos->end();
290  for (; it != itEnd; ++it) {
291  const auto& trackState = **it;
292  const auto isMeasurement =
293  trackState.type(Trk::TrackStateOnSurface::Measurement);
294  const auto isOutlier = trackState.type(Trk::TrackStateOnSurface::Outlier);
295  if (isMeasurement or isOutlier) {
296  const Trk::MeasurementBase* measurement = trackState.measurementOnTrack();
297  if (!measurement) {
298  ATH_MSG_WARNING("measurementOnTrack == null for a TrackStateOnSurface "
299  "of type Measurement or Outlier");
300  } else {
301  if (isOutlier)
302  ++information[Trk::numberOfOutliersOnTrack]; // increment outlier
303  // counter
304  processMeasurement(
305  ctx, track, measurement, *it, information, hitPattern);
306  } // if have measurement pointer
307  } // if type measurement, scatterer or outlier
308 
309  if (isMeasurement) {
310  if (const auto& pFitQuality{ trackState.fitQualityOnSurface() };
311  pFitQuality and pFitQuality.numberDoF() > 0) {
312  ++cntAddChi2;
313  if (const auto& chiSq{ pFitQuality.chiSquared() };
314  chiSq > 1.e5) { // limit unphysical values and protect against FPE
315  chi2Sum += 1.e5;
316  chi2Sum2 += 1.e10;
317  } else {
318  const float chi2add = chiSq / pFitQuality.numberDoF();
319  chi2Sum += chi2add;
320  chi2Sum2 += chi2add * chi2add;
321  }
322  }
323  }
324 
325  if (trackState.type(Trk::TrackStateOnSurface::Hole) &&
326  trackState.trackParameters()) {
327  if (!doHolesInDet ||
328  !doHolesMuon) { // no dedicated hole search via extrapolation, but
329  // take what might be on the track already.
330  if (trackState.trackParameters()
331  ->associatedSurface()
332  .associatedDetectorElement() != nullptr) {
333  const Identifier& id = trackState.trackParameters()
334  ->associatedSurface()
335  .associatedDetectorElementIdentifier();
336  if (!doHolesInDet && m_detID->is_pixel(id))
337  ++information[Trk::numberOfPixelHoles];
338  if (!doHolesInDet && m_detID->is_sct(id))
339  ++information[Trk::numberOfSCTHoles];
340  if (!doHolesMuon && m_detID->is_mdt(id))
341  ++information[Trk::numberOfMdtHoles];
342  }
343  }
344  }
345  }
346 
347  float varChi2 = 0;
348  if (cntAddChi2 > 0) {
349  const auto inverseCount{ 1. / cntAddChi2 };
350  varChi2 = (chi2Sum2 - (chi2Sum * chi2Sum * inverseCount)) * inverseCount;
351  }
352  if (varChi2 > 0 && varChi2 < 1.e13)
353  information[Trk::standardDeviationOfChi2OS] = int(std::sqrt(varChi2) * 100);
354 }
355 
356 /*
357  * Internal helper going through the measurements
358  * and delegating filling the summary to the
359  * relevant Helper tool
360  */
361 void
363  const EventContext& ctx,
364  const Track& track,
365  const Trk::MeasurementBase* meas,
366  const Trk::TrackStateOnSurface* tsos,
367  std::vector<int>& information,
368  std::bitset<numberOfDetectorTypes>& hitPattern) const
369 {
370  // Check if the measurement type is RIO on Track (ROT)
371  const RIO_OnTrack* rot = nullptr;
373  rot = static_cast<const RIO_OnTrack*>(meas);
374  }
375  if (rot) {
376  // have RIO_OnTrack
377  const Trk::IExtendedTrackSummaryHelperTool* tool = getTool(rot->identify());
378  if (tool == nullptr) {
379  ATH_MSG_WARNING("Cannot find tool to match ROT. Skipping.");
380  } else {
381  tool->analyse(
382  ctx, track, rot, tsos, information, hitPattern);
383  }
384  } else {
385  // check if the measurement type is CompetingRIOsOnTrack
386  const Trk::CompetingRIOsOnTrack* compROT = nullptr;
388  compROT = static_cast<const CompetingRIOsOnTrack*>(meas);
389  }
390  if (compROT) {
391  // if this works we have a CompetingRIOsOnTrack.
392  rot = &compROT->rioOnTrack(0); // get 1st rot
394  getTool(rot->identify()); // Use 'main' ROT to get detector type
395  if (tool == nullptr) {
396  ATH_MSG_WARNING("Cannot find tool to match cROT. Skipping.");
397  } else {
398  tool->analyse(
399  ctx, track, compROT, tsos, information, hitPattern);
400  }
401  }
402  }
403 }
404 
407 {
408  if (m_detID->is_indet(id)) {
409  if (!m_idTool.empty()) {
410  return &*m_idTool;
411  }
412  ATH_MSG_WARNING("getTool: Identifier is from ID but have no ID tool");
413  } else if (m_detID->is_muon(id)) {
414  if (!m_muonTool.empty()) {
415  return &*m_muonTool;
416  }
417  ATH_MSG_WARNING("getTool: Identifier is from Muon but have no Muon tool");
418  } else {
420  "getTool: Identifier is of unknown type! id: " << id.getString());
421  }
422  return nullptr;
423 }
424 
425 void
427  std::vector<int>& information,
428  bool doHolesInDet,
429  bool doHolesMuon) const
430 {
431  ATH_MSG_VERBOSE("Entering Trk::TrackSummaryTool::searchHolesStepWise");
432  // -------- obtain hits in Pixel and SCT only
433  if (track.trackStateOnSurfaces() == nullptr) {
434  constexpr int toMinusOne{ -1 };
435  constexpr std::array<size_t, 16> atIndices{ numberOfPixelHoles,
448  // new small wheels
451  numberOfMmHoles };
452  setTheseElements(information, atIndices, toMinusOne);
453  return;
454  }
455 
456  constexpr int toZero{ 0 };
457  if (doHolesInDet) {
458  // -------- perform the InDet hole search
459  if (m_pixelExists) {
460  setTheseElements(
461  information, { numberOfPixelHoles, numberOfPixelDeadSensors }, toZero);
462  }
463  setTheseElements(
464  information,
466  toZero);
467  m_idTool->searchForHoles(track, information, Trk::pion);
468  }
469  if (!m_muonTool.empty() && doHolesMuon) {
470  // now do Muon hole search. It works completely differently to the above,
471  // so we need to make this all a bit more general
472  // and probably more efficient. But this hopefully works for now! EJWM
473  constexpr size_t numberOfRelatedMuonCounters{ 10 };
474  constexpr std::array<size_t, numberOfRelatedMuonCounters> atMuonIndices{
482  // new small wheels
486  };
487  setTheseElements(information, atMuonIndices, toZero);
488  m_muonTool->searchForHoles(track, information, Trk::muon);
489  }
490 }
491 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
Trk::numberOfContribPixelLayers
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:49
Trk::numberOfRpcPhiHoles
@ numberOfRpcPhiHoles
number of RPC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:118
Trk::TrackSummaryTool::fillSummary
void fillSummary(const EventContext &ctx, Trk::TrackSummary &ts, const Trk::Track &track, bool doHolesInDet, bool doHolesMuon) const
Definition: TrackSummaryTool.cxx:160
TrkDetElementBase.h
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Trk::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:87
Trk::numberOfMdtHoles
@ numberOfMdtHoles
number of MDT measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:120
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Trk::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of dead TRT straws crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:93
Trk::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:53
TrackParameters.h
ITRT_ElectronPidTool.h
MeasurementBase.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CompetingRIOsOnTrack.h
TrackSummaryTool.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
Trk::IExtendedTrackSummaryHelperTool
Definition: IExtendedTrackSummaryHelperTool.h:35
Trk::numberOfCscEtaHits
@ numberOfCscEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:108
Trk::TrackSummaryTool::summaryNoHoleSearch
virtual std::unique_ptr< Trk::TrackSummary > summaryNoHoleSearch(const EventContext &ctx, const Track &track) const override final
Definition: TrackSummaryTool.cxx:125
Trk::numberOfCscUnspoiltEtaHits
@ numberOfCscUnspoiltEtaHits
number of unspoilt CSC eta measurements (all CSC phi measurements are by definition spoilt).
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:142
Trk::numberOfPixelSpoiltHits
@ numberOfPixelSpoiltHits
number of DBM Hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:67
Trk::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of TRT hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:76
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
Trk::numberOfCscEtaHoles
@ numberOfCscEtaHoles
number of CSC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:112
Trk::numberOfTrackSummaryTypes
@ numberOfTrackSummaryTypes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:189
skel.it
it
Definition: skel.GENtoEVGEN.py:423
Trk::numberOfNextToInnermostPixelLayerHits
@ numberOfNextToInnermostPixelLayerHits
these are the pixel hits, including the b-layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:55
FitQualityOnSurface.h
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Trk::numberOfOutliersOnTrack
@ numberOfOutliersOnTrack
100 times the standard deviation of the chi2 from the surfaces
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:148
Trk::numberOfTgcPhiHits
@ numberOfTgcPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:105
Trk::numberOfStgcEtaHoles
@ numberOfStgcEtaHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:134
Trk::standardDeviationOfChi2OS
@ standardDeviationOfChi2OS
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:150
Trk::numberOfCscPhiHoles
@ numberOfCscPhiHoles
number of CSC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:114
Trk::numberOfMmHoles
@ numberOfMmHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:138
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
Trk::numberOfTRTHoles
@ numberOfTRTHoles
number of TRT hits which pass the high threshold (only xenon counted) total number of TRT hits which ...
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:83
Trk::TrackSummaryTool::~TrackSummaryTool
virtual ~TrackSummaryTool()
Trk::numberOfMmHits
@ numberOfMmHits
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:132
Trk::TrackStateOnSurface::Outlier
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
Definition: TrackStateOnSurface.h:122
Trk::numberOfTRTDeadStraws
@ numberOfTRTDeadStraws
number of TRT tube hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:95
Trk::TrackSummaryTool::TrackSummaryTool
TrackSummaryTool(const std::string &, const std::string &, const IInterface *)
Definition: TrackSummaryTool.cxx:52
AtlasDetectorID.h
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Trk::CompetingRIOsOnTrack::rioOnTrack
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
Trk::TrackSummaryTool::initialize
virtual StatusCode initialize() override
Definition: TrackSummaryTool.cxx:64
Trk::TrackSummaryTool::getTool
const Trk::IExtendedTrackSummaryHelperTool * getTool(const Identifier &id) const
Return the correct tool, matching the passed Identifier.
Definition: TrackSummaryTool.cxx:406
Trk::numberOfTRTTubeHits
@ numberOfTRTTubeHits
number of TRT hits on track in straws with xenon
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:97
Trk::TrackStateOnSurface::Hole
@ Hole
A hole on the track - this is defined in the following way.
Definition: TrackStateOnSurface.h:128
Trk::MeasurementBaseType::CompetingRIOsOnTrack
@ CompetingRIOsOnTrack
Definition: MeasurementBase.h:50
Trk::TrackSummaryTool::createSummary
std::unique_ptr< Trk::TrackSummary > createSummary(const EventContext &ctx, const Track &track, bool doHolesInDet, bool doHolesMuon) const
Definition: TrackSummaryTool.cxx:136
Trk::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:81
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
Trk::TrackSummaryTool::computeAndReplaceTrackSummary
virtual void computeAndReplaceTrackSummary(const EventContext &ctx, Track &track, bool suppress_hole_search=false) const override final
Definition: TrackSummaryTool.cxx:96
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
Trk::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of pixel hits with broad errors (width/sqrt(12))
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:65
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Trk::TrackSummaryTool::searchHolesStepWise
void searchHolesStepWise(const Trk::Track &track, std::vector< int > &information, bool doHolesInDet, bool doHolesMuon) const
Extrapolation is performed from one hit to the next, it is checked if surfaces in between the extrapo...
Definition: TrackSummaryTool.cxx:426
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::MeasurementBase::type
virtual bool type(MeasurementBaseType::Type type) const =0
Interface method checking the type.
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
Trk::TrackSummaryTool::summary
virtual std::unique_ptr< Trk::TrackSummary > summary(const EventContext &ctx, const Track &track) const override final
Definition: TrackSummaryTool.cxx:112
DataVector< const Trk::TrackStateOnSurface >
ParticleHypothesis.h
Trk::numberOfStgcEtaHits
@ numberOfStgcEtaHits
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:128
Trk::numberOfTgcEtaHits
@ numberOfTgcEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:106
min
#define min(a, b)
Definition: cfImp.cxx:40
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
Trk::numberOfTgcPhiHoles
@ numberOfTgcPhiHoles
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:124
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::numberOfGangedPixels
@ numberOfGangedPixels
number of Ganged Pixels flagged as fakes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:61
Trk::numberOfDBMHits
@ numberOfDBMHits
number of hits in SCT
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:69
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
Trk::numberOfRpcPhiHits
@ numberOfRpcPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:109
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
Trk::TrackSummary
A summary of the information contained by a track.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:287
Trk::numberOfTgcEtaHoles
@ numberOfTgcEtaHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:122
RIO_OnTrack.h
HI::fillSummary
void fillSummary(const xAOD::HIEventShapeContainer *in, xAOD::HIEventShape *out, const std::function< bool(const xAOD::HIEventShape *)> &incFunction, const std::function< void(xAOD::HIEventShape *, const xAOD::HIEventShape *)> &addFunction)
Definition: HIEventShapeSummaryUtils.cxx:53
Trk::numberOfSCTSpoiltHits
@ numberOfSCTSpoiltHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:78
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
Trk::numberOfStgcPhiHoles
@ numberOfStgcPhiHoles
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:136
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
TrackingVolume.h
Trk::numberOfStgcPhiHits
@ numberOfStgcPhiHits
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:130
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::RIO_OnTrack::identify
virtual Identifier identify() const final
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:155
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TrackingGeometry.h
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::TrackSummaryTool::processMeasurement
void processMeasurement(const EventContext &ctx, const Track &track, const Trk::MeasurementBase *meas, const Trk::TrackStateOnSurface *tsos, std::vector< int > &information, std::bitset< numberOfDetectorTypes > &hitPattern) const
Definition: TrackSummaryTool.cxx:362
Trk::numberOfGangedFlaggedFakes
@ numberOfGangedFlaggedFakes
number of dead pixel sensors crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:63
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::numberOfRpcEtaHits
@ numberOfRpcEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:110
Trk::numberOfTRTHighThresholdHitsTotal
@ numberOfTRTHighThresholdHitsTotal
number of TRT hits used for dE/dx computation
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:89
Trk::TrackSummaryTool::processTrackStates
void processTrackStates(const EventContext &ctx, const Track &track, const Trk::TrackStates *tsos, std::vector< int > &information, std::bitset< numberOfDetectorTypes > &hitPattern, bool doHolesInDet, bool doHolesMuon) const
loops over TrackStatesOnSurface and uses this to produce the summary information Fills 'information',...
Definition: TrackSummaryTool.cxx:276
python.CaloScaleNoiseConfig.ts
ts
Definition: CaloScaleNoiseConfig.py:86
Trk::numberOfSCTDoubleHoles
@ numberOfSCTDoubleHoles
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:75
Trk::numberOfTRTXenonHits
@ numberOfTRTXenonHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:99
Trk::numberOfCscPhiHits
@ numberOfCscPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:107
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
TrackStateOnSurface.h
Trk::numberOfRpcEtaHoles
@ numberOfRpcEtaHoles
number of RPC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:116
Trk::numberOfMdtHits
@ numberOfMdtHits
number of mdt hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:103
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.