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,