46 lines
1.7 KiB
C++
46 lines
1.7 KiB
C++
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#include "ScanResultGenerator.h"
|
|
|
|
ScanResultGenerator::ScanResultGenerator(const DiffractionExperiment &experiment) {
|
|
grid_scan = experiment.GetGridScan();
|
|
if (grid_scan)
|
|
v.resize(grid_scan->GetNElem());
|
|
else
|
|
v.resize(experiment.GetImageNum());
|
|
file_prefix = experiment.GetFilePrefix();
|
|
}
|
|
|
|
void ScanResultGenerator::Add(const DataMessage &message) {
|
|
std::unique_lock ul(m);
|
|
|
|
int64_t image_number = message.number;
|
|
if (grid_scan)
|
|
image_number = grid_scan->Rearrange(image_number);
|
|
|
|
if (image_number < v.size()) {
|
|
v[image_number].number = message.number;
|
|
v[image_number].pixel_sum = message.pixel_sum;
|
|
v[image_number].collection_efficiency = message.image_collection_efficiency.value_or(1.0);
|
|
v[image_number].bkg = message.bkg_estimate;
|
|
v[image_number].spot_count = message.spots.size();
|
|
v[image_number].indexing_solution = message.indexing_result;
|
|
v[image_number].mosaicity = message.mosaicity;
|
|
v[image_number].b_factor = message.b_factor;
|
|
v[image_number].uc = message.indexing_unit_cell;
|
|
v[image_number].xfel_pulse_id = message.xfel_pulse_id;
|
|
v[image_number].err_pixels = message.error_pixel_count;
|
|
v[image_number].max_viable_pixel = message.max_viable_pixel_value;
|
|
v[image_number].sat_pixels = message.saturated_pixel_count;
|
|
}
|
|
}
|
|
|
|
ScanResult ScanResultGenerator::GetResult() const {
|
|
std::unique_lock ul(m);
|
|
ScanResult ret;
|
|
ret.file_prefix = file_prefix;
|
|
ret.images = v;
|
|
return ret;
|
|
}
|