diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileBeamElemContByteStreamCnv.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileBeamElemContByteStreamCnv.h
index 58af7381c2531161600f504a8f218fd7d935138e..031d19e9c9d1cda3e9d44fcbd8fe15ad893ff13c 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileBeamElemContByteStreamCnv.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileBeamElemContByteStreamCnv.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 TILEBYTESTREAM_TILEBEAMELEM_BYTESTREAMCNV_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileCellCont.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileCellCont.h
index 8db76b233e86c7561581bb3673d80335b276d519..eff33d6231a95cdcbff6ae0a58790822de078ecf 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileCellCont.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileCellCont.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 TILECELLCONT_H
@@ -73,9 +73,6 @@ class TileCellCont : public std::vector<TileCellCollection*>
   const std::vector<int>& Rw2PmtMap ( int section ) {
     return m_Rw2Pmt[section];
   }
-  const std::vector<int>& masked_drawers() {
-	return m_masked;
-  }
   
 private:
   
@@ -96,7 +93,6 @@ private:
 	TileCellCollection* m_MBTS;
 	std::map<unsigned int, unsigned int> m_mapMBTS;
 	int m_MBTS_channel;
-	std::vector<int> m_masked;
         /** map Hash ID to ROD */
         const TileHid2RESrcID* m_src;
   
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigits2Bytes.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigits2Bytes.h
index d5b16372de32c4ab5f4615d5b48d853667621fea..a0a4525610ffa2fdc8b4fba13afa1841ac867786 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigits2Bytes.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigits2Bytes.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 TILEBYTESTREAM_TILEDIGITS2BYTES_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamCnv.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamCnv.h
index 45ca45e804b39333371cd3560ed9d2e5dceb97ca..c7d7776849454676f0596fc6de1b111bf00511d6 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamCnv.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamCnv.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
 */
 
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamTool.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamTool.h
index 34769bec6eb44cc5d2b9745802f1e698d4108a3c..ae6afec99e8b52a966060a46e07ead10b4eb5130 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamTool.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileDigitsContByteStreamTool.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 TILEBYTESTREAM_TILEDIGITS_BYTESTREAMTOOL_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamCnv.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamCnv.h
index 9d8d73c6418bcffe78b008d170dc6cf3b2143f43..c15f3054c1b989f1bfacb47c4a5a7ebbdeae3a1f 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamCnv.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamCnv.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 TILEBYTESTREAM_TILEL2_BYTESTREAMCNV_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamTool.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamTool.h
index 04719824a6a5f50fb86b084dce5e479e5dbe9123..bd1a1aace718eebe26a43ef56c7aa3dae2e69507 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamTool.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileL2ContByteStreamTool.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
 */
 
 //****************************************************************************
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamCnv.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamCnv.h
index d2f644151fd973749155e0edc0a13e624915b82e..0bb1b3629037c35fc15cd5d3f46c6b635e923544 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamCnv.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamCnv.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
 */
 
 //author Renato Febbraro
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamTool.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamTool.h
index 381362fd2da288533598f88a431307d2bdd8b151..4f022105b8cdbdeeafe4cec46ff082294e2cde6f 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamTool.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileLaserObjByteStreamTool.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
 */
 
 //author Renato Febbraro
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileMuRcvContByteStreamTool.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileMuRcvContByteStreamTool.h
index 05d9779c71f53b923e64b89cb8d148144a657b8b..1e233b2850d3769b98138101bc74cf5adeb2e2a5 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileMuRcvContByteStreamTool.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileMuRcvContByteStreamTool.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
 */
 
 //****************************************************************************
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileOFC.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileOFC.h
index c155c069388350a7ae55fbf7fdf48cb0621d0577..18d012657dbbca6655e0e08d825c016f386e598c 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileOFC.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileOFC.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 TILE_OFC_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
index 6b068a99551b41c5f6cb5de4933fb33b403d6742..87150e0c552cf97a02eefa15ff912eeaa433ff3f 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
@@ -43,15 +43,15 @@
 #include "TileEvent/TileCellCollection.h"
 #include "TileEvent/TileL2.h"
 #include "TileEvent/TileContainer.h"
+#include "TileConditions/TileCondToolOfcCool.h"
+#include "TileConditions/TileCondToolTiming.h"
+#include "TileConditions/TileCondToolEmscale.h"
+#include "TileConditions/ITileBadChanTool.h"
 
-// class TileInfo;
 class TileRawChannelBuilder;
 class TileCellBuilder;
 class TileL2Builder;
-class TileCondToolEmscale;
 class TileHid2RESrcID;
-class TileCondToolOfcCool;
-class TileCondToolTiming;
 
 /**
  *
@@ -180,10 +180,7 @@ class TileROD_Decoder: public AthAlgTool {
     }
 
     /** Check the list of masked drawers */
-    void load_list_of_masked_drawers(const std::vector<int>& vec) {
-      for (size_t i = 0; i < vec.size(); ++i)
-        m_list_of_masked_drawers.push_back(vec[i]);
-    }
+    bool is_drawer_masked(int frag_id, int run);
 
     void setUseFrag0 (bool f) { m_useFrag0 = f; }
     void setUseFrag1 (bool f) { m_useFrag1 = f; }
