diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h
index 982ddab3fadcec1233593e9767f9065eccda6de4..27885bae46339a33d07da1998c3172a0b0e28fee 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileCisDefaultCalibTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILECALIBALG_TILECISDEFAULTCALIBTOOL_H
@@ -16,6 +16,8 @@
 // Tile includes
 #include "TileCalibAlgs/ITileCalibTool.h"
 #include "TileConditions/TileCablingService.h"
+#include "TileEvent/TileDQstatus.h"
+#include "StoreGate/ReadHandleKey.h"
 
 
 #include "TString.h"
@@ -24,7 +26,6 @@
 #include <map>
 
 // Forward declaration
-class TileBeamInfoProvider;
 class TileHWID;
 class TileCablingSvc;
 class TFile;
@@ -40,12 +41,12 @@ class TileCisDefaultCalibTool: public AthAlgTool
         const IInterface* pParent);
     virtual ~TileCisDefaultCalibTool();
 
-    virtual StatusCode initialize();
-    virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile);
-    virtual StatusCode execute();
-    virtual StatusCode finalizeCalculations();
-    virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile);
-    virtual StatusCode finalize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile) override;
+    virtual StatusCode execute() override;
+    virtual StatusCode finalizeCalculations() override;
+    virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile) override;
+    virtual StatusCode finalize() override;
 
   private:
 
@@ -85,8 +86,8 @@ class TileCisDefaultCalibTool: public AthAlgTool
     const TileHWID* m_tileHWID;
     const TileCablingService* m_cabling;
     ServiceHandle<TileCablingSvc> m_cablingSvc;
-    ToolHandle<TileBeamInfoProvider> m_beamPrv;
     ToolHandle<ITileStuckBitsProbsTool> m_stuckBitsProbs;
+    SG::ReadHandleKey<TileDQstatus> m_dqStatusKey;
 
     // jobOptions
     std::string m_rawChannelContainerName;
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h
index 5ac36415ba16e5a1beb2c0e4790cc830c86aba7a..68f8cc753a4972510b7ded9f03716de0735fbbb5 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileDigiNoiseCalibAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILEDIGINOISECALIBALG_H
@@ -23,6 +23,8 @@
 
 // Tile includes
 #include "TileConditions/TileCablingService.h"
+#include "TileEvent/TileDQstatus.h"
+#include "StoreGate/ReadHandleKey.h"
 
 #include <cmath>
 #include <vector>
@@ -32,7 +34,6 @@
 
 // Forward declaration
 class TileHWID;
-class TileBeamInfoProvider;
 class TileBeamElemContByteStreamCnv;
 class TileRawChannelBuilderFlatFilter;
 class TileOFCorrelation;
@@ -43,9 +44,9 @@ class TileDigiNoiseCalibAlg: public AthAlgorithm {
     virtual ~TileDigiNoiseCalibAlg();
 
     // Functions
-    StatusCode initialize(); //only array initialization is done here
-    StatusCode execute();
-    StatusCode finalize();
+    virtual StatusCode initialize() override; //only array initialization is done here
+    virtual StatusCode execute() override;
+    virtual StatusCode finalize() override;
 
   private:
 
@@ -59,9 +60,9 @@ class TileDigiNoiseCalibAlg: public AthAlgorithm {
 
     StatusCode FirstEvt_initialize(); // real initialization is done in this method
 
-    StatusCode fillDigits(); //accumulate statistics for pedestal, lfn, hfn, noise_cov calculation
+    StatusCode fillDigits (const TileDQstatus* theDQstatus); //accumulate statistics for pedestal, lfn, hfn, noise_cov calculation
     void finalDigits(); // pedestal, lfn, hfn, noise_cov calculation is done here
-    void StoreRunInfo(); // called only at the first event. General variables
+    void StoreRunInfo (const TileDQstatus* dqStatus); // called only at the first event. General variables
 
     inline int digiChannel2PMT(int ros, int chan) {
       return (abs(m_cabling->channel2hole(ros, chan)) - 1);
@@ -81,8 +82,9 @@ class TileDigiNoiseCalibAlg: public AthAlgorithm {
     // Default: use standard                                                              
     bool m_doRobustCov;
 
-    // Tools / storegate info
-    ToolHandle<TileBeamInfoProvider> m_beamInfo;
+    SG::ReadHandleKey<TileDQstatus> m_dqStatusKey;
+
+  // Tools / storegate info
     ToolHandle<TileRawChannelBuilderFlatFilter> m_adderFilterAlgTool;
     TileBeamElemContByteStreamCnv* m_beamCnv;
     const TileCablingService* m_cabling;
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserDefaultCalibTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserDefaultCalibTool.h
index 92eeb8222115b1f6054a5838945ab5bdfcd46b50..df52a945e1fd61cd02444e5cb975461f5769933a 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserDefaultCalibTool.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserDefaultCalibTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILECALIBALG_TILELASERDEFAULTCALIBTOOL_H
@@ -8,6 +8,8 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 
 #include "TileCalibAlgs/ITileCalibTool.h"
+#include "TileEvent/TileDQstatus.h"
+#include "StoreGate/ReadHandleKey.h"
 #include <string> 
 #include <map>
 #include <cmath>
@@ -33,7 +35,6 @@
 
 
 class TileRawChannelContainer;
-class TileBeamInfoProvider;
 class TileLaserObject;
 class TileHWID;
 class TFile;
@@ -48,12 +49,12 @@ class TileLaserDefaultCalibTool : public AthAlgTool, virtual public ITileCalibTo
   TileLaserDefaultCalibTool(const std::string& type, const std::string& name,const IInterface* pParent);
   virtual ~TileLaserDefaultCalibTool();
  
-  virtual StatusCode initialize();
-  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile);
-  virtual StatusCode execute();
-  virtual StatusCode finalizeCalculations();
-  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile);
-  virtual StatusCode finalize();
+  virtual StatusCode initialize() override;
+  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile) override;
+  virtual StatusCode execute() override;
+  virtual StatusCode finalizeCalculations() override;
+  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile) override;
+  virtual StatusCode finalize() override;
 
  private:
 
