// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include #include "../receiver/JFJochReceiverPlots.h" TEST_CASE("JFJochReceiverPlots") { DiffractionExperiment experiment; experiment.Goniometer(GoniometerAxis("omega", 15, 2, Coord(0,1,0), {})); PixelMask mask(experiment); AzimuthalIntegration integration(experiment, mask); JFJochReceiverPlots plots; plots.Setup(experiment, integration); DataMessage msg_0 { .number = 0, .error_pixel_count = 11 }; DataMessage msg_1 { .number = 2, .error_pixel_count = 12 }; plots.Add(msg_0, AzimuthalIntegrationProfile(integration)); plots.Add(msg_1, AzimuthalIntegrationProfile(integration)); auto p = plots.GetPlots(PlotRequest{ .type = PlotType::ErrorPixels, .binning = 0, .experimental_coord = false }); REQUIRE(p.GetUnits() == MultiLinePlotUnits::ImageNumber); REQUIRE(p.GetPlots().size() == 1); REQUIRE(p.GetPlots()[0].x.size() == 2); REQUIRE(p.GetPlots()[0].y.size() == 2); REQUIRE(p.GetPlots()[0].z.empty()); REQUIRE(p.GetPlots()[0].x[0] == 0); REQUIRE(p.GetPlots()[0].x[1] == 2); REQUIRE(p.GetPlots()[0].y[0] == 11); REQUIRE(p.GetPlots()[0].y[1] == 12); } TEST_CASE("JFJochReceiverPlots_Angle") { DiffractionExperiment experiment; experiment.Goniometer(GoniometerAxis("omega", 15, 2, Coord(0,1,0), {})); PixelMask mask(experiment); AzimuthalIntegration integration(experiment, mask); JFJochReceiverPlots plots; plots.Setup(experiment, integration); DataMessage msg_0 { .number = 0, .error_pixel_count = 11 }; DataMessage msg_1 { .number = 2, .error_pixel_count = 12 }; plots.Add(msg_0, AzimuthalIntegrationProfile(integration)); plots.Add(msg_1, AzimuthalIntegrationProfile(integration)); auto p = plots.GetPlots(PlotRequest{ .type = PlotType::ErrorPixels, .binning = 0, .experimental_coord = true }); REQUIRE(p.GetUnits() == MultiLinePlotUnits::Angle_deg); REQUIRE(p.GetPlots().size() == 1); REQUIRE(p.GetPlots()[0].x.size() == 2); REQUIRE(p.GetPlots()[0].y.size() == 2); REQUIRE(p.GetPlots()[0].z.empty()); REQUIRE(p.GetPlots()[0].x[0] == 15.0); REQUIRE(p.GetPlots()[0].x[1] == 15.0 + 2.0 * 2); REQUIRE(p.GetPlots()[0].y[0] == 11); REQUIRE(p.GetPlots()[0].y[1] == 12); } TEST_CASE("JFJochReceiverPlots_Grid") { DatasetSettings dataset; dataset.GridScan(GridScanSettings(5, 10, 20, false, false)); dataset.ImagesPerTrigger(12); DiffractionExperiment experiment; experiment.ImportDatasetSettings(dataset); PixelMask mask(experiment); AzimuthalIntegration integration(experiment, mask); JFJochReceiverPlots plots; plots.Setup(experiment, integration); DataMessage msg_0 { .number = 0, .error_pixel_count = 11 }; DataMessage msg_1 { .number = 2, .error_pixel_count = 12 }; DataMessage msg_3 { .number = 11, .error_pixel_count = 8 }; plots.Add(msg_0, AzimuthalIntegrationProfile(integration)); plots.Add(msg_1, AzimuthalIntegrationProfile(integration)); plots.Add(msg_3, AzimuthalIntegrationProfile(integration)); auto p = plots.GetPlots(PlotRequest{ .type = PlotType::ErrorPixels, .binning = 0, .experimental_coord = true }); REQUIRE(p.GetUnits() == MultiLinePlotUnits::Grid_um); REQUIRE(p.GetPlots().size() == 1); REQUIRE(p.GetPlots()[0].x.size() == 3); REQUIRE(p.GetPlots()[0].y.size() == 3); REQUIRE(p.GetPlots()[0].z.size() == 3); REQUIRE(p.GetPlots()[0].x[0] == 0.5 * 10.0); REQUIRE(p.GetPlots()[0].x[1] == 2.5 * 10.0); REQUIRE(p.GetPlots()[0].x[2] == 1.5 * 10.0); REQUIRE(p.GetPlots()[0].y[0] == 0.5 * 20.0); REQUIRE(p.GetPlots()[0].y[1] == 0.5 * 20.0); REQUIRE(p.GetPlots()[0].y[2] == 2.5 * 20.0); REQUIRE(p.GetPlots()[0].z[0] == 11); REQUIRE(p.GetPlots()[0].z[1] == 12); REQUIRE(p.GetPlots()[0].z[2] == 8); REQUIRE(p.GetSizeX() == 10.0 * 5); REQUIRE(p.GetSizeY() == 20.0 * 3); }