ATLAS Offline Software
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Trk::DetailedTrackTruthBuilder Class Referencefinal

#include <DetailedTrackTruthBuilder.h>

Inheritance diagram for Trk::DetailedTrackTruthBuilder:
Collaboration diagram for Trk::DetailedTrackTruthBuilder:

Public Member Functions

 DetailedTrackTruthBuilder (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual StatusCode initialize ()
 
virtual void buildDetailedTrackTruth (DetailedTrackTruthCollection *output, const TrackCollection &tracks, const std::vector< const PRD_MultiTruthCollection * > &prdTruth, const EventContext &ctx) const
 See description for IDetailedTrackTruthBuilder::buildDetailedTrackTruth() More...
 

Private Types

typedef InverseMultiMap< PRD_MultiTruthCollectionPRD_InverseTruth
 

Private Member Functions

SubDetHitStatistics::SubDetType findSubDetType (const Identifier &id) const
 
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
 
SubDetHitStatistics countPRDsOnTruth (const TruthTrajectory &traj, const PRD_InverseTruth &inverseTruth) const
 

Static Private Member Functions

static void makeTruthToRecMap (PRD_InverseTruth &result, const PRD_MultiTruthCollection &rec2truth)
 

Private Attributes

const AtlasDetectorIDm_idHelper {}
 
PublicToolHandle< Trk::ITruthTrajectoryBuilderm_truthTrajBuilder {this, "TruthTrajectoryTool", "Trk::ElasticTruthTrajectoryBuilder"}
 

Detailed Description

Definition at line 25 of file DetailedTrackTruthBuilder.h.

Member Typedef Documentation

◆ PRD_InverseTruth

Definition at line 39 of file DetailedTrackTruthBuilder.h.

Constructor & Destructor Documentation

◆ DetailedTrackTruthBuilder()

Trk::DetailedTrackTruthBuilder::DetailedTrackTruthBuilder ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 77 of file DetailedTrackTruthBuilder.cxx.

78  : base_class(type, name, parent)
79  {}

Member Function Documentation

◆ addTrack()

void Trk::DetailedTrackTruthBuilder::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
private

Definition at line 217 of file DetailedTrackTruthBuilder.cxx.

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 id 0 to pairs, we like to keep track of fake fakes
275  unsigned int UID(HepMC::UNDEFINED_ID);
276  unsigned int EV(0);
277  pairStat[HepMcParticleLink(UID,EV,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_ID)].subDetHits[subdet].insert(id);
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 id 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 id 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 {
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::uniqueID(*ppart), proxy)));
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  }

◆ buildDetailedTrackTruth()

void Trk::DetailedTrackTruthBuilder::buildDetailedTrackTruth ( DetailedTrackTruthCollection output,
const TrackCollection tracks,
const std::vector< const PRD_MultiTruthCollection * > &  prdTruth,
const EventContext &  ctx 
) const
virtual

See description for IDetailedTrackTruthBuilder::buildDetailedTrackTruth()

Definition at line 91 of file DetailedTrackTruthBuilder.cxx.

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  }

◆ countPRDsOnTruth()

SubDetHitStatistics Trk::DetailedTrackTruthBuilder::countPRDsOnTruth ( const TruthTrajectory traj,
const PRD_InverseTruth inverseTruth 
) const
private

Definition at line 433 of file DetailedTrackTruthBuilder.cxx.

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
443  // would sum over hits from all particles that arise from this
444  // pile-up collision. the result is useless. don't do it. in
445  // release 20, geantinos have pdg_id==999
446  if (!(*p).cptr()) {
447  ATH_MSG_WARNING( "HepMcParticleLink " << *p << " in truth trajectory does not point to a valid GenParticle.");
448  continue;
449  }
450  if ( MC::isGeantino(*p) ) { continue; }
451  using iter = PRD_InverseTruth::const_iterator;
452  std::pair<iter,iter> range = inverseTruth.equal_range(*p);
453  for (iter i = range.first; i != range.second; ++i) {
455 
456  if (subdet<SubDetHitStatistics::NUM_SUBDETECTORS) prds.subDetHits[subdet].insert(i->second);
457  }
458  }
459 
460  return makeSubDetHitStatistics(prds);
461  }

