diff --git a/common/DiffractionExperiment.cpp b/common/DiffractionExperiment.cpp index 6c2c9835..50793d86 100644 --- a/common/DiffractionExperiment.cpp +++ b/common/DiffractionExperiment.cpp @@ -516,17 +516,11 @@ float DiffractionExperiment::GetWavelength_A() const { } float DiffractionExperiment::GetBeamX_pxl() const { - if (GetBinning2x2()) - return dataset.beam_x_pxl() / 2.0f; - else - return dataset.beam_x_pxl(); + return dataset.beam_x_pxl(); } float DiffractionExperiment::GetBeamY_pxl() const { - if (GetBinning2x2()) - return dataset.beam_y_pxl() / 2.0f; - else - return dataset.beam_y_pxl(); + return dataset.beam_y_pxl(); } float DiffractionExperiment::GetDetectorDistance_mm() const { @@ -608,32 +602,14 @@ int64_t DiffractionExperiment::GetPixelsNum() const { return GetXPixelsNum() * GetYPixelsNum(); } -int64_t DiffractionExperiment::GetPixelsNumFullImage() const { - return GetXPixelsNumFullImage() * GetYPixelsNumFullImage(); -} - -int64_t DiffractionExperiment::GetXPixelsNumFullImage() const { +int64_t DiffractionExperiment::GetXPixelsNum() const { if (GetDetectorMode() != DetectorMode::Conversion) return RAW_MODULE_COLS; else return internal.detector().geometry().width_pxl(); } -int64_t DiffractionExperiment::GetXPixelsNum() const { - if (GetBinning2x2()) - return GetXPixelsNumFullImage() / 2; - else - return GetXPixelsNumFullImage(); -} - int64_t DiffractionExperiment::GetYPixelsNum() const { - if (GetBinning2x2()) - return GetYPixelsNumFullImage() / 2; - else - return GetYPixelsNumFullImage(); -} - -int64_t DiffractionExperiment::GetYPixelsNumFullImage() const { if (GetDetectorMode() != DetectorMode::Conversion) return RAW_MODULE_LINES * GetModulesNum(); else @@ -884,7 +860,6 @@ void DiffractionExperiment::LoadDatasetSettings(const JFJochProtoBuf::DatasetSet SpaceGroupNumber(settings.space_group_number()); SampleName(settings.sample_name()); Compression(settings.compression()); - Binning2x2(settings.binning2x2()); SaveCalibration(settings.save_calibration()); if (settings.fpga_summation() == 0) FPGASummation(1); @@ -1046,22 +1021,7 @@ bool DiffractionExperiment::GetApplyPixelMaskInFPGA() const { } float DiffractionExperiment::GetPixelSize_mm() const { - if (GetBinning2x2()) - return internal.detector().pixel_size_mm() * 2; - else - return internal.detector().pixel_size_mm(); -} - -DiffractionExperiment &DiffractionExperiment::Binning2x2(bool input) { - dataset.set_binning2x2(input); - return *this; -} - -bool DiffractionExperiment::GetBinning2x2() const { - if (GetDetectorMode() == DetectorMode::Conversion) - return dataset.binning2x2(); - else - return false; + return internal.detector().pixel_size_mm(); } DiffractionExperiment &DiffractionExperiment::SourceName(std::string input) { diff --git a/common/DiffractionExperiment.h b/common/DiffractionExperiment.h index 32b11b90..284ceb0d 100644 --- a/common/DiffractionExperiment.h +++ b/common/DiffractionExperiment.h @@ -86,7 +86,6 @@ public: DiffractionExperiment& SourceNameShort(std::string input); DiffractionExperiment& InstrumentName(std::string input); DiffractionExperiment& InstrumentNameShort(std::string input); - DiffractionExperiment& Binning2x2(bool input); DiffractionExperiment& ApplyPixelMaskInFPGA(bool input); operator JFJochProtoBuf::JungfraujochSettings() const; @@ -150,17 +149,11 @@ public: int64_t GetFirstModuleOfDataStream(uint16_t data_stream) const; int64_t GetPixelsNum() const; - int64_t GetPixelsNumFullImage() const; // before filters, like ROI or binning - int64_t GetYPixelsNum() const; - int64_t GetYPixelsNumFullImage() const; // before filters, like ROI or binning - int64_t GetXPixelsNum() const; - int64_t GetXPixelsNumFullImage() const; // before filters, like ROI or binning - - int64_t GetPixel0OfModule(uint16_t module_number) const; // before filters, like ROI or binning - int64_t GetModuleFastDirectionStep(uint16_t module_number) const; // before filters, like ROI or binning - int64_t GetModuleSlowDirectionStep(uint16_t module_number) const; // before filters, like ROI or binning + int64_t GetPixel0OfModule(uint16_t module_number) const; + int64_t GetModuleFastDirectionStep(uint16_t module_number) const; + int64_t GetModuleSlowDirectionStep(uint16_t module_number) const; std::chrono::microseconds GetPreviewPeriod() const; int64_t GetPreviewStride() const; @@ -197,8 +190,6 @@ public: bool GetApplyPixelMaskInFPGA() const; float GetPixelSize_mm() const; - bool GetBinning2x2() const; - std::string GetSourceName() const; std::string GetSourceNameShort() const; std::string GetInstrumentName() const; diff --git a/common/FrameTransformation.cpp b/common/FrameTransformation.cpp index 785ab055..59463d79 100644 --- a/common/FrameTransformation.cpp +++ b/common/FrameTransformation.cpp @@ -10,8 +10,7 @@ FrameTransformation::FrameTransformation(const DiffractionExperiment &in_experiment) : experiment(in_experiment), summation(experiment.GetSummation()), - pixel_depth(experiment.GetPixelDepth()), compressor(in_experiment.GetCompressionAlgorithmEnum()), - binning_2x2(experiment.GetBinning2x2()), conversion_buffer(RAW_MODULE_SIZE) { + pixel_depth(experiment.GetPixelDepth()), compressor(in_experiment.GetCompressionAlgorithmEnum()) { if ((experiment.GetDetectorMode() == DetectorMode::Conversion) && (summation > 1)) { for (int i = 0; i < experiment.GetModulesNum(); i++) @@ -19,11 +18,6 @@ FrameTransformation::FrameTransformation(const DiffractionExperiment &in_experim } precompression_buffer.resize(experiment.GetPixelsNum() * pixel_depth); - if (pixel_depth == 4) - image16bit.resize(experiment.GetPixelsNum(), 0); - - if (binning_2x2) - full_image_buffer.resize(experiment.GetPixelsNumFullImage() * pixel_depth); if (experiment.GetApplyPixelMaskInFPGA()) { // Mask gaps @@ -52,10 +46,8 @@ template void AddToFramesSum(Td *destination, const int16_t *source) void FrameTransformation::PackSummation() { for (int m = 0; m < experiment.GetModulesNum(); m++) { int32_t *output; - if (binning_2x2) - output = (int32_t *) full_image_buffer.data(); - else - output = (int32_t *) precompression_buffer.data(); + + output = (int32_t *) precompression_buffer.data(); TransferModuleAdjustMultipixels(output, (int32_t *) summation_buffer[m].data(), @@ -71,25 +63,8 @@ void FrameTransformation::PackSummation() { } void FrameTransformation::Pack() { - - if (summation > 1) { + if (summation > 1) PackSummation(); - if (binning_2x2) - Bin2x2_sum((int32_t *) precompression_buffer.data(), - (int32_t *) full_image_buffer.data(), - experiment.GetXPixelsNumFullImage(), - experiment.GetYPixelsNumFullImage(), - static_cast(experiment.GetUnderflow()), - static_cast(experiment.GetOverflow())); - } else { - if (binning_2x2) - Bin2x2_sum((int16_t *) precompression_buffer.data(), - (int16_t *) full_image_buffer.data(), - experiment.GetXPixelsNumFullImage(), - experiment.GetYPixelsNumFullImage(), - INT16_MIN, INT16_MAX); - } - } size_t FrameTransformation::SaveCompressedImage(void *output) { @@ -102,12 +77,7 @@ void FrameTransformation::ProcessModule(const int16_t *input, uint16_t module_nu size_t module_number_abs = experiment.GetFirstModuleOfDataStream(data_stream) + module_number; if (summation == 1) { - int16_t *output; - - if (binning_2x2) - output = (int16_t *) full_image_buffer.data(); - else - output = (int16_t *) precompression_buffer.data(); + auto output = (int16_t *) precompression_buffer.data(); if (experiment.GetDetectorMode() != DetectorMode::Conversion) memcpy(output + RAW_MODULE_SIZE * module_number_abs, @@ -136,31 +106,4 @@ const void *FrameTransformation::GetPreviewImage() const { return precompression_buffer.data(); } -void FrameTransformation::ProcessModule(JFConversion &conv, const int16_t *input, uint16_t module_number, int data_stream) { - size_t module_number_abs = experiment.GetFirstModuleOfDataStream(data_stream) + module_number; - - if (summation == 1) { - int16_t *output; - - if (binning_2x2) - output = (int16_t *) full_image_buffer.data(); - else - output = (int16_t *) precompression_buffer.data(); - - if (experiment.GetDetectorMode() != DetectorMode::Conversion) - memcpy(output + RAW_MODULE_SIZE * module_number_abs, input, RAW_MODULE_SIZE * experiment.GetPixelDepth()); - else { - conv.ConvertModule(conversion_buffer.data(), (uint16_t *) input); - TransferModuleAdjustMultipixels(output, conversion_buffer.data(), - experiment.GetModuleSlowDirectionStep(module_number_abs), - static_cast(INT16_MIN), - static_cast(INT16_MAX), - experiment.GetModuleFastDirectionStep(module_number_abs), - experiment.GetPixel0OfModule(module_number_abs)); - } - } else { - throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, - "Summation with CPU conversion not supported at the moment"); - } -} diff --git a/common/FrameTransformation.h b/common/FrameTransformation.h index b580f03b..ab892181 100644 --- a/common/FrameTransformation.h +++ b/common/FrameTransformation.h @@ -14,20 +14,13 @@ class FrameTransformation { std::vector > summation_buffer; std::vector precompression_buffer; - std::vector conversion_buffer; - std::vector image16bit; const size_t summation; const size_t pixel_depth; - - std::vector full_image_buffer; - bool binning_2x2; void PackSummation(); // transfer summed image to converted coordinates, clear summation buffer, no compression public: - FrameTransformation(const DiffractionExperiment &experiment); + explicit FrameTransformation(const DiffractionExperiment &experiment); void ProcessModule(const int16_t *input, uint16_t module_number, int data_stream); - void ProcessModule(JFConversion &conv, const int16_t *input, uint16_t module_number, - int data_stream); void Pack(); // transfer summed image to converted coordinates, clear summation buffer size_t SaveCompressedImage(void *output); void ApplyROI(const ROIFilter &filter); diff --git a/common/RawToConvertedGeometry.h b/common/RawToConvertedGeometry.h index df298ec5..bfb7721c 100644 --- a/common/RawToConvertedGeometry.h +++ b/common/RawToConvertedGeometry.h @@ -56,30 +56,13 @@ void RawToConvertedGeometryAdjustMultipixels(const DiffractionExperiment &experi if (min > 0) min = 0; Ts max = experiment.GetOverflow() - 1; - if (experiment.GetBinning2x2()) { - std::vector tmp(experiment.GetPixelsNumFullImage()); - for (size_t module_number = 0; module_number < experiment.GetModulesNum(); module_number++) { - TransferModuleAdjustMultipixels(tmp.data(), - source + module_number * RAW_MODULE_SIZE, - experiment.GetModuleSlowDirectionStep(module_number), - min, max, - experiment.GetModuleFastDirectionStep(module_number), - experiment.GetPixel0OfModule(module_number)); - Bin2x2_sum(destination, - tmp.data(), - experiment.GetXPixelsNumFullImage(), - experiment.GetYPixelsNumFullImage(), - min, max); - } - } else { - for (size_t module_number = 0; module_number < experiment.GetModulesNum(); module_number++) { - TransferModuleAdjustMultipixels(destination, - source + module_number * RAW_MODULE_SIZE, - experiment.GetModuleSlowDirectionStep(module_number), - min, max, - experiment.GetModuleFastDirectionStep(module_number), - experiment.GetPixel0OfModule(module_number)); - } + for (size_t module_number = 0; module_number < experiment.GetModulesNum(); module_number++) { + TransferModuleAdjustMultipixels(destination, + source + module_number * RAW_MODULE_SIZE, + experiment.GetModuleSlowDirectionStep(module_number), + min, max, + experiment.GetModuleFastDirectionStep(module_number), + experiment.GetPixel0OfModule(module_number)); } } diff --git a/common/TestImagePusher.cpp b/common/TestImagePusher.cpp index fe0aec7e..22255223 100644 --- a/common/TestImagePusher.cpp +++ b/common/TestImagePusher.cpp @@ -104,10 +104,7 @@ bool TestImagePusher::CheckImage(const DiffractionExperiment &x, const std::vect raw_reference_image.data(), decompressed_image.data(), storage_cell); - if (x.GetBinning2x2() && (result > 1.5)) { - logger.Error("Mean conversion error ({:.3f}) larger than threshold", result); - no_errors = false; - } else if (!x.GetBinning2x2() && (result > 0.5)) { + if (result > 0.5) { logger.Error("Mean conversion error ({:.3f}) larger than threshold", result); no_errors = false; } else diff --git a/grpc/jfjoch.proto b/grpc/jfjoch.proto index 7af9ae9b..c874511e 100644 --- a/grpc/jfjoch.proto +++ b/grpc/jfjoch.proto @@ -109,8 +109,6 @@ message DatasetSettings { optional UnitCell unit_cell = 13; int64 space_group_number = 14; - bool binning2x2 = 17; - bool rad_int_solid_angle_corr = 18; bool rad_int_polarization_corr = 19; float rad_int_polarization_factor = 20; diff --git a/jungfrau/JFCalibration.cpp b/jungfrau/JFCalibration.cpp index 865070af..360ad5b3 100644 --- a/jungfrau/JFCalibration.cpp +++ b/jungfrau/JFCalibration.cpp @@ -108,17 +108,9 @@ std::vector JFCalibration::CalculateNexusMask(const DiffractionExperim auto mask_raw = CalculateMask(experiment, storage_cell); if (experiment.GetDetectorMode() == DetectorMode::Conversion) { - DiffractionExperiment x(experiment); - x.Binning2x2(false); - - std::vector tmp(x.GetPixelsNum(), 1); - RawToConvertedGeometry(x, tmp.data(), mask_raw.data()); - if (experiment.GetBinning2x2()) { - std::vector tmp_binned(experiment.GetPixelsNum()); - Bin2x2_or(tmp_binned.data(), tmp.data(), x.GetXPixelsNum(), experiment.GetYPixelsNum()); - return tmp_binned; - } else - return tmp; + std::vector tmp(experiment.GetPixelsNum(), 1); + RawToConvertedGeometry(experiment, tmp.data(), mask_raw.data()); + return tmp; } else return mask_raw; } diff --git a/python/jfjoch_pb2.py b/python/jfjoch_pb2.py index 76684fda..a59f1d66 100644 --- a/python/jfjoch_pb2.py +++ b/python/jfjoch_pb2.py @@ -13,27 +13,27 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cjfjoch.proto\x12\x0eJFJochProtoBuf\"\x07\n\x05\x45mpty\"W\n\x08UnitCell\x12\t\n\x01\x61\x18\x01 \x01(\x02\x12\t\n\x01\x62\x18\x02 \x01(\x02\x12\t\n\x01\x63\x18\x03 \x01(\x02\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x0c\n\x04\x62\x65ta\x18\x05 \x01(\x02\x12\r\n\x05gamma\x18\x06 \x01(\x02\")\n\x06Vector\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"|\n\x10RotationSettings\x12\x17\n\x0fstart_angle_deg\x18\x01 \x01(\x02\x12 \n\x18\x61ngle_incr_per_image_deg\x18\x02 \x01(\x02\x12-\n\rrotation_axis\x18\x03 \x01(\x0b\x32\x16.JFJochProtoBuf.Vector\"\x1c\n\x04Plot\x12\t\n\x01x\x18\x01 \x03(\x02\x12\t\n\x01y\x18\x02 \x03(\x02\"E\n\x0cROIRectangle\x12\n\n\x02x0\x18\x01 \x01(\x05\x12\n\n\x02y0\x18\x02 \x01(\x05\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05\"\xc6\x05\n\x0f\x44\x61tasetSettings\x12\x1a\n\x12images_per_trigger\x18\x01 \x01(\x03\x12\x10\n\x08ntrigger\x18\x02 \x01(\x03\x12\x13\n\tsummation\x18\x03 \x01(\x03H\x00\x12\x17\n\rimage_time_us\x18\x04 \x01(\x03H\x00\x12\x12\n\nbeam_x_pxl\x18\x05 \x01(\x02\x12\x12\n\nbeam_y_pxl\x18\x06 \x01(\x02\x12\x1c\n\x14\x64\x65tector_distance_mm\x18\x07 \x01(\x02\x12\x19\n\x11photon_energy_keV\x18\x08 \x01(\x02\x12\x13\n\x0b\x66ile_prefix\x18\t \x01(\t\x12\x17\n\x0f\x64\x61ta_file_count\x18\n \x01(\x03\x12\x30\n\x0b\x63ompression\x18\x0b \x01(\x0e\x32\x1b.JFJochProtoBuf.Compression\x12\x13\n\x0bsample_name\x18\x0c \x01(\t\x12\x30\n\tunit_cell\x18\r \x01(\x0b\x32\x18.JFJochProtoBuf.UnitCellH\x01\x88\x01\x01\x12\x1a\n\x12space_group_number\x18\x0e \x01(\x03\x12\x12\n\nbinning2x2\x18\x11 \x01(\x08\x12 \n\x18rad_int_solid_angle_corr\x18\x12 \x01(\x08\x12!\n\x19rad_int_polarization_corr\x18\x13 \x01(\x08\x12#\n\x1brad_int_polarization_factor\x18\x14 \x01(\x02\x12\x18\n\x10save_calibration\x18\x15 \x01(\x08\x12/\n\tuser_mask\x18\x16 \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangle\x12:\n\x11\x66pga_pixel_output\x18\x17 \x01(\x0e\x32\x1f.JFJochProtoBuf.FPGAPixelOutput\x12\x16\n\x0e\x66pga_summation\x18\x18 \x01(\x03\x42\x08\n\x06timingB\x0c\n\n_unit_cell\"\x9a\x03\n\x10\x44\x65tectorSettings\x12\x15\n\rframe_time_us\x18\x01 \x01(\x03\x12\x1a\n\rcount_time_us\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x1a\n\x12storage_cell_count\x18\x03 \x01(\x03\x12%\n\x1duse_internal_packet_generator\x18\x04 \x01(\x08\x12\x18\n\x10\x63ollect_raw_data\x18\x05 \x01(\x08\x12\x1f\n\x12pedestal_g0_frames\x18\x06 \x01(\x03H\x01\x88\x01\x01\x12\x1f\n\x12pedestal_g1_frames\x18\x07 \x01(\x03H\x02\x88\x01\x01\x12\x1f\n\x12pedestal_g2_frames\x18\x08 \x01(\x03H\x03\x88\x01\x01\x12\"\n\x15storage_cell_delay_ns\x18\n \x01(\x03H\x04\x88\x01\x01\x42\x10\n\x0e_count_time_usB\x15\n\x13_pedestal_g0_framesB\x15\n\x13_pedestal_g1_framesB\x15\n\x13_pedestal_g2_framesB\x18\n\x16_storage_cell_delay_ns\"b\n\x16\x44\x65tectorModuleGeometry\x12\x0e\n\x06pixel0\x18\x01 \x01(\x03\x12\x1b\n\x13\x66\x61st_direction_step\x18\x02 \x01(\x03\x12\x1b\n\x13slow_direction_step\x18\x03 \x01(\x03\"z\n\x10\x44\x65tectorGeometry\x12\x11\n\twidth_pxl\x18\x01 \x01(\x03\x12\x12\n\nheight_pxl\x18\x02 \x01(\x03\x12?\n\x0fmodule_geometry\x18\x03 \x03(\x0b\x32&.JFJochProtoBuf.DetectorModuleGeometry\"\xde\x01\n\x08\x44\x65tector\x12\x10\n\x08nmodules\x18\x01 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rpixel_size_mm\x18\x03 \x01(\x02\x12\x17\n\x0fmodule_hostname\x18\x04 \x03(\t\x12\x32\n\x08geometry\x18\x05 \x01(\x0b\x32 .JFJochProtoBuf.DetectorGeometry\x12*\n\x04type\x18\x06 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorType\x12\x1b\n\x13udp_interface_count\x18\x07 \x01(\x03\"\xa7\x06\n\x10InternalSettings\x12\"\n\x1a\x66rame_time_pedestalG1G2_us\x18\x01 \x01(\x03\x12\x15\n\rframe_time_us\x18\x03 \x01(\x03\x12\x15\n\rcount_time_us\x18\x04 \x01(\x03\x12*\n\x08\x64\x65tector\x18\x05 \x01(\x0b\x32\x18.JFJochProtoBuf.Detector\x12\x14\n\x0cndatastreams\x18\x06 \x01(\x03\x12&\n\x1einternal_fpga_packet_generator\x18\t \x01(\x08\x12\x15\n\rstorage_cells\x18\n \x01(\x03\x12\x1a\n\x12storage_cell_start\x18\x0b \x01(\x03\x12\x1d\n\x15storage_cell_delay_ns\x18\' \x01(\x03\x12\x1a\n\x12pedestal_g0_frames\x18\x0c \x01(\x03\x12\x1a\n\x12pedestal_g1_frames\x18\r \x01(\x03\x12\x1a\n\x12pedestal_g2_frames\x18\x0e \x01(\x03\x12\x19\n\x11preview_period_us\x18\x0f \x01(\x03\x12*\n\x04mode\x18\x13 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorMode\x12\x19\n\x11mask_module_edges\x18\x14 \x01(\x08\x12\x17\n\x0fmask_chip_edges\x18\x15 \x01(\x08\x12\x16\n\x0eipv4_base_addr\x18\x16 \x01(\x03\x12\r\n\x05low_q\x18\x1a \x01(\x02\x12\x0e\n\x06high_q\x18\x1b \x01(\x02\x12\x11\n\tq_spacing\x18\x1c \x01(\x02\x12\x10\n\x08git_sha1\x18\x1d \x01(\t\x12\x10\n\x08git_date\x18\x1e \x01(\t\x12\x13\n\x0bsource_name\x18 \x01(\t\x12\x19\n\x11source_name_short\x18! \x01(\t\x12\x17\n\x0finstrument_name\x18\" \x01(\t\x12\x1d\n\x15instrument_name_short\x18# \x01(\t\x12\x33\n\rroi_rectangle\x18$ \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangle\x12\x11\n\troi_apply\x18% \x01(\x08\x12\x18\n\x10\x64\x65\x62ug_pixel_mask\x18& \x01(\x08\"|\n\x14JungfraujochSettings\x12\x30\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x1f.JFJochProtoBuf.DatasetSettings\x12\x32\n\x08internal\x18\x02 \x01(\x0b\x32 .JFJochProtoBuf.InternalSettings\"\x1e\n\nJFPedestal\x12\x10\n\x08pedestal\x18\x01 \x01(\x0c\"-\n\x11JFGainCalibration\x12\x18\n\x10gain_calibration\x18\x01 \x01(\x0c\"\xb2\x01\n\rJFCalibration\x12\x10\n\x08nmodules\x18\x01 \x01(\x04\x12\x16\n\x0enstorage_cells\x18\x02 \x01(\x04\x12,\n\x08pedestal\x18\x03 \x03(\x0b\x32\x1a.JFJochProtoBuf.JFPedestal\x12\x0c\n\x04mask\x18\x04 \x01(\x0c\x12;\n\x10gain_calibration\x18\x05 \x03(\x0b\x32!.JFJochProtoBuf.JFGainCalibration\"V\n\x17JFCalibrationStatistics\x12;\n\x11module_statistics\x18\x01 \x03(\x0b\x32 .JFJochProtoBuf.ModuleStatistics\"\x91\x02\n\x1b\x41\x63quisitionDeviceStatistics\x12\x14\n\x0cgood_packets\x18\x01 \x01(\x04\x12\x18\n\x10packets_expected\x18\x0c \x01(\x04\x12\x12\n\nefficiency\x18\x04 \x01(\x02\x12\x16\n\x0e\x62ytes_received\x18\x05 \x01(\x04\x12\x17\n\x0fstart_timestamp\x18\x06 \x01(\x04\x12\x15\n\rend_timestamp\x18\x07 \x01(\x04\x12/\n\x0b\x66pga_status\x18\x08 \x01(\x0b\x32\x1a.JFJochProtoBuf.FPGAStatus\x12\x10\n\x08nmodules\x18\t \x01(\x04\x12#\n\x1bpackets_received_per_module\x18\x10 \x03(\x04\"\x88\x01\n\rReceiverInput\x12\x43\n\x15jungfraujoch_settings\x18\x01 \x01(\x0b\x32$.JFJochProtoBuf.JungfraujochSettings\x12\x32\n\x0b\x63\x61libration\x18\x02 \x01(\x0b\x32\x1d.JFJochProtoBuf.JFCalibration\"\xd6\x03\n\x0eReceiverOutput\x12\x46\n\x11\x64\x65vice_statistics\x18\x01 \x03(\x0b\x32+.JFJochProtoBuf.AcquisitionDeviceStatistics\x12\x19\n\x11max_receive_delay\x18\x02 \x01(\x04\x12\x17\n\x0f\x63ompressed_size\x18\x03 \x01(\x04\x12\x18\n\x10\x63ompressed_ratio\x18\x04 \x01(\x02\x12\x13\n\x0bimages_sent\x18\x05 \x01(\x04\x12\x15\n\rstart_time_ms\x18\x06 \x01(\x04\x12\x13\n\x0b\x65nd_time_ms\x18\x07 \x01(\x04\x12\x12\n\nefficiency\x18\x08 \x01(\x02\x12\x1d\n\x15max_image_number_sent\x18\t \x01(\x04\x12\x11\n\tcancelled\x18\n \x01(\x08\x12\x18\n\x10master_file_name\x18\x0b \x01(\t\x12\x33\n\x0fpedestal_result\x18\x0c \x03(\x0b\x32\x1a.JFJochProtoBuf.JFPedestal\x12\x1a\n\rindexing_rate\x18\r \x01(\x02H\x00\x88\x01\x01\x12\x19\n\x0c\x62kg_estimate\x18\x0e \x01(\x02H\x01\x88\x01\x01\x42\x10\n\x0e_indexing_rateB\x0f\n\r_bkg_estimate\"T\n\x1bReceiverNetworkConfigDevice\x12\x10\n\x08mac_addr\x18\x01 \x01(\t\x12\x11\n\tipv4_addr\x18\x02 \x01(\t\x12\x10\n\x08udp_port\x18\x03 \x01(\x04\"T\n\x15ReceiverNetworkConfig\x12;\n\x06\x64\x65vice\x18\x01 \x03(\x0b\x32+.JFJochProtoBuf.ReceiverNetworkConfigDevice\"\xcb\x01\n\x0eReceiverStatus\x12\x15\n\x08progress\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12/\n\x0b\x66pga_status\x18\x02 \x03(\x0b\x32\x1a.JFJochProtoBuf.FPGAStatus\x12\x1a\n\rindexing_rate\x18\x03 \x01(\x02H\x01\x88\x01\x01\x12\x1f\n\x12send_buffers_avail\x18\x04 \x01(\x02H\x02\x88\x01\x01\x42\x0b\n\t_progressB\x10\n\x0e_indexing_rateB\x15\n\x13_send_buffers_avail\"F\n\x0bPlotRequest\x12&\n\x04type\x18\x01 \x01(\x0e\x32\x18.JFJochProtoBuf.PlotType\x12\x0f\n\x07\x62inning\x18\x02 \x01(\x04\"M\n\x18RadialIntegrationProfile\x12\r\n\x05title\x18\x01 \x01(\t\x12\"\n\x04plot\x18\x02 \x01(\x0b\x32\x14.JFJochProtoBuf.Plot\"W\n\x19RadialIntegrationProfiles\x12:\n\x08profiles\x18\x01 \x03(\x0b\x32(.JFJochProtoBuf.RadialIntegrationProfile\">\n\x0bWriterInput\x12\x1c\n\x14zmq_receiver_address\x18\x01 \x01(\t\x12\x11\n\tseries_id\x18\x02 \x01(\x03\"3\n\x12\x44\x61taFileStatistics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07nimages\x18\x02 \x01(\x03\"\x8d\x01\n\x0cWriterOutput\x12\x0f\n\x07nimages\x18\x01 \x01(\x03\x12\x17\n\x0fperformance_MBs\x18\x02 \x01(\x02\x12\x16\n\x0eperformance_Hz\x18\x03 \x01(\x02\x12;\n\x0f\x66ile_statistics\x18\x04 \x03(\x0b\x32\".JFJochProtoBuf.DataFileStatistics\"\x82\x02\n\x14\x44\x65tectorModuleConfig\x12\x17\n\x0fudp_dest_port_1\x18\x01 \x01(\x04\x12\x17\n\x0fudp_dest_port_2\x18\x02 \x01(\x04\x12\x17\n\x0fipv4_src_addr_1\x18\x03 \x01(\t\x12\x17\n\x0fipv4_src_addr_2\x18\x04 \x01(\t\x12\x18\n\x10ipv4_dest_addr_1\x18\x05 \x01(\t\x12\x18\n\x10ipv4_dest_addr_2\x18\x06 \x01(\t\x12\x17\n\x0fmac_addr_dest_1\x18\x07 \x01(\t\x12\x17\n\x0fmac_addr_dest_2\x18\x08 \x01(\t\x12 \n\x18module_id_in_data_stream\x18\t \x01(\x04\"}\n\x0e\x44\x65tectorConfig\x12\x35\n\x07modules\x18\x01 \x03(\x0b\x32$.JFJochProtoBuf.DetectorModuleConfig\x12\x17\n\x0fmodule_hostname\x18\x02 \x03(\t\x12\x1b\n\x13udp_interface_count\x18\x03 \x01(\x03\"\xfc\x01\n\rDetectorInput\x12\x13\n\x0bmodules_num\x18\x01 \x01(\x03\x12*\n\x04mode\x18\x02 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorMode\x12\x12\n\nnum_frames\x18\x03 \x01(\x03\x12\x14\n\x0cnum_triggers\x18\x04 \x01(\x03\x12\x1b\n\x13storage_cell_number\x18\x05 \x01(\x03\x12\x1a\n\x12storage_cell_start\x18\x06 \x01(\x03\x12\x1d\n\x15storage_cell_delay_ns\x18\x07 \x01(\x03\x12\x11\n\tperiod_us\x18\t \x01(\x03\x12\x15\n\rcount_time_us\x18\n \x01(\x03\"\x10\n\x0e\x44\x65tectorOutput\"b\n\x0e\x44\x65tectorStatus\x12$\n\x05state\x18\x01 \x01(\x0e\x32\x15.JFJochProtoBuf.State\x12\x12\n\nfw_version\x18\x02 \x01(\x03\x12\x16\n\x0eserver_version\x18\x03 \x01(\t\"Q\n\x0e\x46PGAFIFOStatus\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0e\x32\".JFJochProtoBuf.FPGAFIFOStatusEnum\"\xff\x06\n\nFPGAStatus\x12\x15\n\rpackets_ether\x18\x02 \x01(\x04\x12\x13\n\x0bpackets_udp\x18\x03 \x01(\x04\x12\x16\n\x0epackets_jfjoch\x18\x04 \x01(\x04\x12\x14\n\x0cpackets_icmp\x18\x05 \x01(\x04\x12\x11\n\tfpga_idle\x18\x06 \x01(\x08\x12\x17\n\x0fhbm_temp_0_degC\x18\x07 \x01(\x04\x12\x17\n\x0fhbm_temp_1_degC\x18\x08 \x01(\x04\x12\x12\n\nstalls_hbm\x18\t \x01(\x04\x12\x13\n\x0bstalls_host\x18\n \x01(\x04\x12\x1b\n\x13\x65thernet_rx_aligned\x18\x0b \x01(\x08\x12\x1c\n\x14\x66ull_status_register\x18\r \x01(\r\x12\x33\n\x0b\x66ifo_status\x18\x0e \x03(\x0b\x32\x1e.JFJochProtoBuf.FPGAFIFOStatus\x12\x13\n\x0bmax_modules\x18\x0f \x01(\x04\x12\x10\n\x08git_sha1\x18\x10 \x01(\r\x12\x17\n\x0fmailbox_err_reg\x18\x11 \x01(\r\x12\x1a\n\x12mailbox_status_reg\x18\x12 \x01(\r\x12\x17\n\x0fhost_writer_err\x18\x15 \x03(\t\x12\x14\n\x0cslowest_head\x18\x18 \x01(\x04\x12\x16\n\x0e\x66pga_temp_degC\x18\x1a \x01(\x02\x12\x1a\n\x12\x63urrent_edge_12V_A\x18\x1b \x01(\x02\x12\x1a\n\x12voltage_edge_12V_V\x18\x1c \x01(\x02\x12\x1b\n\x13\x63urrent_edge_3p3V_A\x18\x1d \x01(\x02\x12\x1b\n\x13voltage_edge_3p3V_V\x18\x1e \x01(\x02\x12\x1c\n\x14pcie_h2c_descriptors\x18\x1f \x01(\x04\x12\x1c\n\x14pcie_c2h_descriptors\x18 \x01(\x04\x12\x16\n\x0epcie_h2c_beats\x18! \x01(\x04\x12\x16\n\x0epcie_c2h_beats\x18\" \x01(\x04\x12\x17\n\x0fpcie_h2c_status\x18# \x01(\x04\x12\x17\n\x0fpcie_c2h_status\x18$ \x01(\x04\x12\x13\n\x0bpackets_sls\x18% \x01(\x04\x12\x11\n\terror_eth\x18& \x01(\r\x12\x18\n\x10\x65rror_packet_len\x18\' \x01(\r\x12\x18\n\x10host_writer_idle\x18) \x01(\x08\x12\x12\n\ncancel_bit\x18* \x01(\x08\x12\x16\n\x0ehbm_size_bytes\x18+ \x01(\r\"\xf8\x02\n\x16\x44\x61taProcessingSettings\x12!\n\x19signal_to_noise_threshold\x18\x01 \x01(\x02\x12\x1e\n\x16photon_count_threshold\x18\x02 \x01(\x03\x12\x18\n\x10min_pix_per_spot\x18\x03 \x01(\x03\x12\x18\n\x10max_pix_per_spot\x18\x04 \x01(\x03\x12\x16\n\x0elocal_bkg_size\x18\x05 \x01(\x03\x12\"\n\x15high_resolution_limit\x18\x06 \x01(\x02H\x00\x88\x01\x01\x12!\n\x14low_resolution_limit\x18\x07 \x01(\x02H\x01\x88\x01\x01\x12\x1a\n\x12\x62kg_estimate_low_q\x18\x08 \x01(\x02\x12\x1b\n\x13\x62kg_estimate_high_q\x18\t \x01(\x02\x12\x1c\n\x14preview_indexed_only\x18\n \x01(\x08\x42\x18\n\x16_high_resolution_limitB\x17\n\x15_low_resolution_limit\"9\n\x10PreviewFrameSpot\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0f\n\x07indexed\x18\x03 \x01(\x08\"\xbe\x02\n\x0cPreviewFrame\x12\x14\n\x0cimage_number\x18\x01 \x01(\x03\x12\x14\n\x0ctotal_images\x18\x02 \x01(\x03\x12\x14\n\x0cwavelength_A\x18\x03 \x01(\x02\x12\x12\n\nbeam_x_pxl\x18\x04 \x01(\x02\x12\x12\n\nbeam_y_pxl\x18\x05 \x01(\x02\x12\x1c\n\x14\x64\x65tector_distance_mm\x18\x06 \x01(\x02\x12\x18\n\x10saturation_value\x18\x07 \x01(\x03\x12\x13\n\x0b\x66ile_prefix\x18\x08 \x01(\t\x12\r\n\x05width\x18\t \x01(\x03\x12\x0e\n\x06height\x18\n \x01(\x03\x12\x13\n\x0bpixel_depth\x18\x0b \x01(\x03\x12\x0c\n\x04\x64\x61ta\x18\r \x01(\x0c\x12/\n\x05spots\x18\x0e \x03(\x0b\x32 .JFJochProtoBuf.PreviewFrameSpotJ\x04\x08\x0c\x10\r\"\xed\x01\n\x10ModuleStatistics\x12\x15\n\rmodule_number\x18\x01 \x01(\x03\x12\x1b\n\x13storage_cell_number\x18\x02 \x01(\x03\x12\x18\n\x10pedestal_g0_mean\x18\x03 \x01(\x02\x12\x18\n\x10pedestal_g1_mean\x18\x04 \x01(\x02\x12\x18\n\x10pedestal_g2_mean\x18\x05 \x01(\x02\x12\x14\n\x0cgain_g0_mean\x18\x06 \x01(\x02\x12\x14\n\x0cgain_g1_mean\x18\x07 \x01(\x02\x12\x14\n\x0cgain_g2_mean\x18\x08 \x01(\x02\x12\x15\n\rmasked_pixels\x18\t \x01(\x04\"I\n\x05Image\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05width\x18\x02 \x01(\x03\x12\x0e\n\x06height\x18\x03 \x01(\x03\x12\x13\n\x0bpixel_depth\x18\x04 \x01(\x03\".\n\nMaskToLoad\x12\x0c\n\x04mask\x18\x01 \x03(\r\x12\x12\n\nbit_to_set\x18\x02 \x01(\x05\"\xe5\x04\n\x15MeasurementStatistics\x12\x13\n\x0b\x66ile_prefix\x18\x01 \x01(\t\x12\x18\n\x10images_collected\x18\x02 \x01(\x03\x12\x1d\n\x15max_image_number_sent\x18\x03 \x01(\x03\x12\x1d\n\x15\x63ollection_efficiency\x18\x04 \x01(\x02\x12\x19\n\x11\x63ompression_ratio\x18\x05 \x01(\x02\x12\x11\n\tcancelled\x18\x06 \x01(\x08\x12\x19\n\x11max_receive_delay\x18\x07 \x01(\x03\x12#\n\x16writer_performance_MBs\x18\x08 \x01(\x02H\x00\x88\x01\x01\x12\x1b\n\x0eimages_written\x18\t \x01(\x03H\x01\x88\x01\x01\x12\x1a\n\rindexing_rate\x18\n \x01(\x02H\x02\x88\x01\x01\x12$\n\x17indexing_performance_ms\x18\x0b \x01(\x02H\x03\x88\x01\x01\x12\x16\n\x0e\x64\x65tector_width\x18\x0c \x01(\x03\x12\x17\n\x0f\x64\x65tector_height\x18\r \x01(\x03\x12\x1c\n\x14\x64\x65tector_pixel_depth\x18\x0e \x01(\x03\x12;\n\x0f\x66ile_statistics\x18\x0f \x03(\x0b\x32\".JFJochProtoBuf.DataFileStatistics\x12\x19\n\x0c\x62kg_estimate\x18\x10 \x01(\x02H\x04\x88\x01\x01\x42\x19\n\x17_writer_performance_MBsB\x11\n\x0f_images_writtenB\x10\n\x0e_indexing_rateB\x1a\n\x18_indexing_performance_msB\x0f\n\r_bkg_estimate\"\xd7\x01\n\x0c\x42rokerStatus\x12+\n\x0c\x62roker_state\x18\x01 \x01(\x0e\x32\x15.JFJochProtoBuf.State\x12\x15\n\x08progress\x18\x02 \x01(\x02H\x00\x88\x01\x01\x12\x1a\n\rindexing_rate\x18\x03 \x01(\x02H\x01\x88\x01\x01\x12(\n\x1breceiver_send_buffers_avail\x18\x04 \x01(\x02H\x02\x88\x01\x01\x42\x0b\n\t_progressB\x10\n\x0e_indexing_rateB\x1e\n\x1c_receiver_send_buffers_avail\"\xa4\x01\n\x10\x42rokerFullStatus\x12\x30\n\x08receiver\x18\x01 \x01(\x0b\x32\x1e.JFJochProtoBuf.ReceiverOutput\x12\x30\n\x08\x64\x65tector\x18\x02 \x01(\x0b\x32\x1e.JFJochProtoBuf.DetectorOutput\x12,\n\x06writer\x18\x03 \x03(\x0b\x32\x1c.JFJochProtoBuf.WriterOutput\"H\n\x13\x44\x65tectorListElement\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x10\n\x08nmodules\x18\x02 \x01(\x03\x12\n\n\x02id\x18\x03 \x01(\x03\"v\n\x0c\x44\x65tectorList\x12\x35\n\x08\x64\x65tector\x18\x01 \x03(\x0b\x32#.JFJochProtoBuf.DetectorListElement\x12\x12\n\ncurrent_id\x18\x02 \x01(\x03\x12\x1b\n\x13\x63urrent_description\x18\x03 \x01(\t\"\x1f\n\x11\x44\x65tectorSelection\x12\n\n\x02id\x18\x01 \x01(\x03*T\n\x0b\x43ompression\x12\r\n\tBSHUF_LZ4\x10\x00\x12\x0e\n\nBSHUF_ZSTD\x10\x01\x12\x12\n\x0e\x42SHUF_ZSTD_RLE\x10\x02\x12\x12\n\x0eNO_COMPRESSION\x10\x03*\'\n\x0c\x44\x65tectorType\x12\x0c\n\x08JUNGFRAU\x10\x00\x12\t\n\x05\x45IGER\x10\x01*Z\n\x0c\x44\x65tectorMode\x12\x0e\n\nCONVERSION\x10\x00\x12\x07\n\x03RAW\x10\x01\x12\x0f\n\x0bPEDESTAL_G0\x10\x02\x12\x0f\n\x0bPEDESTAL_G1\x10\x03\x12\x0f\n\x0bPEDESTAL_G2\x10\x04*6\n\x12\x46PGAFIFOStatusEnum\x12\t\n\x05\x45MPTY\x10\x00\x12\x08\n\x04\x46ULL\x10\x01\x12\x0b\n\x07PARTIAL\x10\x02*^\n\x05State\x12\x13\n\x0fNOT_INITIALIZED\x10\x00\x12\x08\n\x04IDLE\x10\x01\x12\x08\n\x04\x42USY\x10\x02\x12\x0c\n\x08PEDESTAL\x10\x03\x12\x13\n\x0f\x44\x41TA_COLLECTION\x10\x04\x12\t\n\x05\x45RROR\x10\x05*I\n\x0f\x46PGAPixelOutput\x12\x08\n\x04\x41UTO\x10\x00\x12\t\n\x05INT16\x10\x01\x12\n\n\x06UINT16\x10\x02\x12\t\n\x05INT32\x10\x03\x12\n\n\x06UINT32\x10\x04*{\n\x08PlotType\x12\x10\n\x0c\x42KG_ESTIMATE\x10\x00\x12\x0b\n\x07RAD_INT\x10\x01\x12\x0e\n\nSPOT_COUNT\x10\x02\x12\x11\n\rINDEXING_RATE\x10\x03\x12\x1a\n\x16INDEXING_RATE_PER_FILE\x10\x04\x12\x11\n\rADU_HISTOGRAM\x10\x05\x32\xff\x05\n\x13gRPC_JFJochReceiver\x12?\n\x05Start\x12\x1d.JFJochProtoBuf.ReceiverInput\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x37\n\x05\x41\x62ort\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x38\n\x06\x43\x61ncel\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12?\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x1e.JFJochProtoBuf.ReceiverOutput\"\x00\x12\x44\n\tGetStatus\x12\x15.JFJochProtoBuf.Empty\x1a\x1e.JFJochProtoBuf.ReceiverStatus\"\x00\x12\\\n\x19SetDataProcessingSettings\x12&.JFJochProtoBuf.DataProcessingSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12M\n\x16GetDataProcessingPlots\x12\x1b.JFJochProtoBuf.PlotRequest\x1a\x14.JFJochProtoBuf.Plot\"\x00\x12\x62\n\x1cGetRadialIntegrationProfiles\x12\x15.JFJochProtoBuf.Empty\x1a).JFJochProtoBuf.RadialIntegrationProfiles\"\x00\x12H\n\x0fGetPreviewFrame\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.PreviewFrame\"\x00\x12R\n\x10GetNetworkConfig\x12\x15.JFJochProtoBuf.Empty\x1a%.JFJochProtoBuf.ReceiverNetworkConfig\"\x00\x32\xca\x01\n\x11gRPC_JFJochWriter\x12=\n\x05Start\x12\x1b.JFJochProtoBuf.WriterInput\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x37\n\x05\x41\x62ort\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12=\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.WriterOutput\"\x00\x32\x82\x03\n\x13gRPC_JFJochDetector\x12?\n\x05Start\x12\x1d.JFJochProtoBuf.DetectorInput\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x36\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x41\n\x06Status\x12\x15.JFJochProtoBuf.Empty\x1a\x1e.JFJochProtoBuf.DetectorStatus\"\x00\x12=\n\x02On\x12\x1e.JFJochProtoBuf.DetectorConfig\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x35\n\x03Off\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x39\n\x07Trigger\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x32\x99\r\n\x11gRPC_JFJochBroker\x12\x41\n\x05Start\x12\x1f.JFJochProtoBuf.DatasetSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x36\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12:\n\x08Pedestal\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12<\n\nInitialize\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x38\n\x06\x43\x61ncel\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12<\n\nDeactivate\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x39\n\x07Trigger\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x42\n\tGetStatus\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.BrokerStatus\"\x00\x12\\\n\x18GetCalibrationStatistics\x12\x15.JFJochProtoBuf.Empty\x1a\'.JFJochProtoBuf.JFCalibrationStatistics\"\x00\x12P\n\x13GetDetectorSettings\x12\x15.JFJochProtoBuf.Empty\x1a .JFJochProtoBuf.DetectorSettings\"\x00\x12P\n\x13PutDetectorSettings\x12 .JFJochProtoBuf.DetectorSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12Z\n\x18GetMeasurementStatistics\x12\x15.JFJochProtoBuf.Empty\x1a%.JFJochProtoBuf.MeasurementStatistics\"\x00\x12\\\n\x19GetDataProcessingSettings\x12\x15.JFJochProtoBuf.Empty\x1a&.JFJochProtoBuf.DataProcessingSettings\"\x00\x12\\\n\x19PutDataProcessingSettings\x12&.JFJochProtoBuf.DataProcessingSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12?\n\x08GetPlots\x12\x1b.JFJochProtoBuf.PlotRequest\x1a\x14.JFJochProtoBuf.Plot\"\x00\x12\x62\n\x1cGetRadialIntegrationProfiles\x12\x15.JFJochProtoBuf.Empty\x1a).JFJochProtoBuf.RadialIntegrationProfiles\"\x00\x12\x43\n\nGetPreview\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.PreviewFrame\"\x00\x12?\n\rGetPedestalG0\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12?\n\rGetPedestalG1\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12?\n\rGetPedestalG2\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12\x39\n\x07GetMask\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12H\n\x0fGetDetectorList\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.DetectorList\"\x00\x12L\n\x0eSelectDetector\x12!.JFJochProtoBuf.DetectorSelection\x1a\x15.JFJochProtoBuf.Empty\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cjfjoch.proto\x12\x0eJFJochProtoBuf\"\x07\n\x05\x45mpty\"W\n\x08UnitCell\x12\t\n\x01\x61\x18\x01 \x01(\x02\x12\t\n\x01\x62\x18\x02 \x01(\x02\x12\t\n\x01\x63\x18\x03 \x01(\x02\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x0c\n\x04\x62\x65ta\x18\x05 \x01(\x02\x12\r\n\x05gamma\x18\x06 \x01(\x02\")\n\x06Vector\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"|\n\x10RotationSettings\x12\x17\n\x0fstart_angle_deg\x18\x01 \x01(\x02\x12 \n\x18\x61ngle_incr_per_image_deg\x18\x02 \x01(\x02\x12-\n\rrotation_axis\x18\x03 \x01(\x0b\x32\x16.JFJochProtoBuf.Vector\"\x1c\n\x04Plot\x12\t\n\x01x\x18\x01 \x03(\x02\x12\t\n\x01y\x18\x02 \x03(\x02\"E\n\x0cROIRectangle\x12\n\n\x02x0\x18\x01 \x01(\x05\x12\n\n\x02y0\x18\x02 \x01(\x05\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05\"\xb2\x05\n\x0f\x44\x61tasetSettings\x12\x1a\n\x12images_per_trigger\x18\x01 \x01(\x03\x12\x10\n\x08ntrigger\x18\x02 \x01(\x03\x12\x13\n\tsummation\x18\x03 \x01(\x03H\x00\x12\x17\n\rimage_time_us\x18\x04 \x01(\x03H\x00\x12\x12\n\nbeam_x_pxl\x18\x05 \x01(\x02\x12\x12\n\nbeam_y_pxl\x18\x06 \x01(\x02\x12\x1c\n\x14\x64\x65tector_distance_mm\x18\x07 \x01(\x02\x12\x19\n\x11photon_energy_keV\x18\x08 \x01(\x02\x12\x13\n\x0b\x66ile_prefix\x18\t \x01(\t\x12\x17\n\x0f\x64\x61ta_file_count\x18\n \x01(\x03\x12\x30\n\x0b\x63ompression\x18\x0b \x01(\x0e\x32\x1b.JFJochProtoBuf.Compression\x12\x13\n\x0bsample_name\x18\x0c \x01(\t\x12\x30\n\tunit_cell\x18\r \x01(\x0b\x32\x18.JFJochProtoBuf.UnitCellH\x01\x88\x01\x01\x12\x1a\n\x12space_group_number\x18\x0e \x01(\x03\x12 \n\x18rad_int_solid_angle_corr\x18\x12 \x01(\x08\x12!\n\x19rad_int_polarization_corr\x18\x13 \x01(\x08\x12#\n\x1brad_int_polarization_factor\x18\x14 \x01(\x02\x12\x18\n\x10save_calibration\x18\x15 \x01(\x08\x12/\n\tuser_mask\x18\x16 \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangle\x12:\n\x11\x66pga_pixel_output\x18\x17 \x01(\x0e\x32\x1f.JFJochProtoBuf.FPGAPixelOutput\x12\x16\n\x0e\x66pga_summation\x18\x18 \x01(\x03\x42\x08\n\x06timingB\x0c\n\n_unit_cell\"\x9a\x03\n\x10\x44\x65tectorSettings\x12\x15\n\rframe_time_us\x18\x01 \x01(\x03\x12\x1a\n\rcount_time_us\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x1a\n\x12storage_cell_count\x18\x03 \x01(\x03\x12%\n\x1duse_internal_packet_generator\x18\x04 \x01(\x08\x12\x18\n\x10\x63ollect_raw_data\x18\x05 \x01(\x08\x12\x1f\n\x12pedestal_g0_frames\x18\x06 \x01(\x03H\x01\x88\x01\x01\x12\x1f\n\x12pedestal_g1_frames\x18\x07 \x01(\x03H\x02\x88\x01\x01\x12\x1f\n\x12pedestal_g2_frames\x18\x08 \x01(\x03H\x03\x88\x01\x01\x12\"\n\x15storage_cell_delay_ns\x18\n \x01(\x03H\x04\x88\x01\x01\x42\x10\n\x0e_count_time_usB\x15\n\x13_pedestal_g0_framesB\x15\n\x13_pedestal_g1_framesB\x15\n\x13_pedestal_g2_framesB\x18\n\x16_storage_cell_delay_ns\"b\n\x16\x44\x65tectorModuleGeometry\x12\x0e\n\x06pixel0\x18\x01 \x01(\x03\x12\x1b\n\x13\x66\x61st_direction_step\x18\x02 \x01(\x03\x12\x1b\n\x13slow_direction_step\x18\x03 \x01(\x03\"z\n\x10\x44\x65tectorGeometry\x12\x11\n\twidth_pxl\x18\x01 \x01(\x03\x12\x12\n\nheight_pxl\x18\x02 \x01(\x03\x12?\n\x0fmodule_geometry\x18\x03 \x03(\x0b\x32&.JFJochProtoBuf.DetectorModuleGeometry\"\xde\x01\n\x08\x44\x65tector\x12\x10\n\x08nmodules\x18\x01 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rpixel_size_mm\x18\x03 \x01(\x02\x12\x17\n\x0fmodule_hostname\x18\x04 \x03(\t\x12\x32\n\x08geometry\x18\x05 \x01(\x0b\x32 .JFJochProtoBuf.DetectorGeometry\x12*\n\x04type\x18\x06 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorType\x12\x1b\n\x13udp_interface_count\x18\x07 \x01(\x03\"\xa7\x06\n\x10InternalSettings\x12\"\n\x1a\x66rame_time_pedestalG1G2_us\x18\x01 \x01(\x03\x12\x15\n\rframe_time_us\x18\x03 \x01(\x03\x12\x15\n\rcount_time_us\x18\x04 \x01(\x03\x12*\n\x08\x64\x65tector\x18\x05 \x01(\x0b\x32\x18.JFJochProtoBuf.Detector\x12\x14\n\x0cndatastreams\x18\x06 \x01(\x03\x12&\n\x1einternal_fpga_packet_generator\x18\t \x01(\x08\x12\x15\n\rstorage_cells\x18\n \x01(\x03\x12\x1a\n\x12storage_cell_start\x18\x0b \x01(\x03\x12\x1d\n\x15storage_cell_delay_ns\x18\' \x01(\x03\x12\x1a\n\x12pedestal_g0_frames\x18\x0c \x01(\x03\x12\x1a\n\x12pedestal_g1_frames\x18\r \x01(\x03\x12\x1a\n\x12pedestal_g2_frames\x18\x0e \x01(\x03\x12\x19\n\x11preview_period_us\x18\x0f \x01(\x03\x12*\n\x04mode\x18\x13 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorMode\x12\x19\n\x11mask_module_edges\x18\x14 \x01(\x08\x12\x17\n\x0fmask_chip_edges\x18\x15 \x01(\x08\x12\x16\n\x0eipv4_base_addr\x18\x16 \x01(\x03\x12\r\n\x05low_q\x18\x1a \x01(\x02\x12\x0e\n\x06high_q\x18\x1b \x01(\x02\x12\x11\n\tq_spacing\x18\x1c \x01(\x02\x12\x10\n\x08git_sha1\x18\x1d \x01(\t\x12\x10\n\x08git_date\x18\x1e \x01(\t\x12\x13\n\x0bsource_name\x18 \x01(\t\x12\x19\n\x11source_name_short\x18! \x01(\t\x12\x17\n\x0finstrument_name\x18\" \x01(\t\x12\x1d\n\x15instrument_name_short\x18# \x01(\t\x12\x33\n\rroi_rectangle\x18$ \x03(\x0b\x32\x1c.JFJochProtoBuf.ROIRectangle\x12\x11\n\troi_apply\x18% \x01(\x08\x12\x18\n\x10\x64\x65\x62ug_pixel_mask\x18& \x01(\x08\"|\n\x14JungfraujochSettings\x12\x30\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x1f.JFJochProtoBuf.DatasetSettings\x12\x32\n\x08internal\x18\x02 \x01(\x0b\x32 .JFJochProtoBuf.InternalSettings\"\x1e\n\nJFPedestal\x12\x10\n\x08pedestal\x18\x01 \x01(\x0c\"-\n\x11JFGainCalibration\x12\x18\n\x10gain_calibration\x18\x01 \x01(\x0c\"\xb2\x01\n\rJFCalibration\x12\x10\n\x08nmodules\x18\x01 \x01(\x04\x12\x16\n\x0enstorage_cells\x18\x02 \x01(\x04\x12,\n\x08pedestal\x18\x03 \x03(\x0b\x32\x1a.JFJochProtoBuf.JFPedestal\x12\x0c\n\x04mask\x18\x04 \x01(\x0c\x12;\n\x10gain_calibration\x18\x05 \x03(\x0b\x32!.JFJochProtoBuf.JFGainCalibration\"V\n\x17JFCalibrationStatistics\x12;\n\x11module_statistics\x18\x01 \x03(\x0b\x32 .JFJochProtoBuf.ModuleStatistics\"\x91\x02\n\x1b\x41\x63quisitionDeviceStatistics\x12\x14\n\x0cgood_packets\x18\x01 \x01(\x04\x12\x18\n\x10packets_expected\x18\x0c \x01(\x04\x12\x12\n\nefficiency\x18\x04 \x01(\x02\x12\x16\n\x0e\x62ytes_received\x18\x05 \x01(\x04\x12\x17\n\x0fstart_timestamp\x18\x06 \x01(\x04\x12\x15\n\rend_timestamp\x18\x07 \x01(\x04\x12/\n\x0b\x66pga_status\x18\x08 \x01(\x0b\x32\x1a.JFJochProtoBuf.FPGAStatus\x12\x10\n\x08nmodules\x18\t \x01(\x04\x12#\n\x1bpackets_received_per_module\x18\x10 \x03(\x04\"\x88\x01\n\rReceiverInput\x12\x43\n\x15jungfraujoch_settings\x18\x01 \x01(\x0b\x32$.JFJochProtoBuf.JungfraujochSettings\x12\x32\n\x0b\x63\x61libration\x18\x02 \x01(\x0b\x32\x1d.JFJochProtoBuf.JFCalibration\"\xd6\x03\n\x0eReceiverOutput\x12\x46\n\x11\x64\x65vice_statistics\x18\x01 \x03(\x0b\x32+.JFJochProtoBuf.AcquisitionDeviceStatistics\x12\x19\n\x11max_receive_delay\x18\x02 \x01(\x04\x12\x17\n\x0f\x63ompressed_size\x18\x03 \x01(\x04\x12\x18\n\x10\x63ompressed_ratio\x18\x04 \x01(\x02\x12\x13\n\x0bimages_sent\x18\x05 \x01(\x04\x12\x15\n\rstart_time_ms\x18\x06 \x01(\x04\x12\x13\n\x0b\x65nd_time_ms\x18\x07 \x01(\x04\x12\x12\n\nefficiency\x18\x08 \x01(\x02\x12\x1d\n\x15max_image_number_sent\x18\t \x01(\x04\x12\x11\n\tcancelled\x18\n \x01(\x08\x12\x18\n\x10master_file_name\x18\x0b \x01(\t\x12\x33\n\x0fpedestal_result\x18\x0c \x03(\x0b\x32\x1a.JFJochProtoBuf.JFPedestal\x12\x1a\n\rindexing_rate\x18\r \x01(\x02H\x00\x88\x01\x01\x12\x19\n\x0c\x62kg_estimate\x18\x0e \x01(\x02H\x01\x88\x01\x01\x42\x10\n\x0e_indexing_rateB\x0f\n\r_bkg_estimate\"T\n\x1bReceiverNetworkConfigDevice\x12\x10\n\x08mac_addr\x18\x01 \x01(\t\x12\x11\n\tipv4_addr\x18\x02 \x01(\t\x12\x10\n\x08udp_port\x18\x03 \x01(\x04\"T\n\x15ReceiverNetworkConfig\x12;\n\x06\x64\x65vice\x18\x01 \x03(\x0b\x32+.JFJochProtoBuf.ReceiverNetworkConfigDevice\"\xcb\x01\n\x0eReceiverStatus\x12\x15\n\x08progress\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12/\n\x0b\x66pga_status\x18\x02 \x03(\x0b\x32\x1a.JFJochProtoBuf.FPGAStatus\x12\x1a\n\rindexing_rate\x18\x03 \x01(\x02H\x01\x88\x01\x01\x12\x1f\n\x12send_buffers_avail\x18\x04 \x01(\x02H\x02\x88\x01\x01\x42\x0b\n\t_progressB\x10\n\x0e_indexing_rateB\x15\n\x13_send_buffers_avail\"F\n\x0bPlotRequest\x12&\n\x04type\x18\x01 \x01(\x0e\x32\x18.JFJochProtoBuf.PlotType\x12\x0f\n\x07\x62inning\x18\x02 \x01(\x04\"M\n\x18RadialIntegrationProfile\x12\r\n\x05title\x18\x01 \x01(\t\x12\"\n\x04plot\x18\x02 \x01(\x0b\x32\x14.JFJochProtoBuf.Plot\"W\n\x19RadialIntegrationProfiles\x12:\n\x08profiles\x18\x01 \x03(\x0b\x32(.JFJochProtoBuf.RadialIntegrationProfile\">\n\x0bWriterInput\x12\x1c\n\x14zmq_receiver_address\x18\x01 \x01(\t\x12\x11\n\tseries_id\x18\x02 \x01(\x03\"3\n\x12\x44\x61taFileStatistics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07nimages\x18\x02 \x01(\x03\"\x8d\x01\n\x0cWriterOutput\x12\x0f\n\x07nimages\x18\x01 \x01(\x03\x12\x17\n\x0fperformance_MBs\x18\x02 \x01(\x02\x12\x16\n\x0eperformance_Hz\x18\x03 \x01(\x02\x12;\n\x0f\x66ile_statistics\x18\x04 \x03(\x0b\x32\".JFJochProtoBuf.DataFileStatistics\"\x82\x02\n\x14\x44\x65tectorModuleConfig\x12\x17\n\x0fudp_dest_port_1\x18\x01 \x01(\x04\x12\x17\n\x0fudp_dest_port_2\x18\x02 \x01(\x04\x12\x17\n\x0fipv4_src_addr_1\x18\x03 \x01(\t\x12\x17\n\x0fipv4_src_addr_2\x18\x04 \x01(\t\x12\x18\n\x10ipv4_dest_addr_1\x18\x05 \x01(\t\x12\x18\n\x10ipv4_dest_addr_2\x18\x06 \x01(\t\x12\x17\n\x0fmac_addr_dest_1\x18\x07 \x01(\t\x12\x17\n\x0fmac_addr_dest_2\x18\x08 \x01(\t\x12 \n\x18module_id_in_data_stream\x18\t \x01(\x04\"}\n\x0e\x44\x65tectorConfig\x12\x35\n\x07modules\x18\x01 \x03(\x0b\x32$.JFJochProtoBuf.DetectorModuleConfig\x12\x17\n\x0fmodule_hostname\x18\x02 \x03(\t\x12\x1b\n\x13udp_interface_count\x18\x03 \x01(\x03\"\xfc\x01\n\rDetectorInput\x12\x13\n\x0bmodules_num\x18\x01 \x01(\x03\x12*\n\x04mode\x18\x02 \x01(\x0e\x32\x1c.JFJochProtoBuf.DetectorMode\x12\x12\n\nnum_frames\x18\x03 \x01(\x03\x12\x14\n\x0cnum_triggers\x18\x04 \x01(\x03\x12\x1b\n\x13storage_cell_number\x18\x05 \x01(\x03\x12\x1a\n\x12storage_cell_start\x18\x06 \x01(\x03\x12\x1d\n\x15storage_cell_delay_ns\x18\x07 \x01(\x03\x12\x11\n\tperiod_us\x18\t \x01(\x03\x12\x15\n\rcount_time_us\x18\n \x01(\x03\"\x10\n\x0e\x44\x65tectorOutput\"b\n\x0e\x44\x65tectorStatus\x12$\n\x05state\x18\x01 \x01(\x0e\x32\x15.JFJochProtoBuf.State\x12\x12\n\nfw_version\x18\x02 \x01(\x03\x12\x16\n\x0eserver_version\x18\x03 \x01(\t\"Q\n\x0e\x46PGAFIFOStatus\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0e\x32\".JFJochProtoBuf.FPGAFIFOStatusEnum\"\xff\x06\n\nFPGAStatus\x12\x15\n\rpackets_ether\x18\x02 \x01(\x04\x12\x13\n\x0bpackets_udp\x18\x03 \x01(\x04\x12\x16\n\x0epackets_jfjoch\x18\x04 \x01(\x04\x12\x14\n\x0cpackets_icmp\x18\x05 \x01(\x04\x12\x11\n\tfpga_idle\x18\x06 \x01(\x08\x12\x17\n\x0fhbm_temp_0_degC\x18\x07 \x01(\x04\x12\x17\n\x0fhbm_temp_1_degC\x18\x08 \x01(\x04\x12\x12\n\nstalls_hbm\x18\t \x01(\x04\x12\x13\n\x0bstalls_host\x18\n \x01(\x04\x12\x1b\n\x13\x65thernet_rx_aligned\x18\x0b \x01(\x08\x12\x1c\n\x14\x66ull_status_register\x18\r \x01(\r\x12\x33\n\x0b\x66ifo_status\x18\x0e \x03(\x0b\x32\x1e.JFJochProtoBuf.FPGAFIFOStatus\x12\x13\n\x0bmax_modules\x18\x0f \x01(\x04\x12\x10\n\x08git_sha1\x18\x10 \x01(\r\x12\x17\n\x0fmailbox_err_reg\x18\x11 \x01(\r\x12\x1a\n\x12mailbox_status_reg\x18\x12 \x01(\r\x12\x17\n\x0fhost_writer_err\x18\x15 \x03(\t\x12\x14\n\x0cslowest_head\x18\x18 \x01(\x04\x12\x16\n\x0e\x66pga_temp_degC\x18\x1a \x01(\x02\x12\x1a\n\x12\x63urrent_edge_12V_A\x18\x1b \x01(\x02\x12\x1a\n\x12voltage_edge_12V_V\x18\x1c \x01(\x02\x12\x1b\n\x13\x63urrent_edge_3p3V_A\x18\x1d \x01(\x02\x12\x1b\n\x13voltage_edge_3p3V_V\x18\x1e \x01(\x02\x12\x1c\n\x14pcie_h2c_descriptors\x18\x1f \x01(\x04\x12\x1c\n\x14pcie_c2h_descriptors\x18 \x01(\x04\x12\x16\n\x0epcie_h2c_beats\x18! \x01(\x04\x12\x16\n\x0epcie_c2h_beats\x18\" \x01(\x04\x12\x17\n\x0fpcie_h2c_status\x18# \x01(\x04\x12\x17\n\x0fpcie_c2h_status\x18$ \x01(\x04\x12\x13\n\x0bpackets_sls\x18% \x01(\x04\x12\x11\n\terror_eth\x18& \x01(\r\x12\x18\n\x10\x65rror_packet_len\x18\' \x01(\r\x12\x18\n\x10host_writer_idle\x18) \x01(\x08\x12\x12\n\ncancel_bit\x18* \x01(\x08\x12\x16\n\x0ehbm_size_bytes\x18+ \x01(\r\"\xf8\x02\n\x16\x44\x61taProcessingSettings\x12!\n\x19signal_to_noise_threshold\x18\x01 \x01(\x02\x12\x1e\n\x16photon_count_threshold\x18\x02 \x01(\x03\x12\x18\n\x10min_pix_per_spot\x18\x03 \x01(\x03\x12\x18\n\x10max_pix_per_spot\x18\x04 \x01(\x03\x12\x16\n\x0elocal_bkg_size\x18\x05 \x01(\x03\x12\"\n\x15high_resolution_limit\x18\x06 \x01(\x02H\x00\x88\x01\x01\x12!\n\x14low_resolution_limit\x18\x07 \x01(\x02H\x01\x88\x01\x01\x12\x1a\n\x12\x62kg_estimate_low_q\x18\x08 \x01(\x02\x12\x1b\n\x13\x62kg_estimate_high_q\x18\t \x01(\x02\x12\x1c\n\x14preview_indexed_only\x18\n \x01(\x08\x42\x18\n\x16_high_resolution_limitB\x17\n\x15_low_resolution_limit\"9\n\x10PreviewFrameSpot\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0f\n\x07indexed\x18\x03 \x01(\x08\"\xbe\x02\n\x0cPreviewFrame\x12\x14\n\x0cimage_number\x18\x01 \x01(\x03\x12\x14\n\x0ctotal_images\x18\x02 \x01(\x03\x12\x14\n\x0cwavelength_A\x18\x03 \x01(\x02\x12\x12\n\nbeam_x_pxl\x18\x04 \x01(\x02\x12\x12\n\nbeam_y_pxl\x18\x05 \x01(\x02\x12\x1c\n\x14\x64\x65tector_distance_mm\x18\x06 \x01(\x02\x12\x18\n\x10saturation_value\x18\x07 \x01(\x03\x12\x13\n\x0b\x66ile_prefix\x18\x08 \x01(\t\x12\r\n\x05width\x18\t \x01(\x03\x12\x0e\n\x06height\x18\n \x01(\x03\x12\x13\n\x0bpixel_depth\x18\x0b \x01(\x03\x12\x0c\n\x04\x64\x61ta\x18\r \x01(\x0c\x12/\n\x05spots\x18\x0e \x03(\x0b\x32 .JFJochProtoBuf.PreviewFrameSpotJ\x04\x08\x0c\x10\r\"\xed\x01\n\x10ModuleStatistics\x12\x15\n\rmodule_number\x18\x01 \x01(\x03\x12\x1b\n\x13storage_cell_number\x18\x02 \x01(\x03\x12\x18\n\x10pedestal_g0_mean\x18\x03 \x01(\x02\x12\x18\n\x10pedestal_g1_mean\x18\x04 \x01(\x02\x12\x18\n\x10pedestal_g2_mean\x18\x05 \x01(\x02\x12\x14\n\x0cgain_g0_mean\x18\x06 \x01(\x02\x12\x14\n\x0cgain_g1_mean\x18\x07 \x01(\x02\x12\x14\n\x0cgain_g2_mean\x18\x08 \x01(\x02\x12\x15\n\rmasked_pixels\x18\t \x01(\x04\"I\n\x05Image\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05width\x18\x02 \x01(\x03\x12\x0e\n\x06height\x18\x03 \x01(\x03\x12\x13\n\x0bpixel_depth\x18\x04 \x01(\x03\".\n\nMaskToLoad\x12\x0c\n\x04mask\x18\x01 \x03(\r\x12\x12\n\nbit_to_set\x18\x02 \x01(\x05\"\xe5\x04\n\x15MeasurementStatistics\x12\x13\n\x0b\x66ile_prefix\x18\x01 \x01(\t\x12\x18\n\x10images_collected\x18\x02 \x01(\x03\x12\x1d\n\x15max_image_number_sent\x18\x03 \x01(\x03\x12\x1d\n\x15\x63ollection_efficiency\x18\x04 \x01(\x02\x12\x19\n\x11\x63ompression_ratio\x18\x05 \x01(\x02\x12\x11\n\tcancelled\x18\x06 \x01(\x08\x12\x19\n\x11max_receive_delay\x18\x07 \x01(\x03\x12#\n\x16writer_performance_MBs\x18\x08 \x01(\x02H\x00\x88\x01\x01\x12\x1b\n\x0eimages_written\x18\t \x01(\x03H\x01\x88\x01\x01\x12\x1a\n\rindexing_rate\x18\n \x01(\x02H\x02\x88\x01\x01\x12$\n\x17indexing_performance_ms\x18\x0b \x01(\x02H\x03\x88\x01\x01\x12\x16\n\x0e\x64\x65tector_width\x18\x0c \x01(\x03\x12\x17\n\x0f\x64\x65tector_height\x18\r \x01(\x03\x12\x1c\n\x14\x64\x65tector_pixel_depth\x18\x0e \x01(\x03\x12;\n\x0f\x66ile_statistics\x18\x0f \x03(\x0b\x32\".JFJochProtoBuf.DataFileStatistics\x12\x19\n\x0c\x62kg_estimate\x18\x10 \x01(\x02H\x04\x88\x01\x01\x42\x19\n\x17_writer_performance_MBsB\x11\n\x0f_images_writtenB\x10\n\x0e_indexing_rateB\x1a\n\x18_indexing_performance_msB\x0f\n\r_bkg_estimate\"\xd7\x01\n\x0c\x42rokerStatus\x12+\n\x0c\x62roker_state\x18\x01 \x01(\x0e\x32\x15.JFJochProtoBuf.State\x12\x15\n\x08progress\x18\x02 \x01(\x02H\x00\x88\x01\x01\x12\x1a\n\rindexing_rate\x18\x03 \x01(\x02H\x01\x88\x01\x01\x12(\n\x1breceiver_send_buffers_avail\x18\x04 \x01(\x02H\x02\x88\x01\x01\x42\x0b\n\t_progressB\x10\n\x0e_indexing_rateB\x1e\n\x1c_receiver_send_buffers_avail\"\xa4\x01\n\x10\x42rokerFullStatus\x12\x30\n\x08receiver\x18\x01 \x01(\x0b\x32\x1e.JFJochProtoBuf.ReceiverOutput\x12\x30\n\x08\x64\x65tector\x18\x02 \x01(\x0b\x32\x1e.JFJochProtoBuf.DetectorOutput\x12,\n\x06writer\x18\x03 \x03(\x0b\x32\x1c.JFJochProtoBuf.WriterOutput\"H\n\x13\x44\x65tectorListElement\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x10\n\x08nmodules\x18\x02 \x01(\x03\x12\n\n\x02id\x18\x03 \x01(\x03\"v\n\x0c\x44\x65tectorList\x12\x35\n\x08\x64\x65tector\x18\x01 \x03(\x0b\x32#.JFJochProtoBuf.DetectorListElement\x12\x12\n\ncurrent_id\x18\x02 \x01(\x03\x12\x1b\n\x13\x63urrent_description\x18\x03 \x01(\t\"\x1f\n\x11\x44\x65tectorSelection\x12\n\n\x02id\x18\x01 \x01(\x03*T\n\x0b\x43ompression\x12\r\n\tBSHUF_LZ4\x10\x00\x12\x0e\n\nBSHUF_ZSTD\x10\x01\x12\x12\n\x0e\x42SHUF_ZSTD_RLE\x10\x02\x12\x12\n\x0eNO_COMPRESSION\x10\x03*\'\n\x0c\x44\x65tectorType\x12\x0c\n\x08JUNGFRAU\x10\x00\x12\t\n\x05\x45IGER\x10\x01*Z\n\x0c\x44\x65tectorMode\x12\x0e\n\nCONVERSION\x10\x00\x12\x07\n\x03RAW\x10\x01\x12\x0f\n\x0bPEDESTAL_G0\x10\x02\x12\x0f\n\x0bPEDESTAL_G1\x10\x03\x12\x0f\n\x0bPEDESTAL_G2\x10\x04*6\n\x12\x46PGAFIFOStatusEnum\x12\t\n\x05\x45MPTY\x10\x00\x12\x08\n\x04\x46ULL\x10\x01\x12\x0b\n\x07PARTIAL\x10\x02*^\n\x05State\x12\x13\n\x0fNOT_INITIALIZED\x10\x00\x12\x08\n\x04IDLE\x10\x01\x12\x08\n\x04\x42USY\x10\x02\x12\x0c\n\x08PEDESTAL\x10\x03\x12\x13\n\x0f\x44\x41TA_COLLECTION\x10\x04\x12\t\n\x05\x45RROR\x10\x05*I\n\x0f\x46PGAPixelOutput\x12\x08\n\x04\x41UTO\x10\x00\x12\t\n\x05INT16\x10\x01\x12\n\n\x06UINT16\x10\x02\x12\t\n\x05INT32\x10\x03\x12\n\n\x06UINT32\x10\x04*{\n\x08PlotType\x12\x10\n\x0c\x42KG_ESTIMATE\x10\x00\x12\x0b\n\x07RAD_INT\x10\x01\x12\x0e\n\nSPOT_COUNT\x10\x02\x12\x11\n\rINDEXING_RATE\x10\x03\x12\x1a\n\x16INDEXING_RATE_PER_FILE\x10\x04\x12\x11\n\rADU_HISTOGRAM\x10\x05\x32\xff\x05\n\x13gRPC_JFJochReceiver\x12?\n\x05Start\x12\x1d.JFJochProtoBuf.ReceiverInput\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x37\n\x05\x41\x62ort\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x38\n\x06\x43\x61ncel\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12?\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x1e.JFJochProtoBuf.ReceiverOutput\"\x00\x12\x44\n\tGetStatus\x12\x15.JFJochProtoBuf.Empty\x1a\x1e.JFJochProtoBuf.ReceiverStatus\"\x00\x12\\\n\x19SetDataProcessingSettings\x12&.JFJochProtoBuf.DataProcessingSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12M\n\x16GetDataProcessingPlots\x12\x1b.JFJochProtoBuf.PlotRequest\x1a\x14.JFJochProtoBuf.Plot\"\x00\x12\x62\n\x1cGetRadialIntegrationProfiles\x12\x15.JFJochProtoBuf.Empty\x1a).JFJochProtoBuf.RadialIntegrationProfiles\"\x00\x12H\n\x0fGetPreviewFrame\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.PreviewFrame\"\x00\x12R\n\x10GetNetworkConfig\x12\x15.JFJochProtoBuf.Empty\x1a%.JFJochProtoBuf.ReceiverNetworkConfig\"\x00\x32\xca\x01\n\x11gRPC_JFJochWriter\x12=\n\x05Start\x12\x1b.JFJochProtoBuf.WriterInput\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x37\n\x05\x41\x62ort\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12=\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.WriterOutput\"\x00\x32\x82\x03\n\x13gRPC_JFJochDetector\x12?\n\x05Start\x12\x1d.JFJochProtoBuf.DetectorInput\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x36\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x41\n\x06Status\x12\x15.JFJochProtoBuf.Empty\x1a\x1e.JFJochProtoBuf.DetectorStatus\"\x00\x12=\n\x02On\x12\x1e.JFJochProtoBuf.DetectorConfig\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x35\n\x03Off\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x39\n\x07Trigger\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x32\x99\r\n\x11gRPC_JFJochBroker\x12\x41\n\x05Start\x12\x1f.JFJochProtoBuf.DatasetSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x36\n\x04Stop\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12:\n\x08Pedestal\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12<\n\nInitialize\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x38\n\x06\x43\x61ncel\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12<\n\nDeactivate\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x39\n\x07Trigger\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12\x42\n\tGetStatus\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.BrokerStatus\"\x00\x12\\\n\x18GetCalibrationStatistics\x12\x15.JFJochProtoBuf.Empty\x1a\'.JFJochProtoBuf.JFCalibrationStatistics\"\x00\x12P\n\x13GetDetectorSettings\x12\x15.JFJochProtoBuf.Empty\x1a .JFJochProtoBuf.DetectorSettings\"\x00\x12P\n\x13PutDetectorSettings\x12 .JFJochProtoBuf.DetectorSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12Z\n\x18GetMeasurementStatistics\x12\x15.JFJochProtoBuf.Empty\x1a%.JFJochProtoBuf.MeasurementStatistics\"\x00\x12\\\n\x19GetDataProcessingSettings\x12\x15.JFJochProtoBuf.Empty\x1a&.JFJochProtoBuf.DataProcessingSettings\"\x00\x12\\\n\x19PutDataProcessingSettings\x12&.JFJochProtoBuf.DataProcessingSettings\x1a\x15.JFJochProtoBuf.Empty\"\x00\x12?\n\x08GetPlots\x12\x1b.JFJochProtoBuf.PlotRequest\x1a\x14.JFJochProtoBuf.Plot\"\x00\x12\x62\n\x1cGetRadialIntegrationProfiles\x12\x15.JFJochProtoBuf.Empty\x1a).JFJochProtoBuf.RadialIntegrationProfiles\"\x00\x12\x43\n\nGetPreview\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.PreviewFrame\"\x00\x12?\n\rGetPedestalG0\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12?\n\rGetPedestalG1\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12?\n\rGetPedestalG2\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12\x39\n\x07GetMask\x12\x15.JFJochProtoBuf.Empty\x1a\x15.JFJochProtoBuf.Image\"\x00\x12H\n\x0fGetDetectorList\x12\x15.JFJochProtoBuf.Empty\x1a\x1c.JFJochProtoBuf.DetectorList\"\x00\x12L\n\x0eSelectDetector\x12!.JFJochProtoBuf.DetectorSelection\x1a\x15.JFJochProtoBuf.Empty\"\x00\x62\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'jfjoch_pb2', globals()) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _COMPRESSION._serialized_start=9118 - _COMPRESSION._serialized_end=9202 - _DETECTORTYPE._serialized_start=9204 - _DETECTORTYPE._serialized_end=9243 - _DETECTORMODE._serialized_start=9245 - _DETECTORMODE._serialized_end=9335 - _FPGAFIFOSTATUSENUM._serialized_start=9337 - _FPGAFIFOSTATUSENUM._serialized_end=9391 - _STATE._serialized_start=9393 - _STATE._serialized_end=9487 - _FPGAPIXELOUTPUT._serialized_start=9489 - _FPGAPIXELOUTPUT._serialized_end=9562 - _PLOTTYPE._serialized_start=9564 - _PLOTTYPE._serialized_end=9687 + _COMPRESSION._serialized_start=9098 + _COMPRESSION._serialized_end=9182 + _DETECTORTYPE._serialized_start=9184 + _DETECTORTYPE._serialized_end=9223 + _DETECTORMODE._serialized_start=9225 + _DETECTORMODE._serialized_end=9315 + _FPGAFIFOSTATUSENUM._serialized_start=9317 + _FPGAFIFOSTATUSENUM._serialized_end=9371 + _STATE._serialized_start=9373 + _STATE._serialized_end=9467 + _FPGAPIXELOUTPUT._serialized_start=9469 + _FPGAPIXELOUTPUT._serialized_end=9542 + _PLOTTYPE._serialized_start=9544 + _PLOTTYPE._serialized_end=9667 _EMPTY._serialized_start=32 _EMPTY._serialized_end=39 _UNITCELL._serialized_start=41 @@ -47,95 +47,95 @@ if _descriptor._USE_C_DESCRIPTORS == False: _ROIRECTANGLE._serialized_start=329 _ROIRECTANGLE._serialized_end=398 _DATASETSETTINGS._serialized_start=401 - _DATASETSETTINGS._serialized_end=1111 - _DETECTORSETTINGS._serialized_start=1114 - _DETECTORSETTINGS._serialized_end=1524 - _DETECTORMODULEGEOMETRY._serialized_start=1526 - _DETECTORMODULEGEOMETRY._serialized_end=1624 - _DETECTORGEOMETRY._serialized_start=1626 - _DETECTORGEOMETRY._serialized_end=1748 - _DETECTOR._serialized_start=1751 - _DETECTOR._serialized_end=1973 - _INTERNALSETTINGS._serialized_start=1976 - _INTERNALSETTINGS._serialized_end=2783 - _JUNGFRAUJOCHSETTINGS._serialized_start=2785 - _JUNGFRAUJOCHSETTINGS._serialized_end=2909 - _JFPEDESTAL._serialized_start=2911 - _JFPEDESTAL._serialized_end=2941 - _JFGAINCALIBRATION._serialized_start=2943 - _JFGAINCALIBRATION._serialized_end=2988 - _JFCALIBRATION._serialized_start=2991 - _JFCALIBRATION._serialized_end=3169 - _JFCALIBRATIONSTATISTICS._serialized_start=3171 - _JFCALIBRATIONSTATISTICS._serialized_end=3257 - _ACQUISITIONDEVICESTATISTICS._serialized_start=3260 - _ACQUISITIONDEVICESTATISTICS._serialized_end=3533 - _RECEIVERINPUT._serialized_start=3536 - _RECEIVERINPUT._serialized_end=3672 - _RECEIVEROUTPUT._serialized_start=3675 - _RECEIVEROUTPUT._serialized_end=4145 - _RECEIVERNETWORKCONFIGDEVICE._serialized_start=4147 - _RECEIVERNETWORKCONFIGDEVICE._serialized_end=4231 - _RECEIVERNETWORKCONFIG._serialized_start=4233 - _RECEIVERNETWORKCONFIG._serialized_end=4317 - _RECEIVERSTATUS._serialized_start=4320 - _RECEIVERSTATUS._serialized_end=4523 - _PLOTREQUEST._serialized_start=4525 - _PLOTREQUEST._serialized_end=4595 - _RADIALINTEGRATIONPROFILE._serialized_start=4597 - _RADIALINTEGRATIONPROFILE._serialized_end=4674 - _RADIALINTEGRATIONPROFILES._serialized_start=4676 - _RADIALINTEGRATIONPROFILES._serialized_end=4763 - _WRITERINPUT._serialized_start=4765 - _WRITERINPUT._serialized_end=4827 - _DATAFILESTATISTICS._serialized_start=4829 - _DATAFILESTATISTICS._serialized_end=4880 - _WRITEROUTPUT._serialized_start=4883 - _WRITEROUTPUT._serialized_end=5024 - _DETECTORMODULECONFIG._serialized_start=5027 - _DETECTORMODULECONFIG._serialized_end=5285 - _DETECTORCONFIG._serialized_start=5287 - _DETECTORCONFIG._serialized_end=5412 - _DETECTORINPUT._serialized_start=5415 - _DETECTORINPUT._serialized_end=5667 - _DETECTOROUTPUT._serialized_start=5669 - _DETECTOROUTPUT._serialized_end=5685 - _DETECTORSTATUS._serialized_start=5687 - _DETECTORSTATUS._serialized_end=5785 - _FPGAFIFOSTATUS._serialized_start=5787 - _FPGAFIFOSTATUS._serialized_end=5868 - _FPGASTATUS._serialized_start=5871 - _FPGASTATUS._serialized_end=6766 - _DATAPROCESSINGSETTINGS._serialized_start=6769 - _DATAPROCESSINGSETTINGS._serialized_end=7145 - _PREVIEWFRAMESPOT._serialized_start=7147 - _PREVIEWFRAMESPOT._serialized_end=7204 - _PREVIEWFRAME._serialized_start=7207 - _PREVIEWFRAME._serialized_end=7525 - _MODULESTATISTICS._serialized_start=7528 - _MODULESTATISTICS._serialized_end=7765 - _IMAGE._serialized_start=7767 - _IMAGE._serialized_end=7840 - _MASKTOLOAD._serialized_start=7842 - _MASKTOLOAD._serialized_end=7888 - _MEASUREMENTSTATISTICS._serialized_start=7891 - _MEASUREMENTSTATISTICS._serialized_end=8504 - _BROKERSTATUS._serialized_start=8507 - _BROKERSTATUS._serialized_end=8722 - _BROKERFULLSTATUS._serialized_start=8725 - _BROKERFULLSTATUS._serialized_end=8889 - _DETECTORLISTELEMENT._serialized_start=8891 - _DETECTORLISTELEMENT._serialized_end=8963 - _DETECTORLIST._serialized_start=8965 - _DETECTORLIST._serialized_end=9083 - _DETECTORSELECTION._serialized_start=9085 - _DETECTORSELECTION._serialized_end=9116 - _GRPC_JFJOCHRECEIVER._serialized_start=9690 - _GRPC_JFJOCHRECEIVER._serialized_end=10457 - _GRPC_JFJOCHWRITER._serialized_start=10460 - _GRPC_JFJOCHWRITER._serialized_end=10662 - _GRPC_JFJOCHDETECTOR._serialized_start=10665 - _GRPC_JFJOCHDETECTOR._serialized_end=11051 - _GRPC_JFJOCHBROKER._serialized_start=11054 - _GRPC_JFJOCHBROKER._serialized_end=12743 + _DATASETSETTINGS._serialized_end=1091 + _DETECTORSETTINGS._serialized_start=1094 + _DETECTORSETTINGS._serialized_end=1504 + _DETECTORMODULEGEOMETRY._serialized_start=1506 + _DETECTORMODULEGEOMETRY._serialized_end=1604 + _DETECTORGEOMETRY._serialized_start=1606 + _DETECTORGEOMETRY._serialized_end=1728 + _DETECTOR._serialized_start=1731 + _DETECTOR._serialized_end=1953 + _INTERNALSETTINGS._serialized_start=1956 + _INTERNALSETTINGS._serialized_end=2763 + _JUNGFRAUJOCHSETTINGS._serialized_start=2765 + _JUNGFRAUJOCHSETTINGS._serialized_end=2889 + _JFPEDESTAL._serialized_start=2891 + _JFPEDESTAL._serialized_end=2921 + _JFGAINCALIBRATION._serialized_start=2923 + _JFGAINCALIBRATION._serialized_end=2968 + _JFCALIBRATION._serialized_start=2971 + _JFCALIBRATION._serialized_end=3149 + _JFCALIBRATIONSTATISTICS._serialized_start=3151 + _JFCALIBRATIONSTATISTICS._serialized_end=3237 + _ACQUISITIONDEVICESTATISTICS._serialized_start=3240 + _ACQUISITIONDEVICESTATISTICS._serialized_end=3513 + _RECEIVERINPUT._serialized_start=3516 + _RECEIVERINPUT._serialized_end=3652 + _RECEIVEROUTPUT._serialized_start=3655 + _RECEIVEROUTPUT._serialized_end=4125 + _RECEIVERNETWORKCONFIGDEVICE._serialized_start=4127 + _RECEIVERNETWORKCONFIGDEVICE._serialized_end=4211 + _RECEIVERNETWORKCONFIG._serialized_start=4213 + _RECEIVERNETWORKCONFIG._serialized_end=4297 + _RECEIVERSTATUS._serialized_start=4300 + _RECEIVERSTATUS._serialized_end=4503 + _PLOTREQUEST._serialized_start=4505 + _PLOTREQUEST._serialized_end=4575 + _RADIALINTEGRATIONPROFILE._serialized_start=4577 + _RADIALINTEGRATIONPROFILE._serialized_end=4654 + _RADIALINTEGRATIONPROFILES._serialized_start=4656 + _RADIALINTEGRATIONPROFILES._serialized_end=4743 + _WRITERINPUT._serialized_start=4745 + _WRITERINPUT._serialized_end=4807 + _DATAFILESTATISTICS._serialized_start=4809 + _DATAFILESTATISTICS._serialized_end=4860 + _WRITEROUTPUT._serialized_start=4863 + _WRITEROUTPUT._serialized_end=5004 + _DETECTORMODULECONFIG._serialized_start=5007 + _DETECTORMODULECONFIG._serialized_end=5265 + _DETECTORCONFIG._serialized_start=5267 + _DETECTORCONFIG._serialized_end=5392 + _DETECTORINPUT._serialized_start=5395 + _DETECTORINPUT._serialized_end=5647 + _DETECTOROUTPUT._serialized_start=5649 + _DETECTOROUTPUT._serialized_end=5665 + _DETECTORSTATUS._serialized_start=5667 + _DETECTORSTATUS._serialized_end=5765 + _FPGAFIFOSTATUS._serialized_start=5767 + _FPGAFIFOSTATUS._serialized_end=5848 + _FPGASTATUS._serialized_start=5851 + _FPGASTATUS._serialized_end=6746 + _DATAPROCESSINGSETTINGS._serialized_start=6749 + _DATAPROCESSINGSETTINGS._serialized_end=7125 + _PREVIEWFRAMESPOT._serialized_start=7127 + _PREVIEWFRAMESPOT._serialized_end=7184 + _PREVIEWFRAME._serialized_start=7187 + _PREVIEWFRAME._serialized_end=7505 + _MODULESTATISTICS._serialized_start=7508 + _MODULESTATISTICS._serialized_end=7745 + _IMAGE._serialized_start=7747 + _IMAGE._serialized_end=7820 + _MASKTOLOAD._serialized_start=7822 + _MASKTOLOAD._serialized_end=7868 + _MEASUREMENTSTATISTICS._serialized_start=7871 + _MEASUREMENTSTATISTICS._serialized_end=8484 + _BROKERSTATUS._serialized_start=8487 + _BROKERSTATUS._serialized_end=8702 + _BROKERFULLSTATUS._serialized_start=8705 + _BROKERFULLSTATUS._serialized_end=8869 + _DETECTORLISTELEMENT._serialized_start=8871 + _DETECTORLISTELEMENT._serialized_end=8943 + _DETECTORLIST._serialized_start=8945 + _DETECTORLIST._serialized_end=9063 + _DETECTORSELECTION._serialized_start=9065 + _DETECTORSELECTION._serialized_end=9096 + _GRPC_JFJOCHRECEIVER._serialized_start=9670 + _GRPC_JFJOCHRECEIVER._serialized_end=10437 + _GRPC_JFJOCHWRITER._serialized_start=10440 + _GRPC_JFJOCHWRITER._serialized_end=10642 + _GRPC_JFJOCHDETECTOR._serialized_start=10645 + _GRPC_JFJOCHDETECTOR._serialized_end=11031 + _GRPC_JFJOCHBROKER._serialized_start=11034 + _GRPC_JFJOCHBROKER._serialized_end=12723 # @@protoc_insertion_point(module_scope) diff --git a/receiver/JFJochReceiver.cpp b/receiver/JFJochReceiver.cpp index 5f6a8f1a..cb7a6588 100644 --- a/receiver/JFJochReceiver.cpp +++ b/receiver/JFJochReceiver.cpp @@ -568,10 +568,10 @@ float JFJochReceiver::GetIndexingRate() const { float JFJochReceiver::GetProgress() const { if (experiment.GetImageNum() > 0) - return static_cast(max_image_number_sent) / static_cast(experiment.GetImageNum()) * 100.0; + return static_cast(max_image_number_sent) / static_cast(experiment.GetImageNum()) * 100.0f; else if (experiment.GetFrameNum() > 0) // Pedestal - return static_cast(max_image_number_sent) / static_cast(experiment.GetFrameNum()) * 100.0; + return static_cast(max_image_number_sent) / static_cast(experiment.GetFrameNum()) * 100.0f; else return 100.0; } diff --git a/tests/DiffractionExperimentTest.cpp b/tests/DiffractionExperimentTest.cpp index fcfd5417..e27e6b1e 100644 --- a/tests/DiffractionExperimentTest.cpp +++ b/tests/DiffractionExperimentTest.cpp @@ -707,20 +707,18 @@ TEST_CASE("DiffractionExperiment_LoadDatasetSettings", "[DiffractionExperiment]" settings.set_data_file_count(5); settings.set_space_group_number(45); settings.set_sample_name("lyso1"); - settings.set_binning2x2(true); settings.set_fpga_summation(36); settings.set_fpga_pixel_output(JFJochProtoBuf::INT16); REQUIRE_NOTHROW(x.LoadDatasetSettings(settings)); REQUIRE(x.GetImageNumPerTrigger() == 234); - REQUIRE(x.GetBeamX_pxl() == Approx(23.4/2)); - REQUIRE(x.GetBeamY_pxl() == Approx(123.4/2)); + REQUIRE(x.GetBeamX_pxl() == Approx(23.4)); + REQUIRE(x.GetBeamY_pxl() == Approx(123.4)); REQUIRE(x.GetSpaceGroupNumber() == 45); REQUIRE(x.GetCompressionAlgorithm() == JFJochProtoBuf::BSHUF_LZ4); REQUIRE(x.GetSampleName() == "lyso1"); REQUIRE(x.GetDataFileCount() == 5); REQUIRE(x.GetDetectorDistance_mm() == Approx(57.6)); - REQUIRE(x.GetBinning2x2()); REQUIRE(x.GetFPGASummation() == 36); REQUIRE(x.GetFPGAOutputMode() == JFJochProtoBuf::INT16); } @@ -902,47 +900,6 @@ TEST_CASE("DiffractionExperiment_FPGA_Summation_output","[DiffractionExperiment] REQUIRE(!x.GetFPGAOutputSigned()); } -TEST_CASE("DiffractionExperiment_Binning","[DiffractionExperiment]") { - DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36, true)); - x.Mode(DetectorMode::Conversion).BeamX_pxl(200.0).BeamY_pxl(400.0); - - REQUIRE(!x.GetBinning2x2()); - REQUIRE(x.GetPixelSize_mm() == Approx(PIXEL_SIZE_IN_MM)); - REQUIRE(x.GetXPixelsNum() == 2068); - REQUIRE(x.GetYPixelsNum() == 2164); - - REQUIRE(x.GetXPixelsNumFullImage() == 2068); - REQUIRE(x.GetYPixelsNumFullImage() == 2164); - REQUIRE(x.GetPixelsNumFullImage() == 2164*2068); - - REQUIRE(x.GetBeamX_pxl() == Approx(200.0)); - REQUIRE(x.GetBeamY_pxl() == Approx(400.0)); - REQUIRE(x.GetPixel0OfModule(0) == (2164 - 1)*2068); - - x.Binning2x2(true); - REQUIRE(x.GetBinning2x2()); - REQUIRE(x.GetPixelSize_mm() == Approx(2*PIXEL_SIZE_IN_MM)); - - REQUIRE(x.GetXPixelsNumFullImage() == 2068); - REQUIRE(x.GetXPixelsNum() == 2068/2); - REQUIRE(x.GetYPixelsNumFullImage() == 2164); - REQUIRE(x.GetYPixelsNum() == 2164/2); - REQUIRE(x.GetPixelsNumFullImage() == 2164*2068); - REQUIRE(x.GetPixelsNum() == (2164/2)*(2068/2)); - - REQUIRE(x.GetBeamX_pxl() == Approx(100.0)); - REQUIRE(x.GetBeamY_pxl() == Approx(200.0)); - REQUIRE(x.GetPixel0OfModule(0) == ((2164 - 1))*(2068)); - REQUIRE(x.GetPixel0OfModule(1) == ((2164 - 1))*(2068) + (1030+8)); - REQUIRE(x.GetPixel0OfModule(6) == ((2164 - 1))*(2068) - 3 * ((514+36))*(2068)); - REQUIRE(x.GetPixel0OfModule(7) == ((2164 - 1))*(2068) - 3 * ((514+36))*(2068) + (1030+8)); - - x.Mode(DetectorMode::Raw); - REQUIRE(!x.GetBinning2x2()); - REQUIRE(x.GetXPixelsNum() == RAW_MODULE_COLS); - REQUIRE(x.GetYPixelsNum() == 8 * RAW_MODULE_LINES); -} - TEST_CASE("DiffractionExperiment_DetectorModuleHostname","[DiffractionExperiment]") { std::vector h = {"mx1", "mx2", "mx3"}; DiffractionExperiment x(DetectorSetup(3, "X", h)); diff --git a/tests/FrameTransformationTest.cpp b/tests/FrameTransformationTest.cpp index 4923a4cb..ac6c362a 100644 --- a/tests/FrameTransformationTest.cpp +++ b/tests/FrameTransformationTest.cpp @@ -343,53 +343,6 @@ TEST_CASE("FrameTransformation_Converted_bshuf_zstd" ,"") { REQUIRE(input_1[(511+512)*1024 + 800] == output[CONVERTED_MODULE_SIZE * (nmodules - 2) + 1030 + 800 + 6]); } -TEST_CASE("FrameTransformation_Converted_bshuf_zstd_bin_2x2" ,"") { - const uint16_t nmodules = 4; - const uint16_t ndatastreams = 2; - DiffractionExperiment experiment(DetectorGeometry(ndatastreams * nmodules, 2, 0, 0, false)); - experiment.DataStreams(ndatastreams); - - experiment.Mode(DetectorMode::Conversion).Compression(JFJochProtoBuf::BSHUF_ZSTD).Binning2x2(true); - - FrameTransformation transformation(experiment); - - std::mt19937 g1(1987); - std::uniform_int_distribution dist; - - std::vector input_0(nmodules*RAW_MODULE_SIZE); - for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++) - input_0[i] = (i % 1024) + (i / 1024); - - std::vector input_1(nmodules*RAW_MODULE_SIZE); - for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++) - input_1[i] = 10; - - std::vector output_compressed(experiment.GetMaxCompressedSize()); - - for (int i = 0; i < nmodules; i++) { - REQUIRE_NOTHROW(transformation.ProcessModule(input_0.data() + i * RAW_MODULE_SIZE, i, 0)); - REQUIRE_NOTHROW(transformation.ProcessModule(input_1.data() + i * RAW_MODULE_SIZE, i, 1)); - } - - size_t compressed_size; - transformation.Pack(); - REQUIRE_NOTHROW(compressed_size = transformation.SaveCompressedImage(output_compressed.data())); - - REQUIRE(bshuf_read_uint64_BE(output_compressed.data()) == experiment.GetPixelsNum() * experiment.GetPixelDepth()); - REQUIRE(bshuf_read_uint32_BE(output_compressed.data()+8) == JFJochBitShuffleCompressor::DefaultBlockSize * experiment.GetPixelDepth()); - - output_compressed.resize(compressed_size); - std::vector output; - REQUIRE_NOTHROW(JFJochDecompress(output, experiment.GetCompressionAlgorithmEnum(), output_compressed, - experiment.GetPixelsNum())); - - REQUIRE(output[0] == 0 + 1 + 1 + 2); - REQUIRE(output[1] == 2 + 3 + 3 + 4); - - REQUIRE(output[(513/2)*(1030/2) * 2] == 510 + 511 + 511 + 512); // line 510 + 511 - REQUIRE(output[(514/2)*(1030/2) * 2] == 1024 + 1025 + 1025 + 1026); // line 1024 + 1025 -} - TEST_CASE("FrameTransformation_Converted_bshuf_zstd_rle" ,"") { const uint16_t nmodules = 4; const uint16_t ndatastreams = 2; @@ -520,57 +473,6 @@ TEST_CASE("FrameTransformation_Converted_bshuf_zstd_summation" ,"") { REQUIRE(4 * input_1[(511+512)*1024 + 800] == output[CONVERTED_MODULE_SIZE * (nmodules - 2) + 1030 + 800 + 6]); } -TEST_CASE("FrameTransformation_Converted_bshuf_zstd_summation_bin_2x2" ,"") { - const uint16_t nmodules = 4; - const uint16_t ndatastreams = 2; - DiffractionExperiment experiment(DetectorGeometry(ndatastreams * nmodules, 2, 0, 0, false)); - experiment.DataStreams(ndatastreams); - - experiment.Mode(DetectorMode::Conversion).Summation(4).Compression(JFJochProtoBuf::BSHUF_ZSTD).Binning2x2(true); - - REQUIRE(experiment.GetSummation() == 4); - - FrameTransformation transformation(experiment); - - std::mt19937 g1(1987); - std::uniform_int_distribution dist; - - std::vector input_0(nmodules*RAW_MODULE_SIZE); - for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++) - input_0[i] = (i % 1024) + (i / 1024); - - std::vector input_1(nmodules*RAW_MODULE_SIZE); - for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++) - input_1[i] = 10; - - std::vector output_compressed(experiment.GetMaxCompressedSize()); - - for (int frame = 0; frame < experiment.GetSummation(); frame++) { - for (int i = 0; i < nmodules; i++) { - REQUIRE_NOTHROW(transformation.ProcessModule(input_0.data() + i * RAW_MODULE_SIZE, i, 0)); - REQUIRE_NOTHROW(transformation.ProcessModule(input_1.data() + i * RAW_MODULE_SIZE, i, 1)); - } - } - - size_t compressed_size; - transformation.Pack(); - REQUIRE_NOTHROW(compressed_size = transformation.SaveCompressedImage(output_compressed.data())); - - REQUIRE(bshuf_read_uint64_BE(output_compressed.data()) == experiment.GetPixelsNum() * experiment.GetPixelDepth()); - REQUIRE(bshuf_read_uint32_BE(output_compressed.data()+8) == JFJochBitShuffleCompressor::DefaultBlockSize * experiment.GetPixelDepth()); - - output_compressed.resize(compressed_size); - std::vector output; - REQUIRE_NOTHROW(JFJochDecompress(output, experiment.GetCompressionAlgorithmEnum(), output_compressed, - experiment.GetPixelsNum())); - - REQUIRE(output[0] == 4 * (0 + 1 + 1 + 2)); - REQUIRE(output[1] == 4 * (2 + 3 + 3 + 4)); - - REQUIRE(output[(513/2)*(1030/2) * 2] == 4 * (510 + 511 + 511 + 512)); // line 510 + 511 - REQUIRE(output[(514/2)*(1030/2) * 2] == 4 * (1024 + 1025 + 1025 + 1026)); // line 1024 + 1025 -} - TEST_CASE("FrameTransformation_Converted_bshuf_zstd_summation_2frames" ,"") { // Ensure that previous frame is properly cleaned with PackStandardOutput() const uint16_t nmodules = 4; diff --git a/tests/JFCalibrationTest.cpp b/tests/JFCalibrationTest.cpp index 2f93d9e8..5fcc7699 100644 --- a/tests/JFCalibrationTest.cpp +++ b/tests/JFCalibrationTest.cpp @@ -238,32 +238,6 @@ TEST_CASE("JFCalibration_CalculateNexusMask","[JFCalibration]") { REQUIRE(mask_v[1030 * 700 + 300] == 0); } -TEST_CASE("JFCalibration_CalculateNexusMask_Bin2x2","[JFCalibration]") { - DiffractionExperiment experiment(DetectorGeometry(4, 2, 8, 36, false)); - experiment.MaskModuleEdges(false).MaskChipEdges(true).Binning2x2(true); - JFCalibration calibration(4, 2); - - calibration.Mask(0) = 50; - calibration.Mask(1) = 30; - calibration.Pedestal(0, 0, 0).GetPedestalMask()[2] = 4; - calibration.Pedestal(0, 1, 0).GetPedestalMask()[4] = 8; - calibration.Pedestal(0, 2, 0).GetPedestalMask()[5] = 16; - - auto mask_v = calibration.CalculateNexusMask(experiment); - - REQUIRE(mask_v.size() == experiment.GetPixelsNum() ); - REQUIRE(mask_v[0] == (50 | 30)); - REQUIRE(mask_v[1] == 4); - REQUIRE(mask_v[2] == (8 | 16)); - REQUIRE(mask_v[3] == 0); - - REQUIRE(mask_v[255/2] != 0); - REQUIRE(mask_v[514/2] != 0); - REQUIRE(mask_v[(1030+7)/2] != 0); - REQUIRE(mask_v[(2068/2)*(513/2)] == 0); - REQUIRE(mask_v[(2068/2)*(514/2)] != 0); -} - TEST_CASE("JFCalibration_CalculateOneByteMask","[JFCalibration]") { DiffractionExperiment experiment(DetectorGeometry(4, 1, 8, 36, false)); experiment.MaskModuleEdges(false).MaskChipEdges(false); @@ -285,31 +259,6 @@ TEST_CASE("JFCalibration_CalculateOneByteMask","[JFCalibration]") { REQUIRE(mask_v[518*(experiment.GetXPixelsNum())] == 0); // Y Gap } -TEST_CASE("JFCalibration_CalculateOneByteMask_Bin2x2","[JFCalibration]") { - DiffractionExperiment experiment(DetectorGeometry(4, 2, 8, 36, false)); - experiment.MaskModuleEdges(false).MaskChipEdges(true).Binning2x2(true); - JFCalibration calibration(experiment); - calibration.Mask(0) = 50; - calibration.Mask(1) = 30; - calibration.Pedestal(0, 0, 0).GetPedestalMask()[2] = 4; - calibration.Pedestal(0, 1, 0).GetPedestalMask()[4] = 8; - calibration.Pedestal(0, 2, 0).GetPedestalMask()[5] = 16; - - auto mask_v = calibration.CalculateOneByteMask(experiment); - - REQUIRE(mask_v.size() == experiment.GetPixelsNum() ); - REQUIRE(mask_v[0] == 0); - REQUIRE(mask_v[1] == 0); - REQUIRE(mask_v[2] == 0); - REQUIRE(mask_v[3] == 1); - - REQUIRE(mask_v[255/2] == 0); - REQUIRE(mask_v[514/2] == 0); - REQUIRE(mask_v[(1030+7)/2] == 0); - REQUIRE(mask_v[(2068/2)*(513/2)] == 1); - REQUIRE(mask_v[(2068/2)*(514/2)] == 0); -} - TEST_CASE("JFCalibration_LoadMask_Bitwise","[JFCalibration]") { DiffractionExperiment experiment(DetectorGeometry(8, 2, 8, 36, true)); diff --git a/tests/JFJochFullIntegrationTest.cpp b/tests/JFJochFullIntegrationTest.cpp index 18ae608e..0a7b196d 100644 --- a/tests/JFJochFullIntegrationTest.cpp +++ b/tests/JFJochFullIntegrationTest.cpp @@ -1016,126 +1016,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]" writer_server->Shutdown(); } -TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer_binning2x2", "[JFJochReceiver]") { - Logger logger("JFJochIntegrationTest_ZMQ_with_preview_no_writer"); - - RegisterHDF5Filter(); - - int64_t nimages = 5; - int64_t ndatastream = 2; - int64_t nmodules = 4; - - JFJochServices services(logger); - JFJochStateMachine state_machine(services, logger); - state_machine.AddDetectorSetup(DetectorGeometry(ndatastream * nmodules, 2, 8, 36)); - - state_machine.NotThreadSafe_Experiment().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); - - std::vector image(RAW_MODULE_SIZE); - - std::vector> aq_devices; - - for (int i = 0; i < ndatastream; i++) { - 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()); - } - test->Terminate(); - aq_devices.emplace_back(test); - } - ZMQContext zmq_context; - - std::vector tmp_devices; - for (const auto &i: aq_devices) - tmp_devices.emplace_back(i.get()); - - ZMQImagePusher pusher(zmq_context, {"inproc://#1"}); - JFJochReceiverService fpga_receiver(tmp_devices, logger, pusher); - JFJochWriterService writer(zmq_context, logger); - - ZMQPreviewPublisher preview(zmq_context, "inproc://#2"); - fpga_receiver.PreviewPublisher(&preview).NumThreads(1); - - ZMQSocket rcv_preview_socket(zmq_context, ZMQSocketType::Sub); - REQUIRE_NOTHROW(rcv_preview_socket.Connect("inproc://#2")); - rcv_preview_socket.SubscribeAll(); - - auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver); - auto writer_server = gRPCServer("unix:writer_test", writer); - - REQUIRE_NOTHROW(state_machine.Initialize()); - logger.Info("Initialized"); - - JFJochProtoBuf::DatasetSettings setup; - setup.set_ntrigger(1); - setup.set_detector_distance_mm(100); - setup.set_images_per_trigger(5); - setup.set_photon_energy_kev(12.4); - setup.set_beam_x_pxl(123.0); - setup.set_beam_y_pxl(878.0); - setup.set_summation(1); - setup.set_data_file_count(1); - setup.set_binning2x2(true); - - REQUIRE_NOTHROW(state_machine.Start(setup)); - logger.Info("Started measurement"); - - REQUIRE_NOTHROW(state_machine.Stop()); - logger.Info("Stopped measurement"); - - std::string s; - - // Pixel mask - REQUIRE(rcv_preview_socket.Receive(s, false) > 0); - JFJochProtoBuf::PreviewFrame frame; - REQUIRE_NOTHROW(frame = jsonToGrpc(s)); - - // Check header - REQUIRE(frame.image_number() == -1); - REQUIRE(frame.width() == state_machine.NotThreadSafe_Experiment().GetXPixelsNumFullImage() / 2); - REQUIRE(frame.height() == state_machine.NotThreadSafe_Experiment().GetYPixelsNumFullImage() / 2); - REQUIRE(frame.pixel_depth() == 4); - - // First frame - REQUIRE(rcv_preview_socket.Receive(s, false) > 0); - - REQUIRE_NOTHROW(frame = jsonToGrpc(s)); - - // Check header - REQUIRE(frame.image_number() == 0); - REQUIRE(frame.beam_x_pxl() == Approx(setup.beam_x_pxl()/2.0f)); - REQUIRE(frame.beam_y_pxl() == Approx(setup.beam_y_pxl()/2.0f)); - REQUIRE(frame.width() == state_machine.NotThreadSafe_Experiment().GetXPixelsNumFullImage() / 2); - REQUIRE(frame.height() == state_machine.NotThreadSafe_Experiment().GetYPixelsNumFullImage() / 2); - REQUIRE(frame.pixel_depth() == 2); - - // Check compressed image - size_t npixel = state_machine.NotThreadSafe_Experiment().GetPixelsNum(); - - std::vector rcv_image(frame.data().size()); - rcv_image = {frame.data().begin(), frame.data().end()}; - REQUIRE(rcv_image.size() == state_machine.NotThreadSafe_Experiment().GetPixelsNum() * sizeof(int16_t)); - - // Check no more frames waiting - REQUIRE(rcv_preview_socket.Receive(s, false) == -1); - - auto tmp = state_machine.GetMeasurementStatistics(); - REQUIRE(tmp.has_value()); - auto statistics = tmp.value(); - - REQUIRE(statistics.collection_efficiency() == 1.0); - REQUIRE(statistics.images_collected() == 5); - REQUIRE(statistics.images_written() == 0); - fpga_receiver_server->Shutdown(); - writer_server->Shutdown(); -} - TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") { Logger logger("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index"); diff --git a/tests/JFJochReceiverIntegrationTest.cpp b/tests/JFJochReceiverIntegrationTest.cpp index 875bc028..0d055f70 100644 --- a/tests/JFJochReceiverIntegrationTest.cpp +++ b/tests/JFJochReceiverIntegrationTest.cpp @@ -67,34 +67,6 @@ TEST_CASE("JFJochReceiverTest_Conversion", "[JFJochReceiver]") { REQUIRE(!output.cancelled()); } -TEST_CASE("JFJochReceiverTest_Conversion_Bin2x2", "[JFJochReceiver]") { - Logger logger("JFJochReceiverTest_Conversion_Bin2x2"); - - DiffractionExperiment x(DetectorGeometry(2)); - const uint16_t nthreads = 4; - - x.Mode(DetectorMode::Conversion); - x.PedestalG0Frames(0).NumTriggers(1).UseInternalPacketGenerator(true).Binning2x2(true) - .ImagesPerTrigger(32).DataFileCount(16).PhotonEnergy_keV(12.4).Compression(JFJochProtoBuf::BSHUF_ZSTD); - - std::vector> aq_devices; - for (int i = 0; i < x.GetDataStreamsNum(); i++) { - HLSSimulatedDevice *test; - test = new HLSSimulatedDevice(i, 64); - test->EnableLogging(&logger); - aq_devices.emplace_back(test); - } - - JFJochProtoBuf::ReceiverOutput output; - bool ret; - REQUIRE_NOTHROW(ret = JFJochReceiverTest(output, logger, aq_devices, x, nthreads, false)); - REQUIRE(ret); - REQUIRE(output.efficiency() == 1.0); - REQUIRE(output.images_sent() == x.GetImageNum()); - - REQUIRE(!output.cancelled()); -} - TEST_CASE("JFJochReceiverTest_Conversion_StorageCell", "[JFJochReceiver]") { Logger logger("JFJochReceiverTest_Conversion_StorageCell");