v1.0.0-rc.34
This commit is contained in:
@@ -15,7 +15,7 @@ inline uint64_t convert_pulse_id(double pulse_id) {
|
||||
}
|
||||
|
||||
ImageMetadata::ImageMetadata(const DiffractionExperiment &experiment)
|
||||
: pulsed_source(experiment.IsPulsedSource()) {
|
||||
: pulsed_source(experiment.IsPulsedSource()), geom(experiment.GetDetectorSetup().GetGeometry()) {
|
||||
roi_map_name = experiment.ROI().GetROINameMap();
|
||||
for (const auto &[x,y]: roi_map_name)
|
||||
rois[x] = ROIMessage{.max_count = INT64_MIN};
|
||||
@@ -24,6 +24,8 @@ ImageMetadata::ImageMetadata(const DiffractionExperiment &experiment)
|
||||
void ImageMetadata::Process(const DeviceOutput *output) {
|
||||
std::unique_lock ul(m);
|
||||
|
||||
auto moduleNum = output->module_statistics.module_number;
|
||||
|
||||
uint64_t module_pulse_id = convert_pulse_id(output->module_statistics.pulse_id);
|
||||
if (!first_module_loaded) {
|
||||
xfel_pulse_id = module_pulse_id;
|
||||
@@ -46,17 +48,36 @@ void ImageMetadata::Process(const DeviceOutput *output) {
|
||||
error_pixels += output->module_statistics.err_pixels;
|
||||
strong_pixels += output->spot_finding_result.strong_pixel_count;
|
||||
packets_collected += output->module_statistics.packet_count;
|
||||
image_sum += output->module_statistics.pixel_sum;
|
||||
|
||||
if (output->module_statistics.max_value > max_value)
|
||||
max_value = output->module_statistics.max_value;
|
||||
|
||||
if (output->module_statistics.load_calibration_destination < min_value)
|
||||
min_value = output->module_statistics.load_calibration_destination;
|
||||
if (output->module_statistics.min_value < min_value)
|
||||
min_value = output->module_statistics.min_value;
|
||||
|
||||
for (const auto &[key, val]: roi_map_name) {
|
||||
rois[key].sum += output->roi_counts[val].sum;
|
||||
rois[key].sum_square += output->roi_counts[val].sum2;
|
||||
rois[key].pixels += output->roi_counts[val].good_pixels;
|
||||
|
||||
int64_t x_weighted = output->roi_counts[val].sum_x_weighted
|
||||
* static_cast<int64_t>(geom.GetFastDirection(moduleNum).x)
|
||||
+ output->roi_counts[val].sum_y_weighted
|
||||
* static_cast<int64_t>(geom.GetSlowDirection(moduleNum).x)
|
||||
+ geom.GetX0(moduleNum)
|
||||
* output->roi_counts[val].sum;
|
||||
|
||||
int64_t y_weighted = output->roi_counts[val].sum_x_weighted
|
||||
* static_cast<int64_t>(geom.GetFastDirection(moduleNum).y)
|
||||
+ output->roi_counts[val].sum_y_weighted
|
||||
* static_cast<int64_t>(geom.GetSlowDirection(moduleNum).y)
|
||||
+ geom.GetY0(moduleNum)
|
||||
* output->roi_counts[val].sum;
|
||||
|
||||
rois[key].x_weighted += x_weighted;
|
||||
rois[key].y_weighted += y_weighted;
|
||||
|
||||
if (output->roi_counts[val].max_value > rois[key].max_count)
|
||||
rois[key].max_count = output->roi_counts[val].max_value;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user