diff --git a/Tracking/TrkValidation/TrkValTools/TrkValTools/BasicValTrkParticleNtupleTool.h b/Tracking/TrkValidation/TrkValTools/TrkValTools/BasicValTrkParticleNtupleTool.h
index aa3497d30e6fce292726c2d0c35245c3621b5dbd..c8bf1012c2574c38fd08f347bf50ad7d42438827 100644
--- a/Tracking/TrkValidation/TrkValTools/TrkValTools/BasicValTrkParticleNtupleTool.h
+++ b/Tracking/TrkValidation/TrkValTools/TrkValTools/BasicValTrkParticleNtupleTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef Trk_BasicValTrkParticleNtupleTool_h
@@ -9,6 +9,8 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "TrkValInterfaces/IValidationNtupleTool.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "xAODEventInfo/EventInfo.h"
 #include <vector>
 
 class TTree;
@@ -163,6 +165,8 @@ private:
     mutable unsigned long    m_idHitPattern;                  //!< bit word carrying information about hit layers
      
     static const float  s_errorEntry;        //!< error entry costant
+
+    SG::ReadHandleKey<xAOD::EventInfo>    m_evt  {this, "EvtInfo", "EventInfo", "EventInfo name"};
 };
 
 
diff --git a/Tracking/TrkValidation/TrkValTools/TrkValTools/JetTruthNtupleTool.h b/Tracking/TrkValidation/TrkValTools/TrkValTools/JetTruthNtupleTool.h
index 50c3ea365e252e3d8762ae2cd4fcb45c4ab36ade..fd7e6682fd74d71f7d57cd6afc98afaaf3afca1a 100644
--- a/Tracking/TrkValidation/TrkValTools/TrkValTools/JetTruthNtupleTool.h
+++ b/Tracking/TrkValidation/TrkValTools/TrkValTools/JetTruthNtupleTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -16,6 +16,8 @@
 
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "xAODEventInfo/EventInfo.h"
 
 #include "TrkValInterfaces/IJetTruthNtupleTool.h"
 #include <vector>
@@ -72,6 +74,8 @@ private:
     mutable float       m_mc_jetThrust;
     mutable float       m_mc_jetEnergy;
     mutable float       m_mc_jetMomentum;
+
+    SG::ReadHandleKey<xAOD::EventInfo>    m_evt  {this, "EvtInfo", "EventInfo", "EventInfo name"};
 };
 
 
diff --git a/Tracking/TrkValidation/TrkValTools/TrkValTools/TrackDiff.h b/Tracking/TrkValidation/TrkValTools/TrkValTools/TrackDiff.h
index 019f3121bed7c91314bf21809b47b4e94a3fb027..1804399f4dff2d1ee7db3244dd61012d7e3aa182 100755
--- a/Tracking/TrkValidation/TrkValTools/TrkValTools/TrackDiff.h
+++ b/Tracking/TrkValidation/TrkValTools/TrkValTools/TrackDiff.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -19,9 +19,10 @@
 #include "TrkValInterfaces/ITrackDiff.h"
 #include "TrkEventPrimitives/TrackStateDefs.h"
 #include "TrkValEvent/TrackStateData.h"
-//#include <vector>
 #include "AthContainers/DataVector.h"
-//class INTupleSvc;
+#include "StoreGate/ReadHandleKey.h"
+#include "xAODEventInfo/EventInfo.h"
+
 class AtlasDetectorID;
 class TTree;
 
@@ -153,6 +154,8 @@ private:
     mutable int m_PRD_MismatchesSum[Trk::TrackState::NumberOfMeasurementTypes];
     mutable int m_trackSum;
 
+    SG::ReadHandleKey<xAOD::EventInfo>    m_evt  {this, "EvtInfo", "EventInfo", "EventInfo name"};
+
     /** extract data from a Trk::Track into a list of Trk::TrackStateData */
     DataVector< const Trk::TrackStateData >* extractDataFromTrack( const Trk::Track& ) const;
 