@@ -487,9 +484,14 @@ class TileROD_Decoder: public AthAlgTool {
     float m_allowedTimeMin; //!< set amp to zero if time is below allowed time min
     float m_allowedTimeMax; //!< set amp to zero if time is above allowed time max
 
-    ToolHandle<TileCondToolTiming> m_tileToolTiming;      //!< Tile Timing tool
-    ToolHandle<TileCondToolOfcCool> m_tileCondToolOfcCool; //!< OF Coefficients from Cool
-    ToolHandle<TileCondToolEmscale> m_tileToolEmscale; //!< main Tile Calibration tool
+    ToolHandle<TileCondToolTiming> m_tileToolTiming{this,
+          "TileCondToolTiming", "TileCondToolTiming", "Tile timing tool"};
+    ToolHandle<TileCondToolOfcCool> m_tileCondToolOfcCool{this,
+          "TileCondToolOfcCool", "TileCondToolOfcCool", "Tile OFC tool"};
+    ToolHandle<TileCondToolEmscale> m_tileToolEmscale{this,
+          "TileCondToolEmscale", "TileCondToolEmscale", "Tile EM scale calibration tool"};
+    ToolHandle<ITileBadChanTool> m_tileBadChanTool{this,
+	        "TileBadChanTool", "TileBadChanTool", "Tile bad channel tool"};
 
     // OFWeights for different units and different drawers:
     // every element contains pointers to OFC for single drawer and one of 4 different units
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes.h
index 90a0d3dd18c06ddb577daeb12d3317f3c6a8badf..5575480de959b0a311477ada2cab4c580dc32640 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes.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 TILEBYTESTREAM_TILERAWCHANNEL2BYTES_H 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes2.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes2.h
index 8dfda514d1de5ce0f51aea5147d72fbd77df5a4c..e6a0430906208cbaf564b59399da294ac279b496 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes2.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes2.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 TILEBYTESTREAM_TILERAWCHANNEL2BYTES2_H 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamCnv.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamCnv.h
index e07be714ecfc280041625d693b314bdf6b1e0afd..66fc8fa02b99714480850c75d4130d0b9a84bbcf 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamCnv.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamCnv.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 TILEBYTESTREAM_TILERAWCHANNELCONTRAWEVENTCNV_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamTool.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamTool.h
index 6d4a730fb5005167469b3fb36e41a52c03ff85e4..6b54d45c699494df7f8320a2eacb49e15a298c18 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamTool.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannelContByteStreamTool.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 TILEBYTESTREAM_TILERAWCHANNELCONTRAWEVENTTOOL_H
diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref
index 5f9a9cb913e1cf98748733bb5c0a0b2266543da1..60245d54806b54b3cde34a9e99f588d5863d3b7c 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref
+++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref
@@ -2,17 +2,18 @@ TileROD_Decoder_test
 
 
 Initializing Gaudi ApplicationMgr using job opts ../share/TileROD_Decoder_test.txt
-JobOptionsSvc        INFO # =======> /home/sss/nobackup/atlas/build/../tests/../share/TileROD_Decoder_test.txt
+JobOptionsSvc        INFO # =======> /home/solodkov/git/r22.0.tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/../share/TileROD_Decoder_test.txt
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore"]
 JobOptionsSvc        INFO # (3,1): ToolSvc.TileROD_Decoder.TileDefaultL2Builder = ""
+JobOptionsSvc        INFO # (4,1): ToolSvc.TileROD_Decoder.TileBadChanTool = ""
 JobOptionsSvc        INFO Job options successfully read in from ../share/TileROD_Decoder_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99)
-                                          running on karma on Sun Oct 21 00:28:07 2018
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v30r5)
+                                          running on pcatl03.cern.ch on Thu Dec  6 15:16:23 2018
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 16495 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12040 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 HistogramPersis...WARNING Histograms saving not required.
diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt b/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt
index 3464f30cd8923861c3748a06c43e52b999694567..6ed9d96e4208c063cdcb74afefabc400e4d6e705 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt
+++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt
@@ -1,3 +1,4 @@
 
 ApplicationMgr.ExtSvc = {"StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore"};
 ToolSvc.TileROD_Decoder.TileDefaultL2Builder = "";
