diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 29268e4f..2a01f32f 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -44,7 +44,6 @@ ADD_LIBRARY( CommonFunctions STATIC DetectorGeometry.cpp DetectorGeometry.h DetectorModuleGeometry.cpp DetectorModuleGeometry.h DetectorSetup.h DetectorSetup.cpp ZeroCopyReturnValue.h Histogram.h DiffractionGeometry.h - ROIFilter.h CUDAWrapper.cpp CUDAWrapper.h NUMAHWPolicy.cpp diff --git a/common/DiffractionExperiment.cpp b/common/DiffractionExperiment.cpp index c8c00bb4..afe299b0 100644 --- a/common/DiffractionExperiment.cpp +++ b/common/DiffractionExperiment.cpp @@ -1082,34 +1082,6 @@ float DiffractionExperiment::GetPolarizationFactor() const { return dataset.rad_int_polarization_factor(); } -DiffractionExperiment &DiffractionExperiment::ApplyROI(bool input) { - internal.set_roi_apply(input); - return *this; -} - -DiffractionExperiment &DiffractionExperiment::AddROIRectangle(int32_t x, int32_t y, int32_t width, int32_t height) { - auto *tmp = internal.add_roi_rectangle(); - tmp->set_x0(x); - tmp->set_y0(y); - tmp->set_width(width); - tmp->set_height(height); - return *this; -} - -DiffractionExperiment &DiffractionExperiment::ClearROI() { - internal.clear_roi_rectangle(); - return *this; -} - -bool DiffractionExperiment::GetApplyROI() const { - return internal.roi_apply(); -} - -void DiffractionExperiment::SetupROIFilter(ROIFilter &filter) { - for (const auto& i: internal.roi_rectangle()) - filter.SetRectangle(i.x0(), i.y0(), i.width(), i.height()); -} - DiffractionExperiment &DiffractionExperiment::SaveCalibration(bool input) { dataset.set_save_calibration(input); return *this; @@ -1138,14 +1110,16 @@ DiffractionExperiment &DiffractionExperiment::FPGASummation(int64_t input) { int64_t DiffractionExperiment::GetFPGASummation() const { switch (GetDetectorMode()) { - case DetectorMode::Conversion: - case DetectorMode::Raw: - // FPGA summation for raw data makes zero sense - but it is still available as a means for debug, etc. - return dataset.fpga_summation(); case DetectorMode::PedestalG0: case DetectorMode::PedestalG1: case DetectorMode::PedestalG2: return 1; + default: + case DetectorMode::Conversion: + case DetectorMode::Raw: + // FPGA summation for raw data makes zero sense - but it is still available as a means for debug, etc. + return dataset.fpga_summation(); + } } diff --git a/common/DiffractionExperiment.h b/common/DiffractionExperiment.h index 9e017dbc..faa5e18a 100644 --- a/common/DiffractionExperiment.h +++ b/common/DiffractionExperiment.h @@ -16,7 +16,6 @@ #include "Definitions.h" #include "../frame_serialize/CBORMessages.h" #include "DetectorSetup.h" -#include "ROIFilter.h" enum class DetectorMode : int { Conversion, Raw, PedestalG0, PedestalG1, PedestalG2 @@ -202,12 +201,6 @@ public: bool GetApplyPolarizationCorr() const; float GetPolarizationFactor() const; - DiffractionExperiment& ApplyROI(bool input); - DiffractionExperiment& AddROIRectangle(int32_t x, int32_t y, int32_t width, int32_t height); - DiffractionExperiment& ClearROI(); - bool GetApplyROI() const; - void SetupROIFilter(ROIFilter& filter); - DiffractionExperiment& SaveCalibration(bool input); bool GetSaveCalibration() const; diff --git a/common/FrameTransformation.cpp b/common/FrameTransformation.cpp index aeb01dfa..14977603 100644 --- a/common/FrameTransformation.cpp +++ b/common/FrameTransformation.cpp @@ -8,9 +8,15 @@ #include "RawToConvertedGeometry.h" #include "JFJochException.h" +template void FillVector(std::vector &v, T fill_value) { + auto ptr = (T *) v.data(); + for (int i = 0; i < v.size() / sizeof(T); i++) + ptr[i] = fill_value; +} + FrameTransformation::FrameTransformation(const DiffractionExperiment &in_experiment) : experiment(in_experiment), - pixel_depth(experiment.GetPixelDepth()), + pixel_depth(experiment.GetPixelDepth()), pixel_signed(experiment.IsPixelSigned()), compressor(in_experiment.GetCompressionAlgorithmEnum()) { precompression_buffer.resize(experiment.GetPixelsNum() * pixel_depth); @@ -18,13 +24,15 @@ FrameTransformation::FrameTransformation(const DiffractionExperiment &in_experim if (experiment.GetApplyPixelMaskInFPGA()) { // Mask gaps if (pixel_depth == 2) { - auto ptr = (int16_t *) precompression_buffer.data(); - for (int i = 0; i < experiment.GetPixelsNum(); i++) - ptr[i] = INT16_MIN; - } else { - auto ptr = (uint32_t *) precompression_buffer.data(); - for (int i = 0; i < experiment.GetPixelsNum(); i++) - ptr[i] = INT32_MIN; + if (pixel_signed) + FillVector(precompression_buffer, INT16_MIN); + else + FillVector(precompression_buffer, UINT16_MAX); + } else if (pixel_depth == 4) { + if (pixel_signed) + FillVector(precompression_buffer, INT32_MIN); + else + FillVector(precompression_buffer, UINT32_MAX); } } } @@ -35,33 +43,46 @@ size_t FrameTransformation::SaveCompressedImage(void *output) { } void FrameTransformation::ProcessModule(const int16_t *input, uint16_t module_number, int data_stream) { - size_t module_number_abs = experiment.GetFirstModuleOfDataStream(data_stream) + module_number; - auto 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 - TransferModuleAdjustMultipixels(output, (int16_t *) input, - experiment.GetModuleSlowDirectionStep(module_number_abs), - static_cast(INT16_MIN), - static_cast(INT16_MAX), - experiment.GetModuleFastDirectionStep(module_number_abs), - experiment.GetPixel0OfModule(module_number_abs)); -} - -void FrameTransformation::ApplyROI(const ROIFilter &filter) { - if (pixel_depth == 2) - filter.Apply((int16_t *) precompression_buffer.data(), static_cast(INT16_MIN)); - else - filter.Apply((int32_t *) precompression_buffer.data(), static_cast(INT32_MIN)); + if (experiment.GetDetectorMode() != DetectorMode::Conversion) { + size_t mod_size = RAW_MODULE_SIZE * pixel_depth; + memcpy(precompression_buffer.data() + module_number_abs * mod_size, input, mod_size); + } else { + if (pixel_depth == 2) { + if (pixel_signed) + TransferModuleAdjustMultipixels((int16_t *) precompression_buffer.data(), (int16_t *) input, + experiment.GetModuleSlowDirectionStep(module_number_abs), + static_cast(INT16_MIN), + static_cast(INT16_MAX), + experiment.GetModuleFastDirectionStep(module_number_abs), + experiment.GetPixel0OfModule(module_number_abs)); + else + TransferModuleAdjustMultipixels((uint16_t *) precompression_buffer.data(), (uint16_t *) input, + experiment.GetModuleSlowDirectionStep(module_number_abs), + static_cast(0), + static_cast(UINT16_MAX - 1), + experiment.GetModuleFastDirectionStep(module_number_abs), + experiment.GetPixel0OfModule(module_number_abs)); + } else if (pixel_depth == 4) { + if (pixel_signed) + TransferModuleAdjustMultipixels((int32_t *) precompression_buffer.data(), (int32_t *) input, + experiment.GetModuleSlowDirectionStep(module_number_abs), + static_cast(INT32_MIN), + static_cast(INT32_MAX), + experiment.GetModuleFastDirectionStep(module_number_abs), + experiment.GetPixel0OfModule(module_number_abs)); + else + TransferModuleAdjustMultipixels((uint32_t *) precompression_buffer.data(), (uint32_t *) input, + experiment.GetModuleSlowDirectionStep(module_number_abs), + static_cast(0), + static_cast(UINT32_MAX - 1), + experiment.GetModuleFastDirectionStep(module_number_abs), + experiment.GetPixel0OfModule(module_number_abs)); + } + } } const void *FrameTransformation::GetPreviewImage() const { return precompression_buffer.data(); } - - diff --git a/common/FrameTransformation.h b/common/FrameTransformation.h index 9fb65d3f..7f9ab58c 100644 --- a/common/FrameTransformation.h +++ b/common/FrameTransformation.h @@ -6,20 +6,18 @@ #include "DiffractionExperiment.h" #include "../compression/JFJochCompressor.h" #include "../jungfrau/JFConversion.h" -#include "ROIFilter.h" class FrameTransformation { const DiffractionExperiment& experiment; JFJochBitShuffleCompressor compressor; std::vector precompression_buffer; - + const bool pixel_signed; const size_t pixel_depth; public: explicit FrameTransformation(const DiffractionExperiment &experiment); void ProcessModule(const int16_t *input, uint16_t module_number, int data_stream); size_t SaveCompressedImage(void *output); - void ApplyROI(const ROIFilter &filter); const void *GetPreviewImage() const; }; diff --git a/common/ROIFilter.h b/common/ROIFilter.h deleted file mode 100644 index 3cac8404..00000000 --- a/common/ROIFilter.h +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (2019-2023) Paul Scherrer Institute - -#ifndef JUNGFRAUJOCH_ROIFILTER_H -#define JUNGFRAUJOCH_ROIFILTER_H - -#include -#include -#include -#include "JFJochException.h" - -class ROIFilter { - int32_t width, height; - std::vector mask; -public: - ROIFilter(int32_t in_width, int32_t in_height, uint8_t fill_value = 0) - : width(in_width), height(in_height) { - if ((width < 0) || (height < 0)) - throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Negative dimensions are wrong"); - mask = std::vector(in_width * in_height, fill_value); - } - - void SetRectangle(int32_t x0, int32_t y0, int32_t in_width, int32_t in_height, uint8_t mask_value = 1) { - if (x0 < 0) { in_width += x0; x0 = 0; } - if (in_width <= 0) return; - - if (x0 >= width) return; - if (x0 + in_width >= width) in_width = width - x0; - - if (y0 < 0) { in_height += y0; y0 = 0; } - if (in_height <= 0) return; - - if (y0 >= height) return; - if (y0 + in_height >= height) in_height = height - y0; - - for (size_t y = y0; y < y0 + in_height; y++) { - for (size_t x = x0; x < x0 + in_width; x++) { - mask[y * width + x] |= mask_value; - } - } - } - - void ClearRectangle(int32_t x0, int32_t y0, int32_t in_width, int32_t in_height, uint8_t mask_value = 1) { - if (x0 < 0) { in_width += x0; x0 = 0; } - if (in_width <= 0) return; - - if (x0 >= width) return; - if (x0 + in_width >= width) in_width = width - x0; - - if (y0 < 0) { in_height += y0; y0 = 0; } - if (in_height <= 0) return; - - if (y0 >= height) return; - if (y0 + in_height >= height) in_height = height - y0; - - for (size_t y = y0; y < y0 + in_height; y++) { - for (size_t x = x0; x < x0 + in_width; x++) { - mask[y * width + x] &= ~mask_value; - } - } - } - - template - void Apply(T* data, T fill_value) const { - for (size_t i = 0; i < mask.size(); i++) { - if (mask[i] == 0) - data[i] = fill_value; - } - } - - template - void Apply(std::vector &data, T fill_value) const { - if (data.size() != mask.size()) - throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds, "Mismatch in array size"); - Apply(data.data(), fill_value); - } -}; - - -#endif //JUNGFRAUJOCH_ROIFILTER_H diff --git a/grpc/jfjoch.proto b/grpc/jfjoch.proto index 60a2ad3c..16bb25dd 100644 --- a/grpc/jfjoch.proto +++ b/grpc/jfjoch.proto @@ -77,13 +77,6 @@ message Plot { repeated float y = 2; } -message ROIRectangle { - int32 x0 = 1; - int32 y0 = 2; - int32 width = 3; - int32 height = 4; -} - // DiffractionExperiment message DatasetSettings { @@ -112,9 +105,6 @@ message DatasetSettings { float rad_int_polarization_factor = 20; bool save_calibration = 21; - - repeated ROIRectangle user_mask = 22; - } message DetectorSettings { @@ -192,9 +182,6 @@ message InternalSettings { string instrument_name = 34; string instrument_name_short = 35; - repeated ROIRectangle roi_rectangle = 36; - bool roi_apply = 37; - bool debug_pixel_mask = 38; } diff --git a/image_analysis/CMakeLists.txt b/image_analysis/CMakeLists.txt index c51b8a44..ccb2c8a9 100644 --- a/image_analysis/CMakeLists.txt +++ b/image_analysis/CMakeLists.txt @@ -3,7 +3,7 @@ ADD_LIBRARY(ImageAnalysis STATIC IndexerWrapper.cpp IndexerWrapper.h GPUImageAnalysis.h RadialIntegrationMapping.cpp RadialIntegrationMapping.h - StrongPixelSet.cpp StrongPixelSet.h GPUImageAnalysis.cpp RadialIntegrationProfile.cpp RadialIntegrationProfile.h PredictSpotsOnDetector.h) + StrongPixelSet.cpp StrongPixelSet.h GPUImageAnalysis.cpp RadialIntegrationProfile.cpp RadialIntegrationProfile.h) TARGET_LINK_LIBRARIES(ImageAnalysis CommonFunctions) diff --git a/image_analysis/PredictSpotsOnDetector.h b/image_analysis/PredictSpotsOnDetector.h deleted file mode 100644 index c47072a9..00000000 --- a/image_analysis/PredictSpotsOnDetector.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (2019-2023) Paul Scherrer Institute - -#ifndef JUNGFRAUJOCH_PREDICTSPOTSONDETECTOR_H -#define JUNGFRAUJOCH_PREDICTSPOTSONDETECTOR_H - -#include -#include "../common/DiffractionGeometry.h" -#include "../common/ROIFilter.h" -#include "CrystalLattice.h" - -std::vector> PredictSpotsOnDetector(const DiffractionExperiment& experiment, - const CrystalLattice& lattice, - int32_t max_hkl = 30, - float epsilon = 4e-4) { - CrystalLattice recip_l = lattice.ReciprocalLattice(); - std::vector> ret; - for (int h = -max_hkl; h < max_hkl; h++) { - for (int k = -max_hkl; k < max_hkl; k++) { - for (int l = -max_hkl; l < max_hkl; l++) { - Coord recip = static_cast(h) * recip_l.Vec0() - + static_cast(k) * recip_l.Vec1() - + static_cast(l) * recip_l.Vec2(); - - if (DistFromEwaldSphere(experiment, recip) < epsilon) - ret.push_back(RecipToDector(experiment, recip)); - } - } - } - return ret; -} - -void PredictSpotsOnDetector(ROIFilter &filter, - const DiffractionExperiment& experiment, - const CrystalLattice& lattice, - int32_t max_hkl = 30, - float epsilon = 4e-4, - uint16_t box_size = 7) { - CrystalLattice recip_l = lattice.ReciprocalLattice(); - std::vector> ret; - for (int h = -max_hkl; h < max_hkl; h++) { - for (int k = -max_hkl; k < max_hkl; k++) { - for (int l = -max_hkl; l < max_hkl; l++) { - Coord recip = static_cast(h) * recip_l.Vec0() - + static_cast(k) * recip_l.Vec1() - + static_cast(l) * recip_l.Vec2(); - - if (DistFromEwaldSphere(experiment, recip) < epsilon) { - auto [x,y] = RecipToDector(experiment, recip); - auto x0 = static_cast(std::lroundf(x - static_cast(box_size))); - auto y0 = static_cast(std::lroundf(y - static_cast(box_size))); - filter.SetRectangle(x0, y0, 2 * box_size + 1, 2 * box_size + 1); - } - } - } - } -} - -#endif //JUNGFRAUJOCH_PREDICTSPOTSONDETECTOR_H diff --git a/python/jfjoch_pb2.py b/python/jfjoch_pb2.py index e944e8cb..608aaed3 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\"\xfa\x04\n\x0f\x44\x61tasetSettings\x12\x1a\n\x12images_per_trigger\x18\x01 \x01(\x03\x12\x10\n\x08ntrigger\x18\x02 \x01(\x03\x12:\n\x11\x66pga_pixel_output\x18\x03 \x01(\x0e\x32\x1f.JFJochProtoBuf.FPGAPixelOutput\x12\x16\n\x0e\x66pga_summation\x18\x04 \x01(\x03\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\x00\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.ROIRectangleB\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\"\xc9\x04\n\x0f\x44\x61tasetSettings\x12\x1a\n\x12images_per_trigger\x18\x01 \x01(\x03\x12\x10\n\x08ntrigger\x18\x02 \x01(\x03\x12:\n\x11\x66pga_pixel_output\x18\x03 \x01(\x0e\x32\x1f.JFJochProtoBuf.FPGAPixelOutput\x12\x16\n\x0e\x66pga_summation\x18\x04 \x01(\x03\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\x00\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\x42\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\"\xdf\x05\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\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=9042 - _COMPRESSION._serialized_end=9126 - _DETECTORTYPE._serialized_start=9128 - _DETECTORTYPE._serialized_end=9167 - _DETECTORMODE._serialized_start=9169 - _DETECTORMODE._serialized_end=9259 - _FPGAFIFOSTATUSENUM._serialized_start=9261 - _FPGAFIFOSTATUSENUM._serialized_end=9315 - _STATE._serialized_start=9317 - _STATE._serialized_end=9411 - _FPGAPIXELOUTPUT._serialized_start=9413 - _FPGAPIXELOUTPUT._serialized_end=9486 - _PLOTTYPE._serialized_start=9488 - _PLOTTYPE._serialized_end=9611 + _COMPRESSION._serialized_start=8850 + _COMPRESSION._serialized_end=8934 + _DETECTORTYPE._serialized_start=8936 + _DETECTORTYPE._serialized_end=8975 + _DETECTORMODE._serialized_start=8977 + _DETECTORMODE._serialized_end=9067 + _FPGAFIFOSTATUSENUM._serialized_start=9069 + _FPGAFIFOSTATUSENUM._serialized_end=9123 + _STATE._serialized_start=9125 + _STATE._serialized_end=9219 + _FPGAPIXELOUTPUT._serialized_start=9221 + _FPGAPIXELOUTPUT._serialized_end=9294 + _PLOTTYPE._serialized_start=9296 + _PLOTTYPE._serialized_end=9419 _EMPTY._serialized_start=32 _EMPTY._serialized_end=39 _UNITCELL._serialized_start=41 @@ -44,98 +44,96 @@ if _descriptor._USE_C_DESCRIPTORS == False: _ROTATIONSETTINGS._serialized_end=297 _PLOT._serialized_start=299 _PLOT._serialized_end=327 - _ROIRECTANGLE._serialized_start=329 - _ROIRECTANGLE._serialized_end=398 - _DATASETSETTINGS._serialized_start=401 - _DATASETSETTINGS._serialized_end=1035 - _DETECTORSETTINGS._serialized_start=1038 - _DETECTORSETTINGS._serialized_end=1448 - _DETECTORMODULEGEOMETRY._serialized_start=1450 - _DETECTORMODULEGEOMETRY._serialized_end=1548 - _DETECTORGEOMETRY._serialized_start=1550 - _DETECTORGEOMETRY._serialized_end=1672 - _DETECTOR._serialized_start=1675 - _DETECTOR._serialized_end=1897 - _INTERNALSETTINGS._serialized_start=1900 - _INTERNALSETTINGS._serialized_end=2707 - _JUNGFRAUJOCHSETTINGS._serialized_start=2709 - _JUNGFRAUJOCHSETTINGS._serialized_end=2833 - _JFPEDESTAL._serialized_start=2835 - _JFPEDESTAL._serialized_end=2865 - _JFGAINCALIBRATION._serialized_start=2867 - _JFGAINCALIBRATION._serialized_end=2912 - _JFCALIBRATION._serialized_start=2915 - _JFCALIBRATION._serialized_end=3093 - _JFCALIBRATIONSTATISTICS._serialized_start=3095 - _JFCALIBRATIONSTATISTICS._serialized_end=3181 - _ACQUISITIONDEVICESTATISTICS._serialized_start=3184 - _ACQUISITIONDEVICESTATISTICS._serialized_end=3457 - _RECEIVERINPUT._serialized_start=3460 - _RECEIVERINPUT._serialized_end=3596 - _RECEIVEROUTPUT._serialized_start=3599 - _RECEIVEROUTPUT._serialized_end=4069 - _RECEIVERNETWORKCONFIGDEVICE._serialized_start=4071 - _RECEIVERNETWORKCONFIGDEVICE._serialized_end=4155 - _RECEIVERNETWORKCONFIG._serialized_start=4157 - _RECEIVERNETWORKCONFIG._serialized_end=4241 - _RECEIVERSTATUS._serialized_start=4244 - _RECEIVERSTATUS._serialized_end=4447 - _PLOTREQUEST._serialized_start=4449 - _PLOTREQUEST._serialized_end=4519 - _RADIALINTEGRATIONPROFILE._serialized_start=4521 - _RADIALINTEGRATIONPROFILE._serialized_end=4598 - _RADIALINTEGRATIONPROFILES._serialized_start=4600 - _RADIALINTEGRATIONPROFILES._serialized_end=4687 - _WRITERINPUT._serialized_start=4689 - _WRITERINPUT._serialized_end=4751 - _DATAFILESTATISTICS._serialized_start=4753 - _DATAFILESTATISTICS._serialized_end=4804 - _WRITEROUTPUT._serialized_start=4807 - _WRITEROUTPUT._serialized_end=4948 - _DETECTORMODULECONFIG._serialized_start=4951 - _DETECTORMODULECONFIG._serialized_end=5209 - _DETECTORCONFIG._serialized_start=5211 - _DETECTORCONFIG._serialized_end=5336 - _DETECTORINPUT._serialized_start=5339 - _DETECTORINPUT._serialized_end=5591 - _DETECTOROUTPUT._serialized_start=5593 - _DETECTOROUTPUT._serialized_end=5609 - _DETECTORSTATUS._serialized_start=5611 - _DETECTORSTATUS._serialized_end=5709 - _FPGAFIFOSTATUS._serialized_start=5711 - _FPGAFIFOSTATUS._serialized_end=5792 - _FPGASTATUS._serialized_start=5795 - _FPGASTATUS._serialized_end=6690 - _DATAPROCESSINGSETTINGS._serialized_start=6693 - _DATAPROCESSINGSETTINGS._serialized_end=7069 - _PREVIEWFRAMESPOT._serialized_start=7071 - _PREVIEWFRAMESPOT._serialized_end=7128 - _PREVIEWFRAME._serialized_start=7131 - _PREVIEWFRAME._serialized_end=7449 - _MODULESTATISTICS._serialized_start=7452 - _MODULESTATISTICS._serialized_end=7689 - _IMAGE._serialized_start=7691 - _IMAGE._serialized_end=7764 - _MASKTOLOAD._serialized_start=7766 - _MASKTOLOAD._serialized_end=7812 - _MEASUREMENTSTATISTICS._serialized_start=7815 - _MEASUREMENTSTATISTICS._serialized_end=8428 - _BROKERSTATUS._serialized_start=8431 - _BROKERSTATUS._serialized_end=8646 - _BROKERFULLSTATUS._serialized_start=8649 - _BROKERFULLSTATUS._serialized_end=8813 - _DETECTORLISTELEMENT._serialized_start=8815 - _DETECTORLISTELEMENT._serialized_end=8887 - _DETECTORLIST._serialized_start=8889 - _DETECTORLIST._serialized_end=9007 - _DETECTORSELECTION._serialized_start=9009 - _DETECTORSELECTION._serialized_end=9040 - _GRPC_JFJOCHRECEIVER._serialized_start=9614 - _GRPC_JFJOCHRECEIVER._serialized_end=10381 - _GRPC_JFJOCHWRITER._serialized_start=10384 - _GRPC_JFJOCHWRITER._serialized_end=10586 - _GRPC_JFJOCHDETECTOR._serialized_start=10589 - _GRPC_JFJOCHDETECTOR._serialized_end=10975 - _GRPC_JFJOCHBROKER._serialized_start=10978 - _GRPC_JFJOCHBROKER._serialized_end=12667 + _DATASETSETTINGS._serialized_start=330 + _DATASETSETTINGS._serialized_end=915 + _DETECTORSETTINGS._serialized_start=918 + _DETECTORSETTINGS._serialized_end=1328 + _DETECTORMODULEGEOMETRY._serialized_start=1330 + _DETECTORMODULEGEOMETRY._serialized_end=1428 + _DETECTORGEOMETRY._serialized_start=1430 + _DETECTORGEOMETRY._serialized_end=1552 + _DETECTOR._serialized_start=1555 + _DETECTOR._serialized_end=1777 + _INTERNALSETTINGS._serialized_start=1780 + _INTERNALSETTINGS._serialized_end=2515 + _JUNGFRAUJOCHSETTINGS._serialized_start=2517 + _JUNGFRAUJOCHSETTINGS._serialized_end=2641 + _JFPEDESTAL._serialized_start=2643 + _JFPEDESTAL._serialized_end=2673 + _JFGAINCALIBRATION._serialized_start=2675 + _JFGAINCALIBRATION._serialized_end=2720 + _JFCALIBRATION._serialized_start=2723 + _JFCALIBRATION._serialized_end=2901 + _JFCALIBRATIONSTATISTICS._serialized_start=2903 + _JFCALIBRATIONSTATISTICS._serialized_end=2989 + _ACQUISITIONDEVICESTATISTICS._serialized_start=2992 + _ACQUISITIONDEVICESTATISTICS._serialized_end=3265 + _RECEIVERINPUT._serialized_start=3268 + _RECEIVERINPUT._serialized_end=3404 + _RECEIVEROUTPUT._serialized_start=3407 + _RECEIVEROUTPUT._serialized_end=3877 + _RECEIVERNETWORKCONFIGDEVICE._serialized_start=3879 + _RECEIVERNETWORKCONFIGDEVICE._serialized_end=3963 + _RECEIVERNETWORKCONFIG._serialized_start=3965 + _RECEIVERNETWORKCONFIG._serialized_end=4049 + _RECEIVERSTATUS._serialized_start=4052 + _RECEIVERSTATUS._serialized_end=4255 + _PLOTREQUEST._serialized_start=4257 + _PLOTREQUEST._serialized_end=4327 + _RADIALINTEGRATIONPROFILE._serialized_start=4329 + _RADIALINTEGRATIONPROFILE._serialized_end=4406 + _RADIALINTEGRATIONPROFILES._serialized_start=4408 + _RADIALINTEGRATIONPROFILES._serialized_end=4495 + _WRITERINPUT._serialized_start=4497 + _WRITERINPUT._serialized_end=4559 + _DATAFILESTATISTICS._serialized_start=4561 + _DATAFILESTATISTICS._serialized_end=4612 + _WRITEROUTPUT._serialized_start=4615 + _WRITEROUTPUT._serialized_end=4756 + _DETECTORMODULECONFIG._serialized_start=4759 + _DETECTORMODULECONFIG._serialized_end=5017 + _DETECTORCONFIG._serialized_start=5019 + _DETECTORCONFIG._serialized_end=5144 + _DETECTORINPUT._serialized_start=5147 + _DETECTORINPUT._serialized_end=5399 + _DETECTOROUTPUT._serialized_start=5401 + _DETECTOROUTPUT._serialized_end=5417 + _DETECTORSTATUS._serialized_start=5419 + _DETECTORSTATUS._serialized_end=5517 + _FPGAFIFOSTATUS._serialized_start=5519 + _FPGAFIFOSTATUS._serialized_end=5600 + _FPGASTATUS._serialized_start=5603 + _FPGASTATUS._serialized_end=6498 + _DATAPROCESSINGSETTINGS._serialized_start=6501 + _DATAPROCESSINGSETTINGS._serialized_end=6877 + _PREVIEWFRAMESPOT._serialized_start=6879 + _PREVIEWFRAMESPOT._serialized_end=6936 + _PREVIEWFRAME._serialized_start=6939 + _PREVIEWFRAME._serialized_end=7257 + _MODULESTATISTICS._serialized_start=7260 + _MODULESTATISTICS._serialized_end=7497 + _IMAGE._serialized_start=7499 + _IMAGE._serialized_end=7572 + _MASKTOLOAD._serialized_start=7574 + _MASKTOLOAD._serialized_end=7620 + _MEASUREMENTSTATISTICS._serialized_start=7623 + _MEASUREMENTSTATISTICS._serialized_end=8236 + _BROKERSTATUS._serialized_start=8239 + _BROKERSTATUS._serialized_end=8454 + _BROKERFULLSTATUS._serialized_start=8457 + _BROKERFULLSTATUS._serialized_end=8621 + _DETECTORLISTELEMENT._serialized_start=8623 + _DETECTORLISTELEMENT._serialized_end=8695 + _DETECTORLIST._serialized_start=8697 + _DETECTORLIST._serialized_end=8815 + _DETECTORSELECTION._serialized_start=8817 + _DETECTORSELECTION._serialized_end=8848 + _GRPC_JFJOCHRECEIVER._serialized_start=9422 + _GRPC_JFJOCHRECEIVER._serialized_end=10189 + _GRPC_JFJOCHWRITER._serialized_start=10192 + _GRPC_JFJOCHWRITER._serialized_end=10394 + _GRPC_JFJOCHDETECTOR._serialized_start=10397 + _GRPC_JFJOCHDETECTOR._serialized_end=10783 + _GRPC_JFJOCHBROKER._serialized_start=10786 + _GRPC_JFJOCHBROKER._serialized_end=12475 # @@protoc_insertion_point(module_scope) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a0976fd5..3a03a589 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -25,7 +25,7 @@ ADD_EXECUTABLE(CatchTest RadialIntegrationTest.cpp StatusVectorTest.cpp ProcessRawPacketTest.cpp CBORTest.cpp ../tests/stream2.h ../tests/stream2.c - JFConversionTest.cpp DetectorGeometryTest.cpp JFJochBrokerParserTest.cpp DetectorSetupTest.cpp DiffractionGeometryTest.cpp ROIFilterTest.cpp + JFConversionTest.cpp DetectorGeometryTest.cpp JFJochBrokerParserTest.cpp DetectorSetupTest.cpp DiffractionGeometryTest.cpp FPGAHLSBitshuffleTest.cpp FPGASpotFindingUnitTest.cpp FPGAAddMultipixelTest.cpp) diff --git a/tests/FrameTransformationTest.cpp b/tests/FrameTransformationTest.cpp index f9c072b4..22e2921d 100644 --- a/tests/FrameTransformationTest.cpp +++ b/tests/FrameTransformationTest.cpp @@ -165,62 +165,6 @@ TEST_CASE("FrameTransformation_Converted_bshuf_lz4" ,"") { REQUIRE(input_1[(511+512)*1024 + 800] == output[CONVERTED_MODULE_SIZE * (nmodules - 2) + 1030 + 800 + 6]); } - -TEST_CASE("FrameTransformation_Converted_bshuf_lz4_roi" ,"") { - const uint16_t nmodules = 4; - const uint16_t ndatastreams = 2; - DiffractionExperiment experiment(DetectorGeometry(ndatastreams * nmodules, 2)); - experiment.DataStreams(ndatastreams); - - experiment.Mode(DetectorMode::Conversion).Compression(JFJochProtoBuf::BSHUF_LZ4); - - FrameTransformation transformation(experiment); - - ROIFilter filter(experiment.GetXPixelsNum(), experiment.GetYPixelsNum(), 0); - filter.SetRectangle(100, 20, 10, 10); - - std::vector input_0(nmodules*RAW_MODULE_SIZE); - for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++) - input_0[i] = 50; - - std::vector input_1(nmodules*RAW_MODULE_SIZE); - for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++) - input_1[i] = 50; - - 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.ApplyROI(filter); - REQUIRE_NOTHROW(compressed_size = transformation.SaveCompressedImage(output_compressed.data())); - output_compressed.resize(compressed_size); - - 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()); - - std::vector output; - REQUIRE_NOTHROW(JFJochDecompress(output, experiment.GetCompressionAlgorithmEnum(), output_compressed, - experiment.GetPixelsNum())); - - size_t diff = 0; - for (int y = 0; y < experiment.GetYPixelsNum(); y++) { - for (int x = 0; x < experiment.GetXPixelsNum(); x++) { - if ((y >= 20 ) && (y < 30) && (x >= 100) && (x < 110)) { - if (output[y * experiment.GetXPixelsNum() + x] != 50) - diff++; - } else { - if (output[y * experiment.GetXPixelsNum() + x] != INT16_MIN) - diff++; - } - } - } - REQUIRE(diff == 0); -} - TEST_CASE("FrameTransformation_Converted_bshuf_zstd" ,"") { const uint16_t nmodules = 4; const uint16_t ndatastreams = 2; diff --git a/tests/ROIFilterTest.cpp b/tests/ROIFilterTest.cpp deleted file mode 100644 index 3ad620b9..00000000 --- a/tests/ROIFilterTest.cpp +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (2019-2023) Paul Scherrer Institute - -#include - -#include "../common/ROIFilter.h" -#include "../common/DiffractionExperiment.h" - -TEST_CASE("ROIFilter") { - int32_t width = 4; - int32_t height = 5; - std::vector v(width * height, 1); - - ROIFilter filter(width, height); - - filter.SetRectangle(1, 1, 2, 3); - - filter.Apply(v, (uint32_t) 55); - - REQUIRE(v[0] == 55); - REQUIRE(v[2] == 55); - - REQUIRE(v[width * 1 + 0] == 55); - REQUIRE(v[width * 1 + 1] == 1); - REQUIRE(v[width * 1 + 2] == 1); - REQUIRE(v[width * 1 + 3] == 55); - - REQUIRE(v[width * 3 + 2] == 1); - REQUIRE(v[width * 4 + 2] == 55); -} - -TEST_CASE("ROIFilter_out_of_bounds") { - int32_t width = 4; - int32_t height = 5; - std::vector v(width * height, 1); - - ROIFilter filter(width, height); - - filter.SetRectangle(1, 5, 2, 3); - - filter.SetRectangle(4, 1, 2, 3); - - filter.Apply(v, (uint32_t) 55); - size_t diff = 0; - for (auto &i: v) { - if (i != 55) - diff++; - } - REQUIRE(diff == 0); -} - -TEST_CASE("ROIFilter_negative_out_of_bounds") { - int32_t width = 4; - int32_t height = 5; - std::vector v(width * height, 1); - - ROIFilter filter(width, height); - - filter.SetRectangle(1, -9, 2, 3); - - filter.SetRectangle(-3, 1, 2, 3); - - filter.Apply(v, (uint32_t) 55); - size_t diff = 0; - for (auto &i: v) { - if (i != 55) - diff++; - } - REQUIRE(diff == 0); -} - -TEST_CASE("ROIFilter_on_bounds") { - int32_t width = 4; - int32_t height = 5; - std::vector v(width * height, 1); - - ROIFilter filter(width, height); - - filter.SetRectangle(2, 3, 10, 10); - - filter.Apply(v, (uint32_t) 55); - - REQUIRE(v[1 * width + 0] == 55); - REQUIRE(v[1 * width + 1] == 55); - REQUIRE(v[1 * width + 2] == 55); - REQUIRE(v[1 * width + 3] == 55); - - REQUIRE(v[2 * width + 0] == 55); - REQUIRE(v[2 * width + 1] == 55); - REQUIRE(v[2 * width + 2] == 55); - REQUIRE(v[2 * width + 3] == 55); - - REQUIRE(v[3 * width + 0] == 55); - REQUIRE(v[3 * width + 1] == 55); - REQUIRE(v[3 * width + 2] == 1); - REQUIRE(v[3 * width + 3] == 1); - - REQUIRE(v[4 * width + 0] == 55); - REQUIRE(v[4 * width + 1] == 55); - REQUIRE(v[4 * width + 2] == 1); - REQUIRE(v[4 * width + 3] == 1); -} - -TEST_CASE("ROIFilter_negative_start") { - int32_t width = 4; - int32_t height = 5; - std::vector v(width * height, 1); - - ROIFilter filter(width, height); - - filter.SetRectangle(-1, -1, 3, 4); - - filter.Apply(v, (uint32_t) 55); - - CHECK(v[0 * width + 0] == 1); - CHECK(v[0 * width + 1] == 1); - CHECK(v[0 * width + 2] == 55); - CHECK(v[0 * width + 3] == 55); - - CHECK(v[1 * width + 0] == 1); - CHECK(v[1 * width + 1] == 1); - CHECK(v[1 * width + 2] == 55); - CHECK(v[1 * width + 3] == 55); - - CHECK(v[2 * width + 0] == 1); - CHECK(v[2 * width + 1] == 1); - CHECK(v[2 * width + 2] == 55); - CHECK(v[2 * width + 3] == 55); - - CHECK(v[3 * width + 0] == 55); - CHECK(v[3 * width + 1] == 55); - CHECK(v[3 * width + 2] == 55); - CHECK(v[3 * width + 3] == 55); - - CHECK(v[4 * width + 0] == 55); - CHECK(v[4 * width + 1] == 55); - CHECK(v[4 * width + 2] == 55); - CHECK(v[4 * width + 3] == 55); -} - -TEST_CASE("ROIFilter_DiffractionExperiment_ApplyROI") { - DiffractionExperiment x(DetectorGeometry(1)); - - REQUIRE(!x.GetApplyROI()); - x.ApplyROI(true); - REQUIRE(x.GetApplyROI()); - -} - -TEST_CASE("ROIFilter_DiffractionExperiment") { - DiffractionExperiment x(DetectorGeometry(1)); - x.Mode(DetectorMode::Raw); - - x.AddROIRectangle(0, 0, 1024, 1024); - x.ClearROI(); - x.AddROIRectangle(0, 0, 256, 256); - x.AddROIRectangle(768, 0, 256, 256); - - std::vector v(x.GetPixelsNum(), 1); - - ROIFilter filter(x.GetXPixelsNum(), x.GetYPixelsNum()); - x.SetupROIFilter(filter); - filter.Apply(v, (uint32_t) 55); - - CHECK(v[ 0*1024 + 0] == 1); - CHECK(v[ 0*1024 + 255] == 1); - CHECK(v[ 0*1024 + 256] == 55); - CHECK(v[ 0*1024 + 767] == 55); - CHECK(v[ 0*1024 + 768] == 1); - CHECK(v[128*1024 + 255] == 1); - CHECK(v[128*1024 + 256] == 55); - CHECK(v[255*1024 + 255] == 1); - CHECK(v[256*1024 + 255] == 55); - CHECK(v[255*1024 + 767] == 55); - CHECK(v[255*1024 + 768] == 1); -} \ No newline at end of file diff --git a/tools/DataAnalysisPerfTest.cpp b/tools/DataAnalysisPerfTest.cpp index 8dc39689..7987dfd6 100644 --- a/tools/DataAnalysisPerfTest.cpp +++ b/tools/DataAnalysisPerfTest.cpp @@ -11,7 +11,6 @@ #include "../image_analysis/IndexerWrapper.h" #include "../common/Logger.h" -#include "../image_analysis/PredictSpotsOnDetector.h" #define make_unit_cell(a1,a2,a3,a4,a5,a6) UnitCell{.a = a1, .b = a2, .c = a3, .alpha = a4, .beta = a5, .gamma = a6} @@ -47,44 +46,6 @@ auto TestAll(const DiffractionExperiment &experiment, const JFJochProtoBuf::Data return strstream.str(); } -auto TestAllWithROI(const DiffractionExperiment &experiment, const JFJochProtoBuf::DataProcessingSettings &settings, - GPUImageAnalysis &spot_finder, int16_t* image, size_t nimages) { - IndexerWrapper indexer; - indexer.Setup(experiment.GetUnitCell()); - - spot_finder.SetInputBuffer(image); - - std::vector roi_image(experiment.GetPixelsNum()); - - auto start_time = std::chrono::system_clock::now(); - for (int i = 0; i < nimages; i++) { - ROIFilter filter(experiment.GetXPixelsNum(), experiment.GetYPixelsNum()); - - std::vector spots; - std::vector result; - spot_finder.LoadDataToGPU(); - spot_finder.RunSpotFinder(settings); - spot_finder.GetSpotFinderResults(experiment, settings, spots); - std::vector recip; - for (const auto& s: spots) - recip.emplace_back(s.ReciprocalCoord(experiment)); - auto indexer_ret = indexer.Run(recip); - if (!indexer_ret.empty()) { - PredictSpotsOnDetector(filter, experiment, indexer_ret[0].l); - filter.Apply(roi_image, INT16_MIN); - } - } - - auto end_time = std::chrono::system_clock::now(); - auto elapsed = std::chrono::duration_cast(end_time - start_time); - - std::ostringstream strstream; - logger.Info("{:30s} {:8.1f} ms/image", "Full+ROI", - elapsed.count() / (1000.0 * (double) nimages)); - - return strstream.str(); -} - void TestIndexing() { constexpr const int nexec = 5; @@ -252,6 +213,5 @@ int main(int argc, char **argv) { if (GPUImageAnalysis::GPUPresent()) { GPUImageAnalysis local_peakfinder_gpu(x.GetXPixelsNum(), x.GetYPixelsNum()); TestAll(x, settings, local_peakfinder_gpu,image_conv.data(), nimages); - TestAllWithROI(x, settings, local_peakfinder_gpu,image_conv.data(), nimages); } }