diff --git a/Tracking/TrkValidation/TrkValTools/TrkValTools/TruthNtupleTool.h b/Tracking/TrkValidation/TrkValTools/TrkValTools/TruthNtupleTool.h
index 37f940a5e7325b1b7c818321368aeb142696b618..56e817ab62550492ac392974696683947e19ec7a 100644
--- a/Tracking/TrkValidation/TrkValTools/TrkValTools/TruthNtupleTool.h
+++ b/Tracking/TrkValidation/TrkValTools/TrkValTools/TruthNtupleTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -17,6 +17,8 @@
 
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "xAODEventInfo/EventInfo.h"
 
 #include "TrkValInterfaces/ITruthNtupleTool.h"
 #include "TrkValInterfaces/ITrackTruthClassifier.h"
@@ -99,6 +101,8 @@ private:
     mutable std::vector< std::vector<TH1D*> >   m_truthTrackCounts;
 
     mutable std::vector<const Trk::ITrackTruthClassifier*> m_trackTruthClassifiers;     //!< the truth classifiers
+
+    SG::ReadHandleKey<xAOD::EventInfo>    m_evt  {this, "EvtInfo", "EventInfo", "EventInfo name"};
 };
 
 
diff --git a/Tracking/TrkValidation/TrkValTools/src/BasicValTrkParticleNtupleTool.cxx b/Tracking/TrkValidation/TrkValTools/src/BasicValTrkParticleNtupleTool.cxx
index c953054a7040536fcb3148b458a5b6bbe1c2e34f..d784fc15a18013c930d3b7c38861554af679d981 100644
--- a/Tracking/TrkValidation/TrkValTools/src/BasicValTrkParticleNtupleTool.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/BasicValTrkParticleNtupleTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -13,16 +13,11 @@
 
 
 #include "TTree.h"
-//Gaudi
 #include "GaudiKernel/ITHistSvc.h"
 
 #include "EventPrimitives/EventPrimitivesHelpers.h"
 #include "TrkParticleBase/TrackParticleBase.h"
-// #include "TrkParameters/Perigee.h"
 #include "TrkTrackSummary/TrackSummary.h"
-
-#include "EventInfo/EventInfo.h"
-#include "EventInfo/EventID.h"
 #include "TrkValTools/BasicValTrkParticleNtupleTool.h"
 #include <bitset>
 
