From 2fec68d3b9628c6f6e59f0216617c8e44e87b75d Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Thu, 13 Feb 2025 21:11:51 +0100 Subject: [PATCH] DiffractionExperiment: Fix error in pedestal G1/G2 count time --- common/DetectorSettings.cpp | 2 +- common/DetectorSettings.h | 2 +- common/DiffractionExperiment.cpp | 8 ++++---- tests/DiffractionExperimentTest.cpp | 12 ++++++++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/common/DetectorSettings.cpp b/common/DetectorSettings.cpp index 5ac481d6..68edc289 100644 --- a/common/DetectorSettings.cpp +++ b/common/DetectorSettings.cpp @@ -189,7 +189,7 @@ DetectorTiming DetectorSettings::GetTiming() const { return timing; } -std::chrono::microseconds DetectorSettings::GetFrameTimePedestalG1G1() const { +std::chrono::microseconds DetectorSettings::GetFrameTimePedestalG1G2() const { return frame_time_pedestalG1G2; } diff --git a/common/DetectorSettings.h b/common/DetectorSettings.h index ac115084..066a76d7 100644 --- a/common/DetectorSettings.h +++ b/common/DetectorSettings.h @@ -70,7 +70,7 @@ public: [[nodiscard]] bool IsFixGainG1() const; [[nodiscard]] std::chrono::microseconds GetFrameTime() const; [[nodiscard]] std::optional GetCountTime() const; - [[nodiscard]] std::chrono::microseconds GetFrameTimePedestalG1G1() const; + [[nodiscard]] std::chrono::microseconds GetFrameTimePedestalG1G2() const; [[nodiscard]] uint32_t GetPedestalMinImageCount() const; [[nodiscard]] std::optional GetEigerThreshold_keV() const; [[nodiscard]] std::optional GetEigerBitDepth() const; diff --git a/common/DiffractionExperiment.cpp b/common/DiffractionExperiment.cpp index e1e13bf5..a59d8437 100644 --- a/common/DiffractionExperiment.cpp +++ b/common/DiffractionExperiment.cpp @@ -223,7 +223,7 @@ std::chrono::microseconds DiffractionExperiment::GetFrameTime() const { switch (GetDetectorMode()) { case DetectorMode::PedestalG1: case DetectorMode::PedestalG2: - return detector_settings.GetFrameTimePedestalG1G1(); + return detector_settings.GetFrameTimePedestalG1G2(); default: return detector_settings.GetFrameTime(); } @@ -240,7 +240,7 @@ std::chrono::microseconds DiffractionExperiment::GetDetectorPeriod() const { switch (GetDetectorMode()) { case DetectorMode::PedestalG1: case DetectorMode::PedestalG2: - return detector_settings.GetFrameTimePedestalG1G1(); + return detector_settings.GetFrameTimePedestalG1G2(); default: return std::chrono::microseconds(MIN_FRAME_TIME_JUNGFRAU_FULL_SPEED_IN_US) * GetStorageCellNumber(); } @@ -250,7 +250,7 @@ std::chrono::microseconds DiffractionExperiment::GetImageTime() const { switch (GetDetectorMode()) { case DetectorMode::PedestalG1: case DetectorMode::PedestalG2: - return detector_settings.GetFrameTimePedestalG1G1(); + return detector_settings.GetFrameTimePedestalG1G2(); default: return GetFrameTime() * GetSummation(); } @@ -289,7 +289,7 @@ std::chrono::microseconds DiffractionExperiment::GetFrameCountTime() const { return dataset.GetImageTime().value() - detector.GetReadOutTime(); return detector_settings.GetCountTime() - .value_or(GetFrameTime() - detector.GetReadOutTime()); + .value_or(detector_settings.GetFrameTime() - detector.GetReadOutTime()); } std::chrono::microseconds DiffractionExperiment::GetImageCountTime() const { diff --git a/tests/DiffractionExperimentTest.cpp b/tests/DiffractionExperimentTest.cpp index fa27b937..e5c613e5 100644 --- a/tests/DiffractionExperimentTest.cpp +++ b/tests/DiffractionExperimentTest.cpp @@ -467,6 +467,18 @@ TEST_CASE("DiffractionExperiment_FrameCountTime_JUNGFRAU","[DiffractionExperimen REQUIRE_NOTHROW(x.FrameTime(10000us, 10us)); } +TEST_CASE("DiffractionExperiment_FrameCountTime_JUNGFRAU_PedestalG1G2","[DiffractionExperiment]") { + DetectorSetup setup(DetectorGeometry(1), DetectorType::JUNGFRAU); + setup.ReadOutTime(50us); + DiffractionExperiment x(setup); + REQUIRE_NOTHROW(x.FrameTime(1000us)); + REQUIRE(x.GetFrameTime() == 1000us); + REQUIRE(x.GetFrameCountTime() == 1000us - 50us); + x.Mode(DetectorMode::PedestalG1); + REQUIRE(x.GetFrameTime().count() == FRAME_TIME_PEDE_G1G2_IN_US); + REQUIRE(x.GetFrameCountTime() == 1000us - 50us); +} + TEST_CASE("DiffractionExperiment_InternalPacketGenerator", "[DiffractionExperiment]") { DiffractionExperiment x;