diff --git a/Calorimeter/CaloExample/CaloTests/src/MyAnalysis.cxx b/Calorimeter/CaloExample/CaloTests/src/MyAnalysis.cxx
index 9f9579ca75d5b21c2bacc0a63cc0b5ff9439813d..c4bf2e213dfcd773b08bfdd3c90861faec29dd36 100644
--- a/Calorimeter/CaloExample/CaloTests/src/MyAnalysis.cxx
+++ b/Calorimeter/CaloExample/CaloTests/src/MyAnalysis.cxx
@@ -629,9 +629,9 @@ namespace MyAnalysis {
                              e_true << " " << eta_true << " " << phi_true  );
                HepMC::GenVertex* vertex = part->end_vertex();
                if (vertex) {
-                  m_xconv = vertex->point3d().x();
-                  m_yconv = vertex->point3d().y();
-                  m_zconv = vertex->point3d().z();
+                  m_xconv = vertex->position().x();
+                  m_yconv = vertex->position().y();
+                  m_zconv = vertex->position().z();
                }
                else {
                   m_xconv=9999.;
@@ -640,9 +640,9 @@ namespace MyAnalysis {
                }
                vertex = part->production_vertex();
                if (vertex) { 
-                  m_xvert = vertex->point3d().x();
-                  m_yvert = vertex->point3d().y();
-                  m_zvert = vertex->point3d().z();
+                  m_xvert = vertex->position().x();
+                  m_yvert = vertex->position().y();
+                  m_zvert = vertex->position().z();
                }
                else {
                   m_xvert=9999.;
diff --git a/Generators/EvgenProdTools/src/TestHepMC.cxx b/Generators/EvgenProdTools/src/TestHepMC.cxx
index 0a9341a4497ecb9c7d75b724cd09568c099a0cb8..84cccb331e1cc8e522233ecec8ffb81d0c801d5b 100644
--- a/Generators/EvgenProdTools/src/TestHepMC.cxx
+++ b/Generators/EvgenProdTools/src/TestHepMC.cxx
@@ -348,8 +348,8 @@ StatusCode TestHepMC::execute() {
         for (; par != (*vitr)->particles_end(HepMC::parents); ++par) {
           ATH_MSG_WARNING("Outgoing particle : ");
           if (m_dumpEvent) (*par)->print();
-          ATH_MSG_WARNING("production vertex = " << (*par)->production_vertex()->point3d().x() << ", " << (*par)->production_vertex()->point3d().y() << ", " << (*par)->production_vertex()->point3d().z());
-          ATH_MSG_WARNING("end vertex        = " << (*par)->end_vertex()->point3d().x() << ", " << (*par)->end_vertex()->point3d().y() << ", " << (*par)->end_vertex()->point3d().z());
+          ATH_MSG_WARNING("production vertex = " << (*par)->production_vertex()->position().x() << ", " << (*par)->production_vertex()->position().y() << ", " << (*par)->production_vertex()->position().z());
+          ATH_MSG_WARNING("end vertex        = " << (*par)->end_vertex()->position().x() << ", " << (*par)->end_vertex()->position().y() << ", " << (*par)->end_vertex()->position().z());
           ATH_MSG_WARNING("parents info: ");
           if ((*par)->production_vertex()) {
             HepMC::GenVertex::particle_iterator p_parents = (*par)->production_vertex()->particles_begin(HepMC::parents);
@@ -376,18 +376,18 @@ StatusCode TestHepMC::execute() {
             m_h_px_dispVtxCheck->Fill((*par)->momentum().px()*1e-3);
             m_h_py_dispVtxCheck->Fill((*par)->momentum().py()*1e-3);
             m_h_pz_dispVtxCheck->Fill((*par)->momentum().pz()*1e-3);
-            m_h_vx_dispVtxCheck->Fill((*par)->end_vertex()->point3d().x());
-            m_h_vy_dispVtxCheck->Fill((*par)->end_vertex()->point3d().y());
-            m_h_vz_dispVtxCheck->Fill((*par)->end_vertex()->point3d().z());
-            m_h_vxprod_dispVtxCheck->Fill((*par)->production_vertex()->point3d().x());
-            m_h_vyprod_dispVtxCheck->Fill((*par)->production_vertex()->point3d().y());
-            m_h_vzprod_dispVtxCheck->Fill((*par)->production_vertex()->point3d().z());
-            double endvx = (*par)->end_vertex()->point3d().x();
-            double endvy = (*par)->end_vertex()->point3d().y();
-            double endvz = (*par)->end_vertex()->point3d().z();
-            double prodvx = (*par)->production_vertex()->point3d().x();
-            double prodvy = (*par)->production_vertex()->point3d().y();
-            double prodvz = (*par)->production_vertex()->point3d().z();
+            m_h_vx_dispVtxCheck->Fill((*par)->end_vertex()->position().x());
+            m_h_vy_dispVtxCheck->Fill((*par)->end_vertex()->position().y());
+            m_h_vz_dispVtxCheck->Fill((*par)->end_vertex()->position().z());
+            m_h_vxprod_dispVtxCheck->Fill((*par)->production_vertex()->position().x());
+            m_h_vyprod_dispVtxCheck->Fill((*par)->production_vertex()->position().y());
+            m_h_vzprod_dispVtxCheck->Fill((*par)->production_vertex()->position().z());
+            double endvx = (*par)->end_vertex()->position().x();
+            double endvy = (*par)->end_vertex()->position().y();
+            double endvz = (*par)->end_vertex()->position().z();
+            double prodvx = (*par)->production_vertex()->position().x();
+            double prodvy = (*par)->production_vertex()->position().y();
+            double prodvz = (*par)->production_vertex()->position().z();
             double enddis = sqrt(endvx*endvx + endvy*endvy + endvz*endvz);
             double proddis = sqrt(prodvx*prodvx + prodvy*prodvy + prodvz*prodvz);
             m_h_vtxend_dispVtxCheck->Fill(enddis);
diff --git a/Generators/GeneratorFilters/src/DecayLengthFilter.cxx b/Generators/GeneratorFilters/src/DecayLengthFilter.cxx
index 9b09eba03d626a20353ca66184deea14119a3f2e..97b2b84cc3f0f435a5dc4a17a184c13f03626d4f 100644
--- a/Generators/GeneratorFilters/src/DecayLengthFilter.cxx
+++ b/Generators/GeneratorFilters/src/DecayLengthFilter.cxx
@@ -42,7 +42,7 @@ StatusCode DecayLengthFilter::filterEvent() {
     // now look for displaced vertices
     if((*vtx_iter)->particles_in_size()!=1) continue; // chi decays have only one in particle (the chi)
     if((*vtx_iter)->particles_out_size()<2) continue; // we don't want replication entries
-    if((*vtx_iter)->point3d().x()==0 && (*vtx_iter)->point3d().y()==0 && (*vtx_iter)->point3d().z()==0) continue;
+    if((*vtx_iter)->position().x()==0 && (*vtx_iter)->position().y()==0 && (*vtx_iter)->position().z()==0) continue;
 
     HepMC::GenVertex::particles_in_const_iterator inParticle = (*vtx_iter)->particles_in_const_begin();
     if((*inParticle)->pdg_id()!=m_particle_id) continue;
@@ -58,8 +58,8 @@ StatusCode DecayLengthFilter::filterEvent() {
     HepMC::GenVertex* decayVertex = *vtx_iter;
     HepMC::GenVertex* creationVertex = (*inParticle)->production_vertex();
 
-    float distR = sqrt( pow(creationVertex->point3d().x() - decayVertex->point3d().x(),2) + pow(creationVertex->point3d().y() - decayVertex->point3d().y(),2) );
-    float distZ = creationVertex->point3d().z() - decayVertex->point3d().z();
+    float distR = sqrt( pow(creationVertex->position().x() - decayVertex->position().x(),2) + pow(creationVertex->position().y() - decayVertex->position().y(),2) );
+    float distZ = creationVertex->position().z() - decayVertex->position().z();
     ATH_MSG_DEBUG("distR " << distR << ", distZ " << distZ);
 
     //accept all events with at least one of the two decays in the orimeter
diff --git a/InnerDetector/InDetValidation/InDetPerformanceRTT/src/IDStandardPerformance.cxx b/InnerDetector/InDetValidation/InDetPerformanceRTT/src/IDStandardPerformance.cxx
index a74bc02f2ad6c408864f85d3cea2bb7ab0992f72..7724afc457b6f758ca52daadfc808ede3c2f9b41 100755
--- a/InnerDetector/InDetValidation/InDetPerformanceRTT/src/IDStandardPerformance.cxx
+++ b/InnerDetector/InDetValidation/InDetPerformanceRTT/src/IDStandardPerformance.cxx
@@ -2928,9 +2928,9 @@ IDStandardPerformance::MakeTrackPlots(const DataVector<Trk::Track>* trks,
     bool singPart = false;
     // The event has a signal process vertex unless it was generated as single particles
     if (genEvent->signal_process_vertex() != 0){
-      primaryVtx[0] = genEvent->signal_process_vertex()->point3d().x();
-      primaryVtx[1] = genEvent->signal_process_vertex()->point3d().y();
-      primaryVtx[2] = genEvent->signal_process_vertex()->point3d().z();
+      primaryVtx[0] = genEvent->signal_process_vertex()->position().x();
+      primaryVtx[1] = genEvent->signal_process_vertex()->position().y();
+      primaryVtx[2] = genEvent->signal_process_vertex()->position().z();
     }
     if (msgLvl(MSG::VERBOSE)) msg() <<"JFA Signal process vertex perp =  "<< primaryVtx.perp() << ", z = " << primaryVtx.z() << endmsg;
         //---
@@ -3021,7 +3021,7 @@ IDStandardPerformance::MakeTrackPlots(const DataVector<Trk::Track>* trks,
       m_truthvtx_R->Fill(truthvtx_R);
       m_truthvtx_z->Fill(primaryVtx.z());
 
-      Amg::Vector3D  startVertex(particle->production_vertex()->point3d().x(),particle->production_vertex()->point3d().y(),particle->production_vertex()->point3d().z());
+      Amg::Vector3D  startVertex(particle->production_vertex()->position().x(),particle->production_vertex()->position().y(),particle->production_vertex()->position().z());
       // Detector paper cuts: impact parameter <2 and barcode reasonable
       // JFA (Sep 18, 2008): replace IP cut by cut on difference between primary and track start vertex
       // If (startVertex.perp()>2) isPrimary=false;
@@ -3041,9 +3041,9 @@ IDStandardPerformance::MakeTrackPlots(const DataVector<Trk::Track>* trks,
 
       if (particle->end_vertex() != 0) {
 
-	Amg::Vector3D  endVertex(particle->end_vertex()->point3d().x(),
-			      particle->end_vertex()->point3d().y(),
-			      particle->end_vertex()->point3d().z());
+	Amg::Vector3D  endVertex(particle->end_vertex()->position().x(),
+			      particle->end_vertex()->position().y(),
+			      particle->end_vertex()->position().z());
 	if (endVertex.perp()<400 && fabs(endVertex.z())<2300) isPrimary=false;
 	if((startVertex - endVertex).mag() < 500) isSecondary=false;
 
diff --git a/InnerDetector/InDetValidation/InDetRecStatistics/src/TrackStatHelper.cxx b/InnerDetector/InDetValidation/InDetRecStatistics/src/TrackStatHelper.cxx
index 99cde320b17ac02bfbe73f3b769827bdf8fb3a85..1ddfad33204ca764499074340748ce8f9aeae81a 100755
--- a/InnerDetector/InDetValidation/InDetRecStatistics/src/TrackStatHelper.cxx
+++ b/InnerDetector/InDetValidation/InDetRecStatistics/src/TrackStatHelper.cxx
@@ -883,18 +883,18 @@ int InDet::TrackStatHelper::ClassifyParticle( const HepMC::GenParticle *particle
   if (particle->production_vertex()){
 
     // primary vertex inside innermost layer?
-    HepGeom::Point3D<double>	startVertex(particle->production_vertex()->point3d().x(),
-			    particle->production_vertex()->point3d().y(),
-			    particle->production_vertex()->point3d().z());
+    HepGeom::Point3D<double>	startVertex(particle->production_vertex()->position().x(),
+			    particle->production_vertex()->position().y(),
+			    particle->production_vertex()->position().z());
     if ( fabs(startVertex.perp()) < m_cuts.maxRStartPrimary 
 	 && fabs(startVertex.z()) < m_cuts.maxZStartPrimary) { 
       if (particle->end_vertex() == 0) {  
 	primary=true;
       }
       else {
-	HepGeom::Point3D<double> endVertex(particle->end_vertex()->point3d().x(), 
-			     particle->end_vertex()->point3d().y(),
-			     particle->end_vertex()->point3d().z());
+	HepGeom::Point3D<double> endVertex(particle->end_vertex()->position().x(), 
+			     particle->end_vertex()->position().y(),
+			     particle->end_vertex()->position().z());
 	if (  endVertex.perp()         > m_cuts.minREndPrimary 
 	      || fabs(startVertex.z()) > m_cuts.minZEndPrimary){
 	  primary=true;
@@ -910,9 +910,9 @@ int InDet::TrackStatHelper::ClassifyParticle( const HepMC::GenParticle *particle
 	secondary=true;
       }
       else {
-	HepGeom::Point3D<double> endVertex(particle->end_vertex()->point3d().x(),
-			     particle->end_vertex()->point3d().y(),
-			     particle->end_vertex()->point3d().z());
+	HepGeom::Point3D<double> endVertex(particle->end_vertex()->position().x(),
+			     particle->end_vertex()->position().y(),
+			     particle->end_vertex()->position().z());
 
 	if (endVertex.perp()       	> m_cuts.minREndSecondary
 	    || fabs(endVertex.z())	> m_cuts.minZEndSecondary) {
diff --git a/InnerDetector/InDetValidation/InDetSegmentDriftCircleAssValidation/src/SegmentDriftCircleAssValidation.cxx b/InnerDetector/InDetValidation/InDetSegmentDriftCircleAssValidation/src/SegmentDriftCircleAssValidation.cxx
index dbb95fe0bc57aaa88a6a21cdb8278e295e66a7a4..988783d4463c8485b292bc64072981184d309a47 100644
--- a/InnerDetector/InDetValidation/InDetSegmentDriftCircleAssValidation/src/SegmentDriftCircleAssValidation.cxx
+++ b/InnerDetector/InDetValidation/InDetSegmentDriftCircleAssValidation/src/SegmentDriftCircleAssValidation.cxx
@@ -528,9 +528,9 @@ std::list<int> InDet::SegmentDriftCircleAssValidation::kine
 
     // Radius cut
     //
-    Point3D<double>   v(pa->production_vertex()->point3d().x(),
-		       pa->production_vertex()->point3d().y(),
-		       pa->production_vertex()->point3d().z());
+    Point3D<double>   v(pa->production_vertex()->position().x(),
+		       pa->production_vertex()->position().y(),
+		       pa->production_vertex()->position().z());
     double           r = sqrt(v.x()*v.x()+v.y()*v.y());
     if( r < m_rmin || r > m_rmax) continue;
     
@@ -585,9 +585,9 @@ std::list<PRD_MultiTruthCollection::const_iterator> InDet::SegmentDriftCircleAss
 
     // Radius cut
     //
-    Point3D<double>   v(pa->production_vertex()->point3d().x(),
-		       pa->production_vertex()->point3d().y(),
-		       pa->production_vertex()->point3d().z());
+    Point3D<double>   v(pa->production_vertex()->position().x(),
+		       pa->production_vertex()->position().y(),
+		       pa->production_vertex()->position().z());
     double           r = sqrt(v.x()*v.x()+v.y()*v.y());
     if( r < m_rmin || r > m_rmax) continue;
 
diff --git a/InnerDetector/InDetValidation/InDetTrackClusterAssValidation/src/TrackClusterAssValidation.cxx b/InnerDetector/InDetValidation/InDetTrackClusterAssValidation/src/TrackClusterAssValidation.cxx
index 950bdbb6c21ca299b2f87ab7e399256d090a200f..7390ae89d70308737d7303b61997b4707802c932 100755
--- a/InnerDetector/InDetValidation/InDetTrackClusterAssValidation/src/TrackClusterAssValidation.cxx
+++ b/InnerDetector/InDetValidation/InDetTrackClusterAssValidation/src/TrackClusterAssValidation.cxx
@@ -1291,8 +1291,8 @@ int InDet::TrackClusterAssValidation::kine
 
     // Radius cut
     //
-    double           vx = pa->production_vertex()->point3d().x();
-    double           vy = pa->production_vertex()->point3d().y();
+    double           vx = pa->production_vertex()->position().x();
+    double           vy = pa->production_vertex()->position().y();
     double           r = std::sqrt(vx*vx+vy*vy);
     if( r < m_rmin || r > m_rmax) continue;
 
@@ -1445,9 +1445,9 @@ bool InDet::TrackClusterAssValidation::noReconstructedParticles(const InDet::Tra
       double           px =  pa->momentum().px();
       double           py =  pa->momentum().py();
       double           pz =  pa->momentum().pz();
-      double           vx = pa->production_vertex()->point3d().x();
-      double           vy = pa->production_vertex()->point3d().y();
-      double           vz = pa->production_vertex()->point3d().z();
+      double           vx = pa->production_vertex()->position().x();
+      double           vy = pa->production_vertex()->position().y();
+      double           vz = pa->production_vertex()->position().z();
       double           pt = std::sqrt(px*px+py*py);
       double           t  = std::atan2(pt,pz);
       double           ra =-std::log(std::tan(.5*t));
diff --git a/LArCalorimeter/LArG4/LArG4H6SD/src/RadLenNtuple.cc b/LArCalorimeter/LArG4/LArG4H6SD/src/RadLenNtuple.cc
index 5ea7d1d6ee3cfa05921deb3f4214a6d9c6882eb0..2d2532bc52585164ef3b9b8aa2333a12a052bdbb 100644
--- a/LArCalorimeter/LArG4/LArG4H6SD/src/RadLenNtuple.cc
+++ b/LArCalorimeter/LArG4/LArG4H6SD/src/RadLenNtuple.cc
@@ -40,7 +40,7 @@ namespace G4UA
     if (m_mcEvtColl.isValid()) {
       McEventCollection::const_iterator iEvt = m_mcEvtColl->begin();
       HepMC::GenEvent::particle_const_iterator p = (*iEvt)->particles_begin();
-      m_xcoord = (*p)->production_vertex()->point3d().x();
+      m_xcoord = (*p)->production_vertex()->position().x();
     }
    
     ntupleSvc()->writeRecord("/NTUPLES/FILE1/RadLenNtuple/radlen").ignore();
diff --git a/LArCalorimeter/LArG4/LArG4Validation/src/SingleTrackValidation.cxx b/LArCalorimeter/LArG4/LArG4Validation/src/SingleTrackValidation.cxx
index e6692d79ed50bb09caf3d9d3f36778710523dfb6..f1a14f0091b6134f03d635860170032bed7b7b85 100755
--- a/LArCalorimeter/LArG4/LArG4Validation/src/SingleTrackValidation.cxx
+++ b/LArCalorimeter/LArG4/LArG4Validation/src/SingleTrackValidation.cxx
@@ -331,9 +331,9 @@ StatusCode SingleTrackValidation::execute() {
 			      theParticle->momentum().py(),
 			      theParticle->momentum().pz(),
 			      theParticle->momentum().e());
-    Point3D<double>       origin(theParticle->production_vertex()->point3d().x(),
-			    theParticle->production_vertex()->point3d().y(),
-			    theParticle->production_vertex()->point3d().z()); 
+    Point3D<double>       origin(theParticle->production_vertex()->position().x(),
+			    theParticle->production_vertex()->position().y(),
+			    theParticle->production_vertex()->position().z()); 
     double           charge = theParticle->pdg_id() > 0 ? particleData->charge() : - particleData->charge();
     // Put Eta and Phi into the Ntuple
     m_c->phi = theParticle->momentum().phi();
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62004Algs/src/Other/RadLenNtuple.cc b/LArCalorimeter/LArGeoModel/LArGeoH62004Algs/src/Other/RadLenNtuple.cc
index 4836548783126d94438e38f4258f817a4ac8bcbb..1272ae323ade4962e083f64be5df1cd229f8cd47 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62004Algs/src/Other/RadLenNtuple.cc
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62004Algs/src/Other/RadLenNtuple.cc
@@ -59,7 +59,7 @@ void RadLenNtuple::EndOfEventAction(const G4Event* anEvent)
      if (! m_storeGate->retrieve(m_mcEvtColl, "GEN_EVENT").isFailure() ) {
 	 McEventCollection::const_iterator iEvt = m_mcEvtColl->begin(); 
 	 HepMC::GenEvent::particle_const_iterator p = (*iEvt)->particles_begin();
-	 m_xcoord = (*p)->production_vertex()->point3d().x();  
+	 m_xcoord = (*p)->production_vertex()->position().x();  
      }
   }
    
diff --git a/MuonSpectrometer/MuonCalib/MuonCalibAlgs/src/MuonCalibAlg.cxx b/MuonSpectrometer/MuonCalib/MuonCalibAlgs/src/MuonCalibAlg.cxx
index b1c0071b18cf47a850536414de668ebe5681ed1b..a4ab1cc39c8602f3be8af8aa44decb4e572bd38f 100644
--- a/MuonSpectrometer/MuonCalib/MuonCalibAlgs/src/MuonCalibAlg.cxx
+++ b/MuonSpectrometer/MuonCalib/MuonCalibAlgs/src/MuonCalibAlg.cxx
@@ -504,9 +504,9 @@ namespace MuonCalib {
 				 (*particle)->momentum().e());
 	      Amg::Vector3D  pos(999.,999.,999.);
 	      if ((*particle)->production_vertex()) { 
-		pos[0] = (*particle)->production_vertex()->point3d().x();
-		pos[1] = (*particle)->production_vertex()->point3d().y();
-		pos[2] = (*particle)->production_vertex()->point3d().z();
+		pos[0] = (*particle)->production_vertex()->position().x();
+		pos[1] = (*particle)->production_vertex()->position().y();
+		pos[2] = (*particle)->production_vertex()->position().z();
 	      }
 	      Amg::Vector3D mom( (*particle)->momentum().x(), (*particle)->momentum().y(), (*particle)->momentum().z() );
 	      double kinEnergy( p[3] ) ;
diff --git a/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx b/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx
index c06588f9d161f2a9815df82524db0ee118e5bdd9..97e4e01a4a952be4b86900aa28da1d45a74040b7 100644
--- a/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx
+++ b/MuonSpectrometer/MuonGeoModelTest/src/MuonHitRelocation.cxx
@@ -161,9 +161,9 @@ StatusCode MuonHitRelocation::execute() {
     for (HepMC::GenEvent::particle_const_iterator p= (**e).particles_begin();
 	 p!= (**e).particles_end(); p++) {
 
-        float xv = (**p).production_vertex()->point3d().x();
-        float yv = (**p).production_vertex()->point3d().y();
-        float zv = (**p).production_vertex()->point3d().z();
+        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();
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonDecayTruthTrajectoryBuilder.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonDecayTruthTrajectoryBuilder.cxx
index 98bce9069103df74c9a788d465a0581cd51a4329..3596323e1edb03f7b325b1bc195d904028ebc129 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonDecayTruthTrajectoryBuilder.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonDecayTruthTrajectoryBuilder.cxx
@@ -75,9 +75,9 @@ namespace Muon {
 	const HepMC::GenParticle& par = *pit->cptr(); 
 	if(msgLvl(MSG::DEBUG))  {
 	  msg(MSG::DEBUG) << " PDG ID " << par.pdg_id() << " barcode: " << par.barcode() << " pt: " << par.momentum().perp();
-	  if( par.production_vertex() ) msg(MSG::DEBUG) << " vertices prod: r " << par.production_vertex()->point3d().perp() 
-							<< " z " << par.production_vertex()->point3d().z();
-	  if( par.end_vertex() ) msg(MSG::DEBUG) << " end: r " << par.end_vertex()->point3d().perp() << " z " << par.end_vertex()->point3d().z();
+	  if( par.production_vertex() ) msg(MSG::DEBUG) << " vertices prod: r " << par.production_vertex()->position().perp() 
+							<< " z " << par.production_vertex()->position().z();
+	  if( par.end_vertex() ) msg(MSG::DEBUG) << " end: r " << par.end_vertex()->position().perp() << " z " << par.end_vertex()->position().z();
 	  msg(MSG::DEBUG) << endmsg;
 	}
       }
@@ -109,9 +109,9 @@ namespace Muon {
         
 	  if( msgLvl(MSG::DEBUG) ){
 	    msg(MSG::DEBUG) << " PDG ID " << par.pdg_id() << " barcode: " << par.barcode() <<  " pt: " << par.momentum().perp(); 
-	    if( par.production_vertex() ) msg(MSG::DEBUG) << " vertices prod: r " << par.production_vertex()->point3d().perp() 
-							  << " z " << par.production_vertex()->point3d().z();
-	    if( par.end_vertex() ) msg(MSG::DEBUG) << " end: r " << par.end_vertex()->point3d().perp() << " z " << par.end_vertex()->point3d().z();
+	    if( par.production_vertex() ) msg(MSG::DEBUG) << " vertices prod: r " << par.production_vertex()->position().perp() 
+							  << " z " << par.production_vertex()->position().z();
+	    if( par.end_vertex() ) msg(MSG::DEBUG) << " end: r " << par.end_vertex()->position().perp() << " z " << par.end_vertex()->position().z();
 	    msg(MSG::DEBUG) << endmsg;
 	  }
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx
index d6ee1f09556854954780f7e55205b3302cbe4d25..0ccd831d3080d74ca98db65355472ec8d78c5b3f 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx
@@ -202,8 +202,8 @@ namespace Muon {
                                 << truthTrajectory->size() << " fs barcode " << barcode << " pdg " << truthTrajectory->front()->pdg_id()
                                 << " p " << truthTrajectory->front()->momentum().rho();
 	      if( truthTrajectory->front()->production_vertex() ) {
-                msg(MSG::VERBOSE) << " vertex: r  " << truthTrajectory->front()->production_vertex()->point3d().perp() 
-                                  << " z " << truthTrajectory->front()->production_vertex()->point3d().z();
+                msg(MSG::VERBOSE) << " vertex: r  " << truthTrajectory->front()->production_vertex()->position().perp() 
+                                  << " z " << truthTrajectory->front()->production_vertex()->position().z();
               }
 	      msg(MSG::VERBOSE) << endmsg;
 	    }
@@ -217,8 +217,8 @@ namespace Muon {
               if( msgLvl(MSG::VERBOSE) && code != barcode ) {
                 msg(MSG::VERBOSE) << "  secondary barcode: " << code << " pdg " << (*pit)->pdg_id() 
                                   << " p " << (*pit)->momentum().rho();
-                if( (*pit)->production_vertex() ) msg(MSG::VERBOSE) << " vertex: r  " << (*pit)->production_vertex()->point3d().perp() 
-                                                                    << " z " << (*pit)->production_vertex()->point3d().z();
+                if( (*pit)->production_vertex() ) msg(MSG::VERBOSE) << " vertex: r  " << (*pit)->production_vertex()->position().perp() 
+                                                                    << " z " << (*pit)->production_vertex()->position().z();
                 
                 msg(MSG::VERBOSE) << endmsg;
 		// sanity check 
diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonTrackPerformance/src/MuonTrackPerformanceAlg.cxx b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonTrackPerformance/src/MuonTrackPerformanceAlg.cxx
index 3ab935bcc97c1b5a01493f82262c7cb686b21c0c..3cc23625cd9f15479bbec988051b3623e4006253 100644
--- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonTrackPerformance/src/MuonTrackPerformanceAlg.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonTrackPerformance/src/MuonTrackPerformanceAlg.cxx
@@ -447,9 +447,9 @@ bool MuonTrackPerformanceAlg::handleTrackTruth( const TrackCollection& trackColl
       const HepMC::GenParticle* mother   = getMother(*truthTrack.truthTrajectory);
       if( mother ) {
 	trackData->motherPdg = mother->pdg_id();
-	if( mother->end_vertex() ) trackData->productionVertex = new Amg::Vector3D(mother->end_vertex()->point3d().x(),
-											 mother->end_vertex()->point3d().y(),
-											 mother->end_vertex()->point3d().z()); 
+	if( mother->end_vertex() ) trackData->productionVertex = new Amg::Vector3D(mother->end_vertex()->position().x(),
+											 mother->end_vertex()->position().y(),
+											 mother->end_vertex()->position().z()); 
       }
       const HepMC::GenParticle* original = getInitialState(*truthTrack.truthTrajectory);
       if( original ) {
@@ -528,9 +528,9 @@ bool MuonTrackPerformanceAlg::handleTrackTruth( const TrackCollection& trackColl
       const HepMC::GenParticle* mother   = getMother(*tit->second.truthTrajectory);
       if( mother ) {
 	trackData->motherPdg = mother->pdg_id();
-	if( mother->end_vertex() ) trackData->productionVertex = new Amg::Vector3D(mother->end_vertex()->point3d().x(),
-											mother->end_vertex()->point3d().y(),
-											mother->end_vertex()->point3d().z()); 
+	if( mother->end_vertex() ) trackData->productionVertex = new Amg::Vector3D(mother->end_vertex()->position().x(),
+											mother->end_vertex()->position().y(),
+											mother->end_vertex()->position().z()); 
       }
       const HepMC::GenParticle* original = getInitialState(*tit->second.truthTrajectory);
       if( original ) {
@@ -1488,7 +1488,7 @@ bool MuonTrackPerformanceAlg::isSecondary( const Muon::IMuonTrackTruthTool::Trut
 
 bool MuonTrackPerformanceAlg::isSecondary( const TruthTrajectory& truthTrajectory ) const {
   const HepMC::GenParticle* mother   = getMother(truthTrajectory);
-  if( mother && mother->end_vertex() && mother->end_vertex()->point3d().perp() > 100. ) return true;
+  if( mother && mother->end_vertex() && mother->end_vertex()->position().perp() > 100. ) return true;
   return false;
 }
 
diff --git a/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx b/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx
index 8d2ff5070fa0f5a903485adc1d669864b75c9c9c..0fd5a9b033285e2326ced73d98863b8c9bc16bcb 100755
--- a/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonSimHitToPrdTest/src/RPC_SimHitToPrdCBNTAlgo.cxx
@@ -469,9 +469,9 @@ StatusCode RPC_SimHitToPrdCBNTAlgo::doMCtruth()
 // the following lines give troubles  - protect them 
 	if ((**p).production_vertex())
 	  {
-	    xv = (**p).production_vertex()->point3d().x();
-	    yv = (**p).production_vertex()->point3d().y();
-	    zv = (**p).production_vertex()->point3d().z();
+	    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();
diff --git a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TruthTrackGetterTool.cxx b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TruthTrackGetterTool.cxx
index 9d270b25c12ee5539b441e2979dd0bfab257458e..2b68d1d0201bfc9e72f9817c916cfb82408804e8 100644
--- a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TruthTrackGetterTool.cxx
+++ b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TruthTrackGetterTool.cxx
@@ -142,15 +142,15 @@ bool TruthTrackGetterTool::selectParticle(const  HepMC::GenParticle* particle)
   }
 
   // require track origin inside ID: relaxed
-  if ( fabs(particle->production_vertex()->point3d().perp()) > m_maxRAll ||
-       fabs(particle->production_vertex()->point3d().z())    > m_maxZAll ){
+  if ( fabs(particle->production_vertex()->position().perp()) > m_maxRAll ||
+       fabs(particle->production_vertex()->position().z())    > m_maxZAll ){
     return false;
   }
 
   // require track origin inside beam pipe (primary): optional
   if ( m_keepOnlyPrimaryParticles &&
-       ( fabs(particle->production_vertex()->point3d().perp()) > m_maxRPrimary ||
-	 fabs(particle->production_vertex()->point3d().z())    > m_maxZPrimary ) ){
+       ( fabs(particle->production_vertex()->position().perp()) > m_maxRPrimary ||
+	 fabs(particle->production_vertex()->position().z())    > m_maxZPrimary ) ){
     return false;
   }
 
diff --git a/Reconstruction/iPat/iPatTruthTrajectory/src/TruthParameters.cxx b/Reconstruction/iPat/iPatTruthTrajectory/src/TruthParameters.cxx
index b822043388d4a5b582d9f172c99e2f44fbb1d678..fbf21e33f52bb9b2ddb22fa593415fd6a207a54f 100755
--- a/Reconstruction/iPat/iPatTruthTrajectory/src/TruthParameters.cxx
+++ b/Reconstruction/iPat/iPatTruthTrajectory/src/TruthParameters.cxx
@@ -67,9 +67,9 @@ TruthParameters::trackFromParticle(const HepMC::GenParticle& particle)
     if (! m_particleDataTable->particle(std::abs(pdgCode))) return;
 
     // fill intersection, qOverP
-    Amg::Vector3D position( particle.production_vertex()->point3d().x(),
-			    particle.production_vertex()->point3d().y(),
-			    particle.production_vertex()->point3d().z());
+    Amg::Vector3D position( particle.production_vertex()->position().x(),
+			    particle.production_vertex()->position().y(),
+			    particle.production_vertex()->position().z());
     m_qOverP			=  1./std::sqrt(particle.momentum().px()*particle.momentum().px() +
 						particle.momentum().py()*particle.momentum().py() +
 						particle.momentum().pz()*particle.momentum().pz());
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/InputConverter.cxx b/Simulation/ISF/ISF_Core/ISF_Services/src/InputConverter.cxx
index 9005d9b755b76ab13fe00fda4976ffb470b87227..e5558cf6454cb1c1e7c442c1e6af820282d3cb7a 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/src/InputConverter.cxx
+++ b/Simulation/ISF/ISF_Core/ISF_Services/src/InputConverter.cxx
@@ -238,8 +238,8 @@ ISF::InputConverter::convertParticle(HepMC::GenParticle* genPartPtr, EBC_EVCOLL
     return nullptr;
   }
 
-  const auto& pVertexPos(pVertex->point3d());
-  const Amg::Vector3D pos(pVertexPos.x(), pVertexPos.y(), pVertexPos.z());
+
+  const Amg::Vector3D pos(pVertex->position().x(), pVertex->position().y(), pVertex->position().z());
   const auto& pMomentum(genPart.momentum());
   const Amg::Vector3D mom(pMomentum.px(), pMomentum.py(), pMomentum.pz());
   const double pMass = this->getParticleMass(genPart);
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 47196005f259836fda178097feb3e92ce5e53694..d2f2584b8a6a7147ed252be56c8d3a77bd75ea9a 100755
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/src/ISF_HitAnalysis.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/src/ISF_HitAnalysis.cxx
@@ -1007,7 +1007,7 @@ StatusCode ISF_HitAnalysis::execute()
          }  
 
          if((*it)->production_vertex()) {
-           truth.set_vertex((*it)->production_vertex()->point3d().x(), (*it)->production_vertex()->point3d().y(), (*it)->production_vertex()->point3d().z());
+           truth.set_vertex((*it)->production_vertex()->position().x(), (*it)->production_vertex()->position().y(), (*it)->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());
diff --git a/Simulation/SimuJobTransforms/python/SimBeamSpotShapeFilter.py b/Simulation/SimuJobTransforms/python/SimBeamSpotShapeFilter.py
index 8ba7c87ae5d29c837dda086d699d0aafd16b11ab..decf093f423c8c7a51e4224a308bd9b00256671c 100644
--- a/Simulation/SimuJobTransforms/python/SimBeamSpotShapeFilter.py
+++ b/Simulation/SimuJobTransforms/python/SimBeamSpotShapeFilter.py
@@ -173,9 +173,9 @@ class SimBeamSpotShapeFilter( PyAthena.AthFilterAlgorithm ):
         # get Signal Vertex
         sigVtx  = genEvent.signal_process_vertex()
 
-        deltaZ = initialPosZ - sigVtx.point3d().z()
-        deltaX = initialPosX + deltaZ * initialTiltXZ - sigVtx.point3d().x()
-        deltaY = initialPosY + deltaZ * initialTiltYZ - sigVtx.point3d().y()
+        deltaZ = initialPosZ - sigVtx.position().z()
+        deltaX = initialPosX + deltaZ * initialTiltXZ - sigVtx.position().x()
+        deltaY = initialPosY + deltaZ * initialTiltYZ - sigVtx.position().y()
         # Calculate prob of keeping this event
         weight =  self.calcScale( initialSigmaX, targetSigmaX, deltaX) \
                   * self.calcScale( initialSigmaY, targetSigmaY, deltaY) \
diff --git a/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx b/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx
index 33a6199aff06423bdff0b2ff91722c93d2b37515..88bfa0f291be4586779d05230acb46021c418bf8 100755
--- a/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx
+++ b/Simulation/TruthJiveXML/src/TruthTrackRetriever.cxx
@@ -99,7 +99,7 @@ namespace JiveXML {
           //Reject particles that fail the pt cut
           if ( particle->momentum().perp() < m_MinPtCut) continue ; 
           //Reject particles that fail the minimum end-vertex cut
-          if (particle->end_vertex()->point3d().perp() < m_MinRhoCut ) continue ;
+          if (particle->end_vertex()->position().perp() < m_MinRhoCut ) continue ;
         }
 
         //Get basic parameters (eta, phi, pt, ...)
@@ -114,9 +114,9 @@ namespace JiveXML {
         HepMC::GenVertex* vertex =  particle->production_vertex();
         if (vertex) {
           rhoVertex.push_back(DataType( vertex->point3d().r()*Gaudi::Units::mm/Gaudi::Units::cm ));
-          float vtxPhi = vertex->point3d().phi();
+          float vtxPhi = vertex->position().phi();
           phiVertex.push_back(DataType( (vtxPhi<0)? vtxPhi+=2*M_PI : vtxPhi ));
-          zVertex.push_back(DataType( vertex->point3d().z()*Gaudi::Units::mm/Gaudi::Units::cm )); 
+          zVertex.push_back(DataType( vertex->position().z()*Gaudi::Units::mm/Gaudi::Units::cm )); 
         } else {
           rhoVertex.push_back(DataType( 0. ));
           phiVertex.push_back(DataType( 0. ));
@@ -126,9 +126,9 @@ namespace JiveXML {
         vertex =  particle->end_vertex();
         if ( vertex ) {
          rhoEndVertex.push_back(DataType(vertex->point3d().r()*Gaudi::Units::mm/Gaudi::Units::cm));
-         float vtxPhi = vertex->point3d().phi();
+         float vtxPhi = vertex->position().phi();
          phiEndVertex.push_back(DataType( (vtxPhi<0)? vtxPhi+=2*M_PI : vtxPhi ));
-         zEndVertex.push_back(DataType(vertex->point3d().z()*Gaudi::Units::mm/Gaudi::Units::cm)); 
+         zEndVertex.push_back(DataType(vertex->position().z()*Gaudi::Units::mm/Gaudi::Units::cm)); 
         } else {
          rhoEndVertex.push_back(DataType( 0. ));
          phiEndVertex.push_back(DataType( 0. ));
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorToolDebug.cxx b/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorToolDebug.cxx
index 427ce5b22ce05645c7b1f14889e29bae6b6cf140..8f830ead06b819f4414d4e65def4a8f258538082 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorToolDebug.cxx
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorToolDebug.cxx
@@ -1003,8 +1003,7 @@ const std::vector<HepPoint3D> Trk::SimpleAmbiguityProcessorTool::positionsOfBrem
     for ( ; outgoingParticle != (*vertex)->particles_out_const_end(); ++outgoingParticle ){
 
       if ( (*outgoingParticle)->pdg_id() == 22 ){
-	//positionsOfVertices.push_back( (*vertex)->point3d() );
-	HepPoint3D photonPoint3d((*vertex)->point3d().x(),(*vertex)->point3d().y(),(*vertex)->point3d().z());
+	HepPoint3D photonPoint3d((*vertex)->position().x(),(*vertex)->position().y(),(*vertex)->position().z());
 	positionsOfVertices.push_back( photonPoint3d );
       }
     }
diff --git a/Tracking/TrkTruthTracks/TrkTruthTrackTools/src/TruthTrackBuilder.cxx b/Tracking/TrkTruthTracks/TrkTruthTrackTools/src/TruthTrackBuilder.cxx
index 137be011f28317801ba428939f8d4c9ce0d89834..252418b051dc5f0d70683c37fa0d934369d72562 100644
--- a/Tracking/TrkTruthTracks/TrkTruthTrackTools/src/TruthTrackBuilder.cxx
+++ b/Tracking/TrkTruthTracks/TrkTruthTrackTools/src/TruthTrackBuilder.cxx
@@ -140,9 +140,9 @@ Trk::Track* Trk::TruthTrackBuilder::createTrack(const PRD_TruthTrajectory& prdTr
     if ( m_minNdof > 0 &&  prdTraj.nDoF < m_minNdof) return 0;
     // get the startPosition : math library madness as usual
     Amg::Vector3D startPos = genPart->production_vertex() ?
-      Amg::Vector3D(genPart->production_vertex()->point3d().x(),
-                            genPart->production_vertex()->point3d().y(),
-		    genPart->production_vertex()->point3d().z()) : Amg::Vector3D(0.,0.,0.);
+      Amg::Vector3D(genPart->production_vertex()->position().x(),
+                            genPart->production_vertex()->position().y(),
+		    genPart->production_vertex()->position().z()) : Amg::Vector3D(0.,0.,0.);
     Amg::Vector3D startMom(genPart->momentum().x(),
                                  genPart->momentum().y(),
                                  genPart->momentum().z());
diff --git a/Tracking/TrkValidation/TrkValTools/src/InDetPrimaryConversionSelector.cxx b/Tracking/TrkValidation/TrkValTools/src/InDetPrimaryConversionSelector.cxx
index f9c3dbf630e4caa60880235ce2e37febc6743d56..d7260d0d05e8f4a711774f2d4394ee6212d2e615 100644
--- a/Tracking/TrkValidation/TrkValTools/src/InDetPrimaryConversionSelector.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/InDetPrimaryConversionSelector.cxx
@@ -89,8 +89,8 @@ Trk::InDetPrimaryConversionSelector::selectGenSignal (const McEventCollection* S
       } else {
       
         // 2) require track inside ID - relaxed definition including decays of neutrals (secondaries)
-        if ( fabs(particle->production_vertex()->point3d().perp()) > m_maxRStartAll ||
-             fabs(particle->production_vertex()->point3d().z())    > m_maxZStartAll ) continue;
+        if ( fabs(particle->production_vertex()->position().perp()) > m_maxRStartAll ||
+             fabs(particle->production_vertex()->position().z())    > m_maxZStartAll ) continue;
 
         int   pdgCode         = particle->pdg_id();
         if (abs(pdgCode) > 1000000000 ) continue; // ignore nuclei from hadronic interactions
diff --git a/Tracking/TrkValidation/TrkValTools/src/InDetReconstructableSelector.cxx b/Tracking/TrkValidation/TrkValTools/src/InDetReconstructableSelector.cxx
index ef31b115dd69786a796cc9e31c56824557e8b807..e67b8c1e00a1af2dc6f1fc4b322c334b6dd4cfee 100644
--- a/Tracking/TrkValidation/TrkValTools/src/InDetReconstructableSelector.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/InDetReconstructableSelector.cxx
@@ -95,13 +95,13 @@ Trk::InDetReconstructableSelector::selectGenSignal (const McEventCollection* Sim
       } else {
       
         // 2) require track inside ID - relaxed definition including decays of neutrals (secondaries)
-        if ( fabs(particle->production_vertex()->point3d().perp()) > m_maxRStartAll ||
-             fabs(particle->production_vertex()->point3d().z())    > m_maxZStartAll ) continue;
+        if ( fabs(particle->production_vertex()->position().perp()) > m_maxRStartAll ||
+             fabs(particle->production_vertex()->position().z())    > m_maxZStartAll ) continue;
 
         // 3) if jobOption, require strict definition of particles from within beam pipe
         if ( m_selectPrimariesOnly && 
-             ( fabs(particle->production_vertex()->point3d().perp()) > m_maxRStartPrimary ||
-               fabs(particle->production_vertex()->point3d().z())    > m_maxZStartPrimary ) ) continue;
+             ( fabs(particle->production_vertex()->position().perp()) > m_maxRStartPrimary ||
+               fabs(particle->production_vertex()->position().z())    > m_maxZStartPrimary ) ) continue;
 
         int   pdgCode         = particle->pdg_id();
         if (abs(pdgCode) > 1000000000 ) continue; // ignore nuclei from hadronic interactions
diff --git a/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx b/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx
index a0e5117a52c11d4dad11869580cb5f95eb68d66e..37a3d874199e470449cd24746b9036a8f7f78e1e 100644
--- a/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx
@@ -305,8 +305,8 @@ StatusCode Trk::TruthNtupleTool::writeTruthData (
             m_mc_qOverP  = truePerigee->parameters()[Trk::qOverP];
             m_mc_qOverPt = (sin( m_mc_theta ) != 0.) ? m_mc_qOverP / sin( m_mc_theta ) : 0.;
             m_mc_eta     = truePerigee->eta();
-            m_mc_prodR   = fabs(genParticle->production_vertex()->point3d().perp());
-            m_mc_prodz   = fabs(genParticle->production_vertex()->point3d().z());
+            m_mc_prodR   = fabs(genParticle->production_vertex()->position().perp());
+            m_mc_prodz   = fabs(genParticle->production_vertex()->position().z());
 
             for (unsigned int trackColIndex = 0; trackColIndex < truthData[index].truthToTrackIndices.size(); ++trackColIndex ) {
                 (*(m_TrackLinkIndex[trackColIndex])) = truthData[index].truthToTrackIndices[trackColIndex];
diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/TrigTrackSelector_old.h b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/TrigTrackSelector_old.h
index e268db093df76cb1630a242bb195d613657046e2..d5ba9af1086ffed93622462eb5f951f8944a72d8 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/TrigTrackSelector_old.h
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/TrigTrackSelector_old.h
@@ -367,9 +367,9 @@ public:
     double xp[3] = { 0, 0, 0 };
 
     if ( track->genParticle()->production_vertex() ) { 
-      xp[0] = track->genParticle()->production_vertex()->point3d().x();
-      xp[1] = track->genParticle()->production_vertex()->point3d().y();
-      xp[2] = track->genParticle()->production_vertex()->point3d().z();
+      xp[0] = track->genParticle()->production_vertex()->position().x();
+      xp[1] = track->genParticle()->production_vertex()->position().y();
+      xp[2] = track->genParticle()->production_vertex()->position().z();
     }
 
 
@@ -381,9 +381,9 @@ public:
     double xd[3] = { 0, 0, 0 };
 
     if ( track->genParticle()->end_vertex() ) { 
-      xd[0] = track->genParticle()->end_vertex()->point3d().x();
-      xd[1] = track->genParticle()->end_vertex()->point3d().y();
-      xd[2] = track->genParticle()->end_vertex()->point3d().z();
+      xd[0] = track->genParticle()->end_vertex()->position().x();
+      xd[1] = track->genParticle()->end_vertex()->position().y();
+      xd[2] = track->genParticle()->end_vertex()->position().z();
     }
 
     double rp = std::sqrt( xp[0]*xp[0] + xp[1]*xp[1] ); 
diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx
index 5bee4c365e1b8c0cca81501f994aa73e23491cf7..6ddae1704249c1dc71559dbd921f2845c92d8b2d 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/src/TrigTrackSelector.cxx
@@ -337,9 +337,9 @@ TIDA::Track* TrigTrackSelector::makeTrack( const TruthParticle* track, unsigned
     double xp[3] = { 0, 0, 0 };
 
     if ( track->genParticle()->production_vertex() ) { 
-      xp[0] = track->genParticle()->production_vertex()->point3d().x();
-      xp[1] = track->genParticle()->production_vertex()->point3d().y();
-      xp[2] = track->genParticle()->production_vertex()->point3d().z();
+      xp[0] = track->genParticle()->production_vertex()->position().x();
+      xp[1] = track->genParticle()->production_vertex()->position().y();
+      xp[2] = track->genParticle()->production_vertex()->position().z();
     }
 
     static bool tfirst = true;
@@ -357,9 +357,9 @@ TIDA::Track* TrigTrackSelector::makeTrack( const TruthParticle* track, unsigned
     double xd[3] = { 0, 0, 0 };
 
     if ( track->genParticle()->end_vertex() ) { 
-      xd[0] = track->genParticle()->end_vertex()->point3d().x();
-      xd[1] = track->genParticle()->end_vertex()->point3d().y();
-      xd[2] = track->genParticle()->end_vertex()->point3d().z();
+      xd[0] = track->genParticle()->end_vertex()->position().x();
+      xd[1] = track->genParticle()->end_vertex()->position().y();
+      xd[2] = track->genParticle()->end_vertex()->position().z();
     }
 
     double rp = std::sqrt( xp[0]*xp[0] + xp[1]*xp[1] ); 
diff --git a/Trigger/TrigFake/src/FakeLvl1RoIfromKine.cxx b/Trigger/TrigFake/src/FakeLvl1RoIfromKine.cxx
index 0acd0236b4a6a129fca3c73865d85aad8cccd1db..674f6f6543257860971b54ee74686a8154d65d5b 100755
--- a/Trigger/TrigFake/src/FakeLvl1RoIfromKine.cxx
+++ b/Trigger/TrigFake/src/FakeLvl1RoIfromKine.cxx
@@ -296,17 +296,17 @@ std::vector<FakeRoI> * FakeLvl1RoIfromKine::createRoIfromMC() {
 	qq = 0.;
       } else if (pdgid > 0) { qq = -1; } else { qq = 1; };
       Trajectory track((*p)->momentum().px(), (*p)->momentum().py(), (*p)->momentum().pz(),
-		       (*p)->production_vertex()->point3d().x(),
-		       (*p)->production_vertex()->point3d().y(),
-		       (*p)->production_vertex()->point3d().z(), qq);
+		       (*p)->production_vertex()->position().x(),
+		       (*p)->production_vertex()->position().y(),
+		       (*p)->production_vertex()->position().z(), qq);
 
       ATH_MSG_VERBOSE(" Forming EMROI (" << m_emRoiLabel << ") from kine ID " << pdgid << " charge " << qq);
       ATH_MSG_VERBOSE(" Address " << std::hex << (*p) << std::dec);
       ATH_MSG_VERBOSE(" px " << (*p)->momentum().px() <<
                       " py " <<  (*p)->momentum().py() << " pz " << (*p)->momentum().pz());
-      ATH_MSG_VERBOSE(" vx " << (*p)->production_vertex()->point3d().x() <<
-                      " vy " <<  (*p)->production_vertex()->point3d().y() <<
-                      " vz " << (*p)->production_vertex()->point3d().z());
+      ATH_MSG_VERBOSE(" vx " << (*p)->production_vertex()->position().x() <<
+                      " vy " <<  (*p)->production_vertex()->position().y() <<
+                      " vz " << (*p)->production_vertex()->position().z());
       ATH_MSG_VERBOSE(" pt " << (*p)->momentum().perp() <<
                       " phi " << (*p)->momentum().phi() << " eta " << track.eta());
       ATH_MSG_VERBOSE(" Closest approach to origin : d0 " << track.d0() <<
@@ -339,9 +339,9 @@ std::vector<FakeRoI> * FakeLvl1RoIfromKine::createRoIfromMC() {
 
 
       Trajectory track((*p)->momentum().px(), (*p)->momentum().py(), (*p)->momentum().pz(),
-		       (*p)->production_vertex()->point3d().x(),
-		       (*p)->production_vertex()->point3d().y(),
-		       (*p)->production_vertex()->point3d().z(), qq);
+		       (*p)->production_vertex()->position().x(),
+		       (*p)->production_vertex()->position().y(),
+		       (*p)->production_vertex()->position().z(), qq);
 
 #define RCAL 147.
 #define ZCAL 380.
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TruthPoint.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TruthPoint.cxx
index 70edeb9e5d5b802b28fd4a96d171899f3ff850ec..012211733f0b5484592349a0dfa7f3a83868a1fd 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TruthPoint.cxx
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TruthPoint.cxx
@@ -83,7 +83,7 @@ void AscObj_TruthPoint::buildShapes(SoSeparator*&shape_simple, SoSeparator*&shap
   else
   {
 	  // Eigen migration
-    p1 = Amg::Vector3D(m_d->genVertex->point3d().x(),m_d->genVertex->point3d().y(),m_d->genVertex->point3d().z());
+    p1 = Amg::Vector3D(m_d->genVertex->position().x(),m_d->genVertex->position().y(),m_d->genVertex->position().z());
     u = Amg::Vector3D(m_d->genParticle->momentum().px(),m_d->genParticle->momentum().py(),m_d->genParticle->momentum().pz()).unit();
   }
 
@@ -129,7 +129,7 @@ QStringList AscObj_TruthPoint::clicked()
       return l;
     }
 
-    Amg::Vector3D p(m_d->genVertex->point3d().x(),m_d->genVertex->point3d().y(),m_d->genVertex->point3d().z());
+    Amg::Vector3D p(m_d->genVertex->position().x(),m_d->genVertex->position().y(),m_d->genVertex->position().z());
     Amg::Vector3D mom(m_d->genParticle->momentum().px(),m_d->genParticle->momentum().py(),m_d->genParticle->momentum().pz());
 
     l << "Gen Particle vertex";
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TruthTrack.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TruthTrack.cxx
index fd60fe0f9d46c89255d81aa46440f792dd0e5fc5..4376dc3d7eb489a46fb652fdee8cbed5bcb49e6b 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TruthTrack.cxx
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TruthTrack.cxx
@@ -60,7 +60,7 @@ public:
     double absmom(mom.mag());
     if (absmom<=0)
       return 0;//Fixme: message!
-    Amg::Vector3D pos(v->point3d().x(),v->point3d().y(),v->point3d().z());
+    Amg::Vector3D pos(v->position().x(),v->position().y(),v->position().z());
     return new Trk::Perigee(0.,0.,mom.phi(), mom.theta(), charge/absmom, pos);
    }
 
@@ -75,7 +75,7 @@ public:
 //     double absmom(mom.mag());
 //     if (absmom<=0)
 //       return 0;//Fixme: message!
-    Amg::Vector3D pos(v->point3d().x(),v->point3d().y(),v->point3d().z());
+    Amg::Vector3D pos(v->position().x(),v->position().y(),v->position().z());
 
     Amg::Translation3D amgtranslation(pos.x(),pos.y(),pos.z());
     Amg::Transform3D* amgTransf = new Amg::Transform3D(amgtranslation * Amg::RotationMatrix3D::Identity());
@@ -268,10 +268,10 @@ bool TrackHandle_TruthTrack::hasVertexAtIR(const double& rmaxsq, const double& z
   if (!v)
     return false;
 
-  double x(v->point3d().x()), y(v->point3d().y());
+  double x(v->position().x()), y(v->position().y());
   if (x*x+y*y>rmaxsq)
     return false;
-  return fabs(v->point3d().z())<=zmax;
+  return fabs(v->position().z())<=zmax;
 }
 
 //____________________________________________________________________