50 ATH_MSG_DEBUG(
"Looking up truth for pt " << particle->pt() <<
" eta " << particle->eta() <<
" phi " << particle->phi());
53 if( !particle->trackLink().isValid()){
55 ATH_MSG_WARNING(
"Found TrackParticle with Invalid element link, skipping");
59 particlesType(*particle) = 0;
60 particlesOrigin(*particle) = 0;
61 particlesClassification(*particle) = 0;
67 unsigned int classification = 0;
72 auto result = truthTrackColl.find(key);
75 if(
result != truthTrackColl.end() ){
77 link = truthParticleLinks.
find(
result->second.particleLink());
83 type = truthClass.first;
84 origin = truthClass.second;
86 ATH_MSG_VERBOSE(
"Got truth type " <<
static_cast<int>(
type) <<
" origin " <<
static_cast<int>(origin) <<
" classification " << classification);
91 ATH_MSG_DEBUG(
"Found matching xAOD Truth: uniqueID " <<
HepMC::uniqueID(*link) <<
" pt " << (*link)->pt() <<
" eta " << (*link)->eta() <<
" phi " << (*link)->phi());
94 particlesLink(*particle)=link;
103 particlesType(partInd)=
static_cast<int>(
type);
104 particlesOrigin(partInd)=
static_cast<int>(origin);
105 particlesClassification(partInd)=classification;
109 return StatusCode::SUCCESS;
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_particlesOriginKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_particlesTypeKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trkKey
virtual StatusCode initialize() override
ToolHandle< IMCTruthClassifier > m_truthClassifier
virtual StatusCode execute(const EventContext &ctx) const override
SG::ReadHandleKey< TrackTruthCollection > m_truthTracksKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_particlesClassificationKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_particlesLinkKey
Decorations for input TrackParticleContainer.
SG::ReadHandleKey< xAODTruthParticleLinkVector > m_truthParticleLinkVecKey
ElementLink< xAOD::TruthParticleContainer > find(const HepMcParticleLink &hepMCLink) const