DiffractionExperiment: Remove 2x2 binning to simplify transformation code
This commit is contained in:
1 parent
e6442f6384
commit
fcd7612656
15 files changed
+134
-617
No files matched your search
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 <class Td> 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>((int32_t *) precompression_buffer.data(),
|
||||
(int32_t *) full_image_buffer.data(),
|
||||
experiment.GetXPixelsNumFullImage(),
|
||||
experiment.GetYPixelsNumFullImage(),
|
||||
static_cast<int32_t>(experiment.GetUnderflow()),
|
||||
static_cast<int32_t>(experiment.GetOverflow()));
|
||||
} else {
|
||||
if (binning_2x2)
|
||||
Bin2x2_sum<int16_t>((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_t>(INT16_MIN),
|
||||
static_cast<int16_t>(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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,20 +14,13 @@ class FrameTransformation {
|
||||
|
||||
std::vector<std::vector<int32_t> > summation_buffer;
|
||||
std::vector<char> precompression_buffer;
|
||||
std::vector<int16_t> conversion_buffer;
|
||||
std::vector<int16_t> image16bit;
|
||||
|
||||
const size_t summation;
|
||||
const size_t pixel_depth;
|
||||
|
||||
std::vector<char> 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);
|
||||
|
||||
@@ -56,30 +56,13 @@ void RawToConvertedGeometryAdjustMultipixels(const DiffractionExperiment &experi
|
||||
if (min > 0) min = 0;
|
||||
Ts max = experiment.GetOverflow() - 1;
|
||||
|
||||
if (experiment.GetBinning2x2()) {
|
||||
std::vector<Ts> tmp(experiment.GetPixelsNumFullImage());
|
||||
for (size_t module_number = 0; module_number < experiment.GetModulesNum(); module_number++) {
|
||||
TransferModuleAdjustMultipixels<Ts, Ts>(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<Ts, Ts>(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<Ts, Ts>(destination,
|
||||
source + module_number * RAW_MODULE_SIZE,
|
||||
experiment.GetModuleSlowDirectionStep(module_number),
|
||||
min, max,
|
||||
experiment.GetModuleFastDirectionStep(module_number),
|
||||
experiment.GetPixel0OfModule(module_number));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -108,17 +108,9 @@ std::vector<uint32_t> JFCalibration::CalculateNexusMask(const DiffractionExperim
|
||||
auto mask_raw = CalculateMask(experiment, storage_cell);
|
||||
|
||||
if (experiment.GetDetectorMode() == DetectorMode::Conversion) {
|
||||
DiffractionExperiment x(experiment);
|
||||
x.Binning2x2(false);
|
||||
|
||||
std::vector<uint32_t> tmp(x.GetPixelsNum(), 1);
|
||||
RawToConvertedGeometry<uint32_t, uint32_t>(x, tmp.data(), mask_raw.data());
|
||||
if (experiment.GetBinning2x2()) {
|
||||
std::vector<uint32_t> tmp_binned(experiment.GetPixelsNum());
|
||||
Bin2x2_or(tmp_binned.data(), tmp.data(), x.GetXPixelsNum(), experiment.GetYPixelsNum());
|
||||
return tmp_binned;
|
||||
} else
|
||||
return tmp;
|
||||
std::vector<uint32_t> tmp(experiment.GetPixelsNum(), 1);
|
||||
RawToConvertedGeometry<uint32_t, uint32_t>(experiment, tmp.data(), mask_raw.data());
|
||||
return tmp;
|
||||
} else
|
||||
return mask_raw;
|
||||
}
|
||||
|
||||
+106
-106
@@ -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\x1Line truncated
|
||||
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\Line truncated
|
||||
|
||||
_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)
|
||||
@@ -568,10 +568,10 @@ float JFJochReceiver::GetIndexingRate() const {
|
||||
|
||||
float JFJochReceiver::GetProgress() const {
|
||||
if (experiment.GetImageNum() > 0)
|
||||
return static_cast<float>(max_image_number_sent) / static_cast<float>(experiment.GetImageNum()) * 100.0;
|
||||
return static_cast<float>(max_image_number_sent) / static_cast<float>(experiment.GetImageNum()) * 100.0f;
|
||||
else if (experiment.GetFrameNum() > 0)
|
||||
// Pedestal
|
||||
return static_cast<float>(max_image_number_sent) / static_cast<float>(experiment.GetFrameNum()) * 100.0;
|
||||
return static_cast<float>(max_image_number_sent) / static_cast<float>(experiment.GetFrameNum()) * 100.0f;
|
||||
else
|
||||
return 100.0;
|
||||
}
|
||||
|
||||
@@ -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<std::string> h = {"mx1", "mx2", "mx3"};
|
||||
DiffractionExperiment x(DetectorSetup(3, "X", h));
|
||||
|
||||
@@ -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<int16_t> dist;
|
||||
|
||||
std::vector<int16_t> 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<int16_t> input_1(nmodules*RAW_MODULE_SIZE);
|
||||
for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++)
|
||||
input_1[i] = 10;
|
||||
|
||||
std::vector<char> 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<int16_t> 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<int16_t> dist;
|
||||
|
||||
std::vector<int16_t> 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<int16_t> input_1(nmodules*RAW_MODULE_SIZE);
|
||||
for (int i = 0; i < nmodules*RAW_MODULE_SIZE; i++)
|
||||
input_1[i] = 10;
|
||||
|
||||
std::vector<char> 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<int32_t> 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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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<uint16_t> image(RAW_MODULE_SIZE);
|
||||
|
||||
std::vector<std::unique_ptr<AcquisitionDevice>> 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<AcquisitionDevice *> 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<JFJochProtoBuf::PreviewFrame>(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<JFJochProtoBuf::PreviewFrame>(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<char> 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");
|
||||
|
||||
|
||||
@@ -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<std::unique_ptr<AcquisitionDevice>> 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");
|
||||
|
||||
|
||||
Reference in new issue
Block a user