From a9fb81bcc59d8fb9cf5b1b51289d130511f2301d Mon Sep 17 00:00:00 2001
From: Dominik Smith <smith@th.physik.uni-frankfurt.de>
Date: Tue, 20 Jun 2023 16:33:34 +0200
Subject: [PATCH] cbm::algo::UnpackSts: Fixed address mapping for walk
 correction.

---
 algo/detectors/sts/UnpackSts.cxx | 3 +--
 algo/unpack/Unpack.cxx           | 8 +++++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/algo/detectors/sts/UnpackSts.cxx b/algo/detectors/sts/UnpackSts.cxx
index bcb389c251..f7d72fa3f7 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 b6c9b40d79..8f2111e853 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);
       }
-- 
GitLab