+ToolSvc.TileROD_Decoder.TileBadChanTool = "";
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileBeamElemContByteStreamCnv.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileBeamElemContByteStreamCnv.cxx
index 86d345a7290e1c0654df8b5f82c3aac52d9d1b3c..81d242cb3ce98ef0fe1fe56a7beedc495c26d6cf 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileBeamElemContByteStreamCnv.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileBeamElemContByteStreamCnv.cxx
@@ -48,15 +48,15 @@ const CLID& TileBeamElemContByteStreamCnv::classID() {return ClassID_traits<Tile
 
 StatusCode TileBeamElemContByteStreamCnv::initialize() {
 
-  CHECK( Converter::initialize() );
+  ATH_CHECK( Converter::initialize() );
 
   ATH_MSG_DEBUG( " initialize " );
 
   // retrieve Tool
-  CHECK( m_decoder.retrieve() );
+  ATH_CHECK( m_decoder.retrieve() );
   m_hid2re = m_decoder->getHid2re();
 
-  CHECK( m_robSvc.retrieve() );
+  ATH_CHECK( m_robSvc.retrieve() );
 
   m_ROBID.clear();
   m_ROBID.push_back( m_hid2re->getRobFromFragID(DIGI_PAR_FRAG) );
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileCellCont.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileCellCont.cxx
index 41a922ee1274e97c420c664b5ae2793cfd1f0ef3..516cceff7c745db3ac3bb250824ff7faaf1d2722 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileCellCont.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileCellCont.cxx
@@ -1,11 +1,10 @@
 /*
-  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 "CaloIdentifier/CaloCell_ID.h"
 #include "CaloIdentifier/TileID.h"
 #include "TileIdentifier/TileHWID.h"
-#include "TileConditions/ITileBadChanTool.h"
 #include "TileConditions/TileCablingService.h"
 #include "CaloDetDescr/CaloDetDescrElement.h"
 #include "CaloDetDescr/MbtsDetDescrManager.h"
@@ -79,17 +78,6 @@ StatusCode TileCellCont::initialize() {
     mbtsMgr = 0;
   }
 
-  ToolHandle<ITileBadChanTool> badChanTool("TileBadChanLegacyTool");
-  if (badChanTool.retrieve().isFailure()) {
-    std::cout << "TileCellCont:initialize ERROR: Can not retrieve TileBadChanTool" << std::endl;
-    return StatusCode::FAILURE;
-  }
-
-  if ((badChanTool->initialize()).isFailure()) {
-    std::cout << "TileCellCont:initialize ERROR: Can not initialize TileBadChanTool" << std::endl;
-    return StatusCode::FAILURE;
-  }
-
   if ( !m_src ){ // if nothing set, use 2017
        std::cout << "TileCellCont::initialize ERROR : TileHid2RESrc has to be initialized before this" << std::endl;
   }
@@ -122,7 +110,6 @@ StatusCode TileCellCont::initialize() {
       Rw2Cell.resize(maxChannels, -1);
       std::vector<int_pair> tmp;
 
-      bool one_good = false;
       for (int channel = 0; channel < maxChannels; ++channel) {
         HWIdentifier channelID = tileHWID->channel_id(ros, drawer, channel);
         Identifier cell_id = cabling->h2s_cell_id_index(channelID, index, pmt);
@@ -136,7 +123,6 @@ StatusCode TileCellCont::initialize() {
           mbts_count++;
           m_MBTS_channel = channel;
         } else if (index >= 0) { // normal cell
-          one_good = one_good || (!badChanTool->getChannelStatus(channelID).isBad());
           Rw2Pmt[channel] = pmt;
           if (channel > 0 || ros != 2) { // ignoring D0 (first channel) in negative barrel
             cell_hash = tileID->cell_hash(cell_id);
@@ -149,7 +135,6 @@ StatusCode TileCellCont::initialize() {
       // create new cell collection which will own all elements
       TileCellCollection* newColl = new TileCellCollection(frag, SG::OWN_ELEMENTS);
       this->push_back(newColl);
-      if (!one_good) m_masked.push_back(frag);
 
       // sort index according to cell hash and put it in Rw2Cell vector
       // create TileCells in appropriate order and put them in newColl
@@ -233,7 +218,6 @@ StatusCode TileCellCont::finalize() {
   m_mapMBTS.clear();
   m_mbts_rods.clear();
   m_mbts_IDs.clear();
-  m_masked.clear();
   this->clear();
   return StatusCode::SUCCESS;
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileDigits2Bytes.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileDigits2Bytes.cxx
index 2abe04ff301b13e15ea625cc560bd09d60a103b9..02e32d4bd72ecf17f4f5d4d9818f9775af598843 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileDigits2Bytes.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileDigits2Bytes.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 "TileByteStream/TileDigits2Bytes.h"
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamCnv.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamCnv.cxx
index e91f1f151e945bf1f167bce888b58b4db18c84ef..2114d33cba105f69e5dad40955918d2b6076ebbe 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamCnv.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamCnv.cxx
@@ -60,21 +60,21 @@ const CLID& TileDigitsContByteStreamCnv::classID(){ return ClassID_traits<TileDi
 
 StatusCode TileDigitsContByteStreamCnv::initialize() {
   
-  CHECK(Converter::initialize());
+  ATH_CHECK(Converter::initialize());
 
   ATH_MSG_DEBUG(" initialize ");
 
   // Get ByteStreamCnvSvc
-  CHECK( m_byteStreamEventAccess.retrieve() );
+  ATH_CHECK( m_byteStreamEventAccess.retrieve() );
   m_byteStreamCnvSvc = dynamic_cast<ByteStreamCnvSvc*>(&*m_byteStreamEventAccess);
 
   // retrieve Tool
-  CHECK( m_decoder.retrieve() );
+  ATH_CHECK( m_decoder.retrieve() );
   m_hid2re = m_decoder->getHid2re();
 
-  CHECK( m_tool.retrieve() );
+  ATH_CHECK( m_tool.retrieve() );
 
-  CHECK( m_robSvc.retrieve() );
+  ATH_CHECK( m_robSvc.retrieve() );
 
   // create empty TileDigitsContainer and all collections inside
   m_containers[0] = new TileDigitsContainer(true); 
@@ -91,7 +91,7 @@ StatusCode TileDigitsContByteStreamCnv::initialize() {
     incSvc->addListener(this, "StoreCleared");
   }
   
-  CHECK( m_activeStore.retrieve() );
+  ATH_CHECK( m_activeStore.retrieve() );
   
   return StatusCode::SUCCESS;
 }
@@ -153,7 +153,7 @@ StatusCode TileDigitsContByteStreamCnv::createObj(IOpaqueAddress* pAddr, DataObj
     ATH_MSG_DEBUG( "Creating digits container " << *(pRE_Addr->par()) );
 
     if (isTMDB) {
-      CHECK( m_activeStore->activeStore()->record( m_containers[icnt], "MuRcvDigitsCnt" ) );
+      ATH_CHECK( m_activeStore->activeStore()->record( m_containers[icnt], "MuRcvDigitsCnt" ) );
     } else {
       pObj = SG::asStorable( m_containers[icnt] ) ;
     }
@@ -174,7 +174,7 @@ StatusCode TileDigitsContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddre
   // get Full Event Assembler
   FullEventAssembler<TileHid2RESrcID>* fea = 0;
   std::string key("Tile");
-  CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
+  ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
 
   // create TileDigitsContainer
   TileDigitsContainer* digicont(0) ; 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamTool.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamTool.cxx
index c6083ad89384e0437578a2f7a894ad9cbed7dbcd..cd6acf2825967d41de20eb494a92a0776a6f79db 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamTool.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileDigitsContByteStreamTool.cxx
@@ -50,10 +50,10 @@ StatusCode TileDigitsContByteStreamTool::initialize() {
 
   ATH_MSG_INFO ("Initializing TileDigitsContByteStreamTool");
 
-  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
 
   ToolHandle<TileROD_Decoder> dec("TileROD_Decoder");
-  CHECK( dec.retrieve() );
+  ATH_CHECK( dec.retrieve() );
 
   m_hid2re = dec->getHid2reHLT();
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamCnv.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamCnv.cxx
index bb8ebfaec1e472513809563f317dfea347f66de7..f319b82256870e72f6ced62dce751806a25d794f 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamCnv.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamCnv.cxx
@@ -53,20 +53,20 @@ const CLID& TileL2ContByteStreamCnv::classID(){ return ClassID_traits<TileL2Cont
 
 StatusCode TileL2ContByteStreamCnv::initialize() {
 
-  CHECK(Converter::initialize());
+  ATH_CHECK(Converter::initialize());
 
   ATH_MSG_DEBUG(" initialize ");
 
   // Get ByteStreamCnvSvc
-  CHECK( m_byteStreamEventAccess.retrieve() );
+  ATH_CHECK( m_byteStreamEventAccess.retrieve() );
   m_byteStreamCnvSvc = dynamic_cast<ByteStreamCnvSvc*>(&*m_byteStreamEventAccess);
 
   // retrieve Tool
-  CHECK( m_decoder.retrieve() );
+  ATH_CHECK( m_decoder.retrieve() );
 
-  CHECK( m_tool.retrieve() );
+  ATH_CHECK( m_tool.retrieve() );
 
-  CHECK( m_robSvc.retrieve() );
+  ATH_CHECK( m_robSvc.retrieve() );
   
   // create empty TileL2Container and all TileL2 inside
   m_container = new TileL2Container(); 
@@ -86,7 +86,7 @@ StatusCode TileL2ContByteStreamCnv::initialize() {
     incSvc->addListener(this, "StoreCleared");
   }
 
-  CHECK( m_storeGate.retrieve() );
+  ATH_CHECK( m_storeGate.retrieve() );
 
   return StatusCode::SUCCESS ;
 }
@@ -130,7 +130,7 @@ StatusCode TileL2ContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddress*&
   FullEventAssembler<TileHid2RESrcID>* fea = 0;
   std::string key("Tile");
   
-  CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
+  ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
 
   // create TileL2Container
   TileL2Container* l2cont(0);
@@ -146,7 +146,7 @@ StatusCode TileL2ContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddress*&
   pAddr = addr;
 
   // call TileL2ContByteStreamTool
-  CHECK( m_tool->convert(l2cont, fea) );
+  ATH_CHECK( m_tool->convert(l2cont, fea) );
 
   return StatusCode::SUCCESS;
 }
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamTool.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamTool.cxx
index 3886b3f5cbb157c792d1c64350c960ab9927cdd1..3c8cec85fc0f105b49b74ba00f32b1efc6ccf2dc 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamTool.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileL2ContByteStreamTool.cxx
@@ -65,10 +65,10 @@ StatusCode TileL2ContByteStreamTool::initialize() {
 
   ATH_MSG_INFO ("Initializing TileL2ContByteStreamTool");
 
-  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
 
   ToolHandle<TileROD_Decoder> dec("TileROD_Decoder");
-  CHECK( dec.retrieve() );
+  ATH_CHECK( dec.retrieve() );
 
   m_hid2re = dec->getHid2reHLT();
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamCnv.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamCnv.cxx
index e0402ff1d08910a238b7e688b6de30583e1e3c9e..d5a20ffa1742a4d02299c0e73bdf1b1e228cd373 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamCnv.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamCnv.cxx
@@ -53,14 +53,14 @@ const CLID& TileLaserObjByteStreamCnv::classID(){ return ClassID_traits<TileLase
 
 StatusCode TileLaserObjByteStreamCnv::initialize() {
 
-  CHECK(Converter::initialize());
+  ATH_CHECK(Converter::initialize());
 
   ATH_MSG_DEBUG(" initialize ");
 
-  CHECK( m_robSvc.retrieve() );
+  ATH_CHECK( m_robSvc.retrieve() );
 
   // retrieve Tool
-  CHECK( m_decoder.retrieve() );
+  ATH_CHECK( m_decoder.retrieve() );
 
   m_hid2re = m_decoder->getHid2re();
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamTool.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamTool.cxx
index 0d9a4f6dd3d7fa442a180966af191cd290241a2b..870aab67282302cd2ecf9eb2d4dd0bbbe8203dd9 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamTool.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileLaserObjByteStreamTool.cxx
@@ -52,10 +52,10 @@ StatusCode TileLaserObjByteStreamTool::initialize() {
 
   ATH_MSG_INFO ("Initializing TileLaserObjByteStreamTool");
 
-  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
 
   ToolHandle<TileROD_Decoder> dec("TileROD_Decoder");
-  CHECK( dec.retrieve() );
+  ATH_CHECK( dec.retrieve() );
 
   m_hid2re = dec->getHid2reHLT();
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamCnv.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamCnv.cxx
index 12ef81617924151f0cbf2fda674194882abafb64..98a2ffc7265cdeb21237d759ff45c499c881affa 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamCnv.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamCnv.cxx
@@ -50,22 +50,22 @@ return ClassID_traits<TileMuonReceiverContainer>::ID() ;
 
 StatusCode TileMuRcvContByteStreamCnv::initialize()
 {
-  CHECK(Converter::initialize());
+  ATH_CHECK(Converter::initialize());
 
   ATH_MSG_DEBUG(" initialize ");
 
   // Get ByteStreamCnvSvc
-  CHECK( m_byteStreamEventAccess.retrieve() );
+  ATH_CHECK( m_byteStreamEventAccess.retrieve() );
   m_byteStreamCnvSvc = dynamic_cast<ByteStreamCnvSvc*>(&*m_byteStreamEventAccess);
 
   // retrieve Tool
-  CHECK( m_decoder.retrieve() );
+  ATH_CHECK( m_decoder.retrieve() );
 
-  CHECK( m_tool.retrieve() );
+  ATH_CHECK( m_tool.retrieve() );
 
-  CHECK( m_robSvc.retrieve() );
+  ATH_CHECK( m_robSvc.retrieve() );
 
-  CHECK( m_storeGate.retrieve() );
+  ATH_CHECK( m_storeGate.retrieve() );
 
   return StatusCode::SUCCESS ;
 }
@@ -108,7 +108,7 @@ StatusCode TileMuRcvContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddres
   FullEventAssembler<TileHid2RESrcID>* fea = 0;
   std::string key("Tile");
 
-  CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
+  ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
 
   // create TileMuonReceiverContainer
   //
@@ -125,7 +125,7 @@ StatusCode TileMuRcvContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddres
   pAddr = addr;
 
   // call TileMuRcvContByteStreamTool
-  CHECK( m_tool->convert(muRcvCont,fea) );
+  ATH_CHECK( m_tool->convert(muRcvCont,fea) );
 
   return StatusCode::SUCCESS;
 }
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamTool.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamTool.cxx
index 2cfa9da9bfd68af93d8d463a143e7bffbac8fd9c..ba4e14487d5d48788cdac0a4bd9c7c142847527a 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamTool.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileMuRcvContByteStreamTool.cxx
@@ -61,10 +61,10 @@ StatusCode TileMuRcvContByteStreamTool::initialize() {
 
   ATH_MSG_INFO ("Initializing TileMuRcvContByteStreamTool");
 
-  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
 
   ToolHandle<TileROD_Decoder> dec("TileROD_Decoder");
-  CHECK( dec.retrieve() );
+  ATH_CHECK( dec.retrieve() );
 
   m_hid2re = dec->getHid2reHLT();
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileOFC.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileOFC.cxx
index 219e60c20d6ffd237e88fbeceafa44660d5d0da4..246bcf8f479b62c601a7ebc46d94ffec2e794f63 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileOFC.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileOFC.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 <cstdio>
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
index 477463475237eb50a0daf38ad223de65dfaa77d7..b53400efa7625766b225dd605ba52318215b0379 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
@@ -24,9 +24,6 @@
 #include "TileIdentifier/TileHWID.h"
 #include "TileIdentifier/TileTBFrag.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
-#include "TileConditions/TileCondToolOfcCool.h"
-#include "TileConditions/TileCondToolTiming.h"
-#include "TileConditions/TileCondToolEmscale.h"
 #include "TileConditions/TileCablingService.h"
 #include "TileRecUtils/TileRawChannelBuilder.h"
 #include "TileByteStream/TileROD_Decoder.h"
@@ -42,9 +39,6 @@ static const InterfaceID IID_ITileROD_Decoder("TileROD_Decoder", 1, 0);
 TileROD_Decoder::TileROD_Decoder(const std::string& type, const std::string& name,
                                  const IInterface* parent)
   : AthAlgTool(type, name, parent)
-  , m_tileToolTiming("TileCondToolTiming")
-  , m_tileCondToolOfcCool("TileCondToolOfcCool")
-  , m_tileToolEmscale("TileCondToolEmscale")
   , m_hid2re(0)
   , m_hid2reHLT(0)
   , m_maxChannels(TileCalibUtils::MAX_CHAN)
@@ -59,10 +53,6 @@ TileROD_Decoder::TileROD_Decoder(const std::string& type, const std::string& nam
   declareProperty("useFrag5Reco", m_useFrag5Reco = false);
   declareProperty("ignoreFrag4HLT", m_ignoreFrag4HLT = false);
   
-  declareProperty("TileCondToolTiming", m_tileToolTiming);
-  declareProperty("TileCondToolOfcCool", m_tileCondToolOfcCool, "TileCondToolOfcCool");
-  declareProperty("TileCondToolEmscale", m_tileToolEmscale);
-  
   declareProperty("TileCellEthresholdMeV", m_TileCellEthreshold = -100000.);
   declareProperty("TileDefaultChannelBuilder", m_TileDefaultChannelBuilder = "TileRawChannelBuilderFlatFilter/TileROD_RCBuilder");
   declareProperty("TileDefaultL2Builder", m_TileDefaultL2Builder = "TileL2Builder/TileROD_L2Builder");
@@ -140,17 +130,17 @@ StatusCode TileROD_Decoder::initialize() {
   m_d2Bytes.setVerbose(m_verbose);
   
   ServiceHandle<IToolSvc> toolSvc("ToolSvc", this->name());
-  CHECK( toolSvc.retrieve() );
+  ATH_CHECK( toolSvc.retrieve() );
   
   // retrieve TileHWID helper from det store
-  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
   
   if (m_useFrag5Raw || m_useFrag5Reco) {
     //=== get TileCondToolOfcCool
-    CHECK( m_tileCondToolOfcCool.retrieve() );
+    ATH_CHECK( m_tileCondToolOfcCool.retrieve() );
     
     //=== get TileToolTiming
-    CHECK( m_tileToolTiming.retrieve() );
+    ATH_CHECK( m_tileToolTiming.retrieve() );
   }
   else {
     m_tileCondToolOfcCool.disable();
@@ -158,15 +148,22 @@ StatusCode TileROD_Decoder::initialize() {
   }
   
   //=== get TileCondToolEmscale
-  CHECK( m_tileToolEmscale.retrieve() );
+  ATH_CHECK( m_tileToolEmscale.retrieve() );
  
+  //=== get TileBadChanTool
+  if ( m_tileBadChanTool.empty() ) {
+    m_tileBadChanTool.disable();
+  } else {
+    ATH_CHECK( m_tileBadChanTool.retrieve() );
+  }
+
   // Get Tool to TileChannelBuilder, to be used to convert automatically digits->channels.
   //ATH_MSG_DEBUG( "creating algtool " << m_TileDefaultChannelBuilder );
   //ListItem algRC(m_TileDefaultChannelBuilder);
-  //CHECK( toolSvc->retrieveTool(algRC.type(), algRC.name(), m_RCBuilder, this) );
+  //ATH_CHECK( toolSvc->retrieveTool(algRC.type(), algRC.name(), m_RCBuilder, this) );
   
   //ATH_MSG_DEBUG( "algtool " << m_TileDefaultChannelBuilder << " created " );
-  //CHECK( m_RCBuilder->setProperty(BooleanProperty("calibrateEnergy", m_calibrateEnergy)) );
+  //ATH_CHECK( m_RCBuilder->setProperty(BooleanProperty("calibrateEnergy", m_calibrateEnergy)) );
   
   m_maxChannels = TileCablingService::getInstance()->getMaxChannels();
 
@@ -187,7 +184,7 @@ StatusCode TileROD_Decoder::initialize() {
   if (m_TileDefaultL2Builder.size() > 0) {
     ATH_MSG_DEBUG( "creating algtool " << m_TileDefaultL2Builder );
     ListItem algL2(m_TileDefaultL2Builder);
-    CHECK( toolSvc->retrieveTool(algL2.type(), algL2.name(), m_L2Builder, this) );
+    ATH_CHECK( toolSvc->retrieveTool(algL2.type(), algL2.name(), m_L2Builder, this) );
     ATH_MSG_DEBUG( "algtool " << m_TileDefaultL2Builder << " created " );
   } else {
     m_L2Builder = 0;
@@ -199,6 +196,48 @@ StatusCode TileROD_Decoder::initialize() {
   return StatusCode::SUCCESS;
 }
 
+bool TileROD_Decoder::is_drawer_masked(int frag_id, int run) {
+
+  if (m_list_of_masked_drawers.size()==0 || m_list_of_masked_drawers[0]!=run) {
+
+    m_list_of_masked_drawers.clear();
+    m_list_of_masked_drawers.push_back(run);
+
+    if ( !m_tileBadChanTool.empty() ) {
+      TileCablingService* cabling = TileCablingService::getInstance();
+
+      for (unsigned int ros = 1; ros < TileCalibUtils::MAX_ROS; ++ros) {
+        for (unsigned int drawer = 0; drawer < TileCalibUtils::MAX_DRAWER; ++drawer) {
+          unsigned int channel = 0;
+          for ( ; channel < m_maxChannels; ++channel) {
+            int index=-1, pmt=-1;
+            HWIdentifier channelID = m_tileHWID->channel_id(ros, drawer, channel);
+            cabling->h2s_cell_id_index(channelID, index, pmt);
+            if (index >= 0 && !m_tileBadChanTool->getChannelStatus(channelID).isBad()) { // good normal cell
+              break;
+            }
+          }
+          if (channel == m_maxChannels) m_list_of_masked_drawers.push_back(m_tileHWID->frag(ros, drawer));
+        }
+      }
+    }
+
+    if (msgLvl(MSG::DEBUG)) {
+      if (m_list_of_masked_drawers.size()>1) {
+        msg(MSG::DEBUG) << "List of fully masked drawers in run " << run << " : " << MSG::hex;
+        for(size_t i=1; i<m_list_of_masked_drawers.size(); ++i)
+          msg(MSG::DEBUG) << " 0x" << m_list_of_masked_drawers[i];
+        msg(MSG::DEBUG) << MSG::dec << endmsg;
+      } else {
+        msg(MSG::DEBUG) << "No bad drawers in run " << run << endmsg;
+      }
+    }
+  }
+
+  return (std::find(++m_list_of_masked_drawers.begin(),
+                    m_list_of_masked_drawers.end(), frag_id) != m_list_of_masked_drawers.end());
+}
+
 StatusCode TileROD_Decoder::finalize() {
   // Delete reserved TileFastRawChannels
   for (unsigned int i = 0; i < m_pRwChVec.size(); ++i) {
@@ -3147,13 +3186,13 @@ void TileROD_Decoder::fillTileLaserObj(const ROBData * rob, TileLaserObject & v)
     int frag = *(p + 1) & 0xFFFF;
     int type = *(p + 1) >> 16;
     
-    msg(MSG::DEBUG) << wc << " / " << size << " HEX = 0x" << MSG::hex << count << " DEC = " << MSG::dec << count << " ( FRAG , TYPE ) = " << frag << " , " << type << endmsg;
+    ATH_MSG_DEBUG( wc << " / " << size << " HEX = 0x" << MSG::hex << count << " DEC = " << MSG::dec << count << " ( FRAG , TYPE ) = " << frag << " , " << type );
     
     if (count < sizeOverhead || count > size - wc) {
       int cnt = 0;
       for (; wc < size; ++wc, ++cnt, ++p) {
         if ((*p) == 0xff1234ff) {
-          msg(MSG::DEBUG) << "DATA POINTER: HEX = " << MSG::hex << (*p) << " DEC = " << MSG::dec << (*p) << endmsg;
+          ATH_MSG_DEBUG( "DATA POINTER: HEX = " << MSG::hex << (*p) << " DEC = " << MSG::dec << (*p) );
           ++cnt;
           ++wc;
           ++p;
@@ -3253,12 +3292,6 @@ uint32_t TileROD_Decoder::fillCollectionHLT(const ROBData * rob, TileCellCollect
   uint16_t DQuality = 0x0;
   bool fragFound = false;
   bool DQfragMissing = true;
-  bool masked_drawer = false;
-  for (size_t m = 0; m < m_list_of_masked_drawers.size(); ++m)
-    if (m_list_of_masked_drawers[m] == frag_id) {
-      masked_drawer = true;
-      break;
-    }
   
   while (wc < size) { // iterator over all words in a ROD
     
@@ -3359,7 +3392,9 @@ uint32_t TileROD_Decoder::fillCollectionHLT(const ROBData * rob, TileCellCollect
     p += count;
     wc += count;
   }
-  
+
+  bool masked_drawer = is_drawer_masked(frag_id,rob->rod_run_no());
+
   if (DQfragMissing && !masked_drawer) error |= 0x40000;
   
   if (fragFound) {
@@ -4258,7 +4293,7 @@ StatusCode TileROD_Decoder::convertTMDBDecision(const RawEvent* re, TileMuonRece
     //eformat::helper::SourceIdentifier id = eformat::helper::SourceIdentifier(robFrag.source_id());
     uint32_t sourceid = robFrag.source_id();
     uint32_t modid = sourceid >> 16;
-    //msg(MSG::VERBOSE) <<MSG::hex<<" sourceId: 0x"<< robFrag.source_id() <<MSG::dec<< endmsg;
+    //ATH_MSG_VERBOSE( MSG::hex<<" sourceId: 0x"<< robFrag.source_id() <<MSG::dec );
 
     if ((modid == 0x51 || modid == 0x52 || modid == 0x53 || modid == 0x54) && (sourceid & 0xf00)) {
       fillContainer_TileMuRcv_Decision(&robFrag, *tileMuRcv);
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx
index a06a8f732726e47b63f8ec30cc6e6fbca9e904ac..a4dde3c0f4a3d131fa0e1d09e6ab050b82bf8dc2 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx
@@ -880,7 +880,7 @@ bool TileROD_Encoder::checkBit(const uint32_t* p, int chan) {
 }
 
 void TileROD_Encoder::dumpROD(const std::vector<uint32_t>& v) {
-  std::cout << " Dump of Tile ROD block, size =  " << v.size() << std::endl;
+  msg(MSG::VERBOSE) << " Dump of Tile ROD block, size =  " << v.size() << endmsg;
 
   int count = 0, newCount = 3;
   for (const uint32_t data : v) {
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes.cxx
index 943d2537fd3245ae9b7a5c842feb0dd150d09d5f..81e5969f8625d1956383ec9b32fe2888d64f4b6c 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes.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 "TileByteStream/TileRawChannel2Bytes.h" 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes2.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes2.cxx
index b648bcd435d6980116d6d295cd87d91275e5ffbe..3ec5bde77b22a875e895696f263678fb38ad4a45 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes2.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes2.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 "TileByteStream/TileRawChannel2Bytes2.h" 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamCnv.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamCnv.cxx
index 13f8aa83e110fd977291065c1f7550a06bb6fbab..9606fec1e4d97cf879198d4785d53f9d6e9ed83f 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamCnv.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamCnv.cxx
@@ -58,19 +58,19 @@ StatusCode TileRawChannelContByteStreamCnv::initialize() {
 
   ATH_MSG_DEBUG(" initialize ");
 
-  CHECK(Converter::initialize());
+  ATH_CHECK(Converter::initialize());
 
   // Get ByteStreamCnvSvc
-  CHECK( m_byteStreamEventAccess.retrieve() );
+  ATH_CHECK( m_byteStreamEventAccess.retrieve() );
   m_byteStreamCnvSvc = dynamic_cast<ByteStreamCnvSvc*>(&*m_byteStreamEventAccess);
 
   // retrieve Tool
-  CHECK( m_decoder.retrieve() );
+  ATH_CHECK( m_decoder.retrieve() );
   m_hid2re = m_decoder->getHid2re();
 
-  CHECK( m_tool.retrieve() );
+  ATH_CHECK( m_tool.retrieve() );
 
-  CHECK( m_robSvc.retrieve() );
+  ATH_CHECK( m_robSvc.retrieve() );
 
   TileFragHash::TYPE type;
   TileRawChannelUnit::UNIT unit;
@@ -95,7 +95,7 @@ StatusCode TileRawChannelContByteStreamCnv::initialize() {
     incSvc->addListener(this, "StoreCleared");
   }
 
-  CHECK( m_activeStore.retrieve() );
+  ATH_CHECK( m_activeStore.retrieve() );
 
   return StatusCode::SUCCESS;
 }
@@ -157,7 +157,7 @@ StatusCode TileRawChannelContByteStreamCnv::createObj(IOpaqueAddress* pAddr, Dat
     ATH_MSG_DEBUG( "Creating Container " << *(pRE_Addr->par()) );  
 
     if (isTMDB) {
-      CHECK( m_activeStore->activeStore()->record( m_containers[icnt], "MuRcvRawChCnt" ) );
+      ATH_CHECK( m_activeStore->activeStore()->record( m_containers[icnt], "MuRcvRawChCnt" ) );
     } else {
       pObj = SG::asStorable( m_containers[icnt] ) ;
     }
@@ -177,7 +177,7 @@ StatusCode TileRawChannelContByteStreamCnv::createRep(DataObject* pObj, IOpaqueA
   
   // get Full Event Assembler 
   FullEventAssembler<TileHid2RESrcID> *fea = 0;
-  CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
+  ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea, key) );
 
   // create TileRawChannelContainer
   TileRawChannelContainer* rccont(0) ; 
@@ -191,7 +191,7 @@ StatusCode TileRawChannelContByteStreamCnv::createRep(DataObject* pObj, IOpaqueA
   ByteStreamAddress* addr = new ByteStreamAddress(classID(), name, ""); 
   pAddr = addr; 
 
-  CHECK( m_tool->convert(rccont, fea) ); 
+  ATH_CHECK( m_tool->convert(rccont, fea) );
 
   return StatusCode::SUCCESS;
 }
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamTool.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamTool.cxx
index 53b1f130b1925f6ecc54dea57ef18441db3c4169..71ed1c18b4b8109f854f50f512a228e40c7cd32f 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamTool.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannelContByteStreamTool.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
 */
 
 
@@ -56,18 +56,18 @@ StatusCode TileRawChannelContByteStreamTool::initialize() {
 
   ATH_MSG_INFO ("Initializing TileRawChannelContByteStreamTool");
 
-  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
 
   ToolHandle<TileROD_Decoder> dec("TileROD_Decoder");
-  CHECK( dec.retrieve() );
+  ATH_CHECK( dec.retrieve() );
 
   m_hid2re = dec->getHid2reHLT();
 
   // get TileCondToolEmscale
-  CHECK( m_tileToolEmscale.retrieve() );
+  ATH_CHECK( m_tileToolEmscale.retrieve() );
 
   // get TileBadChanTool
-  CHECK( m_tileBadChanTool.retrieve() );
+  ATH_CHECK( m_tileBadChanTool.retrieve() );
 
   m_maxChannels = TileCablingService::getInstance()->getMaxChannels();
 
diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py
index ee83837ab0749cbd4c9a37037bdc4fa000085dc7..5747d85a348a003188099a32edcdb51eecdfe853 100755
--- a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py
+++ b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py
@@ -1991,5 +1991,5 @@ class HLTCaloCellMaker (_HLTCaloCellMaker):
     __slots__ = []
     def __init__(self, name):
         super( HLTCaloCellMaker, self ).__init__(name)
-        self.ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale')]
+        self.ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'),('TileBadChannels','ConditionStore+TileBadChannels')]
 
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx
index 4c2c14522a5e97305afd8ba46d31105e0524e453..d88649bd6eff92b595ad0b5f2f23ed1dad4e19d4 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigCaloDataAccessSvc.cxx
@@ -338,7 +338,6 @@ unsigned int TrigCaloDataAccessSvc::lateInit() { // non-const this thing
   }
   m_tileDecoder->loadMBTS_Ptr( tilecell->MBTS_collection(),
 	tilecell->MBTS_map(), tilecell->MBTS_channel() );
-  m_tileDecoder->load_list_of_masked_drawers( tilecell->masked_drawers() );
   for(unsigned int lcidx=0; lcidx < tilecell->size(); lcidx++){
           TileCellCollection* lcc = tilecell->at(lcidx);
           unsigned int lccsize = lcc->size();
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx
index eef84f213de86dc22fa6171e414f9e29b0af6b35..5060db52e3e64e26375f65dbbba367f5e69d1b26 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx
@@ -226,7 +226,6 @@ StatusCode TrigDataAccess::beginRunHandle(IOVSVC_CALLBACK_ARGS){
 	}
 	m_tiledecoder->loadMBTS_Ptr(m_tilecell->MBTS_collection(),
 		m_tilecell->MBTS_map(), m_tilecell->MBTS_channel() );
-	m_tiledecoder->load_list_of_masked_drawers( m_tilecell->masked_drawers() );
 	// ROD Address for MBTS
         m_mbts_rods = m_tilecell->MBTS_RODs();
 	// unique set
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py
index c500d2bba8cea9df11cfb9a50141220c81d87fd3..8874cb40a525115ece9a9b64ec1ebe81e6a16262 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py
@@ -524,7 +524,7 @@ class T2CaloEgamma_ReFastAlgo (T2CaloEgammaReFastAlgo):
        ToolSvc+=sampe
        samph = EgammaReHadEnFexNoTimerConfig("ReFaAlgoHadEnFexConfig")
        # temporary fix for Tile
-       samph.ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale')]
+       samph.ExtraInputs=[('TileEMScale','ConditionStore+TileEMScale'),('TileBadChannels','ConditionStore+TileBadChannels')]
        samph.trigDataAccessMT=svcMgr.TrigCaloDataAccessSvc
        ToolSvc+=samph
        #ToolSvc+=RingerFexConfig("RingsMaker")