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