diff --git a/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.cxx b/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.cxx
index f9681c5fa94f63476aa9ce840f229d5fcb357e73..851ac742a362670a8edf418ae83ad11900bd6191 100644
--- a/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.cxx
+++ b/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.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
 */
 
 //*****************************************************************************
@@ -35,11 +35,9 @@
 // Constructor
 //
 TileDigitsFilter::TileDigitsFilter(std::string name, ISvcLocator* pSvcLocator)
-  : AthAlgorithm(name, pSvcLocator)
+  : AthReentrantAlgorithm(name, pSvcLocator)
   , m_tileHWID(0)
 {
-  declareProperty("LowGainThereshold", m_threshold[0] = 0); // keep all LG except zeros
-  declareProperty("HighGainThereshold", m_threshold[1] = 10); // keep signals above ~128(106) MeV in A,BC(D) samplings
 }
 
 TileDigitsFilter::~TileDigitsFilter() {
@@ -58,6 +56,9 @@ StatusCode TileDigitsFilter::initialize() {
   ATH_MSG_INFO( "Input raw channel container: '" << m_inputRawChannelContainerKey.key()
                 << "'  output container: '" << m_outputRawChannelContainerKey.key() << "'" );
 
+  m_threshold[0] = m_lowGainThreashold;
+  m_threshold[1] = m_highGainThreashold;
+
   ATH_MSG_INFO( "Threshold low gain: " << m_threshold[0]
                 << " counts,  high gain: " << m_threshold[1] << " counts" );
 
@@ -87,7 +88,7 @@ StatusCode TileDigitsFilter::initialize() {
 //
 // Begin Execution Phase.
 //
-StatusCode TileDigitsFilter::execute() {
+StatusCode TileDigitsFilter::execute(const EventContext& ctx) const {
 
   ATH_MSG_DEBUG( "in execute()" );
 
@@ -108,7 +109,7 @@ StatusCode TileDigitsFilter::execute() {
 
   // Get digit container from TES
   if (!m_inputDigitsContainerKey.key().empty()) {
-    SG::ReadHandle<TileDigitsContainer> inputDigitsContainer(m_inputDigitsContainerKey);
+    SG::ReadHandle<TileDigitsContainer> inputDigitsContainer(m_inputDigitsContainerKey, ctx);
 
     if (inputDigitsContainer.isValid()) {
       collItr = inputDigitsContainer->begin();
@@ -127,7 +128,7 @@ StatusCode TileDigitsFilter::execute() {
 
   // Get rawChannel container from TES
   if (!m_inputRawChannelContainerKey.key().empty()) {
-    SG::ReadHandle<TileRawChannelContainer> inputRawChannelContainer(m_inputRawChannelContainerKey);
+    SG::ReadHandle<TileRawChannelContainer> inputRawChannelContainer(m_inputRawChannelContainerKey, ctx);
 
     if (inputRawChannelContainer.isValid()) {
       collRchItr = firstRchColl = inputRawChannelContainer->begin();
@@ -240,7 +241,7 @@ StatusCode TileDigitsFilter::execute() {
 
   if (!m_outputDigitsContainerKey.key().empty()) {
     // register new container in the TES
-    SG::WriteHandle<TileDigitsContainer> outputDigitsContainer(m_outputDigitsContainerKey);
+    SG::WriteHandle<TileDigitsContainer> outputDigitsContainer(m_outputDigitsContainerKey, ctx);
     ATH_CHECK( outputDigitsContainer.record(std::move(outputCont)) );
 
     ATH_MSG_DEBUG( "TileDigitsContainer registered successfully (" << m_outputDigitsContainerKey.key() << ")");
@@ -249,7 +250,7 @@ StatusCode TileDigitsFilter::execute() {
 
   if (!m_outputRawChannelContainerKey.key().empty()) {
     // register new container in the TES
-    SG::WriteHandle<TileRawChannelContainer> outputRawChannelContainer(m_outputRawChannelContainerKey);
+    SG::WriteHandle<TileRawChannelContainer> outputRawChannelContainer(m_outputRawChannelContainerKey, ctx);
     ATH_CHECK( outputRawChannelContainer.record(std::move(outRchCont)) );
 
     ATH_MSG_DEBUG( "TileRawChannelContainer registered successfully (" 
diff --git a/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.h b/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.h
index 480b9d09900e0d012dc80a727ba8eadc4e82d0e7..1e78fe0c0d799ad77c55d22a0a4868da47f3f82a 100644
--- a/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.h
+++ b/TileCalorimeter/TileRecAlgs/src/TileDigitsFilter.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
 */
 
 //****************************************************************************
@@ -37,7 +37,7 @@
 #include "TileEvent/TileRawChannelContainer.h"
 
 // Atlas includes
-#include "AthenaBaseComps/AthAlgorithm.h"
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
 #include "StoreGate/ReadHandleKey.h"
 #include "StoreGate/WriteHandleKey.h"
 
@@ -51,7 +51,7 @@ class TileHWID;
  @brief This algorithm copies TileDigits from input container to output container
  keeping only channels with (max-min) sample above threshold
  */
-class TileDigitsFilter: public AthAlgorithm {
+class TileDigitsFilter: public AthReentrantAlgorithm {
   public:
     // Constructor
     TileDigitsFilter(std::string name, ISvcLocator* pSvcLocator);
@@ -60,31 +60,29 @@ class TileDigitsFilter: public AthAlgorithm {
     virtual ~TileDigitsFilter();
 
     //Gaudi Hooks
-    StatusCode initialize(); //!< initialize method
-    StatusCode execute();    //!< execute method
-    StatusCode finalize();   //!< finalize method
+    virtual StatusCode initialize() override; //!< initialize method
+    virtual StatusCode execute(const EventContext& ctx) const override;    //!< execute method
+    virtual StatusCode finalize() override;   //!< finalize method
 
   private:
-    std::string m_inputContainer;  //!< Name of the input TileDigitsContainer
-    std::string m_outputContainer; //!< Name of the output TileDigitsContainer
-    std::string m_inRchContainer; //!< Name of the input TileRawChannelContainer
-    std::string m_outRchContainer; //!< Name of the output TileRawChannelContainer
 
-    SG::ReadHandleKey<TileDigitsContainer> m_inputDigitsContainerKey{this,"InputDigitsContainer",
-                                                                       "TileDigitsCnt", "Input Tile digits container key"};
+    SG::ReadHandleKey<TileDigitsContainer> m_inputDigitsContainerKey{this,
+        "InputDigitsContainer", "TileDigitsCnt", "Input Tile digits container key"};
 
-    SG::WriteHandleKey<TileDigitsContainer> m_outputDigitsContainerKey{this,"OutputDigitsContainer",
-                                                                       "TileDigitsFlt","Output Tile digits container key"};
+    SG::WriteHandleKey<TileDigitsContainer> m_outputDigitsContainerKey{this,
+        "OutputDigitsContainer", "TileDigitsFlt","Output Tile digits container key"};
 
+    SG::ReadHandleKey<TileRawChannelContainer> m_inputRawChannelContainerKey{this,
+        "InputRawChannelContainer", "TileRawChannelCnt", "Input Tile raw channels container key"};
 
-    SG::ReadHandleKey<TileRawChannelContainer> m_inputRawChannelContainerKey{this,"InputRawChannelContainer",
-                                                                             "TileRawChannelCnt", 
-                                                                             "Input Tile raw channels container key"};
+    SG::WriteHandleKey<TileRawChannelContainer> m_outputRawChannelContainerKey{this,
+        "OutputRawChannelContainer", "TileRawChannelFlt", "Output Tile digits container key"};
 
-    SG::WriteHandleKey<TileRawChannelContainer> m_outputRawChannelContainerKey{this,"OutputRawChannelContainer",
-                                                                               "TileRawChannelFlt",
-                                                                               "Output Tile digits container key"};
+    Gaudi::Property<int> m_lowGainThreashold{this,
+        "LowGainThereshold", 0, "Low gain threshold to keep digits"}; // keep all LG except zeros
 
+    Gaudi::Property<int> m_highGainThreashold{this,
+        "HighGainThereshold", 10, "High gain threshold to keep digits"}; // keep signals above ~128(106) MeV in A,BC(D) samplings
 
     const TileHWID* m_tileHWID;