@@ -70,8 +71,8 @@ class TileLaserDefaultCalibTool : public AthAlgTool, virtual public ITileCalibTo
   const TileCablingService* m_cabling;
   ToolHandle<TileCondToolEmscale>  m_tileToolEmscale;
   ToolHandle<ITileBadChanTool>     m_tileBadChanTool;
-  TileBeamInfoProvider *m_beamInfo;
   ToolHandle<ITileStuckBitsProbsTool> m_stuckBitsProbs;
+  SG::ReadHandleKey<TileDQstatus> m_dqStatusKey;
 
   ServiceHandle<TileDCSSvc>   m_tileDCSSvc; //!< Pointer to TileDCSSvc
 
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserLinearityCalibTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserLinearityCalibTool.h
index 1439061543e2e983e0d73730d18030c9214b9964..7c69e0edd9a76ead97e15efd3f2e946ec2ddfac2 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserLinearityCalibTool.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserLinearityCalibTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILECALIBALG_TILELASERLINEARITYCALIBTOOL_H
@@ -14,9 +14,10 @@
 #include "TileConditions/TileCablingService.h"
 #include "TileConditions/TileCondToolEmscale.h"
 #include "TileCalibAlgs/TileLaserDefaultCalibTool.h"
+#include "TileEvent/TileDQstatus.h"
+#include "StoreGate/ReadHandleKey.h"
 
 class TileRawChannelContainer;
-class TileBeamInfoProvider;
 class TileLaserObject;
 class TileHWID;
 class TFile;
@@ -28,12 +29,12 @@ class TileLaserLinearityCalibTool : public AthAlgTool, virtual public ITileCalib
   TileLaserLinearityCalibTool(const std::string& type, const std::string& name,const IInterface* pParent);
   virtual ~TileLaserLinearityCalibTool();
  
-  virtual StatusCode initialize();
-  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile);
-  virtual StatusCode execute();
-  virtual StatusCode finalizeCalculations();
-  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile);
-  virtual StatusCode finalize();
+  virtual StatusCode initialize() override;
+  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile) override;
+  virtual StatusCode execute() override;
+  virtual StatusCode finalizeCalculations() override;
+  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile) override;
+  virtual StatusCode finalize() override;
 
  private:
 
@@ -42,11 +43,11 @@ class TileLaserLinearityCalibTool : public AthAlgTool, virtual public ITileCalib
 
   std::string m_rawChannelContainerName;
   std::string m_laserContainerName;
+  SG::ReadHandleKey<TileDQstatus> m_dqStatusKey;
 
   const TileHWID* m_tileHWID;    
   const TileCablingService* m_cabling;
   ToolHandle<TileCondToolEmscale>  m_tileToolEmscale;
-  TileBeamInfoProvider *m_beamInfo;
 
   // Parameter which will end up in the ROOTuple
   //
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserTimingTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserTimingTool.h
index c420abe85b03148bc124b3deece1daefd42dd447..4cf198b994799de1105e56d0e5719f6ec4486b4d 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserTimingTool.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileLaserTimingTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILECALIBALG_TILELASERTIMINGTOOL_H
@@ -52,7 +52,6 @@
 #include <sstream>
 
 class TileHWID;
-class TileBeamInfoProvider;
 class TileRawChannelContainer;
 
 class TFile;
