AcquisitionDevice: Setup rad. int. mapping automatically

This commit is contained in:
2023-10-20 18:00:29 +02:00
parent 7008703af3
commit 0b5bbec1fc
6 changed files with 165 additions and 1 deletions
+54 -1
View File
@@ -3,7 +3,7 @@
#include <catch2/catch.hpp>
#include "../image_analysis/RadialIntegrationProfile.h"
#include "../image_analysis/RadialIntegrationMapping.h"
#include "../image_analysis/RadialIntegrationMappingFPGA.h"
#include "../image_analysis/RadialIntegration.h"
TEST_CASE("RadialIntegrationMapping_Constructor","[RadialIntegration]") {
@@ -15,6 +15,15 @@ TEST_CASE("RadialIntegrationMapping_Constructor","[RadialIntegration]") {
REQUIRE_NOTHROW(radial = std::make_unique<RadialIntegrationMapping>(x));
}
TEST_CASE("RadialIntegrationMappingFPGA_Constructor","[RadialIntegration]") {
DiffractionExperiment x;
std::unique_ptr<RadialIntegrationMappingFPGA> radial;
x.QSpacingForRadialInt_recipA(0.1).LowQForRadialInt_recipA(0.1).HighQForRadialInt_recipA(5);
REQUIRE_NOTHROW(radial = std::make_unique<RadialIntegrationMappingFPGA>(x, 0));
}
TEST_CASE("RadialIntegrationMapping_Constructor_Mask","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
@@ -41,6 +50,14 @@ TEST_CASE("RadialIntegrationMapping_GetBinNumber","[RadialIntegration]") {
REQUIRE(mapping.GetBinNumber() == 39);
}
TEST_CASE("RadialIntegrationMappingFPGA_GetBinNumber","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
x.QSpacingForRadialInt_recipA(0.1).LowQForRadialInt_recipA(0.1).HighQForRadialInt_recipA(4);
RadialIntegrationMappingFPGA mapping(x, 0);
REQUIRE(mapping.GetBinNumber() == 39);
}
TEST_CASE("RadialIntegrationMapping_GetBinNumber_DetectorLimit","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
@@ -50,6 +67,15 @@ TEST_CASE("RadialIntegrationMapping_GetBinNumber_DetectorLimit","[RadialIntegrat
REQUIRE(mapping.GetBinNumber() < 80);
}
TEST_CASE("RadialIntegrationMappingFPGA_GetBinNumber_DetectorLimit","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
x.QSpacingForRadialInt_recipA(0.1).LowQForRadialInt_recipA(0.1).HighQForRadialInt_recipA(9.9);
RadialIntegrationMappingFPGA mapping(x, 0);
REQUIRE(mapping.GetBinNumber() < 80);
}
TEST_CASE("RadialIntegrationMapping_GetBinToQ","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
@@ -64,6 +90,20 @@ TEST_CASE("RadialIntegrationMapping_GetBinToQ","[RadialIntegration]") {
REQUIRE(bin_to_q[38] == Approx(3.95));
}
TEST_CASE("RadialIntegrationMappingFPGA_GetBinToQ","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
x.QSpacingForRadialInt_recipA(0.1).LowQForRadialInt_recipA(0.1).HighQForRadialInt_recipA(4);
RadialIntegrationMappingFPGA mapping(x, 0);
auto bin_to_q = mapping.GetBinToQ();
REQUIRE(bin_to_q[0] == Approx(0.15));
REQUIRE(bin_to_q[1] == Approx(0.25));
REQUIRE(bin_to_q[15] == Approx(1.65));
REQUIRE(bin_to_q[38] == Approx(3.95));
}
TEST_CASE("RadialIntegrationMapping_QToBin","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
@@ -77,6 +117,19 @@ TEST_CASE("RadialIntegrationMapping_QToBin","[RadialIntegration]") {
REQUIRE(mapping.QToBin(50.0) == Approx(38));
}
TEST_CASE("RadialIntegrationMappingFPGA_QToBin","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
x.QSpacingForRadialInt_recipA(0.1).LowQForRadialInt_recipA(0.1).HighQForRadialInt_recipA(4);
RadialIntegrationMappingFPGA mapping(x, 0);
REQUIRE(mapping.QToBin(0.0) == 0);
REQUIRE(std::floor(mapping.QToBin(0.200001)) == 1);
REQUIRE(mapping.QToBin(0.6) == Approx(5));
REQUIRE(mapping.QToBin(50.0) == Approx(38));
}
TEST_CASE("RadialIntegrationProfile","[RadialIntegration]") {
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);