From b2325554f97b356fe013ee974edb02a86b5ee6c3 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Mon, 8 Dec 2025 10:34:05 +0100 Subject: [PATCH] JFJochReceiverPlots: Use AutoIncrVector for XFEL pulse ID / event code --- common/AutoIncrVector.h | 4 ++++ receiver/JFJochReceiverPlots.cpp | 11 ++++++----- receiver/JFJochReceiverPlots.h | 6 +++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/common/AutoIncrVector.h b/common/AutoIncrVector.h index 183a893d..771c2574 100644 --- a/common/AutoIncrVector.h +++ b/common/AutoIncrVector.h @@ -44,6 +44,10 @@ public: bool empty() const { return v.empty(); } + + void Clear() { + v.clear(); + } }; #endif //JFJOCH_AUTOINCRVECTOR_H diff --git a/receiver/JFJochReceiverPlots.cpp b/receiver/JFJochReceiverPlots.cpp index 7ac9b78f..8b60206a 100644 --- a/receiver/JFJochReceiverPlots.cpp +++ b/receiver/JFJochReceiverPlots.cpp @@ -89,11 +89,12 @@ void JFJochReceiverPlots::Add(const DataMessage &msg, const AzimuthalIntegration { std::unique_lock ul(m); *az_int_profile += profile; + if (msg.xfel_pulse_id.has_value()) + xfel_pulse_id[msg.number] = msg.xfel_pulse_id.value(); + if (msg.xfel_event_code.has_value()) + xfel_event_code[msg.number] = msg.xfel_event_code.value(); } - xfel_pulse_id.AddElement(msg.number, msg.xfel_pulse_id); - xfel_event_code.AddElement(msg.number, msg.xfel_event_code); - for (const auto &[key, value] : msg.roi) { roi_sum.AddElement(key, msg.number, value.sum); roi_mean.AddElement(key, msg.number, static_cast(value.sum) / static_cast(value.pixels)); @@ -277,11 +278,11 @@ std::optional JFJochReceiverPlots::GetBkgEstimate() const { } void JFJochReceiverPlots::GetXFELPulseID(std::vector &v) const { - v = xfel_pulse_id.ExportArray(0); + v = xfel_pulse_id.vec(); } void JFJochReceiverPlots::GetXFELEventCode(std::vector &v) const { - v = xfel_event_code.ExportArray(0); + v = xfel_event_code.vec(); } std::vector JFJochReceiverPlots::GetAzIntProfile() const { diff --git a/receiver/JFJochReceiverPlots.h b/receiver/JFJochReceiverPlots.h index ce6dd50e..f95ceddc 100644 --- a/receiver/JFJochReceiverPlots.h +++ b/receiver/JFJochReceiverPlots.h @@ -7,6 +7,7 @@ #include "../common/StatusVector.h" #include "../common/Histogram.h" #include "../common/ADUHistogram.h" +#include "../common/AutoIncrVector.h" #include "../common/DiffractionExperiment.h" #include "../common/AzimuthalIntegrationProfile.h" #include "../common/JFJochMessages.h" @@ -19,9 +20,8 @@ class JFJochReceiverPlots { std::optional grid_scan; int64_t default_binning = 1; std::unique_ptr az_int_profile; - - StatusVector xfel_pulse_id; - StatusVector xfel_event_code; + AutoIncrVector xfel_pulse_id; + AutoIncrVector xfel_event_code; StatusVector bkg_estimate; StatusVector spot_count;