65 std::map< HepMC::ConstGenParticlePtr, PRD_TruthTrajectory > gpPrdTruthTrajectories;
67 std::vector<const PRD_MultiTruthCollection*> prdMultiTruthCollections;
75 ATH_MSG_WARNING(
"Could not retrieve " << pmtCollNameIter <<
". Ignoring ... ");
78 ATH_MSG_INFO(
"Added " << pmtCollNameIter <<
" to collection list for truth track creation.");
79 prdMultiTruthCollections.push_back(curColl.
cptr());
85 std::vector<const PRD_MultiTruthCollection*>::const_iterator pmtCollIter = prdMultiTruthCollections.begin();
86 std::vector<const PRD_MultiTruthCollection*>::const_iterator pmtCollIterE = prdMultiTruthCollections.end();
87 for ( ; pmtCollIter != pmtCollIterE; ++pmtCollIter ){
89 PRD_MultiTruthCollection::const_iterator prdMtCIter = (*pmtCollIter)->begin();
90 PRD_MultiTruthCollection::const_iterator prdMtCIterE = (*pmtCollIter)->end();
91 for ( ; prdMtCIter != prdMtCIterE; ++ prdMtCIter ){
95 Identifier curIdentifier = (*prdMtCIter).first;
97 if ( curGenP->momentum().perp() <
m_minPt )
continue;
99 if (!
m_geantinos && std::abs(curGenP->pdg_id())==999)
continue;
106 auto prdTrajIter = gpPrdTruthTrajectories.find(curGenP);
107 if ( prdTrajIter == gpPrdTruthTrajectories.end() ){
110 newPrdTruthTrajectory.
prds.push_back(prd);
111 newPrdTruthTrajectory.
nDoF = ndof-5;
115 gpPrdTruthTrajectories[curGenP] = newPrdTruthTrajectory;
119 (prdTrajIter->second).prds.push_back(prd);
120 (prdTrajIter->second).nDoF += ndof;
121 ndofTotal = (prdTrajIter->second).nDoF;
123 ATH_MSG_DEBUG(
" Associating PRD with " << ndof <<
" degrees of freedom, total N.d.o.F : " << ndofTotal );
124 ATH_MSG_DEBUG(
" Associating Identifier " << curIdentifier <<
" with particle at [ " << curGenP <<
" ]." );
125 std::string prdtype =
m_idHelper->is_pixel(curIdentifier) ?
"Pixel" :
m_idHelper->is_sct(curIdentifier) ?
"SCT" :
"TRT";
128 std::string prdtype =
m_idHelper->is_pixel(curIdentifier) ?
"Pixel" :
m_idHelper->is_sct(curIdentifier) ?
"SCT" :
"TRT";
135 auto prdTruthTrajIter = gpPrdTruthTrajectories.begin();
136 auto prdTruthTrajIterE = gpPrdTruthTrajectories.end();
137 for ( ; prdTruthTrajIter != prdTruthTrajIterE; ++prdTruthTrajIter ){
141 for ( ; prdTTMIter != prdTTMIterE; ++prdTTMIter ){
142 if ((*prdTTMIter)->manipulateTruthTrajectory((*prdTruthTrajIter).second))
143 ATH_MSG_DEBUG(
"PRD truth trajectory got manipulated by: " << (*prdTTMIter).name() );
148 return gpPrdTruthTrajectories;