@@ -85,6 +80,8 @@ Trk::BasicValTrkParticleNtupleTool::~BasicValTrkParticleNtupleTool() {}
 // initialize
 StatusCode Trk::BasicValTrkParticleNtupleTool::initialize() {
 
+  ATH_CHECK( m_evt.initialize() );
+
     // create ntuple tree
   if (m_bookNewNtuple) {
     // ---------------------------
@@ -92,7 +89,7 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::initialize() {
     ITHistSvc *tHistSvc;
     StatusCode sc =  service("THistSvc", tHistSvc);
     if (sc.isFailure()) {
-        msg(MSG::ERROR) << "Unable to retrieve pointer to THistSvc" << endmsg;
+        ATH_MSG_ERROR("Unable to retrieve pointer to THistSvc");
         return sc;
     }
 
@@ -105,7 +102,7 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::initialize() {
     std::string fullNtupleName =  "/"+m_ntupleFileName+"/"+m_ntupleDirName+"/"+m_ntupleTreeName;
     sc = tHistSvc->regTree(fullNtupleName, m_nt);
     if (sc.isFailure()) {
-        msg(MSG::ERROR) << "Unable to register TTree : " << fullNtupleName << endmsg;
+        ATH_MSG_ERROR("Unable to register TTree : " << fullNtupleName);
         return sc;
     }
     // add the ntuple branches (this function has to be called by the client of this tool, if m_bookNewNtuple is set to false...)
@@ -121,7 +118,7 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::initialize() {
 ///////////////////////////////////////
 StatusCode Trk::BasicValTrkParticleNtupleTool::finalize() {
 
-  msg(MSG::DEBUG) << "start finalize() in " << name() << endmsg;
+  ATH_MSG_DEBUG("start finalize() in " << name());
   if (m_nt) {
     delete m_nt;
     m_nt = 0;
@@ -181,7 +178,7 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::addNtupleItems( TTree* tree ) con
 StatusCode Trk::BasicValTrkParticleNtupleTool::writeTrackParticleData (
      const Trk::TrackParticleBase& track)  const {
     if (!m_nt) {
-        msg(MSG::ERROR) << "writeTrackParticleData(...) can only be used, if property BookNewNtuple is set to true"  << endmsg;
+        ATH_MSG_ERROR("writeTrackParticleData(...) can only be used, if property BookNewNtuple is set to true" );
         return StatusCode::FAILURE;
     }
     StatusCode sc;
@@ -202,37 +199,36 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::fillTrackParticleData (
 
   // ---------------------------------------
     // detect new event, reset TrackParticle counter if new event
-    const EventInfo* eventInfo;
-    if ((evtStore()->retrieve(eventInfo)).isFailure()) {
-      msg(MSG::WARNING) << "Could not retrieve event info" << endmsg;
+  SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+    if (!evt.isValid()) {
+      ATH_MSG_WARNING("Could not retrieve event info");
       m_runNumber   = (int)s_errorEntry;
       m_eventNumber = (int)s_errorEntry;
       return StatusCode::FAILURE;
       }
   
-   const EventID* myEventID=eventInfo->event_ID();
-   if (m_lastEventNumber!=myEventID->event_number()) {
+   if (m_lastEventNumber!=evt->eventNumber()) {
         // we have a new event, reset TrackParticleID:
         m_TrackIDcounter = 0;
-        m_lastEventNumber = myEventID->event_number();
+        m_lastEventNumber = evt->eventNumber();
       }
     m_TrackIDcounter++;
     m_TrackID = (unsigned char)m_TrackIDcounter;
-    m_eventNumber = myEventID->event_number();
-    m_runNumber   = myEventID->run_number(); 
+    m_eventNumber = evt->eventNumber();
+    m_runNumber   = evt->runNumber(); 
    
     ATH_MSG_VERBOSE ("Event: " << m_eventNumber << ", Run: "<< m_runNumber  << " TrackID: " << m_TrackID);
             
     //----------------------------------------------
     // fill track parameters in ntuple
     const Trk::Perigee* perpars = track.perigee();
-    if (perpars != NULL && fillTrkParticlePerigee(perpars).isFailure())  msg(MSG::WARNING) << "Perigee parameters could not be written to ntuple" << endmsg;
+    if (perpars != NULL && fillTrkParticlePerigee(perpars).isFailure())  ATH_MSG_WARNING("Perigee parameters could not be written to ntuple");
     
     const Trk::TrackSummary* summary = track.trackSummary();
-    if((!summary) || fillTrkParticleSummary(summary).isFailure()) msg(MSG::WARNING) << "Summary parameters could not be written to ntuple" << endmsg;
+    if((!summary) || fillTrkParticleSummary(summary).isFailure()) ATH_MSG_WARNING("Summary parameters could not be written to ntuple");
 
     const Trk::FitQuality* fitQuality = track.fitQuality();
-    if((!fitQuality) || fillFitQualityData(fitQuality).isFailure() ) msg(MSG::WARNING) << "Fit Quality data could not be written to ntuple" << endmsg;
+    if((!fitQuality) || fillFitQualityData(fitQuality).isFailure() ) ATH_MSG_WARNING("Fit Quality data could not be written to ntuple");
 
     return StatusCode::SUCCESS;
 }
@@ -246,7 +242,7 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::fillTrkParticlePerigee(const Trk:
   ATH_MSG_VERBOSE ("in fillTrackPerigee");
 
     if (!perigee) {
-        msg(MSG::WARNING) << "Something is wrong - track has no perigee at all!" << endmsg;
+        ATH_MSG_WARNING("Something is wrong - track has no perigee at all!");
         m_Rec_d0    = 0;
         m_Rec_z0    = 0;
         m_Rec_phi0  = 0;
@@ -287,7 +283,7 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::fillTrkParticleSummary(const Trk:
   ATH_MSG_VERBOSE ("in fillTrackSummary");
 
     if (!summary) {
-        msg(MSG::WARNING) << "Something is wrong - track has no summary at all!" << endmsg;
+        ATH_MSG_WARNING("Something is wrong - track has no summary at all!");
         m_numberOfPixelHits  = 0;
         m_numberOfSCTHits    = 0;
 
@@ -321,14 +317,14 @@ StatusCode Trk::BasicValTrkParticleNtupleTool::fillTrkParticleSummary(const Trk:
 
 StatusCode Trk::BasicValTrkParticleNtupleTool::fillFitQualityData(const Trk::FitQuality* fitQuality) const {
   if (!fitQuality) {
-        msg(MSG::WARNING) << "Something is wrong - track has no fit quality data !!" << endmsg;
+        ATH_MSG_WARNING("Something is wrong - track has no fit quality data !!");
         m_chi2  = 0;
                    
         return StatusCode::FAILURE;
       }
 
   if(fitQuality->numberDoF() == 0) {
-                                    msg(MSG::WARNING) << "Number of DOF is zero !! Could not normalize chi2 " << endmsg;
+                                    ATH_MSG_WARNING("Number of DOF is zero !! Could not normalize chi2 ");
 				    return StatusCode::FAILURE;
                                     }
   
diff --git a/Tracking/TrkValidation/TrkValTools/src/EventToTrackLinkNtupleTool.cxx b/Tracking/TrkValidation/TrkValTools/src/EventToTrackLinkNtupleTool.cxx
index e895b76abc2540a7fef29df6fd95cb55a3ca64c5..7ececf2ac1fe9cfddf9ed4d8cb0198bf8ce7ba9c 100644
--- a/Tracking/TrkValidation/TrkValTools/src/EventToTrackLinkNtupleTool.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/EventToTrackLinkNtupleTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -12,16 +12,9 @@
 ///////////////////////////////////////////////////////////////////
 
 #include "TTree.h"
-//Gaudi
-// #include "GaudiKernel/SmartDataPtr.h"
 #include "GaudiKernel/ITHistSvc.h"
-// #include "GaudiKernel/ISvcLocator.h"
-// #include "GaudiKernel/PropertyMgr.h"
 #include "TrkValTools/EventToTrackLinkNtupleTool.h"
 #include "CommissionEvent/ComTime.h"
-#include "EventInfo/EventInfo.h"
-#include "EventInfo/EventID.h"
-#include "EventInfo/TriggerInfo.h"
 
   const std::string Trk::EventToTrackLinkNtupleTool::s_trackTypeName = "Trk::Track";
   const std::string Trk::EventToTrackLinkNtupleTool::s_trkParticleTypeName = "Rec::TrackParticle";
diff --git a/Tracking/TrkValidation/TrkValTools/src/JetTruthNtupleTool.cxx b/Tracking/TrkValidation/TrkValTools/src/JetTruthNtupleTool.cxx
index a98b8e7b2699ce0f8a65a85cf2c3a93890c0a92b..51a1d14ff97fff63c89d1b7628f45afbeddd35f3 100644
--- a/Tracking/TrkValidation/TrkValTools/src/JetTruthNtupleTool.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/JetTruthNtupleTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -9,11 +9,8 @@
 // (c) ATLAS Detector software
 ///////////////////////////////////////////////////////////////////
 
-//Gaudi
-// #include "GaudiKernel/SmartDataPtr.h"
 #include "GaudiKernel/ITHistSvc.h"
 #include "GaudiKernel/ISvcLocator.h"
-// #include "GaudiKernel/PropertyMgr.h"
 
 // Trk
 #include "TrkValTools/JetTruthNtupleTool.h"
@@ -22,9 +19,6 @@
 // Truth
 #include "TrkTruthData/TrackTruth.h"
 
-#include "EventInfo/EventInfo.h"
-#include "EventInfo/EventID.h"
-
 #include "HepMC/GenParticle.h"
 
 #include <TGraphAsymmErrors.h>
@@ -62,6 +56,8 @@ Trk::JetTruthNtupleTool::~JetTruthNtupleTool() {}
 // initialize
 StatusCode Trk::JetTruthNtupleTool::initialize() {
 
+  ATH_CHECK( m_evt.initialize() );
+
     // ---------------------------
     // retrieve pointer to THistSvc
     ITHistSvc *tHistSvc;
@@ -125,22 +121,17 @@ StatusCode Trk::JetTruthNtupleTool::writeJetTruthData (
                 const int& nTruthRecordsAtCurrentEvent
                 //                const std::vector<unsigned int>& /*particleToJetIndex*/ 
                 ) const {
-
-  StatusCode sc;
-
   ATH_MSG_VERBOSE ( "in writeJetTruthData(...)" );
 
   // ---------------------------------------
   // fill event data
-  const EventInfo* eventInfo = nullptr;
-  sc = evtStore()->retrieve(eventInfo);
-  if (sc.isFailure()) {
+  SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+  if (!evt.isValid()) {
     ATH_MSG_WARNING ( "Could not retrieve event info" );
+    return StatusCode::FAILURE;
   }
-  const EventID* myEventID=eventInfo->event_ID();
-
-  m_runNumber=myEventID->run_number();
-  m_eventNumber=myEventID->event_number();
+  m_runNumber=evt->runNumber();
+  m_eventNumber=evt->eventNumber();
 
   for (std::vector<Trk::GenParticleJet>::const_iterator itJet = jets.begin();
        itJet < jets.end(); ++itJet ) {
diff --git a/Tracking/TrkValidation/TrkValTools/src/TrackDiff.cxx b/Tracking/TrkValidation/TrkValTools/src/TrackDiff.cxx
index 79ca8c0ae8ee6fc821e1d427a64d38a6a323e1b8..beb3919dd431d550d2fcdfd504fade23fb819ded 100755
--- a/Tracking/TrkValidation/TrkValTools/src/TrackDiff.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/TrackDiff.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -29,8 +29,6 @@
 #include "TrkTrack/Track.h"
 
 #include "AtlasDetDescr/AtlasDetectorID.h"
-#include "EventInfo/EventInfo.h"
-#include "EventInfo/EventID.h"
 
 // constructor
 Trk::TrackDiff::TrackDiff(
@@ -106,6 +104,8 @@ Trk::TrackDiff::~TrackDiff() {}
 // initialize
 StatusCode Trk::TrackDiff::initialize() {
 
+  ATH_CHECK( m_evt.initialize() );
+
     StatusCode sc;
     if (m_writeNtuple) {
         // ---------------------------
@@ -232,22 +232,18 @@ StatusCode Trk::TrackDiff::diff (
         const Trk::Track& referenceTrack,
         const Trk::Track& comparedTrack ) const {
 
-    StatusCode sc;
-
     ATH_MSG_VERBOSE ( "in diff(trk, trk)" );
     resetVariables();
 
     // ---------------------------------------
     // fill event data
-    const EventInfo* eventInfo;
-    sc = evtStore()->retrieve(eventInfo);
-    if (sc.isFailure()) {
+    SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+    if (!evt.isValid()) {
       ATH_MSG_ERROR ("Could not retrieve event info");
+      return StatusCode::FAILURE;
     }
-    const EventID* myEventID=eventInfo->event_ID();
-
 
-    m_eventNumber = myEventID->event_number();
+    m_eventNumber = evt->eventNumber();
     if (referenceTrack.perigeeParameters()) {
         m_trackPhi = referenceTrack.perigeeParameters()->parameters()[Trk::phi0];
         m_trackEta = referenceTrack.perigeeParameters()->eta();
diff --git a/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.cxx b/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.cxx
index 099f8f8450a8aee5ca1b4c3fc88c5570ee18eb1b..aa3fc54c05767ce0e8151d585a7dcb98597b1ec8 100644
--- a/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -21,8 +21,6 @@
 #include "TrkTrack/TrackInfo.h"
 #include "TrkTrackSummary/TrackSummary.h"
 #include "TrkFitterUtils/ProtoTrackStateOnSurface.h"
-#include "EventInfo/EventInfo.h"
-#include "EventInfo/EventID.h"
 
 // constructor
 Trk::TrackInformationNtupleTool::TrackInformationNtupleTool(
@@ -57,7 +55,7 @@ Trk::TrackInformationNtupleTool::~TrackInformationNtupleTool() {}
 ///////////////////////////////////////
 StatusCode Trk::TrackInformationNtupleTool::initialize() {
 
-  ATH_MSG_DEBUG ("nothing specific initialized in " << name()); 
+  ATH_CHECK( m_evt.initialize() );
   return StatusCode::SUCCESS;
 }
 
@@ -103,25 +101,24 @@ StatusCode Trk::TrackInformationNtupleTool::fillTrackData (
   ATH_MSG_VERBOSE ("in fillTrackData(trk, indx)");
   // ---------------------------------------
   // detect new event, reset Track counter if new event
-  const EventInfo* eventInfo;
-  if ((evtStore()->retrieve(eventInfo)).isFailure()) {
+  SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+  if(!evt.isValid()) {
     msg(MSG::WARNING) << "Could not retrieve event info" << endmsg;
     m_runNumber   = (int)s_errorEntry;
     m_eventNumber = (int)s_errorEntry;
   } else {
-    const EventID* myEventID=eventInfo->event_ID();
-    if (m_lastEventNumber!=myEventID->event_number()) {
+    if (m_lastEventNumber!=evt->eventNumber()) {
       // we have a new event, reset TrackID:
       m_TrackIDcounter = 0;
-      m_lastEventNumber = myEventID->event_number();
+      m_lastEventNumber = evt->eventNumber();
     }
     // ---------------------------------------------
     // track id (increase if a new iteration was started = iterationIndex==0)
     if (iterationIndex == 0) m_TrackIDcounter++;
     m_TrackID = m_TrackIDcounter;
     m_iterIndex = iterationIndex;
-    m_eventNumber = myEventID->event_number();
-    m_runNumber   = myEventID->run_number();
+    m_eventNumber = evt->eventNumber();
+    m_runNumber   = evt->runNumber();
   }
   ATH_MSG_VERBOSE ("Event: " << m_eventNumber << ", Run: "
                    << m_runNumber  << " TrackID: " << m_TrackID 
@@ -178,22 +175,21 @@ StatusCode Trk::TrackInformationNtupleTool::fillTrackParticleData
   ATH_MSG_VERBOSE ("in fillTrackData(trk, indx)");
   // ---------------------------------------
   // detect new event, reset Track counter if new event
-  const EventInfo* eventInfo;
-  if ((evtStore()->retrieve(eventInfo)).isFailure()) {
+  SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+  if(!evt.isValid()) {
     msg(MSG::WARNING) << "Could not retrieve event info" << endmsg;
     m_runNumber   = (int)s_errorEntry;
     m_eventNumber = (int)s_errorEntry;
   } else {
-    const EventID* myEventID=eventInfo->event_ID();
-    if (m_lastEventNumber!=myEventID->event_number()) {
+    if (m_lastEventNumber!=evt->eventNumber()) {
       // we have a new event, reset TrackID:
       m_TrackIDcounter = 0;
-      m_lastEventNumber = myEventID->event_number();
+      m_lastEventNumber = evt->eventNumber();
     }
     // ---------------------------------------------
     m_TrackID = m_TrackIDcounter++;
-    m_eventNumber = myEventID->event_number();
-    m_runNumber   = myEventID->run_number();
+    m_eventNumber = evt->eventNumber();
+    m_runNumber   = evt->runNumber();
   }
   ATH_MSG_VERBOSE ("Event: " << m_eventNumber << ", Run: "
                    << m_runNumber  << " TrackID: " << m_TrackID);
@@ -238,17 +234,17 @@ StatusCode Trk::TrackInformationNtupleTool::fillProtoTrajectoryData
    //const Trk::FitterStatusCode fitStatCode) const
 {
   ATH_MSG_VERBOSE ("in fillProtoTrajectoryData(protoTraj, indx)");
-  const EventInfo* eventInfo;
-  if ((evtStore()->retrieve(eventInfo)).isFailure()) {
+  SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+  if(!evt.isValid()) {
     msg(MSG::ERROR) << "Could not retrieve event info" << endmsg;
+    return StatusCode::FAILURE;
   }
-  const EventID* myEventID=eventInfo->event_ID();
   
-  if (m_lastEventNumber!=myEventID->event_number()) {
+  if (m_lastEventNumber!=evt->eventNumber()) {
     // we have a new event!
     // reset TrackID:
     m_TrackIDcounter = 0;
-    m_lastEventNumber = myEventID->event_number();
+    m_lastEventNumber = evt->eventNumber();
   }
   // ---------------------------------------------
   // track id (increase if a new iteration was started = iterationIndex==0)
@@ -257,8 +253,8 @@ StatusCode Trk::TrackInformationNtupleTool::fillProtoTrajectoryData
   }
   m_TrackID = m_TrackIDcounter;
   m_iterIndex = iterationIndex;
-  m_eventNumber = myEventID->event_number();
-  m_runNumber   = myEventID->run_number();
+  m_eventNumber = evt->eventNumber();
+  m_runNumber   = evt->runNumber();
 
   ATH_MSG_VERBOSE ("Event: " << m_eventNumber << MSG::VERBOSE << " TrackID: " << m_TrackID << " iteration index: " << m_iterIndex);
   m_fitStatusCode = fitStatCode;
diff --git a/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.h b/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.h
index 8e02cd80e8d3299d249724423ef18ce5cfcb546d..ef193bad9fd37830c5078c11af472cfe40dc4551 100644
--- a/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.h
+++ b/Tracking/TrkValidation/TrkValTools/src/TrackInformationNtupleTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -15,6 +15,8 @@
 
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "TrkValInterfaces/ITrackValidationNtupleTool.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "xAODEventInfo/EventInfo.h"
 
 namespace Trk {
 
@@ -95,6 +97,7 @@ private:
     mutable int         m_ndof;        //!< number of degrees of freedom of track fit
     mutable int         m_nHits;       //!< number of measurements on the track (including outliers)
 
+    SG::ReadHandleKey<xAOD::EventInfo>    m_evt  {this, "EvtInfo", "EventInfo", "EventInfo name"};
 };
 
 
diff --git a/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx b/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx
index 79970a52b49dda71ed7a59e9d4c473b406c8098c..a0e5117a52c11d4dad11869580cb5f95eb68d66e 100644
--- a/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx
+++ b/Tracking/TrkValidation/TrkValTools/src/TruthNtupleTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -21,8 +21,6 @@
 // Truth
 #include "TrkTruthData/TrackTruth.h"
 
-#include "EventInfo/EventInfo.h"
-#include "EventInfo/EventID.h"
 #include "HepMC/GenParticle.h"
 #include "HepMC/GenVertex.h"
 
@@ -81,6 +79,8 @@ Trk::TruthNtupleTool::~TruthNtupleTool() {}
 // initialize
 StatusCode Trk::TruthNtupleTool::initialize() {
 
+  ATH_CHECK( m_evt.initialize() );
+
     if (m_etaBins.size()<2) {
       ATH_MSG_ERROR ("Vector of eta bins too small");
       return StatusCode::FAILURE;
@@ -254,20 +254,17 @@ StatusCode Trk::TruthNtupleTool::finalize() {
 StatusCode Trk::TruthNtupleTool::writeTruthData (
                const std::vector< Trk::ValidationTrackTruthData >& truthData) const {
 
-    StatusCode sc;
-
     ATH_MSG_DEBUG ("in writeTruthData(...) with ValTrackTruthData size = "<<truthData.size());
     // ---------------------------------------
     // fill event data
-    const EventInfo* eventInfo = nullptr;
-    sc = evtStore()->retrieve(eventInfo);
-    if (sc.isFailure()) {
+    SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
+    if (!evt.isValid()) {
       ATH_MSG_WARNING ("Could not retrieve event info");
+      return StatusCode::FAILURE;
     }
-    const EventID* myEventID=eventInfo->event_ID();
 
-    m_runNumber=myEventID->run_number();
-    m_eventNumber=myEventID->event_number();
+    m_runNumber=evt->runNumber();
+    m_eventNumber=evt->eventNumber();
 
     const HepMC::GenParticle*   genParticle = 0;
     const Trk::TrackParameters* truePerigee = 0;