diff --git a/Rich/RichFutureDAQ/src/component/RichRawBankDecoder.cpp b/Rich/RichFutureDAQ/src/component/RichRawBankDecoder.cpp index 80b5e15e7988c4cf4e39dc02dd00790b938b7d3b..c4588c04108d0ac45eb1c99cd14c5454a6bc5d31 100644 --- a/Rich/RichFutureDAQ/src/component/RichRawBankDecoder.cpp +++ b/Rich/RichFutureDAQ/src/component/RichRawBankDecoder.cpp @@ -606,6 +606,20 @@ void RawBankDecoder::decodeToSmartIDs_StreamIDs( const LHCb::RawBank& bank, id.setLargePMT( isLarge ); } +#ifdef USE_DD4HEP + // If built for DD4HEP apply correction to PMT module numbers to account + // for different numbering scheme between DD4HEP and DetDesc. + // We can do this because the encoding (Boole) when built for dd4hep + // uses the real data format + // https://gitlab.cern.ch/lhcb/Boole/-/merge_requests/382 + // so we know if we get the Streaming format with DD4HEP it has to be + // using the DetDesc numbering scheme. + const Rich::DetectorArray<Rich::PanelArray<LHCb::RichSmartID::DataType>> mod_corr{{{0, 0}, {6, 18}}}; + const auto pdMod = id.pdMod() + mod_corr[id.rich()][id.panel()]; + const auto pdNumInMod = id.pdNumInMod(); + id.setPD( pdMod, pdNumInMod ); +#endif + // Is ID OK ? if ( !id.isValid() ) { ++m_flatListReadWarn;