* Enhancements for XFEL
* Enhancements for EIGER * Writer is more flexible and capable of handling DECTRIS data
This commit is contained in:
@@ -167,6 +167,25 @@ TEST_CASE("DiffractionExperiment_IPv4Address","[DiffractionExperiment]") {
|
||||
REQUIRE(x.GetSrcIPv4Address(2, 6) == IPv4AddressFromStr("64.1.124.23"));
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("DiffractionExperiment_IPv4Address_1_UDP_Interface","[DiffractionExperiment]") {
|
||||
DetectorSetup detector(DetectorGeometry(4));
|
||||
detector.UDPInterfaceCount(1);
|
||||
DiffractionExperiment x(detector);
|
||||
|
||||
x.Mode(DetectorMode::Conversion);
|
||||
|
||||
x.DataStreams(2);
|
||||
|
||||
REQUIRE_NOTHROW(x.IPv4BaseAddr("64.1.124.1"));
|
||||
REQUIRE(x.GetSrcIPv4Address(0, 0) == IPv4AddressFromStr("64.1.124.1"));
|
||||
REQUIRE(x.GetSrcIPv4Address(0, 1) == IPv4AddressFromStr("64.1.124.2"));
|
||||
REQUIRE(x.GetSrcIPv4Address(1, 1) == IPv4AddressFromStr("64.1.124.4"));
|
||||
|
||||
REQUIRE_THROWS(x.GetSrcIPv4Address(0, 2));
|
||||
REQUIRE_THROWS(x.GetSrcIPv4Address(2, 0));
|
||||
}
|
||||
|
||||
TEST_CASE("IPv4AddressToStr","") {
|
||||
REQUIRE(IPv4AddressToStr(0x0f32010a) == "10.1.50.15");
|
||||
}
|
||||
@@ -367,32 +386,25 @@ TEST_CASE("DiffractionExperiment_Preview", "[DiffractionExperiment]") {
|
||||
std::map<size_t, uint32_t> map, map2;
|
||||
x.ImagesPerTrigger(10000).FrameTime(1ms);
|
||||
x.PreviewPeriod(0ms);
|
||||
REQUIRE(x.GetPreviewStride() == 0);
|
||||
REQUIRE(x.GetPreviewPeriod().count() == 0);
|
||||
|
||||
x.PreviewPeriod(1s);
|
||||
REQUIRE(x.GetPreviewPeriod() == std::chrono::milliseconds(1000));
|
||||
REQUIRE(x.GetPreviewStride() == 1000);
|
||||
|
||||
REQUIRE_THROWS(x.PreviewPeriod(-5ms));
|
||||
|
||||
REQUIRE(x.GetPreviewStride(100ms) == 100);
|
||||
REQUIRE(x.GetPreviewStride(50ms) == 50);
|
||||
REQUIRE(x.GetPreviewStride(1ms) == 1);
|
||||
REQUIRE(x.GetPreviewStride(500us) == 1);
|
||||
REQUIRE(x.GetPreviewStride(0s) == 0);
|
||||
|
||||
x.Mode(DetectorMode::Raw);
|
||||
REQUIRE(x.GetPreviewStride() == 0);
|
||||
REQUIRE(x.GetPreviewPeriod().count() == 0);
|
||||
|
||||
x.Mode(DetectorMode::PedestalG0);
|
||||
REQUIRE(x.GetPreviewStride() == 0);
|
||||
REQUIRE(x.GetPreviewPeriod().count() == 0);
|
||||
|
||||
x.Mode(DetectorMode::PedestalG1);
|
||||
REQUIRE(x.GetPreviewStride() == 0);
|
||||
REQUIRE(x.GetPreviewPeriod().count() == 0);
|
||||
|
||||
x.Mode(DetectorMode::PedestalG2);
|
||||
REQUIRE(x.GetPreviewStride() == 0);
|
||||
REQUIRE(x.GetPreviewPeriod().count() == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("DiffractionExperiment_SpaceGroup", "[DiffractionExperiment]") {
|
||||
@@ -582,6 +594,38 @@ TEST_CASE("DiffractionExperiment_StorageCells_Pedestal","[DiffractionExperiment]
|
||||
REQUIRE(x.GetFrameNumPerTrigger() == 2);
|
||||
}
|
||||
|
||||
TEST_CASE("DiffractionExperiment_PulsedSource","[DiffractionExperiment]") {
|
||||
DiffractionExperiment x;
|
||||
REQUIRE(!x.IsPulsedSource()); // default must be off
|
||||
|
||||
x.ImagesPerTrigger(50).NumTriggers(100).Mode(DetectorMode::Raw).PedestalG0Frames(1000)
|
||||
.PedestalG1Frames(200).PedestalG2Frames(100);
|
||||
REQUIRE(x.GetImageNumPerTrigger() == 50);
|
||||
|
||||
x.PulsedSource(true);
|
||||
REQUIRE(x.GetImageNumPerTrigger() == 1);
|
||||
REQUIRE(x.GetFrameNumPerTrigger() == 1);
|
||||
|
||||
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);
|
||||
|
||||
x.Mode(DetectorMode::PedestalG1);
|
||||
REQUIRE(x.GetImageNumPerTrigger() == 0);
|
||||
REQUIRE(x.GetFrameNumPerTrigger() == 1);
|
||||
REQUIRE(x.GetNumTriggers() == 200);
|
||||
|
||||
x.Mode(DetectorMode::PedestalG2);
|
||||
REQUIRE(x.GetImageNumPerTrigger() == 0);
|
||||
REQUIRE(x.GetFrameNumPerTrigger() == 1);
|
||||
REQUIRE(x.GetNumTriggers() == 100);
|
||||
}
|
||||
|
||||
TEST_CASE("DiffractionExperiment_DefaultDataProcessingSettings","[DiffractionExperiment]") {
|
||||
REQUIRE_NOTHROW(DiffractionExperiment::CheckDataProcessingSettings(
|
||||
DiffractionExperiment::DefaultDataProcessingSettings()));
|
||||
@@ -624,7 +668,7 @@ TEST_CASE("DiffractionExperiment_FPGA_Summation_output","[DiffractionExperiment]
|
||||
|
||||
TEST_CASE("DiffractionExperiment_DetectorModuleHostname","[DiffractionExperiment]") {
|
||||
std::vector<std::string> h = {"mx1", "mx2", "mx3"};
|
||||
DiffractionExperiment x(DetectorSetup(3, "X", h));
|
||||
DiffractionExperiment x(DetectorSetup(3, DetectorType::JUNGFRAU, "X", h));
|
||||
|
||||
std::vector<AcquisitionDeviceNetConfig> net_cfg;
|
||||
|
||||
@@ -690,17 +734,17 @@ TEST_CASE("DiffractionExperiment_OmegaStep","[DiffractionExperiment]") {
|
||||
x.OmegaStep(std::optional<float>());
|
||||
x.FillMessage(msg);
|
||||
REQUIRE(!x.GetOmegaStep());
|
||||
REQUIRE(msg.goniometer.empty());
|
||||
REQUIRE(msg.omega.increment == 0.0f);
|
||||
|
||||
x.OmegaStep(0.0);
|
||||
REQUIRE(!x.GetOmegaStep());
|
||||
x.FillMessage(msg);
|
||||
REQUIRE(msg.goniometer.empty());
|
||||
REQUIRE(msg.omega.increment == 0.0f);
|
||||
|
||||
x.OmegaStep(1.0);
|
||||
x.FillMessage(msg);
|
||||
REQUIRE(x.GetOmegaStep());
|
||||
REQUIRE(!msg.goniometer.empty());
|
||||
REQUIRE(msg.omega.increment == 1.0f);
|
||||
}
|
||||
|
||||
TEST_CASE("DiffractionExperiment_ConversionOnFPGA","[DiffractionExperiment]") {
|
||||
@@ -726,3 +770,31 @@ TEST_CASE("DiffractionExperiment_ConversionOnFPGA","[DiffractionExperiment]") {
|
||||
x.Mode(DetectorMode::Conversion).ConversionOnFPGA(true);
|
||||
REQUIRE(x.IsConversionOnFPGA()); // conversion on FPGA back on
|
||||
}
|
||||
|
||||
TEST_CASE("DiffractionExperiment_EIGER","[DiffractionExperiment]") {
|
||||
DiffractionExperiment x(DetectorSetup(DetectorGeometry(4), DetectorType::EIGER));
|
||||
x.Mode(DetectorMode::Conversion).FPGAOutputMode(FPGAPixelOutput::Auto);
|
||||
REQUIRE(!x.IsConversionOnFPGA());
|
||||
REQUIRE(!x.IsPixelSigned());
|
||||
REQUIRE(x.GetPhotonEnergyMultiplier() == 1.0f);
|
||||
REQUIRE_NOTHROW(x.PhotonEnergyMultiplayer(1.0f));
|
||||
REQUIRE_THROWS(x.PhotonEnergyMultiplayer(2.0f));
|
||||
}
|
||||
|
||||
TEST_CASE("DiffractionExperiment_PhotonEnergyMultiplayer","[DiffractionExperiment]") {
|
||||
DiffractionExperiment x(DetectorSetup(DetectorGeometry(4)));
|
||||
x.Mode(DetectorMode::Conversion).PhotonEnergy_keV(16.0);
|
||||
REQUIRE(x.GetPhotonEnergyMultiplier() == 1.0f);
|
||||
REQUIRE(x.GetPhotonEnergy_keV() == 16.0f);
|
||||
REQUIRE(x.GetPhotonEnergyForConversion_keV() == 16.0f);
|
||||
|
||||
x.PhotonEnergyMultiplayer(0.25f);
|
||||
REQUIRE(x.GetPhotonEnergyMultiplier() == 0.25f);
|
||||
REQUIRE(x.GetPhotonEnergy_keV() == 16.0f);
|
||||
REQUIRE(x.GetPhotonEnergyForConversion_keV() == 4.0f);
|
||||
|
||||
x.Mode(DetectorMode::Raw);
|
||||
REQUIRE(x.GetPhotonEnergyMultiplier() == 1.0f);
|
||||
REQUIRE(x.GetPhotonEnergy_keV() == 16.0f);
|
||||
REQUIRE(x.GetPhotonEnergyForConversion_keV() == 16.0f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user