diff --git a/Generators/GeneratorFilters/GeneratorFilters/xAODBSignalFilter.h b/Generators/GeneratorFilters/GeneratorFilters/xAODBSignalFilter.h
index 17e3331a1273d17f221d32ec410e434cdf51bf59..fb21ab88a551ae80ef1c675522f393bb8f05c621 100644
--- a/Generators/GeneratorFilters/GeneratorFilters/xAODBSignalFilter.h
+++ b/Generators/GeneratorFilters/GeneratorFilters/xAODBSignalFilter.h
@@ -33,12 +33,11 @@ class xAODBSignalFilter : public GenFilter
 {
 
 public:
+  using GenFilter::GenFilter;
 
-  xAODBSignalFilter(const std::string& name, ISvcLocator* pSvcLocator);
-  //
-  virtual StatusCode filterInitialize();
-  virtual StatusCode filterEvent();
-  virtual StatusCode filterFinalize();
+  virtual StatusCode filterInitialize() override final;
+  virtual StatusCode filterEvent() override final;
+  virtual StatusCode filterFinalize() override final;
 
 private:
 
@@ -46,44 +45,44 @@ private:
 
   // ** Declare the algorithm's properties **
   // ** For cuts on final particle pT and eta **
-  BooleanProperty m_localLVL1MuonCutOn{this, "LVL1MuonCutOn", false};
-  BooleanProperty m_localLVL2MuonCutOn{this, "LVL2MuonCutOn", false};
-  BooleanProperty m_localLVL2ElectronCutOn{this, "LVL2ElectronCutOn", false};
-  DoubleProperty m_localLVL1MuonCutPT{this, "LVL1MuonCutPT", 0.0};
-  DoubleProperty m_localLVL1MuonCutEta{this, "LVL1MuonCutEta", 102.5};
-  DoubleProperty m_localLVL2MuonCutPT{this, "LVL2MuonCutPT", 0.0};
-  DoubleProperty m_localLVL2MuonCutEta{this, "LVL2MuonCutEta", 102.5};
-  DoubleProperty m_localLVL2ElectronCutPT{this, "LVL2ElectronCutPT", 0.0};
-  DoubleProperty m_localLVL2ElectronCutEta{this, "LVL2ElectronCutEta", 102.5};
-  BooleanProperty m_cuts_f_e_on{this, "Cuts_Final_e_switch", false};
-  DoubleProperty m_cuts_f_e_pT{this, "Cuts_Final_e_pT", 0.};
-  DoubleProperty m_cuts_f_e_eta{this, "Cuts_Final_e_eta", 2.5}; // FIXME why is this default different from the rest of the eta cuts?
-  BooleanProperty m_cuts_f_mu_on{this, "Cuts_Final_mu_switch", false};
-  DoubleProperty m_cuts_f_mu_pT{this, "Cuts_Final_mu_pT", 0.};
-  DoubleProperty m_cuts_f_mu_eta{this, "Cuts_Final_mu_eta", 102.5};
-  BooleanProperty m_cuts_f_had_on{this, "Cuts_Final_hadrons_switch", false};
-  DoubleProperty m_cuts_f_had_pT{this, "Cuts_Final_hadrons_pT", 0.};
-  DoubleProperty m_cuts_f_had_eta{this, "Cuts_Final_hadrons_eta", 102.5};
-  BooleanProperty m_cuts_f_gam_on{this, "Cuts_Final_gamma_switch", false};
-  DoubleProperty m_cuts_f_gam_pT{this, "Cuts_Final_gamma_pT",  0.};
-  DoubleProperty m_cuts_f_gam_eta{this, "Cuts_Final_gamma_eta", 102.5};
-  BooleanProperty m_cuts_f_K0_on{this, "Cuts_Final_K0_switch", false};
-  DoubleProperty  m_cuts_f_K0_pT{this, "Cuts_Final_K0_pT", 0.};
-  DoubleProperty m_cuts_f_K0_eta{this, "Cuts_Final_K0_eta", 102.5};
+  Gaudi::Property<bool> m_localLVL1MuonCutOn{this, "LVL1MuonCutOn", false};
+  Gaudi::Property<bool> m_localLVL2MuonCutOn{this, "LVL2MuonCutOn", false};
+  Gaudi::Property<bool> m_localLVL2ElectronCutOn{this, "LVL2ElectronCutOn", false};
+  Gaudi::Property<double> m_localLVL1MuonCutPT{this, "LVL1MuonCutPT", 0.0};
+  Gaudi::Property<double> m_localLVL1MuonCutEta{this, "LVL1MuonCutEta", 102.5};
+  Gaudi::Property<double> m_localLVL2MuonCutPT{this, "LVL2MuonCutPT", 0.0};
+  Gaudi::Property<double> m_localLVL2MuonCutEta{this, "LVL2MuonCutEta", 102.5};
+  Gaudi::Property<double> m_localLVL2ElectronCutPT{this, "LVL2ElectronCutPT", 0.0};
+  Gaudi::Property<double> m_localLVL2ElectronCutEta{this, "LVL2ElectronCutEta", 102.5};
+  Gaudi::Property<bool> m_cuts_f_e_on{this, "Cuts_Final_e_switch", false};
+  Gaudi::Property<double> m_cuts_f_e_pT{this, "Cuts_Final_e_pT", 0.};
+  Gaudi::Property<double> m_cuts_f_e_eta{this, "Cuts_Final_e_eta", 2.5}; // FIXME why is this default different from the rest of the eta cuts?
+  Gaudi::Property<bool> m_cuts_f_mu_on{this, "Cuts_Final_mu_switch", false};
+  Gaudi::Property<double> m_cuts_f_mu_pT{this, "Cuts_Final_mu_pT", 0.};
+  Gaudi::Property<double> m_cuts_f_mu_eta{this, "Cuts_Final_mu_eta", 102.5};
+  Gaudi::Property<bool> m_cuts_f_had_on{this, "Cuts_Final_hadrons_switch", false};
+  Gaudi::Property<double> m_cuts_f_had_pT{this, "Cuts_Final_hadrons_pT", 0.};
+  Gaudi::Property<double> m_cuts_f_had_eta{this, "Cuts_Final_hadrons_eta", 102.5};
+  Gaudi::Property<bool> m_cuts_f_gam_on{this, "Cuts_Final_gamma_switch", false};
+  Gaudi::Property<double> m_cuts_f_gam_pT{this, "Cuts_Final_gamma_pT",  0.};
+  Gaudi::Property<double> m_cuts_f_gam_eta{this, "Cuts_Final_gamma_eta", 102.5};
+  Gaudi::Property<bool> m_cuts_f_K0_on{this, "Cuts_Final_K0_switch", false};
+  Gaudi::Property<double>  m_cuts_f_K0_pT{this, "Cuts_Final_K0_pT", 0.};
+  Gaudi::Property<double> m_cuts_f_K0_eta{this, "Cuts_Final_K0_eta", 102.5};
   // ** Declare the signal B-meson/hadron PDGid **
-  IntegerProperty m_B_pdgid{this, "B_PDGCode", 0};       // pdgID of the mother
+  Gaudi::Property<int> m_B_pdgid{this, "B_PDGCode", 0};       // pdgID of the mother
   // ** Declare properties for mass filter **
-  BooleanProperty m_InvMass_switch{this, "InvMass_switch", false};
-  IntegerProperty m_InvMass_PartId1{this, "InvMass_PartId1", 13}; // pdgID of the couple used for mass cuts
-  IntegerProperty m_InvMass_PartId2{this, "InvMass_PartId2", -13}; // pdgID of the couple used for mass cuts
-  DoubleProperty m_InvMass_PartFakeMass1{this, "InvMass_PartFakeMass1", -1.};
-  DoubleProperty m_InvMass_PartFakeMass2{this, "InvMass_PartFakeMass2", -1.};
+  Gaudi::Property<bool> m_InvMass_switch{this, "InvMass_switch", false};
+  Gaudi::Property<int> m_InvMass_PartId1{this, "InvMass_PartId1", 13}; // pdgID of the couple used for mass cuts
+  Gaudi::Property<int> m_InvMass_PartId2{this, "InvMass_PartId2", -13}; // pdgID of the couple used for mass cuts
+  Gaudi::Property<double> m_InvMass_PartFakeMass1{this, "InvMass_PartFakeMass1", -1.};
+  Gaudi::Property<double> m_InvMass_PartFakeMass2{this, "InvMass_PartFakeMass2", -1.};
   // Mass range for invariant mass cut
-  DoubleProperty m_InvMassMin{this, "InvMassMin", 0.0};
-  DoubleProperty m_InvMassMax{this, "InvMassMax", 14000000.0};
-  BooleanProperty m_TotalInvMass_switch{this, "TotalInvMass_switch", false};
-  DoubleProperty m_TotalInvMassMin{this, "TotalInvMassMin", 0.0};
-  DoubleProperty m_TotalInvMassMax{this, "TotalInvMassMax", 14000000.0};
+  Gaudi::Property<double> m_InvMassMin{this, "InvMassMin", 0.0};
+  Gaudi::Property<double> m_InvMassMax{this, "InvMassMax", 14000000.0};
+  Gaudi::Property<bool> m_TotalInvMass_switch{this, "TotalInvMass_switch", false};
+  Gaudi::Property<double> m_TotalInvMassMin{this, "TotalInvMassMin", 0.0};
+  Gaudi::Property<double> m_TotalInvMassMax{this, "TotalInvMassMax", 14000000.0};
   SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthPartContKey{this, "TruthParticleContainerKey", "TruthGen"};
 
   // Event counters
diff --git a/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksFilter.h b/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksFilter.h
index 90dc84e0ead2e33a3a6d4c54b1d7bb2d61c82dc0..ace42c38e827cc0d9c48e30e1663b6331b0f6693 100644
--- a/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksFilter.h
+++ b/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksFilter.h
@@ -16,23 +16,23 @@
 /// Filter events based on presence of charged tracks
 class xAODChargedTracksFilter : public GenFilter {
 public:
+  using GenFilter::GenFilter;
 
-  xAODChargedTracksFilter(const std::string& name, ISvcLocator* pSvcLocator);
-  virtual StatusCode filterInitialize() override;
-  virtual StatusCode filterEvent() override;
+  virtual StatusCode filterInitialize() override final;
+  virtual StatusCode filterEvent() override final;
 
 private:
 
   SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthPartContKey{this, "TruthParticleContainerKey", "TruthGen"};
 
   // Minimum pT for a track to count
-  DoubleProperty m_Ptmin{this, "Ptcut", 50.0};
+  Gaudi::Property<double> m_Ptmin{this, "Ptcut", 50.0};
 
   // Maximum |pseudorapidity| for a track to count
-  DoubleProperty m_EtaRange{this, "Etacut", 2.5};
+  Gaudi::Property<double> m_EtaRange{this, "Etacut", 2.5};
 
   // Minimum number of tracks
-  DoubleProperty m_NTracks{this, "NTracks", 40};
+  Gaudi::Property<double> m_NTracks{this, "NTracks", 40};
 
 };
 
diff --git a/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksWeightFilter.h b/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksWeightFilter.h
index a4363d99ccde74b1167b73ed4b3a88a9e383d2a1..0a0eca02f51831d24c06d9d7012a69c3af49c0a6 100644
--- a/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksWeightFilter.h
+++ b/Generators/GeneratorFilters/GeneratorFilters/xAODChargedTracksWeightFilter.h
@@ -19,11 +19,11 @@ namespace CLHEP {
 /// Filter events based on presence of charged tracks
 class xAODChargedTracksWeightFilter : public GenFilter {
 public:
+  using GenFilter::GenFilter;
 
-  xAODChargedTracksWeightFilter(const std::string& name, ISvcLocator* pSvcLocator);
-  StatusCode filterInitialize();
-  StatusCode filterEvent();
-  StatusCode filterFinalize();
+  virtual StatusCode filterInitialize() override final;
+  virtual StatusCode filterEvent() override final;
+  virtual StatusCode filterFinalize() override final;
 
   struct Spline {
      /// Linear spline representation of a function used to calculate weights
@@ -71,22 +71,22 @@ private:
   SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthPartContKey{this, "TruthParticleContainerKey", "TruthGen"};
 
   // Minimum pT for a track to count
-  DoubleProperty m_Ptmin{this, "Ptcut", 50.0};
+  Gaudi::Property<double> m_Ptmin{this, "Ptcut", 50.0};
 
   // Maximum |pseudorapidity| for a track to count
-  DoubleProperty m_EtaRange{this, "Etacut", 2.5};
+  Gaudi::Property<double> m_EtaRange{this, "Etacut", 2.5};
 
   // Minimum number of tracks
-  IntegerProperty m_nchmin{this, "NchMin", 0};
+  Gaudi::Property<int> m_nchmin{this, "NchMin", 0};
 
   // Maximum number of tracks
-  IntegerProperty m_nchmax{this, "NchMax", 20};
+  Gaudi::Property<int> m_nchmax{this, "NchMax", 20};
 
   Spline m_spline;
 
   /// Spline points
-  DoubleArrayProperty m_weight_fun_x{this, "SplineX", {}};
-  DoubleArrayProperty m_weight_fun_y{this, "SplineY", {}};
+  Gaudi::Property<std::vector<double>> m_weight_fun_x{this, "SplineX", {}};
+  Gaudi::Property<std::vector<double>> m_weight_fun_y{this, "SplineY", {}};
 
   double m_min_weight{};
 
diff --git a/Generators/GeneratorFilters/GeneratorFilters/xAODDecayTimeFilter.h b/Generators/GeneratorFilters/GeneratorFilters/xAODDecayTimeFilter.h
index 243514b8feced65e82380eb6a48f8397679bc3f7..5d063b5ad9977659d7fd2abafdb2b2425f23dc45 100644
--- a/Generators/GeneratorFilters/GeneratorFilters/xAODDecayTimeFilter.h
+++ b/Generators/GeneratorFilters/GeneratorFilters/xAODDecayTimeFilter.h
@@ -23,22 +23,22 @@ namespace CLHEP {
 
 class xAODDecayTimeFilter : public GenFilter {
 public:
+  using GenFilter::GenFilter;
 
-  xAODDecayTimeFilter(const std::string& name, ISvcLocator* pSvcLocator);
-  virtual StatusCode filterInitialize();
-  virtual StatusCode filterEvent();
+  virtual StatusCode filterInitialize() override final;
+  virtual StatusCode filterEvent() override final;
 
 private:
    CLHEP::HepRandomEngine* getRandomEngine(const std::string& streamName,
                                           const EventContext& ctx) const;
 
   double tau(const xAOD::TruthParticle* ptr) const;
-  FloatProperty m_lifetimeLow{this, "LifetimeLow", std::numeric_limits<float>::lowest(), "proper decay time value in ps"};
-  FloatProperty m_lifetimeHigh{this, "LifetimeHigh", std::numeric_limits<float>::max(), "proper decay time value in ps"};
-  FloatProperty m_seedlifetime{this, "Seedlifetime", std::numeric_limits<float>::lowest(), "proper decay time value in ps"};
+  Gaudi::Property<float> m_lifetimeLow{this, "LifetimeLow", std::numeric_limits<float>::lowest(), "proper decay time value in ps"};
+  Gaudi::Property<float> m_lifetimeHigh{this, "LifetimeHigh", std::numeric_limits<float>::max(), "proper decay time value in ps"};
+  Gaudi::Property<float> m_seedlifetime{this, "Seedlifetime", std::numeric_limits<float>::lowest(), "proper decay time value in ps"};
   ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc"};
-  BooleanProperty m_flatlifetime{this, "Flatlifetime", false, "proper decay time value in ps"};
-  IntegerArrayProperty m_particleID{this, "PDGs", {}};
+  Gaudi::Property<bool> m_flatlifetime{this, "Flatlifetime", false, "proper decay time value in ps"};
+  Gaudi::Property<std::vector<int>> m_particleID{this, "PDGs", {}};
   SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthPartContKey{this, "TruthParticleContainerKey", "TruthGen"};
 };
 
diff --git a/Generators/GeneratorFilters/GeneratorFilters/xAODDecaysFinalStateFilter.h b/Generators/GeneratorFilters/GeneratorFilters/xAODDecaysFinalStateFilter.h
index 99188169b023b13f0b1d96d01ec85a68de033f30..360e78dce319400f1eb377b97ed1b65d0721fa02 100644
--- a/Generators/GeneratorFilters/GeneratorFilters/xAODDecaysFinalStateFilter.h
+++ b/Generators/GeneratorFilters/GeneratorFilters/xAODDecaysFinalStateFilter.h
@@ -25,44 +25,35 @@
 class xAODDecaysFinalStateFilter : public GenFilter {
 
 public:
+  using GenFilter::GenFilter;
 
-  /// Constructor
-  xAODDecaysFinalStateFilter(const std::string& name, ISvcLocator* pSvcLocator);
-
-  /// Destructor
-  virtual ~xAODDecaysFinalStateFilter() { }
-
-  /// Initialize
-  virtual StatusCode filterInitialize();
-
-  /// Do the filtering
-  virtual StatusCode filterEvent();
-
+  virtual StatusCode filterInitialize() override final;
+  virtual StatusCode filterEvent() override final;
 
 private:
 
   // list of allowed resonances from which decay products are counted
-  IntegerArrayProperty m_PDGAllowedParents{this, "PDGAllowedParents", {}};
+  Gaudi::Property<std::vector<int>> m_PDGAllowedParents{this, "PDGAllowedParents", {}};
 
   // required (exact) number of quarks, electrons, muons, taus,
   // charged leptons (of any flavor), neutrinos and photons from decays
-  IntegerProperty m_NQuarks{this, "NQuarks", -1};
-  IntegerProperty m_NElectrons{this, "NElectrons", -1};
-  IntegerProperty m_NMuons{this, "NMuons", -1};
-  IntegerProperty m_NTaus{this, "NTaus", -1};
-  IntegerProperty m_NChargedLeptons{this, "NChargedLeptons", -1};
-  IntegerProperty m_NNeutrinos{this, "NNeutrinos", -1};
-  IntegerProperty m_NPhotons{this, "NPhotons", -1};
+  Gaudi::Property<int> m_NQuarks{this, "NQuarks", -1};
+  Gaudi::Property<int> m_NElectrons{this, "NElectrons", -1};
+  Gaudi::Property<int> m_NMuons{this, "NMuons", -1};
+  Gaudi::Property<int> m_NTaus{this, "NTaus", -1};
+  Gaudi::Property<int> m_NChargedLeptons{this, "NChargedLeptons", -1};
+  Gaudi::Property<int> m_NNeutrinos{this, "NNeutrinos", -1};
+  Gaudi::Property<int> m_NPhotons{this, "NPhotons", -1};
 
   // required minimal number of quarks, electrons, muons, taus,
   // charged leptons (of any flavor), neutrinos and photons from decays
-  IntegerProperty m_MinNQuarks{this, "MinNQuarks", 0};
-  IntegerProperty m_MinNElectrons{this, "MinNElectrons", 0};
-  IntegerProperty m_MinNMuons{this, "MinNMuons", 0};
-  IntegerProperty m_MinNTaus{this, "MinNTaus", 0};
-  IntegerProperty m_MinNChargedLeptons{this, "MinNChargedLeptons", 0};
-  IntegerProperty m_MinNNeutrinos{this, "MinNNeutrinos", 0};
-  IntegerProperty m_MinNPhotons{this, "MinNPhotons", 0};
+  Gaudi::Property<int> m_MinNQuarks{this, "MinNQuarks", 0};
+  Gaudi::Property<int> m_MinNElectrons{this, "MinNElectrons", 0};
+  Gaudi::Property<int> m_MinNMuons{this, "MinNMuons", 0};
+  Gaudi::Property<int> m_MinNTaus{this, "MinNTaus", 0};
+  Gaudi::Property<int> m_MinNChargedLeptons{this, "MinNChargedLeptons", 0};
+  Gaudi::Property<int> m_MinNNeutrinos{this, "MinNNeutrinos", 0};
+  Gaudi::Property<int> m_MinNPhotons{this, "MinNPhotons", 0};
   SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthPartContKey{this, "TruthParticleContainerKey", "TruthGen"};
 
 };
diff --git a/Generators/GeneratorFilters/src/xAODBSignalFilter.cxx b/Generators/GeneratorFilters/src/xAODBSignalFilter.cxx
index 8ccde57f9f14a6502b9f8681d4919257a157b0a4..e1f57f8eaad9f4d578f822e9a28cc845102480b2 100644
--- a/Generators/GeneratorFilters/src/xAODBSignalFilter.cxx
+++ b/Generators/GeneratorFilters/src/xAODBSignalFilter.cxx
@@ -29,13 +29,9 @@
 
 #include <sstream>
 
-xAODBSignalFilter::xAODBSignalFilter(const std::string &name, ISvcLocator *pSvcLocator) : GenFilter(name, pSvcLocator)
-{
-}
-
 StatusCode xAODBSignalFilter::filterInitialize()
 {
-    ATH_CHECK(m_truthPartContKey.initialize());
+    CHECK(m_truthPartContKey.initialize());
     return StatusCode::SUCCESS;
 }
 
@@ -59,10 +55,7 @@ StatusCode xAODBSignalFilter::filterEvent()
 // Retrieve TruthGen container from xAOD Gen slimmer, contains all particles witout barcode_zero and
 // duplicated barcode ones
     SG::ReadHandle<xAOD::TruthParticleContainer> xTruthParticleContainer{m_truthPartContKey};
-    if (!xTruthParticleContainer.isValid()) {
-      ATH_MSG_ERROR("No TruthParticle collection with name " << "TruthGen" << " found in StoreGate!");
-      return StatusCode::FAILURE;
-    }
+    CHECK(xTruthParticleContainer.isValid());
 
 bool acceptEvent = true;
 unsigned int nPart = xTruthParticleContainer->size();  
diff --git a/Generators/GeneratorFilters/src/xAODChargedTracksFilter.cxx b/Generators/GeneratorFilters/src/xAODChargedTracksFilter.cxx
index c1a6275b2628211008acae871ca157fa720854be..1afefc91b1512bd6ab7f15018416bf4d19dbd9df 100644
--- a/Generators/GeneratorFilters/src/xAODChargedTracksFilter.cxx
+++ b/Generators/GeneratorFilters/src/xAODChargedTracksFilter.cxx
@@ -6,15 +6,9 @@
 #include "TruthUtils/HepMCHelpers.h"
 
 
-xAODChargedTracksFilter::xAODChargedTracksFilter(const std::string& name, ISvcLocator* pSvcLocator)
-  : GenFilter(name, pSvcLocator)
-{
-}
-
-
 StatusCode xAODChargedTracksFilter::filterInitialize()
 {
-    ATH_CHECK(m_truthPartContKey.initialize());
+    CHECK(m_truthPartContKey.initialize());
     return StatusCode::SUCCESS;
 }
 
@@ -24,10 +18,7 @@ StatusCode xAODChargedTracksFilter::filterEvent() {
   // Retrieve TruthGen container from xAOD Gen slimmer, contains all particles witout barcode_zero and
   // duplicated barcode ones
   SG::ReadHandle<xAOD::TruthParticleContainer> xTruthParticleContainer{m_truthPartContKey};
-  if (!xTruthParticleContainer.isValid()) {
-    ATH_MSG_ERROR("No TruthParticle collection with name " << "TruthGen" << " found in StoreGate!");
-    return StatusCode::FAILURE;
-  }
+  CHECK(xTruthParticleContainer.isValid());
 
 
   int nChargedTracks = 0;
diff --git a/Generators/GeneratorFilters/src/xAODChargedTracksWeightFilter.cxx b/Generators/GeneratorFilters/src/xAODChargedTracksWeightFilter.cxx
index d99eaad3ba0fe018289babb9aa965a2402c46741..2a35aa47a6b1fa0a81bbfecbcb2021ab6569a4b1 100644
--- a/Generators/GeneratorFilters/src/xAODChargedTracksWeightFilter.cxx
+++ b/Generators/GeneratorFilters/src/xAODChargedTracksWeightFilter.cxx
@@ -10,14 +10,9 @@
 
 using Point = xAODChargedTracksWeightFilter::Spline::Point;
 
-xAODChargedTracksWeightFilter::xAODChargedTracksWeightFilter(const std::string& name, ISvcLocator* pSvcLocator)
-    : GenFilter(name, pSvcLocator)
-{
-}
-
 StatusCode xAODChargedTracksWeightFilter::filterInitialize() {
 
-    ATH_CHECK(m_truthPartContKey.initialize());
+    CHECK(m_truthPartContKey.initialize());
     CHECK(m_rndmSvc.retrieve());
 
     if(m_nchmin < 0) m_nchmin = 0;
@@ -70,10 +65,7 @@ StatusCode xAODChargedTracksWeightFilter::filterEvent() {
     // Retrieve TruthGen container from xAOD Gen slimmer, contains all particles witout barcode_zero and
     // duplicated barcode ones
     SG::ReadHandle<xAOD::TruthParticleContainer> xTruthParticleContainer{m_truthPartContKey};
-    if (!xTruthParticleContainer.isValid()) {
-      ATH_MSG_ERROR("No TruthParticle collection with name " << "TruthGen" << " found in StoreGate!");
-      return StatusCode::FAILURE;
-    }
+    CHECK(xTruthParticleContainer.isValid());
 
     const EventContext& ctx = Gaudi::Hive::currentContext();
     CLHEP::HepRandomEngine* rndmGen = this->getRandomEngine(name(), ctx);
diff --git a/Generators/GeneratorFilters/src/xAODDecayTimeFilter.cxx b/Generators/GeneratorFilters/src/xAODDecayTimeFilter.cxx
index 41e8e857a5f1a8dd527edd456a1959795bb58742..446d9b27787744235e1c7926555e95db6764b872 100644
--- a/Generators/GeneratorFilters/src/xAODDecayTimeFilter.cxx
+++ b/Generators/GeneratorFilters/src/xAODDecayTimeFilter.cxx
@@ -8,14 +8,8 @@
 #include <limits>       // std::numeric_limits
 
 
-xAODDecayTimeFilter::xAODDecayTimeFilter(const std::string& name, ISvcLocator* pSvcLocator)
-  : GenFilter(name, pSvcLocator)
-{
-}
-
-
 StatusCode xAODDecayTimeFilter::filterInitialize() {
-  ATH_CHECK(m_truthPartContKey.initialize());
+  CHECK(m_truthPartContKey.initialize());
   CHECK(m_rndmSvc.retrieve());
   ATH_MSG_INFO("lifetimeLow=" << m_lifetimeLow);
   ATH_MSG_INFO("lifetimeHigh=" << m_lifetimeHigh);
@@ -46,10 +40,7 @@ StatusCode xAODDecayTimeFilter::filterEvent() {
   // Retrieve TruthGen container from xAOD Gen slimmer, contains all particles witout barcode_zero and
   // duplicated barcode ones
   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;
-  }
+  CHECK(xTruthParticleContainer.isValid());
 
   int nPassPDG = 0;
   bool passed = true;
diff --git a/Generators/GeneratorFilters/src/xAODDecaysFinalStateFilter.cxx b/Generators/GeneratorFilters/src/xAODDecaysFinalStateFilter.cxx
index 770dbf58daf44d83436bd39adb24622a78b220e0..8792e9e496a69b25c74bf3041e758b42850f0149 100644
--- a/Generators/GeneratorFilters/src/xAODDecaysFinalStateFilter.cxx
+++ b/Generators/GeneratorFilters/src/xAODDecaysFinalStateFilter.cxx
@@ -36,14 +36,8 @@
 #include <cmath>
 
 
-xAODDecaysFinalStateFilter::xAODDecaysFinalStateFilter(const std::string& name, ISvcLocator* pSvcLocator)
-  : GenFilter(name,pSvcLocator)
-{
- }
-
-
 StatusCode xAODDecaysFinalStateFilter::filterInitialize() {
-    ATH_CHECK(m_truthPartContKey.initialize());
+    CHECK(m_truthPartContKey.initialize());
     return StatusCode::SUCCESS;
 }
 
@@ -60,10 +54,7 @@ StatusCode xAODDecaysFinalStateFilter::filterEvent() {
     // Retrieve TruthGen container from xAOD Gen slimmer, contains all particles witout barcode_zero and
     // duplicated barcode ones
     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;
-    }
+    CHECK(xTruthParticleContainer.isValid());
 
 
     // Loop over all particles in the event and build up the grid