Use internal trigger to take pedestal + fix fixedG1 pedestal with SCs

This commit is contained in:
2024-04-13 14:27:37 +02:00
parent 24029d1268
commit 38ed2ed56f
9 changed files with 120 additions and 92 deletions

View File

@@ -568,7 +568,6 @@ TEST_CASE("DiffractionExperiment_StorageCells","[DiffractionExperiment]") {
const int64_t num_triggers = 20;
DiffractionExperiment x;
x.FrameTime(std::chrono::milliseconds(1)).ImagesPerTrigger(5).NumTriggers(num_triggers);
REQUIRE(x.GetImageNumPerTrigger() == 5);
REQUIRE(x.GetNumTriggers() == num_triggers);
REQUIRE_NOTHROW(x.StorageCells(5));
@@ -591,13 +590,11 @@ TEST_CASE("DiffractionExperiment_StorageCells","[DiffractionExperiment]") {
x.StorageCells(16);
REQUIRE(x.GetStorageCellNumber() == 16);
REQUIRE(x.GetImageNumPerTrigger() == x.GetStorageCellNumber());
REQUIRE(x.GetFrameNumPerTrigger() == x.GetStorageCellNumber());
REQUIRE(x.GetImageNum() == x.GetStorageCellNumber() * num_triggers);
REQUIRE(x.GetFrameNum() == x.GetStorageCellNumber() * num_triggers);
x.UseInternalPacketGenerator(true);
REQUIRE(x.GetImageNumPerTrigger() == x.GetStorageCellNumber());
REQUIRE(x.GetFrameNumPerTrigger() == x.GetStorageCellNumber());
REQUIRE(x.GetImageNum() == x.GetStorageCellNumber() * num_triggers);
REQUIRE(x.GetFrameNum() == x.GetStorageCellNumber() * num_triggers);
@@ -609,53 +606,72 @@ TEST_CASE("DiffractionExperiment_StorageCells_Pedestal","[DiffractionExperiment]
x.Mode(DetectorMode::PedestalG0);
REQUIRE(x.GetStorageCellNumber() == 16);
REQUIRE(x.GetNumTriggers() == 1456);
REQUIRE(x.GetFrameNumPerTrigger() == 16);
REQUIRE(x.GetNumTriggers() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 1456*16);
REQUIRE(x.GetFrameNum() == 1456 * 16);
x.Mode(DetectorMode::PedestalG1);
REQUIRE(x.GetStorageCellNumber() == 2);
REQUIRE(x.GetNumTriggers() == 323);
REQUIRE(x.GetFrameNumPerTrigger() == 2);
REQUIRE(x.GetNumTriggers() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 2 * 323);
REQUIRE(x.GetFrameNum() == 323 * 2);
x.StorageCells(8);
x.Mode(DetectorMode::PedestalG2);
REQUIRE(x.GetStorageCellNumber() == 2);
REQUIRE(x.GetNumTriggers() == 456);
REQUIRE(x.GetFrameNumPerTrigger() == 2);
REQUIRE(x.GetNumTriggers() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 2 * 456);
}
TEST_CASE("DiffractionExperiment_StorageCells_Pedestal_FixedG1","[DiffractionExperiment]") {
DiffractionExperiment x;
x.PedestalG0Frames(1456).PedestalG1Frames(323).PedestalG2Frames(456).StorageCells(15).FixedGainG1(true);
x.Mode(DetectorMode::PedestalG1);
REQUIRE(x.GetStorageCellNumber() == 15);
REQUIRE(x.GetNumTriggers() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 15 * 323);
REQUIRE(x.GetFrameNum() == 323 * 15);
}
TEST_CASE("DiffractionExperiment_PulsedSource","[DiffractionExperiment]") {
DiffractionExperiment x;
REQUIRE(!x.IsPulsedSource()); // default must be off
x.ImagesPerTrigger(50).NumTriggers(100).Mode(DetectorMode::Raw).PedestalG0Frames(1000)
x.ImagesPerTrigger(50).NumTriggers(100).Mode(DetectorMode::Conversion).PedestalG0Frames(1000)
.PedestalG1Frames(200).PedestalG2Frames(100);
REQUIRE(x.GetImageNumPerTrigger() == 50);
x.PulsedSource(true);
REQUIRE(x.GetImageNumPerTrigger() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 1);
REQUIRE(x.GetImageNum() == 100);
x.Summation(10);
REQUIRE(x.GetImageNumPerTrigger() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 10);
x.Mode(DetectorMode::PedestalG0);
REQUIRE(x.GetImageNumPerTrigger() == 0);
REQUIRE(x.GetFrameNumPerTrigger() == 1);
REQUIRE(x.GetNumTriggers() == 1000);
REQUIRE(x.GetNumTriggers() == 100 * 10);
REQUIRE(x.GetFrameNum() == 100 * 10);
REQUIRE(x.GetImageNum() == 100);
x.Mode(DetectorMode::PedestalG1);
REQUIRE(x.GetImageNumPerTrigger() == 0);
REQUIRE(x.GetFrameNumPerTrigger() == 1);
REQUIRE(x.GetNumTriggers() == 200);
x.Mode(DetectorMode::PedestalG2);
REQUIRE(x.GetImageNumPerTrigger() == 0);
x.Mode(DetectorMode::Raw);
REQUIRE(x.GetSummation() == 1);
REQUIRE(x.GetFrameNumPerTrigger() == 1);
REQUIRE(x.GetNumTriggers() == 100);
REQUIRE(x.GetFrameNum() == 100);
REQUIRE(x.GetImageNum() == 100);
x.Mode(DetectorMode::PedestalG0);
REQUIRE(x.GetImageNum() == 0);
REQUIRE(x.GetFrameNumPerTrigger() == 1000);
REQUIRE(x.GetNumTriggers() == 1);
x.Mode(DetectorMode::PedestalG1);
REQUIRE(x.GetImageNum() == 0);
REQUIRE(x.GetFrameNumPerTrigger() == 200);
REQUIRE(x.GetNumTriggers() == 1);
x.Mode(DetectorMode::PedestalG2);
REQUIRE(x.GetImageNum() == 0);
REQUIRE(x.GetFrameNumPerTrigger() == 100);
REQUIRE(x.GetNumTriggers() == 1);
}
TEST_CASE("DiffractionExperiment_DefaultDataProcessingSettings","[DiffractionExperiment]") {