Improve plotting
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user