diff --git a/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx b/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx index df85e923edcfa901ddebc9d482b89f0a27eb0b00..c1a2b918e346168e003e53dc7fd9d7f639068194 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx +++ b/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx @@ -273,7 +273,7 @@ StatusCode McEventCollectionFilter::SiliconHitsTruthRelink(){ StatusCode McEventCollectionFilter::SiHitsTruthRelink(SG::ReadHandle<SiHitCollection>& inputHits, SG::WriteHandle<SiHitCollection>& outputHits){ for (SiHitCollection::const_iterator i = inputHits->begin(); i != inputHits->end(); ++i) { - const HepMcParticleLink McLink = (*i).particleLink(); + const HepMcParticleLink oldLink = (*i).particleLink(); HepGeom::Point3D<double> lP1 = (*i).localStartPosition(); @@ -282,10 +282,10 @@ StatusCode McEventCollectionFilter::SiHitsTruthRelink(SG::ReadHandle<SiHitCollec double mt = (*i).meanTime(); unsigned int id = (*i).identify(); - int CurBarcode=0; - if(McLink.barcode()!=0) CurBarcode=m_RefBarcode; - - outputHits->Emplace(lP1,lP2, edep, mt,CurBarcode , id); + int curBarcode=0; + if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; + HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); + outputHits->Emplace(lP1,lP2, edep, mt,curBarcode , id); } return StatusCode::SUCCESS; @@ -309,17 +309,18 @@ StatusCode McEventCollectionFilter::TRTHitsTruthRelink() for (TRTUncompressedHitCollection::const_iterator i = m_inputTRTHits->begin(); i != m_inputTRTHits->end(); ++i) { - const HepMcParticleLink McLink = (*i).particleLink(); + const HepMcParticleLink oldLink = (*i).particleLink(); int pdgID = (*i).GetParticleEncoding(); - int CurBarcode=McLink.barcode(); - if(CurBarcode!=0) + int curBarcode=oldLink.barcode(); + if(curBarcode!=0) { if(!(m_IsKeepTRTElect && fabs(pdgID)==11)) { - CurBarcode=m_RefBarcode; + curBarcode=m_RefBarcode; } } + HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); int id = (*i).GetHitID(); float kinEnergy = (*i).GetKineticEnergy(); float eneDeposit = (*i).GetEnergyDeposit(); @@ -331,7 +332,7 @@ StatusCode McEventCollectionFilter::TRTHitsTruthRelink() float postZ = (*i).GetPostStepZ(); float time = (*i).GetGlobalTime(); - m_outputTRTHits->Emplace(id,CurBarcode,pdgID,kinEnergy,eneDeposit,preX,preY,preZ,postX,postY,postZ,time); + m_outputTRTHits->Emplace(id,partLink,pdgID,kinEnergy,eneDeposit,preX,preY,preZ,postX,postY,postZ,time); } return StatusCode::SUCCESS; @@ -352,10 +353,10 @@ StatusCode McEventCollectionFilter::MDTHitsTruthRelink(){ if (!m_outputMDTHits.isValid()) m_outputMDTHits = CxxUtils::make_unique<MDTSimHitCollection>(); for(MDTSimHitConstIterator i=m_inputMDTHits->begin();i!=m_inputMDTHits->end();++i){ - const HepMcParticleLink McLink = (*i).particleLink(); - int CurBarcode=0; - if(McLink.barcode()!=0) CurBarcode=m_RefBarcode; - + const HepMcParticleLink oldLink = (*i).particleLink(); + int curBarcode=0; + if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; + HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); int id = (*i).MDTid(); double time = (*i).globalTime(); double radius = (*i).driftRadius(); @@ -366,7 +367,7 @@ StatusCode McEventCollectionFilter::MDTHitsTruthRelink(){ int pdgID = (*i).particleEncoding(); double kinEnergy = (*i).kineticEnergy(); - m_outputMDTHits->Emplace(id,time,radius,lP,CurBarcode,stepLength,eneDeposit,pdgID,kinEnergy); + m_outputMDTHits->Emplace(id,time,radius,lP,partLink,stepLength,eneDeposit,pdgID,kinEnergy); } return StatusCode::SUCCESS; @@ -387,10 +388,10 @@ StatusCode McEventCollectionFilter::CSCHitsTruthRelink(){ if (!m_outputCSCHits.isValid()) m_outputCSCHits = CxxUtils::make_unique<CSCSimHitCollection>(); for(CSCSimHitConstIterator i=m_inputCSCHits->begin();i!=m_inputCSCHits->end();++i){ - const HepMcParticleLink McLink = (*i).particleLink(); - int CurBarcode=0; - if(McLink.barcode()!=0) CurBarcode=m_RefBarcode; - + const HepMcParticleLink oldLink = (*i).particleLink(); + int curBarcode=0; + if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; + HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); int id = (*i).CSCid(); double time = (*i).globalTime(); double eneDeposit = (*i).energyDeposit(); @@ -399,7 +400,7 @@ StatusCode McEventCollectionFilter::CSCHitsTruthRelink(){ int pdgID = (*i).particleID(); double kinEnergy = (*i).kineticEnergy(); - m_outputCSCHits->Emplace(id,time,eneDeposit,HitStart,HitEnd,pdgID,CurBarcode,kinEnergy); + m_outputCSCHits->Emplace(id,time,eneDeposit,HitStart,HitEnd,pdgID,partLink,kinEnergy); } return StatusCode::SUCCESS; @@ -420,10 +421,10 @@ StatusCode McEventCollectionFilter::RPCHitsTruthRelink(){ if (!m_outputRPCHits.isValid()) m_outputRPCHits = CxxUtils::make_unique<RPCSimHitCollection>(); for(RPCSimHitConstIterator i=m_inputRPCHits->begin();i!=m_inputRPCHits->end();++i){ - const HepMcParticleLink McLink = (*i).particleLink(); - int CurBarcode=0; - if(McLink.barcode()!=0) CurBarcode=m_RefBarcode; - + const HepMcParticleLink oldLink = (*i).particleLink(); + int curBarcode=0; + if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; + HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); int id = (*i).RPCid(); double time = (*i).globalTime(); Amg::Vector3D prepos = (*i).preLocalPosition(); @@ -433,7 +434,7 @@ StatusCode McEventCollectionFilter::RPCHitsTruthRelink(){ double kinEnergy = (*i).kineticEnergy(); double stepLength = (*i).stepLength(); - m_outputRPCHits->Emplace(id,time,prepos,CurBarcode,ppos,eneDeposit,stepLength,pdgID,kinEnergy); + m_outputRPCHits->Emplace(id,time,prepos,partLink,ppos,eneDeposit,stepLength,pdgID,kinEnergy); } return StatusCode::SUCCESS; @@ -454,10 +455,10 @@ StatusCode McEventCollectionFilter::TGCHitsTruthRelink(){ if (!m_outputTGCHits.isValid()) m_outputTGCHits = CxxUtils::make_unique<TGCSimHitCollection>(); for(TGCSimHitConstIterator i=m_inputTGCHits->begin();i!=m_inputTGCHits->end();++i){ - const HepMcParticleLink McLink = (*i).particleLink(); - int CurBarcode=0; - if(McLink.barcode()!=0) CurBarcode=m_RefBarcode; - + const HepMcParticleLink oldLink = (*i).particleLink(); + int curBarcode=0; + if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; + HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); int id = (*i).TGCid(); double time = (*i).globalTime(); Amg::Vector3D pos = (*i).localPosition(); @@ -467,7 +468,7 @@ StatusCode McEventCollectionFilter::TGCHitsTruthRelink(){ int pdgID = (*i).particleEncoding(); double kinEnergy = (*i).kineticEnergy(); - m_outputTGCHits->Emplace(id,time,pos,dir,CurBarcode,enDeposit,stpLen,pdgID,kinEnergy); + m_outputTGCHits->Emplace(id,time,pos,dir,partLink,enDeposit,stpLen,pdgID,kinEnergy); } return StatusCode::SUCCESS;