Improvements before MAX IV test

This commit is contained in:
2024-04-25 20:11:58 +02:00
parent 2c8e1fd83d
commit ea70b27e85
80 changed files with 1835 additions and 1781 deletions

View File

@@ -912,77 +912,6 @@ TEST_CASE("HLS_C_Simulation_internal_packet_generator_convert_full_range_adu_his
REQUIRE(err == 0);
}
TEST_CASE("HLS_C_Simulation_internal_packet_generator_apply_pixel_mask", "[FPGA][Full]") {
double energy = 6.0;
const uint16_t nmodules = 1;
DiffractionExperiment x((DetectorGeometry(nmodules)));
JFModulePedestal pedestal_g0, pedestal_g1, pedestal_g2;
std::vector<double> gain(3 * RAW_MODULE_SIZE);
std::vector<uint16_t> test_frame(RAW_MODULE_SIZE);
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
test_frame[i] = 5000 | ((i > 128*1024) ? 16384:0) | ((i > 256*1024) ? 32768 : 0);
}
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
pedestal_g0.GetPedestal()[i] = 3000;
pedestal_g1.GetPedestal()[i] = 14000;
pedestal_g2.GetPedestal()[i] = 15000;
}
pedestal_g0.GetPedestalMask()[0] = 1;
pedestal_g1.GetPedestalMask()[1] = 1;
pedestal_g2.GetPedestalMask()[2] = 1;
pedestal_g0.GetPedestalMask()[128*1024+1] = 1;
pedestal_g1.GetPedestalMask()[128*1024+2] = 1;
pedestal_g2.GetPedestalMask()[128*1024+3] = 1;
pedestal_g0.GetPedestalMask()[256*1024+1] = 1;
pedestal_g1.GetPedestalMask()[256*1024+2] = 1;
pedestal_g2.GetPedestalMask()[256*1024+3] = 1;
x.Mode(DetectorMode::Conversion);
x.PedestalG0Frames(0).NumTriggers(1).ImagesPerTrigger(1).UseInternalPacketGenerator(true).PhotonEnergy_keV(energy)
.ApplyPixelMaskInFPGA(true);
REQUIRE(x.GetPhotonEnergy_keV() == Approx(energy));
JFCalibration c(x);
c.Pedestal(0,0) = pedestal_g0;
c.Pedestal(0,1) = pedestal_g1;
c.Pedestal(0,2) = pedestal_g2;
c.Mask(3) = UINT32_MAX;
c.Mask(128*1024+3) = UINT32_MAX;
c.Mask(256*1024+3) = UINT32_MAX;
HLSSimulatedDevice test(0, 64);
for (int m = 0; m < x.GetModulesNum(); m++)
test.SetInternalGeneratorFrame(test_frame.data(), m);
REQUIRE_NOTHROW(test.InitializeCalibration(x, c));
REQUIRE_NOTHROW(test.StartAction(x));
REQUIRE_NOTHROW(test.WaitForActionComplete());
REQUIRE_NOTHROW(test.OutputStream().read());
REQUIRE(test.OutputStream().size() == 0);
REQUIRE(test.GetBytesReceived() == 128 * JUNGFRAU_PACKET_SIZE_BYTES);
size_t err = 0;
auto frame = test.GetDeviceOutput(0,0)->pixels;
auto mask = c.CalculateMask(x);
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
if (mask[i] && (frame[i] != INT16_MIN))
err++;
if (!mask[i] && (frame[i] == INT16_MIN))
err++;
}
REQUIRE(err == 0);
}
TEST_CASE("HLS_C_Simulation_check_2_trigger_convert", "[FPGA][Full]") {
std::vector<float> pedestal_g0(RAW_MODULE_SIZE), pedestal_g1(RAW_MODULE_SIZE), pedestal_g2(RAW_MODULE_SIZE);