JFConversion: Simplify (processing per module, not per packet) + add GPU conversion procedure - currently only synchronous

This commit is contained in:
2023-06-07 20:49:35 +02:00
parent 6a50092800
commit b5d0b34fc8
15 changed files with 404 additions and 281 deletions

View File

@@ -92,41 +92,3 @@ TEST_CASE("ProcessRawPacketTest") {
CHECK(array_1[4096*(36+64)] == 6345);
CHECK(array_2[4096*(16+64)] == 6346);
}
TEST_CASE("ProcessRawPacketTest_Conversion") {
ThreadSafeFIFO<Completion> c_fifo;
ThreadSafeFIFO<WorkRequest> wr_fifo;
std::vector<uint16_t> array_0(RAW_MODULE_SIZE);
wr_fifo.Put(WorkRequest{.ptr = array_0.data(), .handle = 0});
DiffractionExperiment experiment(DetectorGeometry(8));
experiment.DataStreams(2).PhotonEnergy_keV(2);
JFCalibration calibration(experiment);
calibration.Pedestal(6, 0, 0).GetPedestal()[4096*36] = 300;
calibration.Pedestal(6, 1, 0).GetPedestal()[4096*36+1] = 15000;
calibration.Pedestal(6, 2, 0).GetPedestal()[4096*36+2] = 14000;
{
ProcessJFPacket process(c_fifo, wr_fifo, 4);
REQUIRE_NOTHROW(process.RegisterConversion(experiment, calibration, 1));
jf_udp_payload datagram;
datagram.packetnum = 36;
datagram.framenum = 2;
datagram.bunchid = 84;
datagram.data[0] = 600;
datagram.data[1] = 16384 | 4000;
datagram.data[2] = 32768 | 16384 | 9000;
datagram.xCoord = 4;
process.ProcessPacket(&datagram);
REQUIRE(process.GetCounter() == 1);
}
CHECK(array_0[4096*36] == std::round((600 - 300) / (DEFAULT_G0_FACTOR*2)));
CHECK(array_0[4096*36+1] == std::round((4000 - 15000) / (DEFAULT_G1_FACTOR*2)));
CHECK(array_0[4096*36+2] == std::round((9000 - 14000) / (DEFAULT_G2_FACTOR*2)));
}