diff --git a/algo/detectors/sts/UnpackSts.cxx b/algo/detectors/sts/UnpackSts.cxx index bcb389c2517d756a9b7276968cad77ea65e7484d..f7d72fa3f73db5cb6ef8167df3709604c6da3a9b 100644 --- a/algo/detectors/sts/UnpackSts.cxx +++ b/algo/detectors/sts/UnpackSts.cxx @@ -22,7 +22,6 @@ namespace cbm::algo UnpackSts::resultType UnpackSts::operator()(const uint8_t* msContent, const fles::MicrosliceDescriptor& msDescr, const uint64_t tTimeslice) { - // --- Output data resultType result = {}; @@ -127,7 +126,7 @@ namespace cbm::algo messageTime -= elinkPar.fTimeOffset; // --- Apply walk correction if applicable - if (!elinkPar.fWalk.empty()) { messageTime += elinkPar.fWalk[message.GetHitAdc() - 1]; } + if (message.GetHitAdc() <= elinkPar.fWalk.size()) { messageTime += elinkPar.fWalk[message.GetHitAdc() - 1]; } // --- Charge double charge = elinkPar.fAdcOffset + (message.GetHitAdc() - 1) * elinkPar.fAdcGain; diff --git a/algo/unpack/Unpack.cxx b/algo/unpack/Unpack.cxx index b6c9b40d799b3909b7e13387954e03f8aceca2b4..8f2111e853aa72f3eebd9992ca6195d96ab504eb 100644 --- a/algo/unpack/Unpack.cxx +++ b/algo/unpack/Unpack.cxx @@ -168,7 +168,13 @@ namespace cbm::algo elinkPar.fTimeOffset = 0.; elinkPar.fAdcOffset = 1.; elinkPar.fAdcGain = 1.; - elinkPar.fWalk = fStsConfig.WalkMap(elinkPar.fAddress, elinkPar.fAsicNr); + if (elinkPar.fAsicNr < numAsicsPerModuleSts / 2) { + elinkPar.fWalk = fStsConfig.WalkMap(elinkPar.fAddress, elinkPar.fAsicNr); + } + else { + elinkPar.fWalk = fStsConfig.WalkMap(elinkPar.fAddress, + numAsicsPerModuleSts - (elinkPar.fAsicNr - numAsicsPerModuleSts / 2) - 1); + } // TODO: Add parameters for time and ADC calibration par->fElinkParams.push_back(elinkPar); }