diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx
index 457e2d31e5fd9e8adfc2cf6c5c6dde51f0675d2c..6917a1df4da503af6798e26495a4efc4e490128b 100644
--- a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx
+++ b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx
@@ -35,7 +35,15 @@ UPDATE : 25/06/2018
 
 egammaSelectedTrackCopy::egammaSelectedTrackCopy(const std::string& name, 
                                                  ISvcLocator* pSvcLocator):
-  AthAlgorithm(name, pSvcLocator)
+  AthAlgorithm(name, pSvcLocator),
+  m_AllClusters{},
+  m_SelectedClusters{},
+  m_AllTracks{},
+  m_SelectedTracks{},
+  m_AllSiTracks{},
+  m_SelectedSiTracks{},
+  m_AllTRTTracks{},
+  m_SelectedTRTTracks{}
 {
 }
 
@@ -58,12 +66,16 @@ StatusCode egammaSelectedTrackCopy::initialize() {
 
 StatusCode egammaSelectedTrackCopy::egammaSelectedTrackCopy::finalize(){ 
 
-  ATH_MSG_INFO ("AllTracks " << m_AllTracks);
-  ATH_MSG_INFO ("AllSiTracks " << m_AllSiTracks);
-  ATH_MSG_INFO ("AllTRTTracks " << m_AllTRTTracks);
-  ATH_MSG_INFO ("SelectedTracks " << m_SelectedTracks);
-  ATH_MSG_INFO ("SelectedSiTracks " << m_SelectedSiTracks);
-  ATH_MSG_INFO ("SelectedTRTTracks " << m_SelectedTRTTracks);
+  ATH_MSG_INFO ("--- egamma Selected Track Copy Statistics ---");
+  ATH_MSG_INFO ("--- All Clusters: " << m_AllClusters);
+  ATH_MSG_INFO ("--- Selected Clusters: " << m_SelectedClusters);
+  ATH_MSG_INFO ("--- All Tracks: " << m_AllTracks);
+  ATH_MSG_INFO ("--- Selected Tracks: " << m_SelectedTracks);
+  ATH_MSG_INFO ("--- All Si Tracks: " << m_AllSiTracks);
+  ATH_MSG_INFO ("--- Selected Si Tracks: " << m_SelectedSiTracks);
+  ATH_MSG_INFO ("--- All TRT Tracks: " << m_AllTRTTracks);
+  ATH_MSG_INFO ("--- Selected TRT Tracks: " << m_SelectedTRTTracks);
+  ATH_MSG_INFO ("----------------------------------------- ---");
   return StatusCode::SUCCESS;
 }
 
@@ -92,12 +104,14 @@ StatusCode egammaSelectedTrackCopy::execute()
   ATH_MSG_DEBUG ("Track Particle  container  size: "  <<trackTES->size() );
 
   //Local counters
-  unsigned int allTracks(0);
-  unsigned int allTRTTracks(0);
-  unsigned int allSiTracks(0);  
-  unsigned int selectedTracks(0);
-  unsigned int selectedTRTTracks(0); 
-  unsigned int selectedSiTracks(0);  
+  auto allClusters= m_AllClusters.buffer();
+  auto selectedClusters = m_SelectedClusters.buffer();
+  auto allTracks = m_AllTracks.buffer();
+  auto selectedTracks = m_SelectedTracks.buffer()  ;
+  auto allSiTracks = m_AllSiTracks.buffer();  
+  auto selectedSiTracks = m_SelectedSiTracks.buffer();  
+  auto allTRTTracks =  m_AllTRTTracks.buffer()  ;
+  auto selectedTRTTracks = m_SelectedTRTTracks.buffer(); 
 
   // // lets first check which clusters to seed on;
   std::vector<const xAOD::CaloCluster *> passingClusters;
@@ -107,6 +121,9 @@ StatusCode egammaSelectedTrackCopy::execute()
     }
   }
 
+  allClusters+=(*clusterTES).size();
+  selectedClusters+=passingClusters.size();
+  allTracks+=(*trackTES).size();
   //Extrapolation Cache
   IEMExtrapolationTools::Cache cache{};
   for(const xAOD::TrackParticle* track : *trackTES){
@@ -120,7 +137,6 @@ StatusCode egammaSelectedTrackCopy::execute()
     if( track->summaryValue(dummy,xAOD::numberOfSCTHits) ){
       nhits+= dummy;
     }
-    ++allTracks;    
     if(nhits<4){
       isTRT = true;
       ++allTRTTracks;
@@ -160,18 +176,6 @@ StatusCode egammaSelectedTrackCopy::execute()
   ATH_MSG_DEBUG ("Selected Track container size: "  << viewCopy->size() );
   ATH_CHECK( outputTrkPartContainer.record(std::move(viewCopy)) );
 
-  /*
-   * Typical use for relaxed memory ordering is incrementing counters, 
-   * (such as the reference counters of std::shared_ptr) 
-   * since this only requires atomicity, but not ordering or synchronization.
-   */
-  m_AllTracks.fetch_add(allTracks, std::memory_order_relaxed);
-  m_AllTRTTracks.fetch_add(allTRTTracks, std::memory_order_relaxed);
-  m_AllSiTracks.fetch_add(allSiTracks,std::memory_order_relaxed);
-  m_SelectedTracks.fetch_add(selectedTracks,std::memory_order_relaxed);
-  m_SelectedTRTTracks.fetch_add(selectedTRTTracks,std::memory_order_relaxed);
-  m_SelectedSiTracks.fetch_add(selectedSiTracks,std::memory_order_relaxed);
-
   return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h
index f8d4a8aa535000b1b0e5ed6fa3b3029c41aa9086..a423c205f8a9d1decaa428934b5fe72ce0834b5d 100644
--- a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h
+++ b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h
@@ -26,8 +26,8 @@
 #include "AthContainers/ConstDataVector.h"
 
 #include "egammaInterfaces/IegammaCaloClusterSelector.h"
+#include "GaudiKernel/Counters.h"
 
-#include <atomic>
 
 class CaloCluster;
 
@@ -104,11 +104,13 @@ private:
    * inside the loops.
    * At the end they will add_fetch to these ones
    */
-  mutable std::atomic_uint m_AllTracks{0};
-  mutable std::atomic_uint m_AllTRTTracks{0};
-  mutable std::atomic_uint m_AllSiTracks{0};
-  mutable std::atomic_uint m_SelectedTracks{0};
-  mutable std::atomic_uint m_SelectedTRTTracks{0};
-  mutable std::atomic_uint m_SelectedSiTracks{0};
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_AllClusters;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_SelectedClusters;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_AllTracks;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_SelectedTracks;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_AllSiTracks;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_SelectedSiTracks;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_AllTRTTracks;
+  mutable Gaudi::Accumulators::Counter<unsigned long> m_SelectedTRTTracks;
 };
 #endif