* Enhancements for XFEL
* Enhancements for EIGER * Writer is more flexible and capable of handling DECTRIS data
This commit is contained in:
@@ -20,7 +20,6 @@ TEST_CASE("JFJochReceiverTest_Raw", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -51,7 +50,6 @@ TEST_CASE("JFJochReceiverTest_Conversion", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -79,7 +77,6 @@ TEST_CASE("JFJochReceiverTest_Conversion_FixedGainG1", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -105,17 +102,16 @@ TEST_CASE("JFJochReceiverTest_Conversion_FixedGainG1_onlyG1", "[JFJochReceiver]"
|
||||
.ImagesPerTrigger(32).DataFileCount(16).PhotonEnergy_keV(12.4).Compression(CompressionAlgorithm::BSHUF_ZSTD)
|
||||
.FixedGainG1(true);
|
||||
|
||||
std::vector<uint16_t> input(RAW_MODULE_SIZE, 0x4000 + 3000);
|
||||
std::vector<uint16_t> input(RAW_MODULE_SIZE*2, 0x4000 + 3000);
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrameForAllModules(input);
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
JFJochReceiverOutput output;
|
||||
bool ret;
|
||||
REQUIRE_NOTHROW(ret = JFJochReceiverTest(output, logger, aq_devices, x, nthreads, false));
|
||||
REQUIRE_NOTHROW(ret = JFJochReceiverTest(output, logger, aq_devices, x, input, nthreads, false));
|
||||
REQUIRE(ret);
|
||||
REQUIRE(output.efficiency == 1.0);
|
||||
REQUIRE(output.status.images_sent == x.GetImageNum());
|
||||
@@ -137,7 +133,6 @@ TEST_CASE("JFJochReceiverTest_Conversion_U16", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -164,7 +159,6 @@ TEST_CASE("JFJochReceiverTest_Conversion_I32", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -191,7 +185,6 @@ TEST_CASE("JFJochReceiverTest_Conversion_Summation2", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -221,7 +214,6 @@ TEST_CASE("JFJochReceiverTest_Conversion_StorageCell", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
@@ -263,8 +255,7 @@ TEST_CASE("JFJochReceiverTest_PedestalG1", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->SetInternalGeneratorFrame();
|
||||
test->CreatePackets(x, 1, nframes, 0, pedestal_in.data(), false);
|
||||
test->CreateJFPackets(x, 1, nframes, 0, pedestal_in.data());
|
||||
test->CreateFinalPacket(x);
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
@@ -327,8 +318,8 @@ TEST_CASE("JFJochReceiverTest_PedestalG2_storage_cell", "[JFJochReceiver]") {
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
auto test = std::make_unique<HLSSimulatedDevice>(i, nframes * 2);
|
||||
for (int j = 0; j < nframes; j++) {
|
||||
test->CreatePackets(x, 2 * j + 1, 1, 0, pedestal_in2.data() + j * RAW_MODULE_SIZE, false);
|
||||
test->CreatePackets(x, 2 * j + 2, 1, 0, pedestal_in.data() + j * RAW_MODULE_SIZE, false);
|
||||
test->CreateJFPackets(x, 2 * j + 1, 1, 0, pedestal_in2.data() + j * RAW_MODULE_SIZE);
|
||||
test->CreateJFPackets(x, 2 * j + 2, 1, 0, pedestal_in.data() + j * RAW_MODULE_SIZE);
|
||||
}
|
||||
test->CreateFinalPacket(x);
|
||||
aq_devices.Add(std::move(test));
|
||||
@@ -382,7 +373,7 @@ TEST_CASE("JFJochReceiverTest_PedestalG0", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
auto test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
test->CreatePackets(x, 1, nframes, 0, pedestal_in.data(), false);
|
||||
test->CreateJFPackets(x, 1, nframes, 0, pedestal_in.data());
|
||||
test->CreateFinalPacket(x);
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
@@ -429,10 +420,10 @@ TEST_CASE("JFJochReceiverTest_PedestalG0_StorageCell", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
auto test = std::make_unique<HLSSimulatedDevice>(0, 64);
|
||||
for (int i = 0; i < nframes; i++) {
|
||||
test->CreatePackets(x, i*4+1, 1, 0, pedestal_in_0.data(), false);
|
||||
test->CreatePackets(x, i*4+2, 1, 0, pedestal_in_1.data(), false);
|
||||
test->CreatePackets(x, i*4+3, 1, 0, pedestal_in_2.data(), false);
|
||||
test->CreatePackets(x, i*4+4, 1, 0, pedestal_in_3.data(), false);
|
||||
test->CreateJFPackets(x, i * 4 + 1, 1, 0, pedestal_in_0.data());
|
||||
test->CreateJFPackets(x, i * 4 + 2, 1, 0, pedestal_in_1.data());
|
||||
test->CreateJFPackets(x, i * 4 + 3, 1, 0, pedestal_in_2.data());
|
||||
test->CreateJFPackets(x, i * 4 + 4, 1, 0, pedestal_in_3.data());
|
||||
}
|
||||
test->CreateFinalPacket(x);
|
||||
aq_devices.Add(std::move(test));
|
||||
@@ -502,16 +493,16 @@ TEST_CASE("JFJochReceiverTest_PacketLost_Raw", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
auto test = std::make_unique<HLSSimulatedDevice>(i, 64);
|
||||
test->CreatePackets(x, 1, 1, 0, frame_in.data(), false);
|
||||
test->CreatePackets(x, 1, 1, 1, frame_in.data(), false);
|
||||
test->CreatePackets(x, 2, 1, 0, frame_in.data(), false);
|
||||
test->CreatePackets(x, 2, 1, 1, frame_in.data(), false);
|
||||
test->CreatePackets(x, 3, 1, 0, frame_in.data(), false);
|
||||
test->CreatePackets(x, 3, 1, 1, frame_in.data(), false);
|
||||
test->CreateJFPackets(x, 1, 1, 0, frame_in.data());
|
||||
test->CreateJFPackets(x, 1, 1, 1, frame_in.data());
|
||||
test->CreateJFPackets(x, 2, 1, 0, frame_in.data());
|
||||
test->CreateJFPackets(x, 2, 1, 1, frame_in.data());
|
||||
test->CreateJFPackets(x, 3, 1, 0, frame_in.data());
|
||||
test->CreateJFPackets(x, 3, 1, 1, frame_in.data());
|
||||
|
||||
for (int j = 0; j < 127; j++)
|
||||
test->CreatePacketJF(x, 4, j, 0, frame_in.data() + (i * 128 + j) * 4096, false);
|
||||
test->CreatePackets(x, 4, 1, 1, frame_in.data(), false);
|
||||
test->CreateJFPacket(x, 4, j, 0, frame_in.data() + (i * 128 + j) * 4096);
|
||||
test->CreateJFPackets(x, 4, 1, 1, frame_in.data());
|
||||
test->CreateFinalPacket(x);
|
||||
|
||||
aq_devices.Add(std::move(test));
|
||||
@@ -557,12 +548,12 @@ TEST_CASE("JFJochReceiverTest_Cancel", "[JFJochReceiver]") {
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
auto test = std::make_unique<HLSSimulatedDevice>(i, 64);
|
||||
test->CreatePackets(x, 1, 1, 0, frame_in.data(), false);
|
||||
test->CreatePackets(x, 1, 1, 1, frame_in.data(), false);
|
||||
test->CreatePackets(x, 2, 1, 0, frame_in.data(), false);
|
||||
test->CreatePackets(x, 2, 1, 1, frame_in.data(), false);
|
||||
test->CreatePackets(x, 3, 1, 0, frame_in.data(), false);
|
||||
test->CreatePackets(x, 3, 1, 1, frame_in.data(), false);
|
||||
test->CreateJFPackets(x, 1, 1, 0, frame_in.data());
|
||||
test->CreateJFPackets(x, 1, 1, 1, frame_in.data());
|
||||
test->CreateJFPackets(x, 2, 1, 0, frame_in.data());
|
||||
test->CreateJFPackets(x, 2, 1, 1, frame_in.data());
|
||||
test->CreateJFPackets(x, 3, 1, 0, frame_in.data());
|
||||
test->CreateJFPackets(x, 3, 1, 1, frame_in.data());
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
Logger logger("JFJochReceiverTest_Cancelw");
|
||||
@@ -572,4 +563,56 @@ TEST_CASE("JFJochReceiverTest_Cancel", "[JFJochReceiver]") {
|
||||
TestImagePusher pusher(x.GetImageNum() - 1);
|
||||
auto receiver_out = RunJFJochReceiverTest(aq_devices, pusher, x, logger, calib, nthreads, true);
|
||||
REQUIRE(receiver_out.status.cancelled);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("JFJochReceiverTest_EIGER", "[JFJochReceiver]") {
|
||||
Logger logger("JFJochReceiverTest_EIGER");
|
||||
|
||||
DiffractionExperiment x(DetectorSetup(DetectorGeometry(2), DetectorType::EIGER));
|
||||
const uint16_t nthreads = 4;
|
||||
|
||||
x.Mode(DetectorMode::Raw);
|
||||
x.PedestalG0Frames(0).NumTriggers(1).UseInternalPacketGenerator(true)
|
||||
.ImagesPerTrigger(32).DataFileCount(16).PhotonEnergy_keV(12.4).Compression(CompressionAlgorithm::BSHUF_ZSTD);
|
||||
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
JFJochReceiverOutput output;
|
||||
bool ret;
|
||||
REQUIRE_NOTHROW(ret = JFJochReceiverTest(output, logger, aq_devices, x, nthreads, false));
|
||||
REQUIRE(ret);
|
||||
REQUIRE(output.efficiency == 1.0);
|
||||
REQUIRE(output.status.images_sent == x.GetImageNum());
|
||||
|
||||
REQUIRE(!output.status.cancelled);
|
||||
}
|
||||
|
||||
TEST_CASE("JFJochReceiverTest_EIGER_conversion", "[JFJochReceiver]") {
|
||||
Logger logger("JFJochReceiverTest_EIGER_conversion");
|
||||
|
||||
DiffractionExperiment x(DetectorSetup(DetectorGeometry(2), DetectorType::EIGER));
|
||||
const uint16_t nthreads = 4;
|
||||
|
||||
x.Mode(DetectorMode::Conversion);
|
||||
x.PedestalG0Frames(0).NumTriggers(1).UseInternalPacketGenerator(true)
|
||||
.ImagesPerTrigger(32).DataFileCount(16).PhotonEnergy_keV(12.4).Compression(CompressionAlgorithm::BSHUF_ZSTD);
|
||||
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
for (int i = 0; i < x.GetDataStreamsNum(); i++) {
|
||||
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(i,64);
|
||||
aq_devices.Add(std::move(test));
|
||||
}
|
||||
|
||||
JFJochReceiverOutput output;
|
||||
bool ret;
|
||||
REQUIRE_NOTHROW(ret = JFJochReceiverTest(output, logger, aq_devices, x, nthreads, false));
|
||||
REQUIRE(ret);
|
||||
REQUIRE(output.efficiency == 1.0);
|
||||
REQUIRE(output.status.images_sent == x.GetImageNum());
|
||||
|
||||
REQUIRE(!output.status.cancelled);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user