diff --git a/Generators/GeneratorFilters/GeneratorFilters/xAODElectronFilter.h b/Generators/GeneratorFilters/GeneratorFilters/xAODElectronFilter.h
index 1eb3cda3e884f03f95e49341f96e174932a37c1c..5f08fe29edde2924c14892e0915a14df0841a9cf 100644
--- a/Generators/GeneratorFilters/GeneratorFilters/xAODElectronFilter.h
+++ b/Generators/GeneratorFilters/GeneratorFilters/xAODElectronFilter.h
@@ -6,6 +6,7 @@
 #define GENERATORFILTERS_XAODELECTRONFILTER_H
 
 #include "GeneratorModules/GenFilter.h"
+#include "xAODTruth/TruthParticle.h"
 
 
 /// @brief  Filters and looks for electrons
@@ -21,10 +22,12 @@ class xAODElectronFilter : public GenFilter {
 public:
 
   xAODElectronFilter(const std::string& name, ISvcLocator* pSvcLocator);
+  virtual StatusCode filterInitialize();
   virtual StatusCode filterEvent();
 
 private:
 
+  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthPartContKey{this, "TruthParticleContainerKey", "TruthElectrons"};
   DoubleProperty m_Ptmin{this, "Ptcut", 10000.};
   DoubleProperty m_EtaRange{this, "Etacut", 10.0};
 
diff --git a/Generators/GeneratorFilters/src/xAODElectronFilter.cxx b/Generators/GeneratorFilters/src/xAODElectronFilter.cxx
index 84f1c7c25557926e40ac476c1e1ba6836d97f932..5c2b1757dd6cfce5158abd93b1dc351618c95374 100644
--- a/Generators/GeneratorFilters/src/xAODElectronFilter.cxx
+++ b/Generators/GeneratorFilters/src/xAODElectronFilter.cxx
@@ -14,27 +14,26 @@ xAODElectronFilter::xAODElectronFilter(const std::string &name, ISvcLocator *pSv
 {
 }
 
+StatusCode xAODElectronFilter::filterInitialize()
+{
+  ATH_CHECK(m_truthPartContKey.initialize());
+  return StatusCode::SUCCESS;
+}
+
 StatusCode xAODElectronFilter::filterEvent() {
   // Retrieve full TruthParticle container
-  const xAOD::TruthParticleContainer *xTruthParticleContainer;
-  if (evtStore()->retrieve(xTruthParticleContainer, "TruthElectrons").isFailure())
-  {
-    ATH_MSG_ERROR("No TruthParticle collection with name "
-                  << "TruthElectrons"
-                  << " found in StoreGate!");
+  SG::ReadHandle<xAOD::TruthParticleContainer> xTruthParticleContainer{m_truthPartContKey};
+  if (!xTruthParticleContainer.isValid()) {
+    ATH_MSG_ERROR("No TruthParticle collection with name " << m_truthPartContKey.key() << " found in StoreGate!");
     return StatusCode::FAILURE;
   }
 
-  unsigned int nParticles = xTruthParticleContainer->size();
-  for (unsigned int iPart = 0; iPart < nParticles; ++iPart)
-  {
-    const xAOD::TruthParticle *part = (*xTruthParticleContainer)[iPart];
-
-     //electron
+  for (const xAOD::TruthParticle* part : *xTruthParticleContainer) {
+    //electron
     if (part->pt() >= m_Ptmin && part->abseta() <= m_EtaRange)
       return StatusCode::SUCCESS;
   }
-  
+
   setFilterPassed(false);
   return StatusCode::SUCCESS;
 }