diff --git a/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelCondAlg.h b/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelCondAlg.h
index 4cd9956e9fae4f793e311d9b8e199c409462de1c..9ae364ed735464fbd04911a4a2c8c36144e35ab1 100644
--- a/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelCondAlg.h
+++ b/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelCondAlg.h
@@ -34,6 +34,8 @@ class LArBadChannelCondAlg: public AthAlgorithm {
   ServiceHandle<ICondSvc> m_condSvc{this,"CondSvc","CondSvc"};
   Gaudi::Property<std::string> m_inputFileName{this,"InputFileName","",
       "Optional file containing (supplemental) bad channels"};
+  Gaudi::Property<bool> m_isSC{this,"isSC",false,"Set to true to interpret the identifiers in the InputFile as SuperCell IDs"};
+
 };
 
 
diff --git a/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelDecoder.h b/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelDecoder.h
index 6bf596ae024707a0a0e977114df961607f71c6d0..7d8130615804a764604bd62850499c9af42a0444 100644
--- a/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelDecoder.h
+++ b/LArCalorimeter/LArBadChannelTool/LArBadChannelTool/LArBadChannelDecoder.h
@@ -15,13 +15,13 @@
 #include <vector>
 #include <string>
 
-class LArOnlineID;
+class LArOnlineID_Base;
 class MsgStream;
 
 class LArBadChannelDecoder {
 public:
 
-  LArBadChannelDecoder(   const LArOnlineID* onlineID, MsgStream& log) :
+  LArBadChannelDecoder(   const LArOnlineID_Base* onlineID, MsgStream& log) :
     m_onlineID( onlineID), m_log(log) {}
 
   typedef LArBadChannelState                     State;
@@ -37,7 +37,7 @@ private:
 
   enum {barrel_ec, pos_neg, feedthrough, slot, channel}; // for local use only
 
-  const LArOnlineID*   m_onlineID;
+  const LArOnlineID_Base*   m_onlineID;
   LArBadChanBitPacking m_packing;
   LArBadFebBitPacking  m_febPacking;
   MsgStream&           m_log;
diff --git a/LArCalorimeter/LArBadChannelTool/src/LArBadChannelCondAlg.cxx b/LArCalorimeter/LArBadChannelTool/src/LArBadChannelCondAlg.cxx
index d1c7076109630b20eb9a388103c0b81704de4990..d59b2e6046f85533bb433f227c38b536e972f5de 100644
--- a/LArCalorimeter/LArBadChannelTool/src/LArBadChannelCondAlg.cxx
+++ b/LArCalorimeter/LArBadChannelTool/src/LArBadChannelCondAlg.cxx
@@ -5,6 +5,7 @@
 #include "LArBadChannelTool/LArBadChannelCondAlg.h"
 #include "LArBadChannelTool/LArBadChanBlobUtils.h"
 #include "LArIdentifier/LArOnlineID.h"
+#include "LArIdentifier/LArOnline_SuperCellID.h"
 #include "LArBadChannelTool/LArBadChannelDecoder.h"
 
 
@@ -74,9 +75,18 @@ StatusCode LArBadChannelCondAlg::execute() {
   }
    
   if (m_inputFileName.size()) {//Read supplemental data from ASCII file (if required)
-     
-     const LArOnlineID* onlineID;
-     ATH_CHECK(detStore()->retrieve(onlineID,"LArOnlineID"));	       
+ 
+     const LArOnlineID_Base* onlineID;
+     if (m_isSC) {//SuperCell case
+       const LArOnline_SuperCellID* scID;
+       ATH_CHECK(detStore()->retrieve(scID,"LArOnline_SuperCellID"));
+       onlineID=scID;
+     }
+     else {//regular readout
+        const LArOnlineID* onlID;
+	ATH_CHECK(detStore()->retrieve(onlID,"LArOnline_ID"));
+	onlineID=onlID;
+     }
      LArBadChannelDecoder decoder(&(*onlineID), msg());
      std::vector<std::pair<HWIdentifier,LArBadChannel> > bcVec = decoder.readASCII(m_inputFileName,LArBadChannelState::MAXCOOLCHAN);
      for (auto& idBC : bcVec) {
diff --git a/LArCalorimeter/LArBadChannelTool/src/LArBadChannelDecoder.cxx b/LArCalorimeter/LArBadChannelTool/src/LArBadChannelDecoder.cxx
index d02e4fd3a8e1342eb7e0e30308b3e47271b49b44..64e989a70db3d9d4b77d98874c750d8ed6d6d14c 100644
--- a/LArCalorimeter/LArBadChannelTool/src/LArBadChannelDecoder.cxx
+++ b/LArCalorimeter/LArBadChannelTool/src/LArBadChannelDecoder.cxx
@@ -6,7 +6,7 @@
 
 #include "LArRecConditions/LArBadChannelParser.h"
 #include "GaudiKernel/MsgStream.h"
-#include "LArIdentifier/LArOnlineID.h"
+#include "LArIdentifier/LArOnlineID_Base.h"
 
 std::vector<LArBadChannelDecoder::BadChanEntry>
 LArBadChannelDecoder::readASCII( const std::string& fname,