◆ findSubDetType()

SubDetHitStatistics::SubDetType Trk::DetailedTrackTruthBuilder::findSubDetType ( const Identifier id) const
private

Definition at line 168 of file DetailedTrackTruthBuilder.cxx.

168  {
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  }

◆ initialize()

StatusCode Trk::DetailedTrackTruthBuilder::initialize ( )
virtual

Definition at line 82 of file DetailedTrackTruthBuilder.cxx.

83  {
84  ATH_CHECK( m_truthTrajBuilder.retrieve() );
85  ATH_CHECK( detStore()->retrieve(m_idHelper, "AtlasID") );
86 
87  return StatusCode::SUCCESS;
88  }

◆ makeTruthToRecMap()

void Trk::DetailedTrackTruthBuilder::makeTruthToRecMap ( PRD_InverseTruth result,
const PRD_MultiTruthCollection rec2truth 
)
staticprivate

Definition at line 417 of file DetailedTrackTruthBuilder.cxx.

417  {
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(i.second) ) { continue; } // skip geantinos
428  result.insert(std::make_pair(i.second, i.first));
429  }
430  }

Member Data Documentation

◆ m_idHelper

const AtlasDetectorID* Trk::DetailedTrackTruthBuilder::m_idHelper {}
private

Definition at line 41 of file DetailedTrackTruthBuilder.h.

◆ m_truthTrajBuilder

PublicToolHandle<Trk::ITruthTrajectoryBuilder> Trk::DetailedTrackTruthBuilder::m_truthTrajBuilder {this, "TruthTrajectoryTool", "Trk::ElasticTruthTrajectoryBuilder"}
private

Definition at line 43 of file DetailedTrackTruthBuilder.h.


The documentation for this class was generated from the following files:
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
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
SubDetHitStatistics::SCT
@ SCT
Definition: SubDetHitStatistics.h:74
Trk::DetailedTrackTruthBuilder::makeTruthToRecMap
static void makeTruthToRecMap(PRD_InverseTruth &result, const PRD_MultiTruthCollection &rec2truth)
Definition: DetailedTrackTruthBuilder.cxx:417
AtlasDetectorID::is_csc
bool is_csc(Identifier id) const
Definition: AtlasDetectorID.h:891
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
SubDetHitStatistics
Definition: SubDetHitStatistics.h:34
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
empty
bool empty(TH1 *h)
Definition: computils.cxx:295
IProxyDict
A proxy dictionary.
Definition: AthenaKernel/AthenaKernel/IProxyDict.h:47
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
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
lumiFormat.i
int i
Definition: lumiFormat.py:85
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
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SubDetHitStatistics::MDT
@ MDT
Definition: SubDetHitStatistics.h:74
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:116
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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
HepMC::UNDEFINED_ID
constexpr int UNDEFINED_ID
Definition: MagicNumbers.h:56
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
TruthTrajectory
Definition: TruthTrajectory.h:26
SubDetHitStatistics::TGC
@ TGC
Definition: SubDetHitStatistics.h:74
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Trk::DetailedTrackTruthBuilder::m_idHelper
const AtlasDetectorID * m_idHelper
Definition: DetailedTrackTruthBuilder.h:41
isGeantino
bool isGeantino(const T &p)
Definition: AtlasPID.h:369
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
SubDetHitStatistics::RPC
@ RPC
Definition: SubDetHitStatistics.h:74
SubDetHitStatistics::TRT
@ TRT
Definition: SubDetHitStatistics.h:74
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
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::PRD_InverseTruth
InverseMultiMap< PRD_MultiTruthCollection > PRD_InverseTruth
Definition: DetailedTrackTruthBuilder.h:39
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:332
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
AtlasDetectorID::is_mdt
bool is_mdt(Identifier id) const
Definition: AtlasDetectorID.h:859
fitman.k
k
Definition: fitman.py:528
Identifier
Definition: IdentifierFieldParser.cxx:14
EventInfoCnvParams::eventIndex
thread_local event_number_t eventIndex
Definition: IEvtIdModifierSvc.h:34