Detector Geometry customization

This commit is contained in:
2023-04-12 19:22:13 +00:00
parent 94ba13b3a1
commit 0973f3725d
52 changed files with 1335 additions and 973 deletions

View File

@@ -23,7 +23,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ", "[JFJochReceiver]") {
int64_t nimages = 5;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
@@ -31,7 +31,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ", "[JFJochReceiver]") {
REQUIRE(!state_machine.GetMeasurementStatistics().has_value());
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -42,11 +43,11 @@ TEST_CASE("JFJochIntegrationTest_ZMQ", "[JFJochReceiver]") {
std::vector<std::unique_ptr<MockAcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
aq_devices.emplace_back(test);
}
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -56,7 +57,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ", "[JFJochReceiver]") {
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -118,14 +119,15 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_2DataStreams_4Devices", "[JFJochReceiver]")
int64_t nimages = 5;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
REQUIRE(!state_machine.GetMeasurementStatistics().has_value());
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -136,11 +138,11 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_2DataStreams_4Devices", "[JFJochReceiver]")
std::vector<std::unique_ptr<MockAcquisitionDevice>> aq_devices;
for (int i = 0; i < 4; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
aq_devices.emplace_back(test);
}
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -150,7 +152,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_2DataStreams_4Devices", "[JFJochReceiver]")
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -212,14 +214,15 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
int64_t nimages = 5;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
REQUIRE(!state_machine.GetMeasurementStatistics().has_value());
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().Mode(DetectorMode::Conversion);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -230,11 +233,11 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
std::vector<std::unique_ptr<MockAcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
aq_devices.emplace_back(test);
}
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -243,7 +246,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
JFJochProtoBuf::DetectorSettings detector_settings;
detector_settings.set_frame_time_us(500);
@@ -292,7 +295,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
REQUIRE(statistics.images_written() == 5);
REQUIRE(statistics.file_prefix() == "integration_raw_test");
REQUIRE(statistics.detector_width() == 1024);
REQUIRE(statistics.detector_height() == 8*512);
REQUIRE(statistics.detector_height() == 8 * 512);
REQUIRE(statistics.detector_pixel_depth() == 2);
fpga_receiver_server->Shutdown();
@@ -300,7 +303,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
}
TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
Logger logger("JFJochIntegrationTest_ZMQ_3Writers");
ZMQContext zmq_context;
@@ -309,11 +311,12 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
int64_t nimages = 37;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services
.Writer("unix:writer_test_0", "inproc://#0")
@@ -328,11 +331,11 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
std::vector<std::unique_ptr<MockAcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
aq_devices.emplace_back(test);
}
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -344,9 +347,9 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
JFJochWriterService writer_2(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server_0 = gRPCServer("unix:writer_test_0", writer_0);
auto writer_server_1 = gRPCServer("unix:writer_test_1", writer_1);
auto writer_server_2 = gRPCServer("unix:writer_test_2", writer_2);
auto writer_server_0 = gRPCServer("unix:writer_test_0", writer_0);
auto writer_server_1 = gRPCServer("unix:writer_test_1", writer_1);
auto writer_server_2 = gRPCServer("unix:writer_test_2", writer_2);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -406,11 +409,12 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
int64_t nimages = 5;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -421,16 +425,16 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
std::vector<std::unique_ptr<MockAcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
test->EnableLogging(&logger);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(i); m++) {
for (int frame = 1; frame <= nimages; frame ++)
for (int frame = 1; frame <= nimages; frame++)
test->AddModule(frame, m, image.data());
}
aq_devices.emplace_back(test);
}
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -439,7 +443,7 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -483,12 +487,14 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
int64_t nimages = 5;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0).PreviewPeriod(5ms);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0).PreviewPeriod(
5ms);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
logger.Verbose(true);
@@ -498,7 +504,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
std::vector<std::unique_ptr<AcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(i); m++) {
for (int image_num = 1; image_num <= nimages; image_num++)
test->AddModule(image_num, m, image.data());
@@ -508,7 +514,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
}
ZMQContext zmq_context;
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -524,7 +530,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
rcv_preview_socket.SubscribeAll();
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -601,12 +607,14 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
int64_t nimages = 5;
int64_t ndatastream = 2;
std::vector<int64_t> nmodules = {4, 4};
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0).PreviewPeriod(5ms);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0).PreviewPeriod(
5ms);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
logger.Verbose(true);
@@ -616,7 +624,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
std::vector<std::unique_ptr<AcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i , 256);
auto *test = new MockAcquisitionDevice(i, 256);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(i); m++) {
for (int image_num = 1; image_num <= nimages; image_num++)
test->AddModule(image_num, m, image.data());
@@ -626,7 +634,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
}
ZMQContext zmq_context;
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -642,7 +650,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
rcv_preview_socket.SubscribeAll();
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -717,11 +725,12 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_background_estimation", "[JFJochReceiver]")
size_t nimages = 10;
int64_t ndatastream = 1;
std::vector<int64_t> nmodules = {8};
int64_t nmodules = 8;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0)
.MaskChipEdges(true).MaskModuleEdges(true).SpotFindingPeriod(1ms).FrameTime(1ms);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -732,10 +741,10 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_background_estimation", "[JFJochReceiver]")
std::vector<std::unique_ptr<AcquisitionDevice>> aq_devices;
auto *test = new MockAcquisitionDevice(0 , 256);
auto *test = new MockAcquisitionDevice(0, 256);
for (int i = 0; i < nimages; i++) {
for (auto & j: image_raw_geom)
for (auto &j: image_raw_geom)
j = 2 * i + 5;
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(); m++)
test->AddModule(i + 1, m, image_raw_geom.data());
@@ -747,7 +756,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_background_estimation", "[JFJochReceiver]")
ZMQContext zmq_context;
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -760,7 +769,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_background_estimation", "[JFJochReceiver]")
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -806,7 +815,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_background_estimation", "[JFJochReceiver]")
REQUIRE(plots.bkg_estimate().x_size() == 1);
REQUIRE(plots.bkg_estimate().y_size() == 1);
REQUIRE(plots.bkg_estimate().x(0) == Approx(4.5));
REQUIRE(plots.bkg_estimate().y(0) == Approx((5+23) / 2.0));
REQUIRE(plots.bkg_estimate().y(0) == Approx((5 + 23) / 2.0));
auto tmp = state_machine.GetMeasurementStatistics();
REQUIRE(tmp.has_value());
@@ -826,11 +835,12 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
size_t nimages = 1;
int64_t ndatastream = 1;
std::vector<int64_t> nmodules = {8};
int64_t nmodules = 8;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -842,22 +852,24 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
HDF5DataSet dataset(data, "/entry/data/data");
HDF5DataSpace file_space(dataset);
std::vector<int16_t> image_conv ( nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<int16_t> image_conv(nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<hsize_t> start = {0,0,0};
std::vector<hsize_t> start = {0, 0, 0};
std::vector<hsize_t> file_size = {nimages, file_space.GetDimensions()[1], file_space.GetDimensions()[2]};
dataset.ReadVector(image_conv, start, file_size);
std::vector<int16_t> image_raw_geom(nimages * state_machine.NotThreadSafe_Experiment().GetModulesNum() * RAW_MODULE_SIZE * sizeof(int16_t));
std::vector<int16_t> image_raw_geom(
nimages * state_machine.NotThreadSafe_Experiment().GetModulesNum() * RAW_MODULE_SIZE * sizeof(int16_t));
for (int i = 0; i < nimages; i++)
ConvertedToRawGeometry(state_machine.NotThreadSafe_Experiment(),
image_raw_geom.data() + i * RAW_MODULE_SIZE * state_machine.NotThreadSafe_Experiment().GetModulesNum(),
image_raw_geom.data() +
i * RAW_MODULE_SIZE * state_machine.NotThreadSafe_Experiment().GetModulesNum(),
image_conv.data() + i * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<std::unique_ptr<AcquisitionDevice>> aq_devices;
auto *test = new MockAcquisitionDevice(0 , 256);
auto *test = new MockAcquisitionDevice(0, 256);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(0); m++) {
test->AddModule(1, m, (uint16_t *) (image_raw_geom.data() + m * RAW_MODULE_SIZE));
@@ -868,7 +880,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
ZMQContext zmq_context;
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -877,7 +889,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -934,11 +946,12 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index", "[JFJochReceiver]
size_t nimages = 24;
int64_t ndatastream = 1;
std::vector<int64_t> nmodules = {8};
int64_t nmodules = 8;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0)
.SpotFindingPeriod(10ms).IndexingPeriod(10ms);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -951,27 +964,31 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index", "[JFJochReceiver]
HDF5DataSet dataset(data, "/entry/data/data");
HDF5DataSpace file_space(dataset);
std::vector<int16_t> image_conv ( nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<int16_t> image_conv(nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<hsize_t> start = {0,0,0};
std::vector<hsize_t> start = {0, 0, 0};
std::vector<hsize_t> file_size = {nimages, file_space.GetDimensions()[1], file_space.GetDimensions()[2]};
dataset.ReadVector(image_conv, start, file_size);
std::vector<int16_t> image_raw_geom(nimages * state_machine.NotThreadSafe_Experiment().GetModulesNum() * RAW_MODULE_SIZE * sizeof(int16_t));
std::vector<int16_t> image_raw_geom(
nimages * state_machine.NotThreadSafe_Experiment().GetModulesNum() * RAW_MODULE_SIZE * sizeof(int16_t));
for (int i = 0; i < nimages; i++)
ConvertedToRawGeometry(state_machine.NotThreadSafe_Experiment(),
image_raw_geom.data() + i * RAW_MODULE_SIZE * state_machine.NotThreadSafe_Experiment().GetModulesNum(),
image_raw_geom.data() +
i * RAW_MODULE_SIZE * state_machine.NotThreadSafe_Experiment().GetModulesNum(),
image_conv.data() + i * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<std::unique_ptr<AcquisitionDevice>> aq_devices;
auto *test = new MockAcquisitionDevice(0 , 512);
auto *test = new MockAcquisitionDevice(0, 512);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(0); m++) {
for (int image_num = 1; image_num <= nimages; image_num++)
test->AddModule(image_num, m, (uint16_t *) (image_raw_geom.data()
+ (m + (image_num-1) * state_machine.NotThreadSafe_Experiment().GetModulesNum(0))
+ (m + (image_num - 1) *
state_machine.NotThreadSafe_Experiment().GetModulesNum(
0))
* RAW_MODULE_SIZE));
}
test->Terminate();
@@ -980,7 +997,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index", "[JFJochReceiver]
ZMQContext zmq_context;
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -989,7 +1006,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index", "[JFJochReceiver]
JFJochWriterService writer(zmq_context, logger);;
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -1049,11 +1066,12 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index_sum", "[JFJochRecei
size_t nimages = 24;
int64_t ndatastream = 1;
std::vector<int64_t> nmodules = {8};
int64_t nmodules = 8;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(2, nmodules, 8, 36);
state_machine.NotThreadSafe_Experiment() = DiffractionExperiment(
DetectorGeometry(ndatastream * nmodules, 2, 8, 36)).DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0)
.SpotFindingPeriod(10ms).IndexingPeriod(10ms);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
@@ -1066,29 +1084,33 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index_sum", "[JFJochRecei
HDF5DataSet dataset(data, "/entry/data/data");
HDF5DataSpace file_space(dataset);
std::vector<int16_t> image_conv ( nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<int16_t> image_conv(nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<hsize_t> start = {0,0,0};
std::vector<hsize_t> start = {0, 0, 0};
std::vector<hsize_t> file_size = {nimages, file_space.GetDimensions()[1], file_space.GetDimensions()[2]};
dataset.ReadVector(image_conv, start, file_size);
std::vector<int16_t> image_raw_geom(nimages * state_machine.NotThreadSafe_Experiment().GetModulesNum() * RAW_MODULE_SIZE * sizeof(int16_t));
std::vector<int16_t> image_raw_geom(
nimages * state_machine.NotThreadSafe_Experiment().GetModulesNum() * RAW_MODULE_SIZE * sizeof(int16_t));
for (int i = 0; i < nimages; i++)
ConvertedToRawGeometry(state_machine.NotThreadSafe_Experiment(),
image_raw_geom.data() + i * RAW_MODULE_SIZE * state_machine.NotThreadSafe_Experiment().GetModulesNum(),
image_raw_geom.data() +
i * RAW_MODULE_SIZE * state_machine.NotThreadSafe_Experiment().GetModulesNum(),
image_conv.data() + i * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<std::unique_ptr<AcquisitionDevice>> aq_devices;
auto *test = new MockAcquisitionDevice(0 , 512);
auto *test = new MockAcquisitionDevice(0, 512);
std::vector<uint16_t> pedestal(RAW_MODULE_SIZE, 3500);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(0); m++) {
for (int image_num = 1; image_num <= nimages; image_num++)
test->AddModule(image_num, m, (uint16_t *) (image_raw_geom.data()
+ (m + (image_num-1) * state_machine.NotThreadSafe_Experiment().GetModulesNum(0))
+ (m + (image_num - 1) *
state_machine.NotThreadSafe_Experiment().GetModulesNum(
0))
* RAW_MODULE_SIZE));
}
test->Terminate();
@@ -1097,7 +1119,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index_sum", "[JFJochRecei
ZMQContext zmq_context;
std::vector<AcquisitionDevice *> tmp_devices;
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
@@ -1106,7 +1128,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index_sum", "[JFJochRecei
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -1116,7 +1138,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index_sum", "[JFJochRecei
setup.set_detector_distance_mm(75);
setup.set_summation(3);
setup.set_file_prefix("spot_finding_test");
setup.set_images_per_trigger(nimages/3);
setup.set_images_per_trigger(nimages / 3);
setup.set_photon_energy_kev(12.4);
setup.set_beam_x_pxl(1090);
setup.set_beam_y_pxl(1136);
@@ -1150,7 +1172,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index_sum", "[JFJochRecei
auto statistics = tmp.value();
REQUIRE(statistics.collection_efficiency() == 1.0);
REQUIRE(statistics.images_collected() == nimages/3);
REQUIRE(statistics.images_collected() == nimages / 3);
REQUIRE(statistics.has_indexing_rate());
REQUIRE(statistics.indexing_rate() == 1.0);