Improve plotting

This commit is contained in:
2024-03-31 23:08:19 +02:00
parent 8cad89d649
commit 30e775d8a2
122 changed files with 4640 additions and 1149 deletions

View File

@@ -152,6 +152,38 @@ TEST_CASE("DiffractionExperiment_UnitCell","[DiffractionExperiment]") {
REQUIRE_NOTHROW(x.SetUnitCell({}));
REQUIRE(!x.GetUnitCell());
REQUIRE_NOTHROW(x.SetUnitCell(cell));
REQUIRE(x.GetUnitCell());
UnitCell cell_with_zero_angle{
.a = 10,
.b = 20,
.c = 30,
.alpha = 90,
.beta = 0,
.gamma = 89
};
REQUIRE_NOTHROW(x.SetUnitCell(cell_with_zero_angle));
REQUIRE(!x.GetUnitCell());
UnitCell cell_with_zero_dist{
.a = 10,
.b = 20,
.c = 0,
.alpha = 90,
.beta = 90,
.gamma = 89
};
REQUIRE_NOTHROW(x.SetUnitCell(cell_with_zero_dist));
REQUIRE(!x.GetUnitCell());
UnitCell cell_with_nonsense{
.a = 10,
.b = 20,
.c = 30,
.alpha = 90,
.beta = -90,
.gamma = 89
};
REQUIRE_THROWS(x.SetUnitCell(cell_with_nonsense));
}
TEST_CASE("DiffractionExperiment_IPv4Address","[DiffractionExperiment]") {
@@ -796,3 +828,57 @@ TEST_CASE("DiffractionExperiment_PhotonEnergyMultiplayer","[DiffractionExperimen
REQUIRE(x.GetPhotonEnergy_keV() == 16.0f);
REQUIRE(x.GetPhotonEnergyForConversion_keV() == 16.0f);
}
TEST_CASE("DiffractioExperiment_GetDefaultPlotBinning", "[DiffractionExperiment]") {
DiffractionExperiment x;
x.FrameTime(std::chrono::milliseconds(1));
x.ImagesPerTrigger(5000);
CHECK(x.GetDefaultPlotBinning() == 500); // 500 x 1 us = 500 us
x.Summation(2).ImagesPerTrigger(2500);
CHECK(x.GetDefaultPlotBinning() == 250); // 250 x 2 us = 500 us
x.ImagesPerTrigger(2499);
CHECK(x.GetDefaultPlotBinning() == 1);
x.ImagesPerTrigger(1);
CHECK(x.GetDefaultPlotBinning() == 1);
}
TEST_CASE("DiffractioExperiment_ExportROIMask", "[DiffractionExperiment]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36, true));
x.Mode(DetectorMode::Conversion);
x.ROI().SetROIBox({
ROIBox("roi0", 800 , 800, 0, 4),
ROIBox("roi1", 0 , 1, 2162, 2163)
});
CHECK(x.ROI().GetMask()[800] == 0);
CHECK(x.ROI().GetMask()[801] == UINT16_MAX);
CHECK(x.ROI().GetMask()[2162 * x.GetXPixelsNum() + 1] == 1);
std::vector<uint16_t> tmp(RAW_MODULE_SIZE, 899);
x.ExportROIMask(tmp.data(), 0);
CHECK(tmp[0] == 1);
CHECK(tmp[1] == 1);
CHECK(tmp[2] == UINT16_MAX);
CHECK(tmp[RAW_MODULE_SIZE-1] == UINT16_MAX);
x.ExportROIMask(tmp.data(), 6);
CHECK(tmp[0] == UINT16_MAX);
CHECK(tmp[511 * RAW_MODULE_COLS + 800-6] == 0);
CHECK(tmp[509 * RAW_MODULE_COLS + 800-6] == 0);
CHECK(tmp[507 * RAW_MODULE_COLS + 800-6] == 0);
CHECK(tmp[506 * RAW_MODULE_COLS + 800-6] == UINT16_MAX);
x.ExportROIMask(tmp.data(), 3);
size_t diff = 0;
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
if (tmp[i] != UINT16_MAX)
diff++;
}
CHECK(diff == 0);
}