From 56d7c5ad9fd4bb25cd78d66c077dfd384e838950 Mon Sep 17 00:00:00 2001
From: Dominik Smith <d.smith@gsi.de>
Date: Mon, 11 Jul 2022 11:54:47 +0200
Subject: [PATCH] Unpack Much: Applied Epoch cycle fix. Fixed MacOS compilation
 (variable-sized array). Fixed missing Elink parameters.

---
 algo/detectors/much/MuchReadoutConfig.h | 2 +-
 algo/detectors/much/UnpackMuch.cxx      | 2 ++
 reco/tasks/CbmTaskUnpack.cxx            | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/algo/detectors/much/MuchReadoutConfig.h b/algo/detectors/much/MuchReadoutConfig.h
index 8ed23a69c6..cdc2eaa1c6 100644
--- a/algo/detectors/much/MuchReadoutConfig.h
+++ b/algo/detectors/much/MuchReadoutConfig.h
@@ -61,9 +61,9 @@ namespace cbm::algo
     static const uint16_t numFebsPerCrob   = 9;    // Number of FEBs  connected to each CROB for mMuch 2019
     static const uint16_t numAsicsPerFeb   = 1;    // Number of ASICs connected in each FEB for MUCH
     static const uint16_t numChanPerAsic   = 128;  // Number of channels in each ASIC
+    static const uint16_t numComp          = 6;    // Total number of MUCH DPBs in system
 
     /// Variables
-    uint16_t numComp       = 6;               // Total number of MUCH DPBs in system
     uint16_t numFebsInGemA = 27;              // Number of FEBs connected in GEM Module A
     uint16_t numFebsInGemB = 18;              // Number of FEBs connected in GEM Module B
     uint16_t numFebsInRpc  = 9;               // Number of FEBs connected in RPC Module
diff --git a/algo/detectors/much/UnpackMuch.cxx b/algo/detectors/much/UnpackMuch.cxx
index 6fe439a9f6..850f5ef1f5 100644
--- a/algo/detectors/much/UnpackMuch.cxx
+++ b/algo/detectors/much/UnpackMuch.cxx
@@ -34,6 +34,8 @@ namespace cbm::algo
     // --- Current TS_MSB epoch cycle
     auto const msTime = msDescr.idx;  // Unix time of MS in ns
     fCurrentCycle     = std::ldiv(msTime, fkCycleLength).quot;
+    fCurrentEpoch     = 0;  // Needed to make each MS independent of the previous! Will be updated in message 1 if MS OK
+    fCurrentEpochTime = 0;  // Needed to make each MS independent of the previous! Will be updated in message 1 if MS OK
 
     // --- Number of messages in microslice
     auto msSize = msDescr.size;
diff --git a/reco/tasks/CbmTaskUnpack.cxx b/reco/tasks/CbmTaskUnpack.cxx
index a692c31167..279db48228 100644
--- a/reco/tasks/CbmTaskUnpack.cxx
+++ b/reco/tasks/CbmTaskUnpack.cxx
@@ -280,6 +280,7 @@ InitStatus CbmTaskUnpack::Init()
       UnpackMuchElinkPar elinkPar;
       elinkPar.fAddress    = fMuchConfig.Map(equip, elink);  // Vector of MUCH addresses for this elink
       elinkPar.fTimeOffset = 0.;
+      par->fElinkParams.push_back(elinkPar);
     }
     fAlgoMuch[equip].SetParams(std::move(par));
     LOG(info) << "--- Configured equipment " << equip << " with " << numElinks << " elinks";
-- 
GitLab