From d3ca90d6ffa288ddc2f05937ba0d701fc922f74d Mon Sep 17 00:00:00 2001
From: Dominik Smith <smith@th.physik.uni-frankfurt.de>
Date: Fri, 24 May 2024 13:53:53 +0200
Subject: [PATCH] Added optional writing of missed event flags to STS unpacker.

---
 algo/detectors/sts/UnpackMS.cxx |  9 +++++++--
 algo/detectors/sts/UnpackMS.h   | 10 ++++++----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/algo/detectors/sts/UnpackMS.cxx b/algo/detectors/sts/UnpackMS.cxx
index edb5c1a563..2b085a0c21 100644
--- a/algo/detectors/sts/UnpackMS.cxx
+++ b/algo/detectors/sts/UnpackMS.cxx
@@ -80,7 +80,7 @@ namespace cbm::algo::sts
       switch (message[messageNr].GetMessType()) {
 
         case stsxyter::MessType::Hit: {
-          ProcessHitMessage(message[messageNr], time, std::get<0>(result), std::get<1>(result));
+          ProcessHitMessage(message[messageNr], time, std::get<0>(result), std::get<1>(result), std::get<2>(result));
           break;
         }
         case stsxyter::MessType::TsMsb: {
@@ -103,7 +103,8 @@ namespace cbm::algo::sts
 
   // -----   Process hit message   --------------------------------------------
   inline void UnpackMS::ProcessHitMessage(const stsxyter::Message& message, const TimeSpec& time,
-                                          vector<CbmStsDigi>& digiVec, UnpackMonitorData& monitor) const
+                                          vector<CbmStsDigi>& digiVec, UnpackMonitorData& monitor,
+                                          UnpackAuxData& aux) const
   {
 
     // --- Check eLink and get parameters
@@ -159,6 +160,10 @@ namespace cbm::algo::sts
 
     // --- Create output digi
     digiVec.emplace_back(elinkPar.fAddress, channel, messageTime, charge);
+
+    if (fParams.fWriteAux) {
+      aux.fMissedEvent.push_back(message.IsHitMissedEvts());
+    }
   }
   // --------------------------------------------------------------------------
 
diff --git a/algo/detectors/sts/UnpackMS.h b/algo/detectors/sts/UnpackMS.h
index b115066d9b..e2baaefbc0 100644
--- a/algo/detectors/sts/UnpackMS.h
+++ b/algo/detectors/sts/UnpackMS.h
@@ -41,9 +41,10 @@ namespace cbm::algo::sts
    ** @brief Parameters required for the STS unpacking (specific to one component)
    **/
   struct UnpackPar {
-    uint32_t fNumChansPerAsic                = 0;   ///< Number of channels per ASIC
-    uint32_t fNumAsicsPerModule              = 0;   ///< Number of ASICS per module
-    std::vector<UnpackElinkPar> fElinkParams = {};  ///< Parameters for each eLink
+    uint32_t fNumChansPerAsic                = 0;      ///< Number of channels per ASIC
+    uint32_t fNumAsicsPerModule              = 0;      ///< Number of ASICS per module
+    std::vector<UnpackElinkPar> fElinkParams = {};     ///< Parameters for each eLink
+    bool fWriteAux                           = false;  ///< Write auxiliary data for module
   };
 
 
@@ -129,9 +130,10 @@ namespace cbm::algo::sts
      ** @param message SMX message (32-bit word)
      ** @param digiVec Vector to append the created digi to
      ** @param monitor Reference to monitor object
+     ** @param aux Reference to auxiliary data object
      **/
     void ProcessHitMessage(const stsxyter::Message& message, const TimeSpec& time, std::vector<CbmStsDigi>& digiVec,
-                           UnpackMonitorData& monitor) const;
+                           UnpackMonitorData& monitor, UnpackAuxData& aux) const;
 
     /** @brief Process an epoch message (TS_MSB)
      ** @param message SMX message (32-bit word)
-- 
GitLab