ATLAS Offline Software
DetailedTrackTruthBuilder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 
10 #include "AtlasHepMC/GenParticle.h"
11 #include "AtlasHepMC/GenVertex.h"
13 
17 
18 #include "TrkTrack/Track.h"
23 
24 #include <map>
25 #include <queue>
26 #include <list>
27 #include <limits>
28 
29 #include <iostream>
30 #include <iterator>
31 #include <algorithm>
32 
33 namespace {
34 
35  template<class Map> void printMap(const Map& m) {
36  std::cout<<"printMap(): [";
37  for (typename Map::const_iterator i=m.begin(); i!=m.end(); ++i) {
38  std::cout<<"("<<i->first<<","<<i->second<<"), ";
39  }
40  std::cout<<"]"<<std::endl;
41  }
42 
43  struct SubDetPRDs {
44  std::set<Identifier> subDetHits[SubDetHitStatistics::NUM_SUBDETECTORS];
45  };
46 
47  SubDetPRDs& operator+=(SubDetPRDs& a, const SubDetPRDs& b) {
48  for (unsigned i=0; i<SubDetHitStatistics::NUM_SUBDETECTORS; ++i) {
49  const std::set<Identifier>& bset = b.subDetHits[i];
50  for (std::set<Identifier>::const_iterator pb=bset.begin(); pb!=bset.end(); ++pb) {
51  a.subDetHits[i].insert(*pb);
52  }
53  }
54  return a;
55  }
56 
57  SubDetHitStatistics makeSubDetHitStatistics(const SubDetPRDs& prds) {
59  for (unsigned i=0; i<SubDetHitStatistics::NUM_SUBDETECTORS; ++i) {
60  res[SubDetHitStatistics::SubDetType(i)] = prds.subDetHits[i].size();
61  }
62  return res;
63  }
64 
65  // Truth trajectory sprouts
66  class Sprout : public std::list<HepMC::ConstGenParticlePtr> {
67  public:
68  SubDetPRDs stat;
69  };
70 
71 }
72 
73 
74 namespace Trk {
75 
76  //================================================================
77  DetailedTrackTruthBuilder::DetailedTrackTruthBuilder(const std::string& type, const std::string& name, const IInterface* parent)
78  : base_class(type, name, parent)
79  {}
80 
81  //================================================================
83  {
84  ATH_CHECK( m_truthTrajBuilder.retrieve() );
85  ATH_CHECK( detStore()->retrieve(m_idHelper, "AtlasID") );
86 
87  return StatusCode::SUCCESS;
88  }
89 
90  //================================================================
93  const TrackCollection& tracks,
94  const std::vector<const PRD_MultiTruthCollection*>& prdTruth,
95  const EventContext& ctx) const
96  {
97  ATH_MSG_VERBOSE("DetailedTrackTruthBuilder::buildDetailedTrackTruth() ");
98 
99  if (!output) { return; }
100 
101  //----------------------------------------------------------------
102  // The caller can pass PRD truth collections in any order. Sort them out.
103 
104  std::vector<const PRD_MultiTruthCollection*> orderedPRD_Truth(SubDetHitStatistics::NUM_SUBDETECTORS);
105  PRD_InverseTruth inverseTruth;
106 
107  for ( const PRD_MultiTruthCollection* prdTruthColl : prdTruth ) {
108  if (prdTruthColl) {
109  if (!(prdTruthColl)->empty()) {
110  SubDetHitStatistics::SubDetType subdet = findSubDetType(prdTruthColl->begin()->first) ;
111 
112  //std::cout<<"Got SubDetType = "<<subdet<<" for "<< (prdTruthColl)->begin()->first <<std::endl;
113 
115  orderedPRD_Truth[subdet] = prdTruthColl;
116  makeTruthToRecMap(inverseTruth,*prdTruthColl);
117  }
118  else {
119  ATH_MSG_WARNING("Got unknown SubDetType in prdTruth ");
120  }
121  }
122  else {
123  ATH_MSG_DEBUG("Empty truth ???");
124  }
125  }
126  }
127 
128  //----------------------------------------------------------------
129  // Find associated truth for each track
130 
131  for (unsigned itrack=0; itrack<tracks.size(); ++itrack) {
132  ElementLink<DataVector<Trk::Track> > ptrack(tracks, itrack);
133  addTrack(output, ptrack, orderedPRD_Truth, inverseTruth, ctx);
134  }
135 
136  // DEBUG
137  // FIXME: in normal production jobs that does *a lot of* formatting only to discard the result...
138  ATH_MSG_DEBUG("Dumping output collection.\n"
139  " Entries with TruthTrajectories of more then one particle shown at the DEBUG level.\n"
140  " Use VERBOSE level for complete dump.");
141 
142  for (DetailedTrackTruthCollection::const_iterator i=output->begin(); i!=output->end(); ++i) {
143  bool interesting = (i->second.trajectory().size() > 1);
144 
145  msg(interesting ? MSG::DEBUG : MSG::VERBOSE)
146  <<"out: trk="<<i->first.index()<<" => "<<i->second<<endmsg;
147 
148  if (interesting) {
149  const TruthTrajectory& t = i->second.trajectory();
150  msg(MSG::VERBOSE)<<"Particles on the trajectory:\n";
151  for (unsigned k=0; k<t.size(); ++k) {
152  msg(MSG::VERBOSE)<<t[k]<<"\n";
153  }
154  msg(MSG::VERBOSE)<<"\n"<<endmsg;
155  }
156 
157  }
158 
159  }
160 
161 
162  //================================================================
163  // Plagiarized from
164  // Tracking/TrkTools/TrkTruthCreatorTools/src/TrackTruthMaker.cxx
165  // (no way to reuse its private function PrepRawDataCollectionType() )
166 
169  if (m_idHelper->is_pixel(id))
171  if (m_idHelper->is_sct(id))
173  if (m_idHelper->is_trt(id))
175  if (m_idHelper->is_mdt(id))
177  if (m_idHelper->is_rpc(id))
179  if (m_idHelper->is_tgc(id))
181  if (m_idHelper->is_stgc(id))
183  if (m_idHelper->is_mm(id))
185  if (m_idHelper->is_csc(id))
187 
188 
189  ATH_MSG_WARNING("findSubDetType(): UNKNOWN subdet for id="<<id);
190 
192  }
193 
194  namespace {
195  class ExtendedEventIndex {
196  public:
197  ExtendedEventIndex(const HepMcParticleLink &source, IProxyDict *proxy)
198  : m_eventIndex(source.eventIndex()),
199  m_isPosition(m_eventIndex == HepMcParticleLink::ExtendedBarCode::UNDEFINED)
200  {
201  if (m_isPosition) {
202  m_eventIndex = source.getEventPositionInCollection(proxy);
203  }
204  }
205 
207  return {other_particle_barcode, m_eventIndex, (m_isPosition ? HepMcParticleLink::IS_POSITION : HepMcParticleLink::IS_EVENTNUM ), HepMcParticleLink::IS_BARCODE, proxy}; // FIXME barcode-based
208  }
209 
210  private:
211  HepMcParticleLink::index_type m_eventIndex;
212  bool m_isPosition;
213  };
214  }
215 
216  //================================================================
219  const std::vector<const PRD_MultiTruthCollection*>& orderedPRD_Truth,
220  const PRD_InverseTruth& inverseTruth,
221  const EventContext& ctx
222  ) const
223  {
224  SubDetHitStatistics trackStat;
225  std::map<HepMcParticleLink,SubDetPRDs> pairStat; // stats for (track,GenParticle) for the current track
226  IProxyDict *proxy=ctx.getExtension<Atlas::ExtendedEventContext>().proxy();
227  //----------------------------------------------------------------
228  // loop over the RIO_OnTrack
229  for ( const Trk::MeasurementBase* measurement : *((*track)->measurementsOnTrack()) ) {
230  // not all MB are necessarily ROTs.
231  const Trk::RIO_OnTrack * riontrack = dynamic_cast<const Trk::RIO_OnTrack*>(measurement);
232 
233  if (!riontrack) { // handle CompetingRIOsOnTrack case
234  const Trk::CompetingRIOsOnTrack* competing = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(measurement);
235  if (competing) {
236  riontrack = & competing->rioOnTrack( competing->indexOfMaxAssignProb() );
237  }
238  }
239 
240  if (riontrack) {
241 
242  // get the PrepRawData from the RIO_OnTrack
243  const Trk::PrepRawData* prd = riontrack->prepRawData();
244  if (prd) {
245  Identifier id = prd->identify();
247 
249  // if PRD truth collection is missing, ignore subdet in track stat calculation as well.
250  if (orderedPRD_Truth[subdet]) {
251 
252  ++trackStat[subdet];
253 
254  using iprdt = PRD_MultiTruthCollection::const_iterator;
255  std::pair<iprdt, iprdt> range = orderedPRD_Truth[subdet]->equal_range(id);
256 
257  int n=0;
258  // Loop over particles contributing to this cluster
259  for (iprdt i = range.first; i!= range.second; ++i) {
260  HepMC::ConstGenParticlePtr pa = (*i).second.cptr();
261  if (!pa) { continue; }
262 
263  if (!i->second.isValid()) {
264  ATH_MSG_WARNING("Unexpected invalid HepMcParticleLink in PRD_MultiTruthCollection");
265  }
266  else {
267  pairStat[i->second].subDetHits[subdet].insert(id);
268  ++n;
269  ATH_MSG_VERBOSE("PRD-ID:"<<id<<" subdet:"<<subdet<<" number:"<<n<<" particle link:"<<i->second);
270  }
271  }
272  if (n == 0) {
273  ATH_MSG_VERBOSE("--> no link, noise ? PRD-ID:"<<id<<" subdet:"<<subdet);
274  // add barcode 0 to pairs, we like to keep track of fake fakes
275  unsigned int BC(0);
276  unsigned int EV(0);
277  pairStat[HepMcParticleLink(BC,EV,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE)].subDetHits[subdet].insert(id); // FIXME barcode-based
278  }
279  } // orderedPRD_Truth[] available
280  } // subdet type check, warning in findSubDetType()
281  }
282  else {
283  ATH_MSG_WARNING("Empty PrepRawData from RIO_OnTrack");
284  }
285  } // if (riontrack)
286  } // Loop over measurements
287 
288  if (msgLvl(MSG::VERBOSE)) {
289  msg(MSG::VERBOSE)<<"PRD truth particles = ";
290  for (std::map<HepMcParticleLink,SubDetPRDs>::const_iterator i=pairStat.begin(); i!=pairStat.end(); ++i) {
291  msg(MSG::VERBOSE)<<i->first<<",";
292  }
294  }
295 
296  //----------------------------------------------------------------
297  // The stat structures are ready.
298  // Build truth trajectories for the track
299 
300  std::set<HepMcParticleLink> seeds;
301  for (std::map<HepMcParticleLink,SubDetPRDs>::const_iterator i=pairStat.begin(); i!=pairStat.end(); ++i) {
302  if (i->first.isValid()) {
303  seeds.insert(i->first);
304  }
305  else {
306  // add barcode 0 particles, we like to keep track of fake fakes
307  TruthTrajectory traj;
308  traj.reserve(1);
309  traj.push_back(i->first);
310  ATH_MSG_VERBOSE("addTrack(): add barcode 0 hits (noise ?) to DetailedTrackTruthCollection.");
311 
312  // noise/no truth hits on this track
313  SubDetHitStatistics noiseStat = makeSubDetHitStatistics(i->second);
314 
315  // Only valid HepMcParticleLink make it into seeds and then into sprouts, and
316  // stored in the loop over sprouts below.
317  // Store output for noise/no truth particles here.
318  output->insert(std::make_pair(track,
319  DetailedTrackTruth(traj,
320  noiseStat,
321  trackStat,
322  noiseStat) ));
323  }
324  }
325 
326  // Grow sprouts from the seeds
327  using SproutMap = std::map<HepMcParticleLink, Sprout>;
328  SproutMap sprouts;
329  while (!seeds.empty()) {
330  HepMcParticleLink link = *seeds.begin();
331  Sprout current_sprout;
332  std::queue<HepMC::ConstGenParticlePtr> tmp;
333  ExtendedEventIndex eventIndex(link, proxy);
335 
336  do {
337  HepMcParticleLink curlink( eventIndex.makeLink(HepMC::barcode(current), proxy)); // FIXME barcode-based syntax needs to be updated..
338 
339  // remove the current particle from the list of particles to consider (if it is still there)
340  seeds.erase(curlink);
341 
342  // Have we worked on this particle before?
343  SproutMap::iterator p_old = sprouts.find(curlink);
344  if (p_old != sprouts.end()) {
345  //merge the old sprout with the current one.
346  current_sprout.splice(current_sprout.end(), p_old->second);
347  current_sprout.stat += p_old->second.stat;
348  // and remove the entry for the old
349  sprouts.erase(p_old);
350  break; // the do-while(getMother()) loop
351  }
352  // No, this is a new particle. Try to extend the current truth trajectory.
353 
354  // Add the particle to the current truth trajectory.
355  // New: with the current stricter cuts on mother-daughter
356  // we don't have to require that ancestors produce hits.
357 
358  current_sprout.push_back(current);
359 
360  std::map<HepMcParticleLink,SubDetPRDs>::iterator p_newstat = pairStat.find(curlink);
361  if (p_newstat != pairStat.end()) {
362  current_sprout.stat += p_newstat->second;
363  }
364 
365 
366  } while ( (current = m_truthTrajBuilder->getMother(current)) );
367 
368  // Add the grown sprout to the list
369  sprouts.insert(std::make_pair(link, current_sprout));
370 
371  } // while(!seeds.empty())
372 
373  //----------------
374  // All seeds have been processed, and the upstream extensions of the
375  // sprouts are done. Extend the sprouts downstream to get the final
376  // truth trajectories and store the result.
377  //
378  // Note: so far the "sprouts" object mapped {last particle ==> sprout}
379  // Extending a sprout downstream will break this relationship,
380  // but at this point we don't care about it and will only use the
381  // value of the map, not the key.
382 
383  for (SproutMap::iterator s=sprouts.begin(); s!=sprouts.end(); ++s) {
384 
385  // Attempt to extend the TruthTrajectory sprout to the "outside".
386  // This may add only hits that are *not* on the current track.
387  // Thus no need to update stats track and stats common.
388 
389  auto current = *s->second.begin();
390  while( (current = m_truthTrajBuilder->getDaughter(current)) ) {
391  s->second.push_front(current);
392  }
393 
394  // Now we have info to build the final TruthTrajectory.
395  // FIXME: what is the current average size?
396  TruthTrajectory traj;
397  traj.reserve(2); // The average size is about 1.05. Hardcode that instead of using slow list::size().
398  for (Sprout::const_iterator ppart=s->second.begin(); ppart!=s->second.end(); ++ppart) {
399  traj.push_back(HepMcParticleLink(ExtendedEventIndex(s->first, proxy).makeLink(HepMC::barcode(*ppart), proxy))); // FIXME barcode-based syntax needs to be updated
400  }
401 
402  // Count PRDs on the TruthTrajectory
403  SubDetHitStatistics truthStat = countPRDsOnTruth(traj, inverseTruth);
404 
405  ATH_MSG_VERBOSE("addTrack(): sprout length = "<<traj.size());
406  output->insert(std::make_pair(track,
407  DetailedTrackTruth(traj,
408  makeSubDetHitStatistics(s->second.stat),
409  trackStat,
410  truthStat) ));
411  }
412 
413 
414  ATH_MSG_VERBOSE("addTrack(): #sprouts = "<<sprouts.size()<<", output->size() = "<<output->size());
415  }
416  //================================================================
418  // invert the map from Identifier (reco hit) to HepMcParticleLink,
419  // to allow lookup of all Identifiers produced by a given HepMcParticleLink.
420  // the result is only used in countPRDsOnTruth. since that code ignores
421  // geantinos, don't bother to sort the geantinos here.
422  for ( const auto& i : rec2truth ) {
423  // i.first = Identifier
424  // i.second = HepMcParticleLink
425  auto pa = i.second.cptr();
426  if ( !pa ) { continue; } // skip noise
427  if ( MC::isGeantino(pa) && HepMC::is_truth_suppressed_pileup(pa) ) { continue; } // skip geantinos
428  result.insert(std::make_pair(i.second, i.first));
429  }
430  }
431 
432  //================================================================
434  const PRD_InverseTruth& inverseTruth) const
435  {
436  // Different particles from the same TruthTrajectory can contribute to the same cluster.
437  // We should be careful to avoid double-counting in such cases.
438 
439 
440  SubDetPRDs prds;
441  for (TruthTrajectory::const_iterator p = traj.begin(); p != traj.end(); ++p) {
442  // if this is a geantino (pile-up truth reduction), then we would
443  // sum over hits from all particles that arise from this pile-up
444  // collision. the result is useless. don't do it.
445  // in release 20, geantinos have
446  // barcode==HepMC::SUPPRESSED_PILEUP_BARCODE
447  // pdg_id==999
448  if (!(*p).cptr()) {
449  ATH_MSG_WARNING( "HepMcParticleLink " << *p << " in truth trajectory does not point to a valid GenParticle.");
450  continue;
451  }
452  if ( MC::isGeantino(*p) ) { continue; }
453  using iter = PRD_InverseTruth::const_iterator;
454  std::pair<iter,iter> range = inverseTruth.equal_range(*p);
455  for (iter i = range.first; i != range.second; ++i) {
457 
458  if (subdet<SubDetHitStatistics::NUM_SUBDETECTORS) prds.subDetHits[subdet].insert(i->second);
459  }
460  }
461 
462  return makeSubDetHitStatistics(prds);
463  }
464 
465  //================================================================
466 
467 } // namespace Trk
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
fillPileUpNoiseLumi.current
current
Definition: fillPileUpNoiseLumi.py:52
SubDetHitStatistics::SubDetType
SubDetType
Definition: SubDetHitStatistics.h:74
AtlasDetectorID::is_rpc
bool is_rpc(Identifier id) const
Definition: AtlasDetectorID.h:875
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
get_generator_info.result
result
Definition: get_generator_info.py:21
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
SubDetHitStatistics::SCT
@ SCT
Definition: SubDetHitStatistics.h:74
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
MeasurementBase.h
Trk::DetailedTrackTruthBuilder::makeTruthToRecMap
static void makeTruthToRecMap(PRD_InverseTruth &result, const PRD_MultiTruthCollection &rec2truth)
Definition: DetailedTrackTruthBuilder.cxx:417
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
AtlasDetectorID::is_csc
bool is_csc(Identifier id) const
Definition: AtlasDetectorID.h:891
CompetingRIOsOnTrack.h
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
SubDetHitStatistics::NUM_SUBDETECTORS
@ NUM_SUBDETECTORS
Definition: SubDetHitStatistics.h:74
PRD_MultiTruthCollection
A PRD is mapped onto all contributing particles.
Definition: PRD_MultiTruthCollection.h:24
ViewHelper::makeLink
ElementLink< T > makeLink(const SG::View *view, const SG::ReadHandle< T > &handle, size_t index)
Create EL to a collection in view.
Definition: ViewHelper.h:276
SubDetHitStatistics
Definition: SubDetHitStatistics.h:34
GenVertex.h
AtlasDetectorID::is_mm
bool is_mm(Identifier id) const
Definition: AtlasDetectorID.h:913
Trk::DetailedTrackTruthBuilder::findSubDetType
SubDetHitStatistics::SubDetType findSubDetType(const Identifier &id) const
Definition: DetailedTrackTruthBuilder.cxx:168
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
SubDetHitStatistics::MM
@ MM
Definition: SubDetHitStatistics.h:74
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SubDetHitStatistics::CSC
@ CSC
Definition: SubDetHitStatistics.h:74
Trk::DetailedTrackTruthBuilder::DetailedTrackTruthBuilder
DetailedTrackTruthBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Definition: DetailedTrackTruthBuilder.cxx:77
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
IProxyDict
A proxy dictionary.
Definition: AthenaKernel/AthenaKernel/IProxyDict.h:51
GenParticle.h
PrepRawData.h
Track.h
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::DetailedTrackTruthBuilder::m_truthTrajBuilder
PublicToolHandle< Trk::ITruthTrajectoryBuilder > m_truthTrajBuilder
Definition: DetailedTrackTruthBuilder.h:43
DetailedTrackTruthCollection.h
UNDEFINED
@ UNDEFINED
Definition: sTGCenumeration.h:18
McEventCollection.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
AtlasDetectorID::is_tgc
bool is_tgc(Identifier id) const
Definition: AtlasDetectorID.h:902
beamspotman.n
n
Definition: beamspotman.py:731
Atlas::ExtendedEventContext
Definition: ExtendedEventContext.h:23
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
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
SubDetHitStatistics::MDT
@ MDT
Definition: SubDetHitStatistics.h:74
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
test_pyathena.parent
parent
Definition: test_pyathena.py:15
DetailedTrackTruth.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
Trk::DetailedTrackTruthBuilder::addTrack
void addTrack(DetailedTrackTruthCollection *output, const ElementLink< DataVector< Trk::Track > > &track, const std::vector< const PRD_MultiTruthCollection * > &orderedPRD_Truth, const PRD_InverseTruth &inverseTruth, const EventContext &ctx) const
Definition: DetailedTrackTruthBuilder.cxx:217
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
DataVector< Trk::Track >
beamspotman.stat
stat
Definition: beamspotman.py:266
merge.output
output
Definition: merge.py:17
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
TruthTrajectory
Definition: TruthTrajectory.h:26
SubDetHitStatistics::TGC
@ TGC
Definition: SubDetHitStatistics.h:74
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
RIO_OnTrack.h
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Trk::DetailedTrackTruthBuilder::m_idHelper
const AtlasDetectorID * m_idHelper
Definition: DetailedTrackTruthBuilder.h:41
Trk::DetailedTrackTruthBuilder::initialize
virtual StatusCode initialize()
Definition: DetailedTrackTruthBuilder.cxx:82
isGeantino
bool isGeantino(const T &p)
Definition: AtlasPID.h:218
DetailedTrackTruth
Definition: DetailedTrackTruth.h:16
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.
Trk::DetailedTrackTruthBuilder::countPRDsOnTruth
SubDetHitStatistics countPRDsOnTruth(const TruthTrajectory &traj, const PRD_InverseTruth &inverseTruth) const
Definition: DetailedTrackTruthBuilder.cxx:433
Muon::EnumDefs::BC
@ BC
Definition: MuonEnumDefs.h:13
SubDetHitStatistics::RPC
@ RPC
Definition: SubDetHitStatistics.h:74
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
SubDetHitStatistics::TRT
@ TRT
Definition: SubDetHitStatistics.h:74
a
TList * a
Definition: liststreamerinfos.cxx:10
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DEBUG
#define DEBUG
Definition: page_access.h:11
AtlasDetectorID::is_stgc
bool is_stgc(Identifier id) const
Definition: AtlasDetectorID.h:924
DetailedTrackTruthCollection
Definition: DetailedTrackTruthCollection.h:20
TruthTrajectory.h
Trk::InverseMultiMap
Definition: InverseMultiMap.h:45
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
SubDetHitStatistics::Pixel
@ Pixel
Definition: SubDetHitStatistics.h:74
Trk::CompetingRIOsOnTrack::indexOfMaxAssignProb
unsigned int indexOfMaxAssignProb() const
Index of the ROT with the highest assignment probability.
Definition: CompetingRIOsOnTrack.cxx:101
Trk::DetailedTrackTruthBuilder::buildDetailedTrackTruth
virtual void buildDetailedTrackTruth(DetailedTrackTruthCollection *output, const TrackCollection &tracks, const std::vector< const PRD_MultiTruthCollection * > &prdTruth, const EventContext &ctx) const
See description for IDetailedTrackTruthBuilder::buildDetailedTrackTruth()
Definition: DetailedTrackTruthBuilder.cxx:92
SubDetHitStatistics::STGC
@ STGC
Definition: SubDetHitStatistics.h:74
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
HepMC::is_truth_suppressed_pileup
bool is_truth_suppressed_pileup(const T &p)
Method to establish if a particle (or barcode) corresponds to truth-suppressed pile-up (TODO update t...
Definition: MagicNumbers.h:290
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
DetailedTrackTruthBuilder.h
HepMCHelpers.h
AtlasDetectorID::is_mdt
bool is_mdt(Identifier id) const
Definition: AtlasDetectorID.h:859
fitman.k
k
Definition: fitman.py:528
EventInfoCnvParams::eventIndex
thread_local event_number_t eventIndex
Definition: IEvtIdModifierSvc.h:34