@@ -69,12 +68,12 @@ class TileLaserTimingTool: public AthAlgTool, virtual public ITileCalibTool {
     virtual ~TileLaserTimingTool();
 
     // implementation of ITileCalibTool
-    virtual StatusCode initialize();
-    virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile);
-    virtual StatusCode execute();
-    virtual StatusCode finalizeCalculations();
-    virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile);
-    virtual StatusCode finalize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile) override;
+    virtual StatusCode execute() override;
+    virtual StatusCode finalizeCalculations() override;
+    virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile) override;
+    virtual StatusCode finalize() override;
 
   private:
     /**
@@ -234,7 +233,6 @@ class TileLaserTimingTool: public AthAlgTool, virtual public ITileCalibTool {
     // Tools info
     const TileHWID* m_tileHWID;
     const TileCablingService* m_cabling;
-    ToolHandle<TileBeamInfoProvider> m_beamInfo;
     ToolHandle<TileCondToolTiming> m_tileToolTiming;
 
     // jobOptions
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h
index 49a9a0958303914bad78ea78a5aa0ef4d97f40aa..9db35130aa755c256df065a9129c288bd33d23b6 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileRawChNoiseCalibAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILERAWCHNOISECALIBALG_H
@@ -20,12 +20,14 @@
 
 // Athena includes
 #include "AthenaBaseComps/AthAlgorithm.h"
+#include "StoreGate/ReadHandleKey.h"
 
 // Tile includes
 #include "TileConditions/TileCablingService.h"
 #include "TileConditions/TileCondIdTransforms.h"
 #include "TileConditions/TileCondToolEmscale.h"
 #include "TileConditions/ITileBadChanTool.h"
+#include "TileEvent/TileDQstatus.h"
 
 #include <cmath>
 #include <vector>
@@ -34,7 +36,6 @@
 #include <stdint.h>
 
 class TileHWID;
-class TileBeamInfoProvider;
 class TileBeamElemContByteStreamCnv;
 class TileDQstatus;
 class TileRawChannel;
@@ -47,9 +48,9 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm {
     virtual ~TileRawChNoiseCalibAlg();
 
     // Functions
-    StatusCode initialize(); //only array initialization is done here
-    StatusCode execute();
-    StatusCode finalize();
+    virtual StatusCode initialize() override; //only array initialization is done here
+    virtual StatusCode execute() override;
+    virtual StatusCode finalize() override;
     void finalRawCh(int rctype);
 
   private:
@@ -64,8 +65,8 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm {
 
     StatusCode FirstEvt_initialize(); // real initialization is done in this method
 
-    StatusCode fillRawChannels(std::string rcCnt, RCtype rctype); // raw chans variables is done here
-    void StoreRunInfo(); // called only at the first event. General variables
+    StatusCode fillRawChannels(const TileDQstatus* dqStatus, std::string rcCnt, RCtype rctype); // raw chans variables is done here
+    void StoreRunInfo(const TileDQstatus* dqStatus); // called only at the first event. General variables
     void removeRC(RCtype rctype); // if a RawChannel container doesn't exist, it is removed from the list
 
     void fillCell(TileRawChannelUnit::UNIT RChUnit, const TileRawChannel * rch);
@@ -101,15 +102,14 @@ class TileRawChNoiseCalibAlg: public AthAlgorithm {
     bool m_fillidx;
 
     // Tools / storegate info
-    ToolHandle<TileBeamInfoProvider> m_beamInfo;
     TileBeamElemContByteStreamCnv* m_beamCnv;
-    //TileBeamInfoProvider* m_beamPrv;
     const TileCablingService* m_cabling;
     // Identifiers
     const TileID* m_tileID;
     const TileHWID* m_tileHWID;
     ToolHandle<TileCondToolEmscale> m_tileToolEmscale;
     ToolHandle<ITileBadChanTool> m_tileBadChanTool;
+    SG::ReadHandleKey<TileDQstatus> m_dqStatusKey;
     ToolHandle<TileCondIdTransforms> m_tileIdTrans;
     const uint32_t* m_cispar;
 
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h
index 3ac1b0a213c6b2bcab4c90c7fba171c6f9aef8bf..b6e764b4e03f067a4c9f0a0e28445542b5ea3c85 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/TileCalibAlgs/TileTriggerDefaultCalibTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILECALIBALG_TILETRIGGERDEFAULTCALIBTOOL_H
@@ -11,10 +11,11 @@
 #include "TileCalibAlgs/ITileCalibTool.h"
 #include "TrigT1CaloCalibToolInterfaces/IL1CaloTTIdTools.h" 
 //#include "TrigT1CaloToolInterfaces/IL1TriggerTowerTool.h"
+#include "TileEvent/TileDQstatus.h"
+#include "StoreGate/ReadHandleKey.h"
 
 #include <string> 
 
-class TileBeamInfoProvider;
 class TileCablingService;
 class TileCondToolEmscale;
 class CaloLVL1_ID;
@@ -34,12 +35,12 @@ class TileTriggerDefaultCalibTool : public AthAlgTool, virtual public ITileCalib
   TileTriggerDefaultCalibTool(const std::string& type, const std::string& name,const IInterface* pParent);
   virtual ~TileTriggerDefaultCalibTool();
 
-  virtual StatusCode initialize();
-  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile);
-  virtual StatusCode execute();
-  virtual StatusCode finalizeCalculations();
-  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile);
-  virtual StatusCode finalize();
+  virtual StatusCode initialize() override;
+  virtual StatusCode initNtuple(int runNumber, int runType, TFile * rootfile) override;
+  virtual StatusCode execute() override;
+  virtual StatusCode finalizeCalculations() override;
+  virtual StatusCode writeNtuple(int runNumber, int runType, TFile * rootfile) override;
+  virtual StatusCode finalize() override;
 
  private:
 
@@ -51,12 +52,12 @@ class TileTriggerDefaultCalibTool : public AthAlgTool, virtual public ITileCalib
   unsigned int m_nevpmt;
 
   // Tools / storegate info
-  TileBeamInfoProvider *m_beamPrv;
   const CaloLVL1_ID* m_TT_ID;
   const TileHWID* m_tileHWID;
   const TileID*   m_tileID;
   const TileCablingService* m_tileCablingService;
   ToolHandle<TileCondToolEmscale> m_tileToolEmscale; //!< main Tile Calibration tool
+  SG::ReadHandleKey<TileDQstatus> m_dqStatusKey;
  
   // Results Tile
   float m_meanTile[5][64][48];
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/share/jobOptions_NoiseCalib.py b/TileCalorimeter/TileCalib/TileCalibAlgs/share/jobOptions_NoiseCalib.py
index 840f0e0d004d61a1018ca9caab879e39245cccbf..5ec0f1b1f555cbdba391c2e41279bb1ba85ed5d1 100755
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/share/jobOptions_NoiseCalib.py
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/share/jobOptions_NoiseCalib.py
@@ -360,6 +360,9 @@ else:
 from AthenaCommon.AlgSequence import AlgSequence
 topSequence = AlgSequence()
 
+from TileRecUtils.TileDQstatusAlgDefault import TileDQstatusAlgDefault
+TileDQstatusAlgDefault()
+
 
 #Add Noise Calib Tool
 from TileCalibAlgs.TileCalibAlgsConf import TileDigiNoiseCalibAlg
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx
index dfc0a5e4bbe758ffbdf82e2d2c4280d6f43f40d6..ad49a74c82769a3745ec507b4563aa6638dd27d2 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileCisDefaultCalibTool.cxx
@@ -1,21 +1,21 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // Gaudi includes
-#include "GaudiKernel/ListItem.h"
 #include "GaudiKernel/IToolSvc.h"
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/Service.h"
+#include "GaudiKernel/ThreadLocalContext.h"
 
 #include "Identifier/HWIdentifier.h"
 
 // Athena includes
 #include "AthenaKernel/errorcheck.h"
+#include "StoreGate/ReadHandle.h"
 
 // Tile includes
 #include "TileCalibAlgs/TileCisDefaultCalibTool.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileEvent/TileDigitsContainer.h"
 #include "TileIdentifier/TileHWID.h"
@@ -43,7 +43,6 @@ TileCisDefaultCalibTool::TileCisDefaultCalibTool(const std::string& type, const
   , m_tileHWID(0)
   , m_cabling(0)
   , m_cablingSvc("TileCablingSvc", name)
-  , m_beamPrv("TileBeamInfoProvider")
   , m_stuckBitsProbs("")
   , m_scanMap(0)
   , m_scanMapRMS(0)
@@ -68,7 +67,7 @@ TileCisDefaultCalibTool::TileCisDefaultCalibTool(const std::string& type, const
   declareProperty("doSampleChecking", m_doSampleChecking = true); // do sample checking by default
   declareProperty("DigitsContainer", m_DigitsContainerName = "TileDigitsCnt");
   declareProperty("StuckBitsProbsTool", m_stuckBitsProbs);
-
+  declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus");
 }
 
 TileCisDefaultCalibTool::~TileCisDefaultCalibTool() {
@@ -92,11 +91,6 @@ StatusCode TileCisDefaultCalibTool::initialize() {
   memset(m_BitStatus, 0, sizeof(m_BitStatus));
   memset(m_NumSamp, 0, sizeof(m_NumSamp));
 
-  // get beam info tool
-  CHECK( m_beamPrv.retrieve() );
-
-  CHECK( m_beamPrv->setProperty("TileRawChannelContainer", "TileRawChannelCnt") );
-
   // get TileHWID helper
   CHECK( detStore()->retrieve(m_tileHWID) );
 
@@ -104,6 +98,8 @@ StatusCode TileCisDefaultCalibTool::initialize() {
   CHECK( m_cablingSvc.retrieve() );
   m_cabling = m_cablingSvc->cablingService();
 
+  CHECK( m_dqStatusKey.initialize() );
+
   return StatusCode::SUCCESS;
 }
 
@@ -117,15 +113,16 @@ StatusCode TileCisDefaultCalibTool::execute() {
 
   ATH_MSG_DEBUG( "execute()" );
 
+  // Get the DQ digital check information
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+  const TileDQstatus* theDQstatus = SG::makeHandle (m_dqStatusKey, ctx).get();
+
   // Get event's CIS parameters
-  const uint32_t *cispar = m_beamPrv->cispar();
+  const uint32_t *cispar = theDQstatus->cispar();
   uint32_t dac = cispar[6];
   uint32_t phase = cispar[5];
   uint32_t cap = cispar[7];
 
-  // Get the DQ digital check information
-  const TileDQstatus * theDQstatus = m_beamPrv->getDQstatus();
-
   // Check if event should be used in calibration
   bool pass = true;
   if (cap == 100 && m_useSmallCap)
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx
index 16be57fa8ce69b571f2fd09e2c5df897d395a1c4..b5da646dd5dd8d92f4fba4730638fe774b81ead2 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileDigiNoiseCalibAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
@@ -14,14 +14,15 @@
 
 // Gaudi includes
 #include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ThreadLocalContext.h"
 
 //Event info
 #include "xAODEventInfo/EventInfo.h"
+#include "StoreGate/ReadHandle.h"
 #include "AthenaKernel/errorcheck.h"
 
 // Tile includes
 #include "TileCalibAlgs/TileDigiNoiseCalibAlg.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileEvent/TileRawChannelContainer.h"
 #include "CaloIdentifier/TileID.h"
 #include "TileIdentifier/TileHWID.h"
@@ -29,7 +30,6 @@
 #include "TileEvent/TileBeamElemContainer.h"
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileRecUtils/TileRawChannelBuilderFlatFilter.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileByteStream/TileBeamElemContByteStreamCnv.h"
 #include "TileCalibAlgs/TileOFCorrelation.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
@@ -48,7 +48,6 @@
 
 TileDigiNoiseCalibAlg::TileDigiNoiseCalibAlg(const std::string& name, ISvcLocator* pSvcLocator)
     : AthAlgorithm(name, pSvcLocator)
-  , m_beamInfo("TileBeamInfoProvider/TileBeamInfoProvider")
   , m_adderFilterAlgTool("TileRawChannelBuilderFlatFilter/TileAdderFlatFilter", this)
   , m_beamCnv(0)
   , m_cabling(0)
@@ -66,7 +65,6 @@ TileDigiNoiseCalibAlg::TileDigiNoiseCalibAlg(const std::string& name, ISvcLocato
   , m_min(0)
   , m_trigType(0)
 {
-  declareProperty("TileBeamInfoProvider", m_beamInfo);
   declareProperty("TileAdderFlatFilter", m_adderFilterAlgTool);
   declareProperty("TileDigitsContainer", m_digitsContainer = "TileDigitsCnt");
   declareProperty("TileBeamElemContainer", m_beamElemContainer = "TileBeamElemCnt");
@@ -83,6 +81,7 @@ TileDigiNoiseCalibAlg::TileDigiNoiseCalibAlg(const std::string& name, ISvcLocato
   declareProperty("NSamples", m_nSamples = 7);
   declareProperty("DoAvgCorr", m_doAvgCorr = false);
   declareProperty("DoRobustCov", m_doRobustCov = false);
+  declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus");
 
   m_run = 0;
   m_evtNr = -1;
@@ -110,6 +109,8 @@ StatusCode TileDigiNoiseCalibAlg::initialize() {
   memset(m_noise_cov, 0, sizeof(m_noise_cov));
   memset(m_auto_corr, 0, sizeof(m_auto_corr));
 
+  CHECK( m_dqStatusKey.initialize() );
+
   return StatusCode::SUCCESS;
 }
 
@@ -125,8 +126,6 @@ StatusCode TileDigiNoiseCalibAlg::FirstEvt_initialize() {
 
   CHECK( detStore()->retrieve(m_tileHWID) );
 
-  CHECK( m_beamInfo.retrieve() );
-
   CHECK( m_adderFilterAlgTool.retrieve() );
 
   m_adderFilterAlgTool->setProperty("TileRawChannelContainer", "TileAdderFlat");
@@ -177,6 +176,9 @@ StatusCode TileDigiNoiseCalibAlg::FirstEvt_initialize() {
 /// Main method
 StatusCode TileDigiNoiseCalibAlg::execute() {
 
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+  const TileDQstatus * dqStatus = SG::makeHandle (m_dqStatusKey, ctx).get();
+
   StatusCode sc;
   bool empty(false);
 
@@ -186,23 +188,23 @@ StatusCode TileDigiNoiseCalibAlg::execute() {
       ATH_MSG_ERROR( "FirstEvt_initialize failed" );
     }
 
-    bool calibMode = (m_beamInfo->calibMode() == 1);
+    bool calibMode = (dqStatus->calibMode() == 1);
     if (calibMode != m_calibMode) {
       ATH_MSG_INFO( "Calib mode from data is " );
       ATH_MSG_INFO( "  Overwriting calib mode " );
       m_calibMode = calibMode;
     }
 
-    m_cispar = m_beamInfo->cispar();
-    StoreRunInfo(); // done only once
+    m_cispar = dqStatus->cispar();
+    StoreRunInfo(dqStatus); // done only once
   }
 
-  m_cispar = m_beamInfo->cispar();
+  m_cispar = dqStatus->cispar();
   if (m_evtNr % 1000 == 0)
     ATH_MSG_WARNING( m_evtNr << " events processed so far" );
 
   // store TileDigits
-  if (m_nSamples > 0) sc = fillDigits();
+  if (m_nSamples > 0) sc = fillDigits (dqStatus);
   empty &= (sc.isFailure());
 
   if (empty) {
@@ -275,9 +277,9 @@ StatusCode TileDigiNoiseCalibAlg::finalize() {
 }
 
 /// StoreRunInfo is called only during the first event
-void TileDigiNoiseCalibAlg::StoreRunInfo() {
+void TileDigiNoiseCalibAlg::StoreRunInfo (const TileDQstatus* dqStatus) {
 
-  if (m_beamInfo->calibMode() == 1 && m_beamElemContainer.length() > 0) {// Bigain can use cispar
+  if (dqStatus->calibMode() == 1 && m_beamElemContainer.length() > 0) {// Bigain can use cispar
     if (m_beamCnv) {
       //    std::cout << "LUCA m_time= "<< m_time << "   bc_time_seconds= "<<  m_beamCnv->eventFragment()->bc_time_seconds() <<
       //  "   bc_time_nanoseconds= " << m_beamCnv->eventFragment()->bc_time_nanoseconds() << std::endl;
@@ -289,7 +291,7 @@ void TileDigiNoiseCalibAlg::StoreRunInfo() {
     } else
       m_run = 0;
 
-    if (m_beamInfo && m_cispar) {
+    if (dqStatus && m_cispar) {
       m_time = m_cispar[10]; //time in sc from 1970
       m_trigType = m_cispar[12];
     } else {
@@ -342,11 +344,9 @@ void TileDigiNoiseCalibAlg::StoreRunInfo() {
 /// fillDigits is called at every events.
 /// Statistics is summed for Average, RMS and covariance calculations
 /*---------------------------------------------------------*/
