diff --git a/Tracking/TrkTools/TrkTruthToTrack/TrkTruthToTrack/TruthTrackRecordToTrack.h b/Tracking/TrkTools/TrkTruthToTrack/TrkTruthToTrack/TruthTrackRecordToTrack.h index 877e50de410a2d8b35afc6c7fcbe8aa39d318211..7390c0e7640c1af5ee3d46cc14e185c2e9172365 100755 --- a/Tracking/TrkTools/TrkTruthToTrack/TrkTruthToTrack/TruthTrackRecordToTrack.h +++ b/Tracking/TrkTools/TrkTruthToTrack/TrkTruthToTrack/TruthTrackRecordToTrack.h @@ -49,7 +49,7 @@ namespace Trk { * ownership!) */ using ITruthToTrack::makeProdVertexParameters; - virtual const Trk::TrackParameters* makeProdVertexParameters(const HepMC::GenParticle* part) const; + virtual const Trk::TrackParameters* makeProdVertexParameters(HepMC::ConstGenParticlePtr part) const; virtual const Trk::TrackParameters* makeProdVertexParameters(const xAOD::TruthParticle* part) const; /** This function produces Trk::TrackParameters corresponding to @@ -59,7 +59,7 @@ namespace Trk { of deleting the returned parameters object. */ using ITruthToTrack::makePerigeeParameters; - virtual const Trk::TrackParameters* makePerigeeParameters(const HepMC::GenParticle* part) const; + virtual const Trk::TrackParameters* makePerigeeParameters(HepMC::ConstGenParticlePtr part) const; virtual const Trk::TrackParameters* makePerigeeParameters(const xAOD::TruthParticle* part) const; private: diff --git a/Tracking/TrkTools/TrkTruthToTrack/src/TruthTrackRecordToTrack.cxx b/Tracking/TrkTools/TrkTruthToTrack/src/TruthTrackRecordToTrack.cxx index d1e8e7209f594771efd3ba05160e20915471c05a..bf977e3d2207bc31c944bd7bea70856f2a3a093d 100755 --- a/Tracking/TrkTools/TrkTruthToTrack/src/TruthTrackRecordToTrack.cxx +++ b/Tracking/TrkTools/TrkTruthToTrack/src/TruthTrackRecordToTrack.cxx @@ -65,7 +65,7 @@ StatusCode Trk::TruthTrackRecordToTrack::initialize() { } //================================================================ -const Trk::TrackParameters* Trk::TruthTrackRecordToTrack::makeProdVertexParameters(const HepMC::GenParticle* part) const { +const Trk::TrackParameters* Trk::TruthTrackRecordToTrack::makeProdVertexParameters(HepMC::ConstGenParticlePtr part) const { if (part == nullptr || m_particleDataTable==nullptr) return nullptr; @@ -207,7 +207,7 @@ const Trk::TrackParameters* Trk::TruthTrackRecordToTrack::makeProdVertexParamete //================================================================ -const Trk::TrackParameters* Trk::TruthTrackRecordToTrack::makePerigeeParameters(const HepMC::GenParticle* part) const { +const Trk::TrackParameters* Trk::TruthTrackRecordToTrack::makePerigeeParameters(HepMC::ConstGenParticlePtr part) const { const Trk::TrackParameters* generatedTrackPerigee = nullptr; if(part && part->production_vertex() && m_particleDataTable && m_extrapolator) { diff --git a/Tracking/TrkTruthTracks/TrkTruthTrackAlgs/src/TruthTrackCreation.cxx b/Tracking/TrkTruthTracks/TrkTruthTrackAlgs/src/TruthTrackCreation.cxx index ad70752b16db18aa81ad9a4d254ac51de12a3e0c..37ad7e7a1c3f0e02ad6cebafbc734924310db28c 100644 --- a/Tracking/TrkTruthTracks/TrkTruthTrackAlgs/src/TruthTrackCreation.cxx +++ b/Tracking/TrkTruthTracks/TrkTruthTrackAlgs/src/TruthTrackCreation.cxx @@ -110,7 +110,7 @@ StatusCode Trk::TruthTrackCreation::execute() // ----------------------------------- main loop ------------------------------------------------------------------ // get the PRD truth trajectories - const std::map< const HepMC::GenParticle*, PRD_TruthTrajectory >& truthTraj = + const std::map< HepMC::ConstGenParticlePtr, PRD_TruthTrajectory >& truthTraj = m_prdTruthTrajectoryBuilder->truthTrajectories(); // some screen output ATH_MSG_VERBOSE("PRD_TruthTrajectoryBuilder delivered " << truthTraj.size() << " PRD truth trajectories, starting track creation."); diff --git a/Tracking/TrkValidation/TrkVertexFitterValidationTools/src/McEventNtupleTool.cxx b/Tracking/TrkValidation/TrkVertexFitterValidationTools/src/McEventNtupleTool.cxx index 5b27ed4b5f887a769d102f68f1682a86ee655160..faa703e2502be9a7f6c30f74c72a589a7cd6cfae 100755 --- a/Tracking/TrkValidation/TrkVertexFitterValidationTools/src/McEventNtupleTool.cxx +++ b/Tracking/TrkValidation/TrkVertexFitterValidationTools/src/McEventNtupleTool.cxx @@ -123,8 +123,13 @@ StatusCode Trk::McEventNtupleTool::finalize() { StatusCode Trk::McEventNtupleTool::fillMcEventData(const HepMC::GenEvent& myEvent) const { +#ifdef HEPMC3 + auto Vert = myEvent.vertices().begin(); + auto Vert_end = myEvent.vertices().end(); +#else HepMC::GenEvent::vertex_const_iterator Vert = myEvent.vertices_begin(); HepMC::GenEvent::vertex_const_iterator Vert_end = myEvent.vertices_end(); +#endif //store primary vertex CLHEP::HepLorentzVector pv_pos((*Vert)->position().x(), (*Vert)->position().y(), @@ -132,16 +137,23 @@ StatusCode Trk::McEventNtupleTool::fillMcEventData(const HepMC::GenEvent& myEven (*Vert)->position().t()); double pv_r = pv_pos.perp(); double pv_z = pv_pos.z(); - std::map<int,HepMC::GenVertex *> pv_vtx_ids; - std::vector<std::map<int,HepMC::GenVertex *> > sec_vtx_ids_vec; + std::map<int,HepMC::ConstGenVertexPtr> pv_vtx_ids; + std::vector<std::map<int,HepMC::ConstGenVertexPtr> > sec_vtx_ids_vec; +#ifdef HEPMC3 + auto Part = myEvent.particles().begin(); + auto Part_end = myEvent.particles().end(); +#else HepMC::GenEvent::particle_const_iterator Part = myEvent.particles_begin(); - for (;Part!=myEvent.particles_end(); ++Part){ + HepMC::GenEvent::particle_const_iterator Part_end = myEvent.particles_end(); +#endif + + for (;Part!=Part_end; ++Part){ //information about incomming and outgoing particles CLHEP::HepLorentzVector par_mom((*Part)->momentum().px(), (*Part)->momentum().py(), (*Part)->momentum().pz(), (*Part)->momentum().e()); - HepMC::GenVertex* par_vert = (*Part)->production_vertex(); + auto par_vert = (*Part)->production_vertex(); if (par_vert) { CLHEP::HepLorentzVector lv_pos(par_vert->position().x(), @@ -149,7 +161,7 @@ StatusCode Trk::McEventNtupleTool::fillMcEventData(const HepMC::GenEvent& myEven par_vert->position().z(), par_vert->position().t()); - if (par_mom.perp() > m_ptCut && fabs(par_mom.eta()) <= m_etaCut && fabs(lv_pos.perp()) <= m_radiusCut && fabs(lv_pos.z()) <= m_zPosCut){ + if (par_mom.perp() > m_ptCut && fabs(par_mom.eta()) <= m_etaCut && std::fabs(lv_pos.perp()) <= m_radiusCut && std::fabs(lv_pos.z()) <= m_zPosCut){ if(fabs(lv_pos.perp() - pv_r)<m_radiusRes && fabs(lv_pos.z() - pv_z)<m_zPosRes) { @@ -159,8 +171,8 @@ StatusCode Trk::McEventNtupleTool::fillMcEventData(const HepMC::GenEvent& myEven //loop over all entries in sec_vtx_ids_vec = vector of sec_vtx_map's for (unsigned int sec_vec_itr = 0; sec_vec_itr < sec_vtx_ids_vec.size(); ++sec_vec_itr) { - std::map<int,HepMC::GenVertex *> sec_vtx_map = sec_vtx_ids_vec[sec_vec_itr]; - std::map<int,HepMC::GenVertex *>::iterator map_itr = sec_vtx_map.begin(); + std::map<int,HepMC::ConstGenVertexPtr> sec_vtx_map = sec_vtx_ids_vec[sec_vec_itr]; + std::map<int,HepMC::ConstGenVertexPtr>::iterator map_itr = sec_vtx_map.begin(); for (; map_itr!= sec_vtx_map.end(); ++map_itr) { CLHEP::HepLorentzVector sec_pos((*map_itr).second->position().x(), @@ -180,22 +192,22 @@ StatusCode Trk::McEventNtupleTool::fillMcEventData(const HepMC::GenEvent& myEven } if(new_sec_vtx) //store new entry in sec_vtx_ids_vec { - std::map<int,HepMC::GenVertex *> new_map; - new_map.insert(std::make_pair(par_vert->barcode(),par_vert)); + std::map<int,HepMC::ConstGenVertexPtr> new_map; + new_map.insert(std::make_pair(HepMC::barcode(par_vert),par_vert)); sec_vtx_ids_vec.push_back(new_map); } }//if not primary }//eta && mom cut }//if production vertex }//end loop over particles - std::map<int,HepMC::GenVertex *>::iterator pv_map_itr = pv_vtx_ids.begin(); + std::map<int,HepMC::ConstGenVertexPtr>::iterator pv_map_itr = pv_vtx_ids.begin(); m_true_pri_x = (*pv_map_itr).second->position().x(); m_true_pri_y = (*pv_map_itr).second->position().y(); m_true_pri_z = (*pv_map_itr).second->position().z(); for (unsigned int sec_vtx_itr = 0; sec_vtx_itr < sec_vtx_ids_vec.size(); ++sec_vtx_itr) { - std::map<int,HepMC::GenVertex *> sec_map = sec_vtx_ids_vec[sec_vtx_itr]; - std::map<int,HepMC::GenVertex *>::iterator map_itr = sec_map.begin(); + std::map<int,HepMC::ConstGenVertexPtr> sec_map = sec_vtx_ids_vec[sec_vtx_itr]; + std::map<int,HepMC::ConstGenVertexPtr>::iterator map_itr = sec_map.begin(); CLHEP::HepLorentzVector sec_vtx_pos; for (; map_itr != sec_map.end(); ++map_itr){ sec_vtx_pos.setX(sec_vtx_pos.x() + (*map_itr).second->position().x()); diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx index 01f4bf4d7d72a30a56977dbf4a507a2fb426d0db..6def4017a1b3e99bf5d3fadff7021202df6cd384 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx @@ -23,7 +23,7 @@ std::string date(); //function to find true taus -const HepMC::GenParticle* fromParent( int pdg_id, const HepMC::GenParticle* p, bool printout=false ); +HepMC::ConstGenParticlePtr fromParent( int pdg_id, HepMC::ConstGenParticlePtr p, bool printout=false ); diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx index 062f385fd6ec8899788a00485e73440b276b6d4d..38fc80268bb9db5f3be2278b47fcda368a828b18 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx @@ -78,7 +78,7 @@ std::string date() { //function to find true taus -const HepMC::GenParticle* fromParent( int pdg_id, const HepMC::GenParticle* p, bool printout=false ) { +HepMC::ConstGenParticlePtr fromParent( int pdg_id, HepMC::ConstGenParticlePtr p, bool printout=false ) { if ( p==0 ) return 0; if (std::abs(p->pdg_id())==11 || std::abs(p->pdg_id())==13 ) return 0; //don't want light leptons from tau decays @@ -733,34 +733,20 @@ void AnalysisConfig_Ntuple::loop() { while ( evitr!=evend ) { int _ip = 0; /// count of particles in this interaction + int pid = HepMC::signal_process_id((*evitr)); - int pid = (*evitr)->signal_process_id(); - // if ( (*evitr)->particles_size()>0 ) std::cout << "process " << "\tpid " << pid << std::endl; + if ( pid!=0 ) { /// hooray! actually found a sensible event - if ( pid!=0 && (*evitr)->particles_size()>0 ) { /// hooray! actually found a sensible event - /// go through the particles - HepMC::GenEvent::particle_const_iterator pitr((*evitr)->particles_begin()); - HepMC::GenEvent::particle_const_iterator pend((*evitr)->particles_end()); - - while ( pitr!=pend ) { - - // int pdg_id = (*pitr)->pdg_id(); - // std::cout << ip++ << "\tparticle " << pdg_id << "\t" << "(*pitr)->pT()" << std::endl; - + for (auto pitr: **evitr ) { //if tau job, only select if have a tau somewhere along chain, otherwise just add - if ( (m_TruthPdgId==15 && fromParent(m_TruthPdgId, *pitr)!=0) || m_TruthPdgId!=15 ) { + if ( (m_TruthPdgId==15 && fromParent(m_TruthPdgId, pitr)!=0) || m_TruthPdgId!=15 ) { /// select the ones of interest - selectorTruth.selectTrack( *pitr ); - } - - + selectorTruth.selectTrack( pitr ); + } ++_ip; - - ++pitr; - }