DiffractionExperiment: Fix error in pedestal G1/G2 count time

This commit is contained in:
2025-02-13 21:11:51 +01:00
parent 1737f410d5
commit 2fec68d3b9
4 changed files with 18 additions and 6 deletions

View File

@@ -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;
}

View File

@@ -70,7 +70,7 @@ public:
[[nodiscard]] bool IsFixGainG1() const;
[[nodiscard]] std::chrono::microseconds GetFrameTime() const;
[[nodiscard]] std::optional<std::chrono::microseconds> GetCountTime() const;
[[nodiscard]] std::chrono::microseconds GetFrameTimePedestalG1G1() const;
[[nodiscard]] std::chrono::microseconds GetFrameTimePedestalG1G2() const;
[[nodiscard]] uint32_t GetPedestalMinImageCount() const;
[[nodiscard]] std::optional<float> GetEigerThreshold_keV() const;
[[nodiscard]] std::optional<int64_t> GetEigerBitDepth() const;

View File

@@ -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 {

View File

@@ -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;