-StatusCode TileDigiNoiseCalibAlg::fillDigits() {
+StatusCode TileDigiNoiseCalibAlg::fillDigits (const TileDQstatus* theDQstatus) {
 /*---------------------------------------------------------*/
 
-  const TileDQstatus * theDQstatus = m_beamInfo->getDQstatus();
-
   const TileDigitsContainer* DigitsCnt;
   CHECK( evtStore()->retrieve(DigitsCnt, "TileDigitsCnt") );
 
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserDefaultCalibTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserDefaultCalibTool.cxx
index 4a9d3df792dc62fdfc07050e0d6f9cd494fc406f..614effeabff42477a1502002899f6b447b833c4e 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserDefaultCalibTool.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserDefaultCalibTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TileCalibAlgs/TileLaserDefaultCalibTool.h"
@@ -8,14 +8,15 @@
 #include "GaudiKernel/Service.h"
 #include "GaudiKernel/IToolSvc.h"
 #include "GaudiKernel/ListItem.h"
+#include "GaudiKernel/ThreadLocalContext.h"
 
 #include "Identifier/HWIdentifier.h"
+#include "StoreGate/ReadHandle.h"
 
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileEvent/TileLaserObject.h"
 #include "TileConditions/TileCablingService.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileConditions/ITileBadChanTool.h"
 #include "TileConditions/TileDCSSvc.h"
 
@@ -44,7 +45,6 @@ TileLaserDefaultCalibTool::TileLaserDefaultCalibTool(const std::string& type, co
   m_cabling(nullptr),
   m_tileToolEmscale("TileCondToolEmscale"),
   m_tileBadChanTool("TileBadChanTool"),
-  m_beamInfo(nullptr),
   m_stuckBitsProbs(""),
   m_tileDCSSvc("TileDCSSvc",name),
   m_toolRunNo(0),
@@ -125,6 +125,7 @@ TileLaserDefaultCalibTool::TileLaserDefaultCalibTool(const std::string& type, co
   declareProperty("pisaMethod2", m_pisaMethod2=true);
   declareProperty("TileDCSSvc",m_tileDCSSvc);
   declareProperty("StuckBitsProbsTool", m_stuckBitsProbs);
+  declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus");
 } // TileLaserDefaultCalibTool::TileLaserDefaultCalibTool
 
 TileLaserDefaultCalibTool::~TileLaserDefaultCalibTool()
@@ -270,10 +271,12 @@ StatusCode TileLaserDefaultCalibTool::initialize(){
   ATH_CHECK( detStore()->retrieve(m_tileHWID) );
   ATH_CHECK( m_tileToolEmscale.retrieve() );
   ATH_CHECK( m_tileBadChanTool.retrieve() );
-  ATH_CHECK( toolSvc()->retrieveTool("TileBeamInfoProvider",m_beamInfo) );
   
 
   ATH_CHECK( m_tileDCSSvc.retrieve() );
+
+  CHECK( m_dqStatusKey.initialize() );
+
   return StatusCode::SUCCESS;
 }
 
@@ -285,6 +288,9 @@ StatusCode TileLaserDefaultCalibTool::initNtuple(int runNumber, int runType, TFi
 
 
 StatusCode TileLaserDefaultCalibTool::execute(){
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+  const TileDQstatus* dqStatus = SG::makeHandle (m_dqStatusKey, ctx).get();
+
   const char* text[NGAINS] = {"LG DIODE ","HG DIODE "}; 
   ++m_evtNr;   // Increment event number
   ATH_MSG_DEBUG ( "Event counter: " << m_evtNr );
@@ -303,7 +309,7 @@ StatusCode TileLaserDefaultCalibTool::execute(){
   if(m_LASERII) ATH_MSG_DEBUG ( "LaserII version is " << laserObj->getVersion() << " DAQ Type = " << laserObj->getDaqType() );
   else          ATH_MSG_DEBUG ( "LaserI version is "  << laserObj->getVersion() << " DAQ Type = " << laserObj->getDaqType() );
   
-  const uint32_t *cispar = m_beamInfo->cispar();
+  const uint32_t *cispar = dqStatus->cispar();
   
   m_las_time = static_cast<double>(cispar[10])+static_cast<double>(cispar[11])/1000000;
   
@@ -332,8 +338,7 @@ StatusCode TileLaserDefaultCalibTool::execute(){
       for ( int drawer=0; drawer<NDRAWERS; ++drawer ) {
 	unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros,drawer);
 	for ( int channel=0; channel<NCHANNELS; ++channel ) {
-	  const TileDQstatus *theDQstatus = m_beamInfo->getDQstatus();
-	  if ( theDQstatus->isChEmpty(ros,drawer,channel) ) {  // Check whether channel is connected
+	  if ( dqStatus->isChEmpty(ros,drawer,channel) ) {  // Check whether channel is connected
 	    continue;
 	  }
 	  for ( int gain=0; gain<NGAINS; ++gain ) {
@@ -556,14 +561,13 @@ StatusCode TileLaserDefaultCalibTool::execute(){
       
       if(ofctime!=0.0) ofctime -= avg_time[part][gain]->Mean();
       
-      const TileDQstatus *theDQstatus = m_beamInfo->getDQstatus();
-      if ( theDQstatus->isChEmpty(ros,drawer,chan) ) {  // Check whether channel is connected
+      if ( dqStatus->isChEmpty(ros,drawer,chan) ) {  // Check whether channel is connected
         m_status[part][drawer][chan][0] = -1;
         m_status[part][drawer][chan][1] = -1;
         continue; // Nothing to be seen here
       } 
             
-      if ( !theDQstatus->isAdcDQgood(ros,drawer,chan,gain) ) { // Masked on the fly
+      if ( !dqStatus->isAdcDQgood(ros,drawer,chan,gain) ) { // Masked on the fly
         m_status[part][drawer][chan][gain] |= 0x10;
 	is_good = false;
       }
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserLinearityCalibTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserLinearityCalibTool.cxx
index 4cc3b09245a88b1dabf55889a25d2c771319fdc7..0533ddb5b943c332e55e371c91a13a7aebe1fd81 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserLinearityCalibTool.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserLinearityCalibTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TileCalibAlgs/TileLaserLinearityCalibTool.h"
@@ -11,12 +11,12 @@
 
 
 #include "Identifier/HWIdentifier.h"
+#include "StoreGate/ReadHandle.h"
 
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileEvent/TileLaserObject.h"
 #include "TileConditions/TileCablingService.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 
 #include "TFile.h"
 #include "TTree.h"
@@ -36,7 +36,6 @@ TileLaserLinearityCalibTool::TileLaserLinearityCalibTool(const std::string& type
   m_tileHWID (nullptr),
   m_cabling (nullptr),
   m_tileToolEmscale("TileCondToolEmscale"),
-  m_beamInfo (nullptr),
   m_toolRunNo(0),
   m_ADC_problem(0),
   m_las_filter(0),
@@ -84,6 +83,7 @@ TileLaserLinearityCalibTool::TileLaserLinearityCalibTool(const std::string& type
   declareProperty("toolNtuple", m_toolNtuple="h3000");
   declareProperty("rawChannelContainer", m_rawChannelContainerName="");
   declareProperty("laserObjContainer", m_laserContainerName="");
+  declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus");
 }
 
 TileLaserLinearityCalibTool::~TileLaserLinearityCalibTool()
@@ -193,7 +193,8 @@ StatusCode TileLaserLinearityCalibTool::initialize()
 
   m_cabling = TileCablingService::getInstance();
 
-  ATH_CHECK( toolSvc()->retrieveTool("TileBeamInfoProvider",m_beamInfo) );
+  CHECK( m_dqStatusKey.initialize() );
+
   return StatusCode::SUCCESS;  
 }       
 
@@ -219,6 +220,9 @@ StatusCode TileLaserLinearityCalibTool::execute()
 {
   ATH_MSG_INFO ( "execute()" );
 
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+  const TileDQstatus* dqStatus = SG::makeHandle (m_dqStatusKey, ctx).get();
+
   //
   // Here we analyze a run with filter wheel moving
   // we just keep the information from the first turn of the wheel
@@ -240,7 +244,7 @@ StatusCode TileLaserLinearityCalibTool::execute()
 
   // First we got event time (From 1/1/70)
 
-  const uint32_t *cispar = m_beamInfo->cispar();
+  const uint32_t *cispar = dqStatus->cispar();
   
   m_las_time = static_cast<double>(cispar[10])+static_cast<double>(cispar[11])/1000000;
 
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx
index 5ede446da820a0dd0ae362917f4136d38b292fcc..1817f9dbcc1d07926a28e7a766aeff8912ef12d5 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileLaserTimingTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // Athena includes
@@ -11,7 +11,6 @@
 
 // Tile includes
 #include "TileCalibAlgs/TileLaserTimingTool.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileEvent/TileDigitsContainer.h"
 #include "TileIdentifier/TileHWID.h"
@@ -123,7 +122,6 @@ TileLaserTimingTool::TileLaserTimingTool(const std::string& type, const std::str
   : AthAlgTool(type, name, pParent)
   , m_tileHWID(0)
   , m_cabling(0)
-  , m_beamInfo("TileBeamInfoProvider")
   , m_tileToolTiming("TileCondToolTiming")
   , m_nevts(0)
   , m_gaussf(0)
@@ -132,7 +130,6 @@ TileLaserTimingTool::TileLaserTimingTool(const std::string& type, const std::str
   declareInterface<ITileCalibTool>( this );
 
   declareProperty("TileCondToolTiming", m_tileToolTiming);
-  declareProperty("TileBeamInfoProvider", m_beamInfo);
   declareProperty("RawChannelContainer", m_rawChannelContainerName = "TileRawChannelFit");
   declareProperty("DigitsContainer", m_digitsContainerName = "TileDigitsCnt");
   declareProperty("NtupleID", m_ntupleID = "h3000");
@@ -164,9 +161,6 @@ StatusCode TileLaserTimingTool::initialize() {
 
   ATH_MSG_INFO( "initialize()" );
 
-  // get beam info tool
-  CHECK( m_beamInfo.retrieve() );
-
   // get TileHWID helper
   CHECK( detStore()->retrieve(m_tileHWID) );
 
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx
index 3357a48c63b64fabdc5b4514b71cad88d99be81c..b2c2c293af1ccd3a298b9840e0793a3935470ef0 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileRawChNoiseCalibAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ****** **************************************************************
@@ -19,17 +19,16 @@
 //Event info
 #include "xAODEventInfo/EventInfo.h"
 #include "AthenaKernel/errorcheck.h"
+#include "StoreGate/ReadHandle.h"
 
 // Tile includes
 #include "TileCalibAlgs/TileRawChNoiseCalibAlg.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileEvent/TileRawChannelContainer.h"
 #include "CaloIdentifier/TileID.h"
 #include "TileIdentifier/TileHWID.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
 #include "TileEvent/TileDigitsContainer.h"
 #include "TileEvent/TileBeamElemContainer.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileByteStream/TileBeamElemContByteStreamCnv.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
 
@@ -62,9 +61,7 @@
 
 TileRawChNoiseCalibAlg::TileRawChNoiseCalibAlg(const std::string& name, ISvcLocator* pSvcLocator)
  : AthAlgorithm(name,pSvcLocator)
-  , m_beamInfo("TileBeamInfoProvider/TileBeamInfoProvider")
   , m_beamCnv(0)
-  //, m_beamPrv(0)
   , m_cabling(0)
   , m_tileID(0)
   , m_tileHWID(0)
@@ -110,6 +107,7 @@ TileRawChNoiseCalibAlg::TileRawChNoiseCalibAlg(const std::string& name, ISvcLoca
   declareProperty("TreeSize", m_treeSize = 16000000000LL);
   declareProperty("TileCondToolEmscale", m_tileToolEmscale);
   declareProperty("TileBadChanTool", m_tileBadChanTool);
+  declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus");
 
   m_evtNr=-1;
 
@@ -229,6 +227,7 @@ StatusCode TileRawChNoiseCalibAlg::initialize() {
   //=== get TileCondIdTransforms
   CHECK( m_tileIdTrans.retrieve() );
 
+  CHECK( m_dqStatusKey.initialize() );
 
   return StatusCode::SUCCESS;
 }
@@ -246,8 +245,6 @@ StatusCode TileRawChNoiseCalibAlg::FirstEvt_initialize() {
 
   CHECK( detStore()->retrieve(m_tileHWID) );
 
-  CHECK( m_beamInfo.retrieve() );
-
   ATH_MSG_INFO( "calibMode " << m_calibMode  );
 
 
@@ -283,35 +280,37 @@ StatusCode TileRawChNoiseCalibAlg::FirstEvt_initialize() {
 /// Main method
 StatusCode TileRawChNoiseCalibAlg::execute() {
 
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+  const TileDQstatus* dqStatus = SG::makeHandle (m_dqStatusKey, ctx).get();
+
   bool empty(false); // to add all StatusCodes
-  
 
   if (m_evtNr < 0) {
 
     if (FirstEvt_initialize().isFailure()) { ATH_MSG_ERROR( "FirstEvt_initialize failed" ); }
 
-    bool calibMode  = (m_beamInfo->calibMode() == 1);
+    bool calibMode  = (dqStatus->calibMode() == 1);
     if ( calibMode != m_calibMode ) {
       ATH_MSG_INFO( "Overwriting calib mode [" << m_calibMode << "] by one from data: " << calibMode );
       m_calibMode = calibMode;
     }
 
-    m_cispar = m_beamInfo->cispar();
-    StoreRunInfo(); // done only once
+    m_cispar = dqStatus->cispar();
+    StoreRunInfo(dqStatus); // done only once
   }
 
   memset(m_ecell_ene     ,0,          sizeof(m_ecell_ene     ));
   memset(m_cell_nch      ,0,          sizeof(m_cell_nch      ));
 
-  m_cispar = m_beamInfo->cispar();
+  m_cispar = dqStatus->cispar();
   if (m_evtNr % 1000 == 0) ATH_MSG_INFO( " events processed so far " << m_evtNr );
   
-  if (m_doFit){empty &= (fillRawChannels(m_fitRawChannelContainer, Fit).isFailure());}
-  if (m_doFixed){empty &= (fillRawChannels(m_fixedRawChannelContainer, Fixed).isFailure());}
-  if (m_doOpt){empty &= (fillRawChannels(m_optRawChannelContainer, Opt).isFailure());}
-  if (m_doDsp) {empty &= (fillRawChannels(m_dspRawChannelContainer, Dsp).isFailure());}
-  if (m_doOF1) {empty &= (fillRawChannels(m_OF1RawChannelContainer, OF1).isFailure());}
-  if (m_doMF) {empty &= (fillRawChannels(m_MFRawChannelContainer, MF).isFailure());}
+  if (m_doFit){empty &= (fillRawChannels(dqStatus, m_fitRawChannelContainer, Fit).isFailure());}
+  if (m_doFixed){empty &= (fillRawChannels(dqStatus, m_fixedRawChannelContainer, Fixed).isFailure());}
+  if (m_doOpt){empty &= (fillRawChannels(dqStatus, m_optRawChannelContainer, Opt).isFailure());}
+  if (m_doDsp) {empty &= (fillRawChannels(dqStatus, m_dspRawChannelContainer, Dsp).isFailure());}
+  if (m_doOF1) {empty &= (fillRawChannels(dqStatus, m_OF1RawChannelContainer, OF1).isFailure());}
+  if (m_doMF) {empty &= (fillRawChannels(dqStatus, m_MFRawChannelContainer, MF).isFailure());}
 
 
   if (empty) {ATH_MSG_ERROR( "Error in execute " ); }
@@ -592,10 +591,11 @@ StatusCode TileRawChNoiseCalibAlg::finalize() {
 }
 
 /// StoreRunInfo is called only during the first event
-void TileRawChNoiseCalibAlg::StoreRunInfo() {
+void TileRawChNoiseCalibAlg::StoreRunInfo(const TileDQstatus* dqStatus) {
+
   MsgStream log(msgSvc(), name());
 
-  if (m_beamInfo->calibMode() == 1 && m_beamElemContainer.length() > 0) {// Bigain can use cispar
+  if (dqStatus->calibMode() == 1 && m_beamElemContainer.length() > 0) {// Bigain can use cispar
 
     if (m_beamCnv) {
 
@@ -607,7 +607,7 @@ void TileRawChNoiseCalibAlg::StoreRunInfo() {
     } else
       m_run = 0;
 
-    if (m_beamInfo && m_cispar) {
+    if (dqStatus && m_cispar) {
       m_time = m_cispar[10]; //time in sc from 1970
       m_trigType = m_cispar[12];
     } else {
@@ -660,11 +660,10 @@ void TileRawChNoiseCalibAlg::StoreRunInfo() {
 // fillRawChannels is called at every events.
 // Statistics is summed for Average, RMS calculations
 /*---------------------------------------------------------*/
-StatusCode TileRawChNoiseCalibAlg::fillRawChannels(std::string rcCnt, RCtype rctype) {
+StatusCode TileRawChNoiseCalibAlg::fillRawChannels(const TileDQstatus* dqStatus,
+                                                   std::string rcCnt, RCtype rctype) {
 /*---------------------------------------------------------*/
 
-  const TileDQstatus* theDQstatus = m_beamInfo->getDQstatus();
-
   const TileRawChannelContainer* RawChannelCnt;
 
   if (evtStore()->retrieve(RawChannelCnt, rcCnt).isFailure()) {
@@ -698,12 +697,12 @@ StatusCode TileRawChNoiseCalibAlg::fillRawChannels(std::string rcCnt, RCtype rct
       m_tileIdTrans->getIndices(adc_id, ros, drawer, channel, gain);
       unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
 
-      if (theDQstatus->isChEmpty(ros, drawer, channel)) continue;
+      if (dqStatus->isChEmpty(ros, drawer, channel)) continue;
 
       // If DQ problem, do not fill calib ntuple
       if (m_calibMode == 1) { // Bigain: check indivual adc's
 
-        if (!(theDQstatus->isAdcDQgood(ros, drawer, channel, gain))) {
+        if (!(dqStatus->isAdcDQgood(ros, drawer, channel, gain))) {
           ATH_MSG_VERBOSE(  "Skipping Module: " << TileCalibUtils::getDrawerString(ros, drawer)
                            << " channel: " << channel
                            << " ADC: " << gain << " due to DQ error found." );
@@ -712,7 +711,7 @@ StatusCode TileRawChNoiseCalibAlg::fillRawChannels(std::string rcCnt, RCtype rct
         }
       } else { // monogain, just check channel
 
-        if (!(theDQstatus->isChanDQgood(ros, drawer, channel))) {
+        if (!(dqStatus->isChanDQgood(ros, drawer, channel))) {
           ATH_MSG_VERBOSE( "Skipping Module: " << TileCalibUtils::getDrawerString(ros, drawer)
                            << " channel: " << channel << " due to DQ error found."  );
 
diff --git a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx
index 35e1e490d684e851be393ceb428733b64b5741c4..812cba33fd48fa0bdff467b2c711969ddec8fe87 100644
--- a/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx
+++ b/TileCalorimeter/TileCalib/TileCalibAlgs/src/TileTriggerDefaultCalibTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
@@ -16,13 +16,13 @@
 #include "TrigT1CaloCalibToolInterfaces/IL1CaloOfflineTriggerTowerTools.h"
 
 #include "Identifier/HWIdentifier.h"
+#include "StoreGate/ReadHandle.h"
 
 #include "CaloIdentifier/CaloLVL1_ID.h"
 #include "CaloIdentifier/TileID.h"
 
 #include "TileCalibBlobObjs/TileCalibUtils.h"
 #include "TileIdentifier/TileHWID.h"
-#include "TileRecUtils/TileBeamInfoProvider.h"
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileEvent/TileBeamElemContainer.h"
 #include "TileConditions/TileCablingService.h"
@@ -51,7 +51,6 @@ TileTriggerDefaultCalibTool::TileTriggerDefaultCalibTool(const std::string& type
   AthAlgTool(type, name, pParent)
   , m_maxNTT(0)
   , m_nevpmt(0)
-  , m_beamPrv(nullptr)
   , m_TT_ID(nullptr)
   , m_tileHWID(nullptr)
   , m_tileID(nullptr)
@@ -96,6 +95,7 @@ TileTriggerDefaultCalibTool::TileTriggerDefaultCalibTool(const std::string& type
   declareProperty("NumEventPerPMT", m_nevpmt=195); // changed from 200 to 195
   declareProperty("TileBeamElemContainer",m_TileBeamContainerID);
   declareProperty("TileCondToolEmscale", m_tileToolEmscale);
+  declareProperty("TileDQstatus", m_dqStatusKey = "TileDQstatus");
   //  declareProperty("L1TriggerTowerTool", m_ttTool);
 }
 
@@ -115,9 +115,6 @@ StatusCode TileTriggerDefaultCalibTool::initialize()
   ATH_CHECK( m_l1CaloTTIdTools.retrieve() );
   ATH_MSG_DEBUG("L1CaloTTIdTools retrieved");
 
-  ATH_CHECK( toolSvc()->retrieveTool("TileBeamInfoProvider",m_beamPrv) );
-  ATH_CHECK( m_beamPrv->setProperty("TileRawChannelContainer","TileRawChannelCnt") );
-
   ATH_CHECK( detStore()->retrieve(m_TT_ID) );
   ATH_CHECK( detStore()->retrieve(m_tileHWID) );
   ATH_CHECK( detStore()->retrieve(m_tileID) );
@@ -127,6 +124,8 @@ StatusCode TileTriggerDefaultCalibTool::initialize()
   //=== get TileCondToolEmscale
   CHECK( m_tileToolEmscale.retrieve() );
   
+  CHECK( m_dqStatusKey.initialize() );
+
   return StatusCode::SUCCESS;  
 }
 
@@ -140,6 +139,9 @@ StatusCode TileTriggerDefaultCalibTool::execute()
 {
   ATH_MSG_DEBUG ( "executeTrigger()" );
 
+  const EventContext& ctx = Gaudi::Hive::currentContext();
+  const TileDQstatus* dqStatus = SG::makeHandle (m_dqStatusKey, ctx).get();
+
   // Get TileRawChannelContainer
   const TileRawChannelContainer *container;
   ATH_CHECK( evtStore()->retrieve(container, m_rawChannelContainerName) );
@@ -150,7 +152,7 @@ StatusCode TileTriggerDefaultCalibTool::execute()
   memset(chanIds, 0, sizeof(chanIds));
 
   // Get event's ext CIS parameters
-  const uint32_t *cispar = m_beamPrv->cispar();
+  const uint32_t *cispar = dqStatus->cispar();
 
   // Mapping pmt2chan
   int chan_bar[54] = {4 ,1 ,2 ,3 ,0 ,-1 ,