From 588c8d3ed1ec5bd239d656403d15c92e97fc7ea6 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 17 Apr 2026 13:31:49 +0200 Subject: [PATCH] jfjoch_fpga_test: Add processing time per image metrics --- image_analysis/MXAnalysisWithoutFPGA.h | 1 - receiver/JFJochReceiver.cpp | 1 + receiver/JFJochReceiverOutput.h | 2 ++ receiver/JFJochReceiverService.cpp | 4 ---- receiver/JFJochReceiverService.h | 2 -- tools/jfjoch_fpga_test.cpp | 8 ++++++++ tools/jfjoch_lite_perf_test.cpp | 13 ++++++------- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/image_analysis/MXAnalysisWithoutFPGA.h b/image_analysis/MXAnalysisWithoutFPGA.h index d0d82c12..b44f13c9 100644 --- a/image_analysis/MXAnalysisWithoutFPGA.h +++ b/image_analysis/MXAnalysisWithoutFPGA.h @@ -21,7 +21,6 @@ class MXAnalysisWithoutFPGA { const DiffractionExperiment &experiment; const AzimuthalIntegration &integration; - std::vector roi_map; std::map roi_names; size_t roi_count; diff --git a/receiver/JFJochReceiver.cpp b/receiver/JFJochReceiver.cpp index 3928520a..cf90fe47 100644 --- a/receiver/JFJochReceiver.cpp +++ b/receiver/JFJochReceiver.cpp @@ -194,6 +194,7 @@ JFJochReceiverOutput JFJochReceiver::GetFinalStatistics() const { ret.scan_result = scan_result.GetResult(); ret.scan_result.rotation_lattice = rotation_indexing_lattice; ret.images_written = images_written; + ret.processing_time = plots.GetMeanProcessingTime(); return ret; } diff --git a/receiver/JFJochReceiverOutput.h b/receiver/JFJochReceiverOutput.h index b5376902..ccef9e57 100644 --- a/receiver/JFJochReceiverOutput.h +++ b/receiver/JFJochReceiverOutput.h @@ -9,6 +9,7 @@ #include "../jungfrau/JFModulePedestal.h" #include "JFJochReceiverCurrentStatus.h" +#include "JFJochReceiverPlots.h" #include "../common/ScanResult.h" struct JFJochReceiverOutput { @@ -25,6 +26,7 @@ struct JFJochReceiverOutput { JFJochReceiverStatus status; std::string writer_err; std::optional images_written; + MeanProcessingTime processing_time; }; #endif //JFJOCH_JFJOCHRECEIVEROUTPUT_H diff --git a/receiver/JFJochReceiverService.cpp b/receiver/JFJochReceiverService.cpp index a1ad7aac..e44655f3 100644 --- a/receiver/JFJochReceiverService.cpp +++ b/receiver/JFJochReceiverService.cpp @@ -342,7 +342,3 @@ JFJochReceiverService &JFJochReceiverService::Indexing(const IndexingSettings &i ImagePusherStatus JFJochReceiverService::GetImagePusherStatus() const { return image_pusher.GetStatus(); } - -MeanProcessingTime JFJochReceiverService::GetMeanProcessingTime() const { - return plots.GetMeanProcessingTime(); -} diff --git a/receiver/JFJochReceiverService.h b/receiver/JFJochReceiverService.h index 5d0d47da..386d0e53 100644 --- a/receiver/JFJochReceiverService.h +++ b/receiver/JFJochReceiverService.h @@ -90,8 +90,6 @@ public: void ClearImageBuffer(); ImagePusherStatus GetImagePusherStatus() const; - - MeanProcessingTime GetMeanProcessingTime() const; }; diff --git a/tools/jfjoch_fpga_test.cpp b/tools/jfjoch_fpga_test.cpp index a6c236d8..d1be551d 100644 --- a/tools/jfjoch_fpga_test.cpp +++ b/tools/jfjoch_fpga_test.cpp @@ -286,6 +286,14 @@ int main(int argc, char **argv) { static_cast(nsummation * nimages * x.GetModulesNum() * RAW_MODULE_SIZE * x.GetBitDepthReadout() / 8) / (receiving_time * 1e9)); + logger.Info("Per-image time: (mean; microseconds): spot finding {:.0f} indexing {:.0f} refinement {:.0f} prediction {:.0f} integration {:.0f} total {:.0f}", + output.processing_time.spot_finding * 1e6, + output.processing_time.indexing * 1e6, + output.processing_time.refinement * 1e6, + output.processing_time.bragg_prediction * 1e6, + output.processing_time.integration * 1e6, + output.processing_time.processing * 1e6); + logger.Info(""); for (int i = 0; i < nstreams; i++) { auto coll_status = aq_devices[i].GetDataCollectionStatus(); diff --git a/tools/jfjoch_lite_perf_test.cpp b/tools/jfjoch_lite_perf_test.cpp index 38534919..7e2bd582 100644 --- a/tools/jfjoch_lite_perf_test.cpp +++ b/tools/jfjoch_lite_perf_test.cpp @@ -200,12 +200,11 @@ int main(int argc, char **argv) { if (output.status.max_receive_delay) logger.Info("Max delay {}", output.status.max_receive_delay.value()); - auto image_mean_time = service.GetMeanProcessingTime(); logger.Info("Per-image time: (mean; microseconds): spot finding {:.0f} indexing {:.0f} refinement {:.0f} prediction {:.0f} integration {:.0f} total {:.0f}", - image_mean_time.spot_finding * 1e6, - image_mean_time.indexing * 1e6, - image_mean_time.refinement * 1e6, - image_mean_time.bragg_prediction * 1e6, - image_mean_time.integration * 1e6, - image_mean_time.processing * 1e6); + output.processing_time.spot_finding * 1e6, + output.processing_time.indexing * 1e6, + output.processing_time.refinement * 1e6, + output.processing_time.bragg_prediction * 1e6, + output.processing_time.integration * 1e6, + output.processing_time.processing * 1e6); }