diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO1.py
index f05cc4854c3eed461b1c236d8af3023708741f8c..c33b5de5ab4c7c52a8b8e88e488d2453abc6dab7 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO1.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO1.py
@@ -4,6 +4,17 @@
 ## Load common flags
 from AthenaCommon.JobProperties import jobproperties as athCommonFlags
 
+## Steer output file
+from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
+from D2PDMaker.D2PDHelpers import buildFileName
+from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+streamName = primDPD.WriteDAOD_L1CALO1.StreamName
+fileName   = buildFileName( primDPD.WriteDAOD_L1CALO1 )
+L1CALO1Stream = MSMgr.NewPoolRootStream( streamName, fileName )
+L1CALO1Stream.AcceptAlgs(["DFL1CALO1_KERN"])
+augStream = MSMgr.GetStream( streamName )
+evtStream = augStream.GetEventStream()
+
 #################
 ### Setup Augmentation tools
 #################
@@ -31,7 +42,7 @@ thinningTools = []
 
 from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import DerivationFramework__TriggerTowerThinningAlg
 L1CALO1CaloThinningTool = DerivationFramework__TriggerTowerThinningAlg( name = "L1CALO1CaloThinningTool",
-									ThinService = "L1CALO1ThinningSvc",
+                                                                        StreamName              = streamName,
     									TriggerTowerLocation = "xAODTriggerTowers",
     									MinCaloCellET = 0.8,
     									MinADC = 36,
@@ -67,19 +78,6 @@ ToolSvc += CfgMgr.xAODMaker__TriggerMenuMetaDataTool(
 svcMgr.MetaDataSvc.MetaDataTools += [ ToolSvc.TriggerMenuMetaDataTool ]
 
 
-## Steer output file
-from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
-from D2PDMaker.D2PDHelpers import buildFileName
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-streamName = primDPD.WriteDAOD_L1CALO1.StreamName
-fileName   = buildFileName( primDPD.WriteDAOD_L1CALO1 )
-L1CALO1Stream = MSMgr.NewPoolRootStream( streamName, fileName )
-L1CALO1Stream.AcceptAlgs(["DFL1CALO1_KERN"])
-from AthenaServices.Configurables import ThinningSvc, createThinningSvc
-augStream = MSMgr.GetStream( streamName )
-evtStream = augStream.GetEventStream()
-svcMgr += createThinningSvc( svcName="L1CALO1ThinningSvc", outStreams=[evtStream] )
-
 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
 
 # Generic event info
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO2.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO2.py
index db36156bdeff597d1bcdbd47b00aca3cdeaf1efd..8503a29942bdb8440ea8a74ea57cad02575d2774 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO2.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO2.py
@@ -4,6 +4,17 @@
 ## Load common flags
 from AthenaCommon.JobProperties import jobproperties as athCommonFlags
 
+## Steer output file
+from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
+from D2PDMaker.D2PDHelpers import buildFileName
+from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+streamName = primDPD.WriteDAOD_L1CALO2.StreamName
+fileName   = buildFileName( primDPD.WriteDAOD_L1CALO2 )
+L1CALO2Stream = MSMgr.NewPoolRootStream( streamName, fileName )
+L1CALO2Stream.AcceptAlgs(["DFL1CALO2_KERN"])
+augStream = MSMgr.GetStream( streamName )
+evtStream = augStream.GetEventStream()
+
 #################
 ### Setup Augmentation tools
 #################
@@ -31,7 +42,7 @@ thinningTools = []
 
 #from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import DerivationFramework__TriggerTowerThinningAlg
 #L1CALO2CaloThinningTool = DerivationFramework__TriggerTowerThinningAlg( name = "L1CALO2CaloThinningTool",
-#									ThinService = "L1CALO2ThinningSvc",
+#									StreamName = streamName,
 #    									TriggerTowerLocation = "xAODTriggerTowers",
 #    									MinCaloCellEnergy = 0.8,
 #    									MinADC = 36,
@@ -67,19 +78,6 @@ ToolSvc += CfgMgr.xAODMaker__TriggerMenuMetaDataTool(
 svcMgr.MetaDataSvc.MetaDataTools += [ ToolSvc.TriggerMenuMetaDataTool ]
 
 
-## Steer output file
-from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
-from D2PDMaker.D2PDHelpers import buildFileName
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-streamName = primDPD.WriteDAOD_L1CALO2.StreamName
-fileName   = buildFileName( primDPD.WriteDAOD_L1CALO2 )
-L1CALO2Stream = MSMgr.NewPoolRootStream( streamName, fileName )
-L1CALO2Stream.AcceptAlgs(["DFL1CALO2_KERN"])
-from AthenaServices.Configurables import ThinningSvc, createThinningSvc
-augStream = MSMgr.GetStream( streamName )
-evtStream = augStream.GetEventStream()
-svcMgr += createThinningSvc( svcName="L1CALO2ThinningSvc", outStreams=[evtStream] )
-
 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
 
 # Generic event info
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO3.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO3.py
index 832645b066e81b02193a02b820c7bf181ccb3828..ce62ad1b93551eb70eb2251054c26b247b2888d7 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO3.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO3.py
@@ -4,6 +4,17 @@
 ## Load common flags
 from AthenaCommon.JobProperties import jobproperties as athCommonFlags
 
+## Steer output file
+from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
+from D2PDMaker.D2PDHelpers import buildFileName
+from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+streamName = primDPD.WriteDAOD_L1CALO3.StreamName
+fileName   = buildFileName( primDPD.WriteDAOD_L1CALO3 )
+L1CALO3Stream = MSMgr.NewPoolRootStream( streamName, fileName )
+L1CALO3Stream.AcceptAlgs(["DFL1CALO3_KERN"])
+augStream = MSMgr.GetStream( streamName )
+evtStream = augStream.GetEventStream()
+
 #################
 ### Setup Augmentation tools
 #################
@@ -31,7 +42,7 @@ thinningTools = []
 
 from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import DerivationFramework__TriggerTowerThinningAlg
 L1CALO3CaloThinningTool = DerivationFramework__TriggerTowerThinningAlg( name = "L1CALO3CaloThinningTool",
-									ThinService = "L1CALO3ThinningSvc",
+                                                                        StreamName              = streamName,
     									TriggerTowerLocation = "xAODTriggerTowers",
     									MinCaloCellET = 0.8,
     									MinADC = 36,
@@ -67,19 +78,6 @@ ToolSvc += CfgMgr.xAODMaker__TriggerMenuMetaDataTool(
 svcMgr.MetaDataSvc.MetaDataTools += [ ToolSvc.TriggerMenuMetaDataTool ]
 
 
-## Steer output file
-from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
-from D2PDMaker.D2PDHelpers import buildFileName
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-streamName = primDPD.WriteDAOD_L1CALO3.StreamName
-fileName   = buildFileName( primDPD.WriteDAOD_L1CALO3 )
-L1CALO3Stream = MSMgr.NewPoolRootStream( streamName, fileName )
-L1CALO3Stream.AcceptAlgs(["DFL1CALO3_KERN"])
-from AthenaServices.Configurables import ThinningSvc, createThinningSvc
-augStream = MSMgr.GetStream( streamName )
-evtStream = augStream.GetEventStream()
-svcMgr += createThinningSvc( svcName="L1CALO3ThinningSvc", outStreams=[evtStream] )
-
 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
 
 # Generic event info
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO4.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO4.py
index 2db4a337521f48afd8558bc026e9990161f30687..40fb3e8213a01fdf5e815ddb1741758cb565da34 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO4.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO4.py
@@ -4,6 +4,17 @@
 ## Load common flags
 from AthenaCommon.JobProperties import jobproperties as athCommonFlags
 
+## Steer output file
+from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
+from D2PDMaker.D2PDHelpers import buildFileName
+from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+streamName = primDPD.WriteDAOD_L1CALO4.StreamName
+fileName   = buildFileName( primDPD.WriteDAOD_L1CALO4 )
+L1CALO4Stream = MSMgr.NewPoolRootStream( streamName, fileName )
+L1CALO4Stream.AcceptAlgs(["DFL1CALO4_KERN"])
+augStream = MSMgr.GetStream( streamName )
+evtStream = augStream.GetEventStream()
+
 #################
 ### Setup Augmentation tools
 #################
@@ -31,7 +42,7 @@ thinningTools = []
 
 from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import DerivationFramework__TriggerTowerThinningAlg
 L1CALO4CaloThinningTool = DerivationFramework__TriggerTowerThinningAlg( name = "L1CALO4CaloThinningTool",
-									ThinService = "L1CALO4ThinningSvc",
+                                                                        StreamName              = streamName,
     									TriggerTowerLocation = "xAODTriggerTowers",
     									MinCaloCellET = 0.8,
     									MinADC = 36,
@@ -67,19 +78,6 @@ ToolSvc += CfgMgr.xAODMaker__TriggerMenuMetaDataTool(
 svcMgr.MetaDataSvc.MetaDataTools += [ ToolSvc.TriggerMenuMetaDataTool ]
 
 
-## Steer output file
-from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
-from D2PDMaker.D2PDHelpers import buildFileName
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-streamName = primDPD.WriteDAOD_L1CALO4.StreamName
-fileName   = buildFileName( primDPD.WriteDAOD_L1CALO4 )
-L1CALO4Stream = MSMgr.NewPoolRootStream( streamName, fileName )
-L1CALO4Stream.AcceptAlgs(["DFL1CALO4_KERN"])
-from AthenaServices.Configurables import ThinningSvc, createThinningSvc
-augStream = MSMgr.GetStream( streamName )
-evtStream = augStream.GetEventStream()
-svcMgr += createThinningSvc( svcName="L1CALO4ThinningSvc", outStreams=[evtStream] )
-
 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
 
 # Generic event info
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO5.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO5.py
index 32eab8bf3dfd13eca9aefcd7821f6cbcab8c2585..e2eb96ae544031925a1ef312b919e18033decac0 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO5.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/share/L1CALO5.py
@@ -4,6 +4,17 @@
 ## Load common flags
 from AthenaCommon.JobProperties import jobproperties as athCommonFlags
 
+## Steer output file
+from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
+from D2PDMaker.D2PDHelpers import buildFileName
+from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
+streamName = primDPD.WriteDAOD_L1CALO5.StreamName
+fileName   = buildFileName( primDPD.WriteDAOD_L1CALO5 )
+L1CALO5Stream = MSMgr.NewPoolRootStream( streamName, fileName )
+L1CALO5Stream.AcceptAlgs(["DFL1CALO5_KERN"])
+augStream = MSMgr.GetStream( streamName )
+evtStream = augStream.GetEventStream()
+
 #################
 ### Setup Augmentation tools
 #################
@@ -31,7 +42,7 @@ thinningTools = []
 
 from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import DerivationFramework__TriggerTowerThinningAlg
 L1CALO5CaloThinningTool = DerivationFramework__TriggerTowerThinningAlg( name = "L1CALO5CaloThinningTool",
-									ThinService = "L1CALO5ThinningSvc",
+                                                                        StreamName              = streamName,
     									TriggerTowerLocation = "xAODTriggerTowers",
     									MinCaloCellET = 0.8,
     									MinADC = 36,
@@ -67,19 +78,6 @@ ToolSvc += CfgMgr.xAODMaker__TriggerMenuMetaDataTool(
 svcMgr.MetaDataSvc.MetaDataTools += [ ToolSvc.TriggerMenuMetaDataTool ]
 
 
-## Steer output file
-from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
-from D2PDMaker.D2PDHelpers import buildFileName
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-streamName = primDPD.WriteDAOD_L1CALO5.StreamName
-fileName   = buildFileName( primDPD.WriteDAOD_L1CALO5 )
-L1CALO5Stream = MSMgr.NewPoolRootStream( streamName, fileName )
-L1CALO5Stream.AcceptAlgs(["DFL1CALO5_KERN"])
-from AthenaServices.Configurables import ThinningSvc, createThinningSvc
-augStream = MSMgr.GetStream( streamName )
-evtStream = augStream.GetEventStream()
-svcMgr += createThinningSvc( svcName="L1CALO5ThinningSvc", outStreams=[evtStream] )
-
 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
 
 # Generic event info
diff --git a/PhysicsAnalysis/PrimaryDPDMaker/share/PerfDPD_EGamma.py b/PhysicsAnalysis/PrimaryDPDMaker/share/PerfDPD_EGamma.py
index bbdee64f0c0ee2e186d51dad6c2aac84f7c64646..6b4b90ab9dab05709043acf3911cbbb516e9b23f 100644
--- a/PhysicsAnalysis/PrimaryDPDMaker/share/PerfDPD_EGamma.py
+++ b/PhysicsAnalysis/PrimaryDPDMaker/share/PerfDPD_EGamma.py
@@ -186,7 +186,7 @@ ToolSvc += DESDM_EGAMMATracksThinningTool
 
 from TrigT1CaloCalibTools.TrigT1CaloCalibToolsConf import DerivationFramework__TriggerTowerThinningAlg
 DESDM_EGAMMAL1CaloThinning = DerivationFramework__TriggerTowerThinningAlg( name = "DESDM_EGAMMAL1CaloThinning",
-                                                                           ThinService = "DESDM_EGAMMAThinningSvc",
+                                                                           StreamName = primDPD.WriteDESDM_EGAMMAStream.StreamName,
                                                                            TriggerTowerLocation = "xAODTriggerTowers",
                                                                            MinCaloCellET = 0.8,
                                                                            MinADC = 36,
@@ -235,10 +235,8 @@ StreamDESDM_EGAMMA.AcceptAlgs(["DESDM_EGAMMAKernel"])
 	
 # Thinning service name must match the one passed to the thinning tools
 
-from AthenaServices.Configurables import ThinningSvc, createThinningSvc
 augStream = MSMgr.GetStream( streamName )
 evtStream = augStream.GetEventStream()
-svcMgr += createThinningSvc( svcName="DESDM_EGAMMAThinningSvc", outStreams=[evtStream] )
 
 from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput
 
diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h
index e21fb182a94414e4ec5429153b2fb5f23a7e0e83..fa709b934a6e37c2fc07b825d7f37fc2d257a2bd 100644
--- a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h
+++ b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h
@@ -1,13 +1,13 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 //  ***************************************************************************
 //  *   Author: John Morris (john.morris@cern.ch)                             *
 //  *           Queen Mary University of London                               *
 //  *                                                                         *
 
-#ifndef _TRIGGER_TRIGT1_TRIGT1CALOCALIBTOOLS_TRIGGERTOWERTHINNINGALG_H_
-#define _TRIGGER_TRIGT1_TRIGT1CALOCALIBTOOLS_TRIGGERTOWERTHINNINGALG_H_
+#ifndef TRIGT1CALOCALIBTOOLS_TRIGGERTOWERTHINNINGALG_H
+#define TRIGT1CALOCALIBTOOLS_TRIGGERTOWERTHINNINGALG_H
 
 /**
    @class TriggerTowerThinningAlg
@@ -24,32 +24,32 @@
 **/
 
 #include "AthenaBaseComps/AthAlgTool.h"
+#include "TrigT1Interfaces/TrigT1CaloDefs.h"
 #include "DerivationFrameworkInterfaces/IThinningTool.h"
 #include "xAODTrigL1Calo/TriggerTowerContainer.h"
+#include "StoreGate/ThinningHandleKey.h"
 
 #include <vector>
 #include <TRandom3.h>
 
 
-class IThinningSvc;
-
 namespace DerivationFramework {
 
-  class TriggerTowerThinningAlg : public AthAlgTool , public IThinningTool{
+  class TriggerTowerThinningAlg : public extends<AthAlgTool, IThinningTool> {
 
   public:
     TriggerTowerThinningAlg(const std::string& t, const std::string& n, const IInterface* p);
     virtual ~TriggerTowerThinningAlg();
 
-    StatusCode initialize();
-    StatusCode finalize();
-    virtual StatusCode doThinning() const;
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode doThinning() const override;
 
   private:
-    ServiceHandle<IThinningSvc> m_thinningSvc;
-               
-    // StoreGate locations
-    std::string m_triggerTowerLocation;
+    StringProperty m_streamName
+    { this, "StreamName", "", "Name of the stream being thinned" };
+    SG::ThinningHandleKey<xAOD::TriggerTowerContainer> m_triggerTowerLocation
+      { this, "TriggerTowerLocation", LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation, "" };
 
     // python configurables
     double m_minCaloCellET;
diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/src/TriggerTowerThinningAlg.cxx b/Trigger/TrigT1/TrigT1CaloCalibTools/src/TriggerTowerThinningAlg.cxx
index 12ba00eeb80dcdfddb3fa3ba5bb9251a89ebea58..4adefbad08a5d70fb2ea281256255ed4c9d60b0a 100644
--- a/Trigger/TrigT1/TrigT1CaloCalibTools/src/TriggerTowerThinningAlg.cxx
+++ b/Trigger/TrigT1/TrigT1CaloCalibTools/src/TriggerTowerThinningAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 //  ***************************************************************************
 //  *   Author: John Morris (john.morris@cern.ch)                             *
@@ -22,13 +22,13 @@
 #include "TrigT1CaloCalibTools/TriggerTowerThinningAlg.h"
 // TrigT1 common definitions
 #include "TrigT1Interfaces/TrigT1CaloDefs.h"
+#include "StoreGate/ThinningHandle.h"
+#include "GaudiKernel/ThreadLocalContext.h"
 
 namespace DerivationFramework {
 
   TriggerTowerThinningAlg::TriggerTowerThinningAlg(const std::string& t, const std::string& n, const IInterface* p) :
-    AthAlgTool(t,n,p),
-    m_thinningSvc( "ThinningSvc",  n ),
-    m_triggerTowerLocation(LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation),
+    base_class(t,n,p),
     m_minCaloCellET(0.4),
     m_minADC(32),
     m_useRandom(false),
@@ -40,9 +40,6 @@ namespace DerivationFramework {
     m_nTriggerTowersRejected(0),
     m_random(0)
   {
-    declareInterface<DerivationFramework::IThinningTool>(this);    
-    declareProperty("ThinService",m_thinningSvc);
-    declareProperty("TriggerTowerLocation", m_triggerTowerLocation);
     declareProperty("MinCaloCellET",m_minCaloCellET);
     declareProperty("MinADC",m_minADC);
     declareProperty("UseRandom",m_useRandom);
@@ -56,6 +53,8 @@ namespace DerivationFramework {
   StatusCode TriggerTowerThinningAlg::initialize(){
     ATH_MSG_INFO("L1Calo TriggerTowerThinningAlg::initialize()");
 
+    ATH_CHECK( m_triggerTowerLocation.initialize (m_streamName) );
+
     // Random number generator
     if(m_useRandom == true){
       m_random = new TRandom3(0);
@@ -65,7 +64,7 @@ namespace DerivationFramework {
   }
 
   StatusCode TriggerTowerThinningAlg::doThinning() const{
-    StatusCode sc;
+    const EventContext& ctx = Gaudi::Hive::currentContext();
 
     // Create the mask to be used for thinning
     std::vector<bool> mask;
@@ -74,14 +73,8 @@ namespace DerivationFramework {
     unsigned long nKeep(0),nReject(0),nTotal(0);
     ++m_nEventsProcessed;
     
-    // Shall I proceed?
-    if (!evtStore()->contains<xAOD::TriggerTowerContainer>( m_triggerTowerLocation )) {    
-      ATH_MSG_ERROR("No TriggerTowers in input file, so can't do any thinning!");
-      return StatusCode::FAILURE;
-    }
-    
-    const xAOD::TriggerTowerContainer* tts(nullptr);
-    CHECK( evtStore()->retrieve( tts , m_triggerTowerLocation ) );
+    SG::ThinningHandle<xAOD::TriggerTowerContainer> tts
+      (m_triggerTowerLocation, ctx);
     
     mask.assign(tts->size(),false); // default: don't keep any clusters
     
@@ -143,10 +136,7 @@ namespace DerivationFramework {
     } // End loop over trigger towers
 
 
-    if (m_thinningSvc->filter(*tts,mask,IThinningSvc::Operator::Or).isFailure()) {
-      ATH_MSG_ERROR("Application of thinning service failed! ");
-      return StatusCode::FAILURE;
-    }
+    tts.keep (mask);
 
     // Counters
     m_nTriggerTowersProcessed += nTotal;
@@ -157,7 +147,7 @@ namespace DerivationFramework {
           << " and rejecting " << nReject << " cells");
 
 
-    return sc;
+    return StatusCode::SUCCESS;
   }
 
   StatusCode TriggerTowerThinningAlg::finalize(){