diff --git a/algo/detectors/sts/ReadoutConfig.cxx b/algo/detectors/sts/ReadoutConfig.cxx index ee8e7b824d656d9a3637f0e65dd0554fb93b5b21..45a5a8c089f99816d3318fc4d523f7543b53c62b 100644 --- a/algo/detectors/sts/ReadoutConfig.cxx +++ b/algo/detectors/sts/ReadoutConfig.cxx @@ -93,10 +93,12 @@ void sts::ReadoutConfig::Init(const ReadoutSetup& config, const ChannelMaskSet& std::map<size_t, uint32_t> febAdcCuts = {{1, 1}, {2, 1}, {3, 1}, {4, 1}}; // Constructing the map (equipmentId, eLink) -> (module, ASIC within module) + int32_t febBaseIdx = 0; for (uint16_t compIdx = 0; compIdx < numComp; compIdx++) { const auto& component = config.components.at(compIdx); uint16_t equipment = component.equipmentId; fReadoutConfig[equipment].resize(numElinksPerComp); + const int32_t numFebsPerCrob = component.FEBsPerCrob(); for (uint16_t crobIdx = 0; crobIdx < numCrobPerComp; crobIdx++) { for (uint16_t elinkIdx = 0; elinkIdx < numElinksPerCrob; elinkIdx++) { @@ -134,8 +136,7 @@ void sts::ReadoutConfig::Init(const ReadoutSetup& config, const ChannelMaskSet& asicInModule = (moduleSide == 1 ? asicInFeb : numAsicsPerMod - 1 - asicInFeb); // Init channel mask - const int32_t numFebsPerCrob = component.FEBsPerCrob(); - const int32_t febId = 2 * moduleIdx + moduleSide; + const int32_t febId = feb + febBaseIdx; auto mapIt = chanMaskSet.values.find(febId); if (mapIt != chanMaskSet.values.end()) { const auto& mask = mapIt->second; @@ -161,6 +162,7 @@ void sts::ReadoutConfig::Init(const ReadoutSetup& config, const ChannelMaskSet& } //# elink } //# CROB + febBaseIdx += numCrobPerComp * numFebsPerCrob; // Add the proper offset for the current CROB } //# component }