diff --git a/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx b/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx
index fcec4757a47e7b21a0ce6e999f66f636ccd0030d..14a7e6f70310eb29f4749e0cd4564c8ec02ced40 100644
--- a/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx
+++ b/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx
@@ -154,16 +154,15 @@ StatusCode MuonHitRelocation::execute() {
 
   Amg::Vector3D direction(0., 0., 0.);
   for (e=mcEvent->begin();e!=mcEvent->end(); e++) {
-    for (HepMC::GenEvent::particle_const_iterator p= (**e).particles_begin();
-	 p!= (**e).particles_end(); p++) {
-
-        float xv = (**p).production_vertex()->position().x();
-        float yv = (**p).production_vertex()->position().y();
-        float zv = (**p).production_vertex()->position().z();
- 	float xd = (**p).momentum().px();
- 	float yd = (**p).momentum().py();
- 	float zd = (**p).momentum().pz();
- 	float mag = sqrt(xd*xd + yd*yd + zd*zd);
+    for (auto p: (**e)) {
+
+        float xv = p->production_vertex()->position().x();
+        float yv = p->production_vertex()->position().y();
+        float zv = p->production_vertex()->position().z();
+        float xd = p->momentum().px();
+        float yd = p->momentum().py();
+        float zd = p->momentum().pz();
+        float mag = sqrt(xd*xd + yd*yd + zd*zd);
         direction[0] = xd/mag;
         direction[1] = yd/mag;
         direction[2] = zd/mag;
diff --git a/MuonSpectrometer/MuonValidation/MuonPRDTest/src/MDTPRDValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonPRDTest/src/MDTPRDValAlg.cxx
index b3dce30d5df7408742e1bff6a0133ab2b221e8bf..40ee9271de3c12a1874e21c2a9fd3db6264af156 100644
--- a/MuonSpectrometer/MuonValidation/MuonPRDTest/src/MDTPRDValAlg.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonPRDTest/src/MDTPRDValAlg.cxx
@@ -355,13 +355,13 @@ void MDTPRDValAlg::addMcEventCollection( MDTPRDValAlg::TruthMap& truthMap ) cons
   }
   if( msgLvl(MSG::VERBOSE) ) ATH_MSG_VERBOSE(" looping over MC particles ");
   for (e=mcEvent->begin();e!=mcEvent->end(); e++) {
-    for (HepMC::GenEvent::particle_const_iterator p= (**e).particles_begin(); p!= (**e).particles_end(); p++) {
+    for (auto p: (**e)) {
 
-      int pdg = (**p).pdg_id();
-      if( abs(pdg) != 13 && pdg !=0 && abs(pdg) != 998) continue;
-      if( !(**p).production_vertex() ) continue;
+      int pdg = p->pdg_id();
+      if( std::abs(pdg) != 13 && pdg !=0 && std::abs(pdg) != 998) continue;
+      if( !p->production_vertex() ) continue;
 
-      int barcode = (**p).barcode();
+      int barcode = HepMC::barcode(p);
       ATH_MSG_VERBOSE(" pdg " << pdg << " barcode " <<  barcode);
       
       TruthInfo* info; 
@@ -392,10 +392,10 @@ void MDTPRDValAlg::addMcEventCollection( MDTPRDValAlg::TruthMap& truthMap ) cons
 //  Fix geantino
       if(pdg==-998)  particle->charge   = -1.; 
       if(pdg==0)  particle->charge   = 1.; 
-      particle->momentum = Amg::Vector3D( (**p).momentum().px(),(**p).momentum().py(),(**p).momentum().pz());
-      particle->position = Amg::Vector3D( (**p).production_vertex()->position().x(),
-				       (**p).production_vertex()->position().y(),
-				       (**p).production_vertex()->position().z() );
+      particle->momentum = Amg::Vector3D( p->momentum().px(),p->momentum().py(),p->momentum().pz());
+      particle->position = Amg::Vector3D( p->production_vertex()->position().x(),
+				       p->production_vertex()->position().y(),
+				       p->production_vertex()->position().z() );
       
       particle->pars= new Trk::Perigee( particle->position, particle->momentum, particle->charge, Amg::Vector3D(0.,0.,0.) );
 
diff --git a/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx b/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx
index 0fd5a9b033285e2326ced73d98863b8c9bc16bcb..ffe0e69d62ef5a12f700a98c934d6a4b3742e1e3 100755
--- a/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx
@@ -459,7 +459,7 @@ StatusCode RPC_SimHitToPrdCBNTAlgo::doMCtruth()
 
     ATH_MSG_DEBUG ("McEvent n.  " <<eventCounter ) ;        
     int particleCounter=0;    
-    for (HepMC::GenEvent::particle_const_iterator p= (**e).particles_begin();	 p!= (**e).particles_end(); ++p) {
+    for (auto p: (**e)) {
 	++particleCounter;	
 	ATH_MSG_DEBUG ("McEvent n.  " <<eventCounter << " particle # "<<particleCounter) ;        
 	float xv = -999999.;
@@ -467,18 +467,18 @@ StatusCode RPC_SimHitToPrdCBNTAlgo::doMCtruth()
 	float zv = -999999.;
 	float tv = -999999.;
 // the following lines give troubles  - protect them 
-	if ((**p).production_vertex())
+	if (p->production_vertex())
 	  {
-	    xv = (**p).production_vertex()->position().x();
-	    yv = (**p).production_vertex()->position().y();
-	    zv = (**p).production_vertex()->position().z();
-	    tv = (**p).production_vertex()->position().t();
+	    xv = p->production_vertex()->position().x();
+	    yv = p->production_vertex()->position().y();
+	    zv = p->production_vertex()->position().z();
+	    tv = p->production_vertex()->position().t();
 	  }
- 	float xd = (**p).momentum().px();
- 	float yd = (**p).momentum().py();
- 	float zd = (**p).momentum().pz();
- 	float mag = sqrt(xd*xd + yd*yd + zd*zd);
-	if (fabs(mag)>0.001) 
+ 	float xd = p->momentum().px();
+ 	float yd = p->momentum().py();
+ 	float zd = p->momentum().pz();
+ 	float mag = std::sqrt(xd*xd + yd*yd + zd*zd);
+	if (std::fabs(mag)>0.001) 
 	{
 	    
 	    direction[0]=(xd/mag);
@@ -486,11 +486,11 @@ StatusCode RPC_SimHitToPrdCBNTAlgo::doMCtruth()
 	    direction[2]=(zd/mag);
 	     
 	}
-	int status  =  (**p).status();
-	int barcode =  (**p).barcode();
-	double generatedMass = (**p).generated_mass();
+	int status  =  p->status();
+	int barcode =  HepMC::barcode(p);
+	double generatedMass = p->generated_mass();
 
-	 float pdgId =  (**p).pdg_id();
+	 float pdgId =  p->pdg_id();
 	 
 	 m_c->m_partVertX  [ipart] =xv            ;
 	 m_c->m_partVertY  [ipart] =yv            ;
diff --git a/Reconstruction/MissingETPerformance/src/FakeMissingETTool.cxx b/Reconstruction/MissingETPerformance/src/FakeMissingETTool.cxx
index 1efeecece8fe3635f248e6eb7dbee3d6eefcfa51..2a6002fee7cb2d5137d45db7ced2ba2b9f7410c7 100755
--- a/Reconstruction/MissingETPerformance/src/FakeMissingETTool.cxx
+++ b/Reconstruction/MissingETPerformance/src/FakeMissingETTool.cxx
@@ -369,7 +369,7 @@ StatusCode FakeMissingETTool::fakeMissingET(MissingETData *data, MissingETMuonDa
 
   float calculated_truth_metx = 0.;
   float calculated_truth_mety = 0.;
-  for (std::vector<const HepMC::GenParticle*>::const_iterator it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
+  for (auto it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
     calculated_truth_metx -= (*it)->momentum().px();
     calculated_truth_mety -= (*it)->momentum().py();
   }
@@ -794,12 +794,12 @@ StatusCode FakeMissingETTool::fakeMissingET(MissingETData *data, MissingETMuonDa
 	if ((*irec)->perp() < 40.0*GeV) {
 	  continue;
 	}
-	for (std::vector<const HepMC::GenParticle*>::const_iterator it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
+	for (auto it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
 	  if ((*it)->momentum().perp() < 10.0*GeV) {
 	    continue;
 	  }
 	  double deta = (*it)->momentum().eta() - (*irec)->eta();
-	  double dphi = fabs((*it)->momentum().phi() - (*irec)->phi());
+	  double dphi = std::fabs((*it)->momentum().phi() - (*irec)->phi());
 	  if (dphi > M_PI) dphi = fabs(dphi - 2*M_PI);
 	  double dR = sqrt(deta*deta + dphi*dphi);
 	  if (dR < 0.1) {
diff --git a/Reconstruction/MissingETPerformance/src/MissingETMuonData.cxx b/Reconstruction/MissingETPerformance/src/MissingETMuonData.cxx
index 014a9c3f5ea0e54a6327d69c2a42a2c6f8d19066..bf6ddcac7906934d7dcccf208d649eefcaf80157 100644
--- a/Reconstruction/MissingETPerformance/src/MissingETMuonData.cxx
+++ b/Reconstruction/MissingETPerformance/src/MissingETMuonData.cxx
@@ -110,9 +110,9 @@ StatusCode MissingETMuonData::retrieveMuons() {
 
     if (foundMCCOLL) {
       IsGenStable istab;
-      for (HepMC::GenEvent::particle_const_iterator it = (mcEventCol->at(0))->particles_begin(); it != (mcEventCol->at(0))->particles_end(); ++it) {
-	if ( istab(*it) && abs((*it)->pdg_id()) == 13) {
-	  m_truth_Muons.push_back(*it);
+      for (auto it: *(mcEventCol->at(0))) {
+	if ( istab(it) && std::abs(it->pdg_id()) == 13) {
+	  m_truth_Muons.push_back(it);
 	}//found truth muon
       }//loop over mc parts
     }//if foundMCCOLL
diff --git a/Reconstruction/MissingETPerformance/src/MuonTool.cxx b/Reconstruction/MissingETPerformance/src/MuonTool.cxx
index 6746f89c0283e4f28713016b8d1809fb88d8d8f7..30cdb5fdc3a062f7baaae24f9fc26962ab50ff96 100644
--- a/Reconstruction/MissingETPerformance/src/MuonTool.cxx
+++ b/Reconstruction/MissingETPerformance/src/MuonTool.cxx
@@ -405,7 +405,7 @@ StatusCode MuonTool::muonSetup(MissingETMuonData *muondata) {
     HepLorentzVector muonHLV = (*muonBoyItr)->hlv();
     truthMatched = false;
     jetMatched = false;
-    for (std::vector<const HepMC::GenParticle*>::const_iterator it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
+    for (auto it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
       HepLorentzVector t1((*it)->momentum().px(),(*it)->momentum().py(),(*it)->momentum().pz(),(*it)->momentum().e());
       if(t1.deltaR(muonHLV) < .02) truthMatched = true;
     }//end of truth loop
@@ -504,7 +504,7 @@ StatusCode MuonTool::muonSetup(MissingETMuonData *muondata) {
 	  truthMatched = false;
 	  jetMatched = false;
 
-	  for (std::vector<const HepMC::GenParticle*>::const_iterator it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
+	  for (auto it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
 	    HepLorentzVector t1((*it)->momentum().px(),(*it)->momentum().py(),(*it)->momentum().pz(),(*it)->momentum().e());
 	    if(t1.deltaR(caloMuonHLV) < .02) truthMatched = true;
 	  }//end of truth loop
@@ -562,7 +562,7 @@ StatusCode MuonTool::muonSetup(MissingETMuonData *muondata) {
     }
   }//end of the jet loop
  
-  for (std::vector<const HepMC::GenParticle*>::const_iterator it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
+  for (auto it = truth_muons.begin(); it != truth_muons.end(); ++it ) {
     if(fabs((*it)->momentum().eta()) < 2.5 && sqrt(pow((*it)->momentum().px(),2)+pow((*it)->momentum().py(),2))/GeV > 2.0) {
       m_h_MC_eta_dist_Truth->Fill((*it)->momentum().eta());
       m_h_MC_phi_dist_Truth->Fill((*it)->momentum().phi());
diff --git a/Simulation/G4Atlas/G4AtlasTests/src/MuonHitTestToolBase.cxx b/Simulation/G4Atlas/G4AtlasTests/src/MuonHitTestToolBase.cxx
index c3a4fc00f3bf3bd1ea49a151e0944afb6704ae8d..e72e3a44fb1c256fe0bc7d36ddea7b4de6ae5d5e 100644
--- a/Simulation/G4Atlas/G4AtlasTests/src/MuonHitTestToolBase.cxx
+++ b/Simulation/G4Atlas/G4AtlasTests/src/MuonHitTestToolBase.cxx
@@ -55,12 +55,11 @@ StatusCode MuonHitTestToolBase::executeCheckEventInfo()
   //    changed it to take the gen particle
   DataVector<HepMC::GenEvent>::const_iterator e;
   for (e=mcEvent->begin();e!=mcEvent->end(); e++) {
-    HepMC::GenEvent::particle_const_iterator p;
-    for (p= (**e).particles_begin(); p!= (**e).particles_end(); p++) {
-      if ( HepMC::barcode(*p)<200000) {
-        Amg::Vector3D temp_momentum((**p).momentum().px(),
-                                    (**p).momentum().py(),
-                                    (**p).momentum().pz());
+    for (auto p: (**e)) {
+      if ( HepMC::barcode(p)<200000) {
+        Amg::Vector3D temp_momentum(p->momentum().px(),
+                                    p->momentum().py(),
+                                    p->momentum().pz());
         m_direction = temp_momentum.unit();
         break;
       }
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/src/ISF_HitAnalysis.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/src/ISF_HitAnalysis.cxx
index 1c75ccd21158f5115158c802c4bd58a0f8e9e6e9..42882f7170e65f827c74147740dd5dd67b97fadd 100755
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/src/ISF_HitAnalysis.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/src/ISF_HitAnalysis.cxx
@@ -977,27 +977,27 @@ StatusCode ISF_HitAnalysis::execute()
      if(mcEvent->size()) {
        int particleIndex=0;
        int loopEnd = m_NtruthParticles;
-       if(loopEnd==-1) {
-         loopEnd = (*mcEvent->begin())->particles_size(); //is this the correct thing?
-       }
-       //std::cout <<"ISF_HitAnalysis: MC first truth event size: "<<(*mcEvent->begin())->particles_size()<<std::endl;
 #ifdef HEPMC3
-       for (auto part: *(*mcEvent->begin())) {
+       int particles_size=(*mcEvent->begin())->particles().size();
 #else
-       for (HepMC::GenEvent::particle_const_iterator it = (*mcEvent->begin())->particles_begin(); it != (*mcEvent->begin())->particles_end(); ++it) {
+       int particles_size=(*mcEvent->begin())->particles_size();
 #endif
-         ATH_MSG_DEBUG("Number truth particles="<<(*mcEvent->begin())->particles_size()<<" loopEnd="<<loopEnd);
+       if(loopEnd==-1) {
+         loopEnd = particles_size; //is this the correct thing?
+       }
+       for (auto part: *(*mcEvent->begin())) {
+         ATH_MSG_DEBUG("Number truth particles="<<particles_size<<" loopEnd="<<loopEnd);
          particleIndex++;
 
          if (particleIndex>loopEnd) break; //enough particles
 
          //UPDATE EXTRAPOLATION WITH ALGTOOL***********************************************
 
-         TFCSTruthState truth((*it)->momentum().px(),(*it)->momentum().py(),(*it)->momentum().pz(),(*it)->momentum().e(),(*it)->pdg_id());
+         TFCSTruthState truth(part->momentum().px(),part->momentum().py(),part->momentum().pz(),part->momentum().e(),part->pdg_id());
 
          //calculate the vertex
          TVector3 moment;
-         moment.SetXYZ((*it)->momentum().px(),(*it)->momentum().py(),(*it)->momentum().pz());
+         moment.SetXYZ(part->momentum().px(),part->momentum().py(),part->momentum().pz());
          TVector3 direction=moment.Unit();
 
          //does it hit the barrel or the EC?
@@ -1010,8 +1010,8 @@ StatusCode ISF_HitAnalysis::execute()
            direction*=m_CaloBoundaryZ/abs(direction.Z());
          }  
 
-         if((*it)->production_vertex()) {
-           truth.set_vertex((*it)->production_vertex()->position().x(), (*it)->production_vertex()->position().y(), (*it)->production_vertex()->position().z());
+         if((part)->production_vertex()) {
+           truth.set_vertex((part)->production_vertex()->position().x(), (part)->production_vertex()->position().y(), (part)->production_vertex()->position().z());
          } else {
            truth.set_vertex(direction.X(),direction.Y(),direction.Z());
            ATH_MSG_WARNING("No particle production vetext, use VERTEX from direction: x "<<direction.X()<<" y "<<direction.Y()<<" z "<<direction.Z());
@@ -1125,12 +1125,12 @@ StatusCode ISF_HitAnalysis::execute()
 
          //Amg::Vector3D mom((*it)->momentum().x(),(*it)->momentum().y(),(*it)->momentum().z());
 
-         m_truth_energy->push_back((*it)->momentum().e());
-         m_truth_px->push_back((*it)->momentum().px());
-         m_truth_py->push_back((*it)->momentum().py());
-         m_truth_pz->push_back((*it)->momentum().pz());
-         m_truth_pdg->push_back((*it)->pdg_id());
-         m_truth_barcode->push_back((*it)->barcode());
+         m_truth_energy->push_back((part)->momentum().e());
+         m_truth_px->push_back((part)->momentum().px());
+         m_truth_py->push_back((part)->momentum().py());
+         m_truth_pz->push_back((part)->momentum().pz());
+         m_truth_pdg->push_back((part)->pdg_id());
+         m_truth_barcode->push_back(HepMC::barcode(part));
 
        } //for mcevent
      } //mcevent size
diff --git a/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx b/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx
index e924de32f0911240f10a864d5540c2232ccecf61..8e38bf3a4f5e471d6fa9852a4c9a1ce40f32aed7 100755
--- a/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx
+++ b/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx
@@ -88,11 +88,7 @@ namespace JiveXML {
     for ( McEvtCollItr = McEvtColl->begin(); McEvtCollItr != McEvtColl->end(); ++McEvtCollItr){
 
       //Loop over particles in the event
-      HepMC::GenEvent::particle_const_iterator ParticleItr = (*McEvtCollItr)->particles_begin();
-      for ( ; ParticleItr!=(*McEvtCollItr)->particles_end(); ++ParticleItr ) {
-
-        //Get the particle
-        auto particle = (*ParticleItr);
+      for (auto particle:  *(*McEvtCollItr) ) {
         
         //Additional cuts for decaying particles
         if ( particle->end_vertex() ) {
diff --git a/Tracking/TrkTools/TrkTruthToTrack/src/TruthToTrack.cxx b/Tracking/TrkTools/TrkTruthToTrack/src/TruthToTrack.cxx
index ffe0bd8537fd409f4ae515873da2df36e3ba9def..8d7f147ff8dbd0de83304c2213c67977c65a5479 100755
--- a/Tracking/TrkTools/TrkTruthToTrack/src/TruthToTrack.cxx
+++ b/Tracking/TrkTools/TrkTruthToTrack/src/TruthToTrack.cxx
@@ -12,14 +12,11 @@
 
 #include "AtlasHepMC/GenParticle.h"
 #include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/SimpleVector.h"
 
 #include "xAODTruth/TruthParticle.h"
 #include "xAODTruth/TruthVertex.h"
 
-//#include "CLHEP/Geometry/Transform3D.h"
-
-//#include "TrkEventPrimitives/GlobalPosition.h"
-//#include "TrkEventPrimitives/GlobalMomentum.h"
 
 #include "HepPDT/ParticleDataTable.hh"
 //#include "TrkParameters/Perigee.h"
diff --git a/Tracking/TrkValidation/TrkValTools/src/GenParticleJetFinder.cxx b/Tracking/TrkValidation/TrkValTools/src/GenParticleJetFinder.cxx
index d50201d6da710b7c0abc8937cfd6f42658a9f533..f26bbb1c707d79f43008afb509b7b82c3419af75 100644
--- a/Tracking/TrkValidation/TrkValTools/src/GenParticleJetFinder.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/GenParticleJetFinder.cxx
@@ -59,7 +59,7 @@ std::vector< Trk::GenParticleJet >* Trk::GenParticleJetFinder::jetMCFinder(  std
 
   std::vector<Trk::GenParticleJet>::iterator iAtMin, jAtMin;
 
-  for( std::vector <const HepMC::GenParticle *>::iterator  i = GenStableCharged.begin() ; i < GenStableCharged.end();  i++){
+  for( auto  i = GenStableCharged.begin() ; i < GenStableCharged.end();  i++){
     totalEnergyFromTracks = totalEnergyFromTracks + (*i)->momentum().e();
     Trk::GenParticleJet tempPJ;
     tempPJ.addParticle( *i, int(i - GenStableCharged.begin()) );
@@ -119,9 +119,7 @@ std::vector< Trk::GenParticleJet >* Trk::GenParticleJetFinder::jetMCFinder(  std
         if (partsTemp.size()!=0) {
           
           std::vector<int>::iterator       ki=indexTemp.begin();
-		  for (std::vector<const HepMC::GenParticle* >::const_iterator k =partsTemp.begin();
-               k!=partsTemp.end(); ++k, ++ki) {
-
+          for (auto k =partsTemp.begin(); k!=partsTemp.end(); ++k, ++ki) {
             (*iAtMin).addParticle(*k,*ki);
           }
 		} else {
@@ -139,8 +137,7 @@ std::vector< Trk::GenParticleJet >* Trk::GenParticleJetFinder::jetMCFinder(  std
         if (partsTemp.size()!=0) {
 
           std::vector<int>::iterator       ki=indexTemp.begin();
-		  for (std::vector<const HepMC::GenParticle* >::const_iterator k =partsTemp.begin();
-               k!=partsTemp.end(); ++k, ++ki) {
+          for (auto k =partsTemp.begin(); k!=partsTemp.end(); ++k, ++ki) {
             //		  tempPartJet.addParticle(*k);
             (*jAtMin).addParticle(*k,*ki);
           }
diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/src/MCTrueSeedFinder.cxx b/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/src/MCTrueSeedFinder.cxx
index 0be4b3a4c3393721945a3307a449081d475f2cc4..2c8b3934c895150188c13f7927214e4e7192a453 100755
--- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/src/MCTrueSeedFinder.cxx
+++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderTools/src/MCTrueSeedFinder.cxx
@@ -145,9 +145,7 @@ namespace Trk
       
       //get "intensity" (scalar sum ot p_T^2)
       double sum_pt2(0.0);
-      HepMC::GenEvent::particle_const_iterator pitr;
-      for (pitr = myEvent->particles_begin(); pitr != myEvent->particles_end(); ++pitr ) {
-	HepMC::GenParticle *part = (*pitr);
+      for (auto part: *myEvent) {
 	if(!pass(part, mcEventCollection.cptr())) continue; //select stable charged particles
 	sum_pt2 += part->momentum().perp2();
       }