JFJochStateMachine: Reduce reliance on ProtoBuf (work in progress)

This commit is contained in:
2023-11-16 13:57:15 +01:00
parent c5f6119455
commit f7069ebf5e
4 changed files with 139 additions and 139 deletions
+14 -108
View File
@@ -4,99 +4,6 @@
#include "JFJochStateMachine.h"
inline DataProcessingSettings Convert(const JFJochProtoBuf::DataProcessingSettings &input) {
DataProcessingSettings ret;
ret.signal_to_noise_threshold = input.signal_to_noise_threshold();
ret.photon_count_threshold = input.photon_count_threshold();
ret.min_pix_per_spot = input.min_pix_per_spot();
ret.max_pix_per_spot = input.max_pix_per_spot();
ret.local_bkg_size = input.local_bkg_size();
ret.high_resolution_limit = input.high_resolution_limit();
ret.low_resolution_limit = input.low_resolution_limit();
ret.bkg_estimate_low_q = input.bkg_estimate_low_q();
ret.bkg_estimate_high_q = input.bkg_estimate_high_q();
ret.preview_indexed_only = input.preview_indexed_only();
return ret;
}
inline JFJochProtoBuf::DataProcessingSettings Convert(const DataProcessingSettings &input) {
JFJochProtoBuf::DataProcessingSettings ret;
ret.set_signal_to_noise_threshold(input.signal_to_noise_threshold);
ret.set_photon_count_threshold(input.photon_count_threshold);
ret.set_min_pix_per_spot(input.min_pix_per_spot);
ret.set_max_pix_per_spot(input.max_pix_per_spot);
ret.set_local_bkg_size(input.local_bkg_size);
ret.set_high_resolution_limit(input.high_resolution_limit);
ret.set_low_resolution_limit(input.low_resolution_limit);
ret.set_bkg_estimate_low_q(input.bkg_estimate_low_q);
ret.set_bkg_estimate_high_q(input.bkg_estimate_high_q);
ret.set_preview_indexed_only(input.preview_indexed_only);
return ret;
}
inline PlotRequest Convert(const JFJochProtoBuf::PlotRequest& request) {
PlotRequest ret;
ret.binning = request.binning();
switch (request.type()) {
case JFJochProtoBuf::BKG_ESTIMATE:
ret.type = PlotType::BkgEstimate;
break;
case JFJochProtoBuf::RAD_INT:
ret.type = PlotType::RadInt;
break;
case JFJochProtoBuf::SPOT_COUNT:
ret.type = PlotType::SpotCount;
break;
case JFJochProtoBuf::INDEXING_RATE:
ret.type = PlotType::IndexingRate;
break;
case JFJochProtoBuf::INDEXING_RATE_PER_FILE:
ret.type = PlotType::IndexingRatePerFile;
break;
default:
case JFJochProtoBuf::ADU_HISTOGRAM:
ret.type = PlotType::ADUHistorgram;
break;
}
return ret;
}
inline JFJochProtoBuf::Plot Convert(const Plot& input) {
JFJochProtoBuf::Plot output;
if (!input.x.empty())
*output.mutable_x() = {input.x.begin(), input.x.end()};
if (!input.y.empty())
*output.mutable_y() = {input.y.begin(), input.y.end()};
return output;
}
inline JFJochProtoBuf::RadialIntegrationProfiles Convert(const RadialIntegrationProfiles& input) {
JFJochProtoBuf::RadialIntegrationProfiles output;
for (const auto &i: input.profiles) {
auto tmp = output.add_profiles();
tmp->set_title(i.title);
*tmp->mutable_plot() = Convert(i.plot);
}
return output;
}
inline JFJochProtoBuf::JFCalibrationStatistics Convert(const std::vector<JFCalibrationModuleStatistics>& input) {
JFJochProtoBuf::JFCalibrationStatistics output;
for (const auto& i: input) {
auto ret = output.add_module_statistics();
ret->set_module_number(i.module_number);
ret->set_masked_pixels(i.masked_pixels);
ret->set_storage_cell_number(i.storage_cell_number);
ret->set_gain_g0_mean(i.gain_g0_mean);
ret->set_gain_g1_mean(i.gain_g1_mean);
ret->set_gain_g2_mean(i.gain_g2_mean);
ret->set_pedestal_g0_mean(i.pedestal_g0_mean);
ret->set_pedestal_g1_mean(i.pedestal_g1_mean);
ret->set_pedestal_g2_mean(i.pedestal_g2_mean);
}
return output;
}
void LoadDatasetSettings(DiffractionExperiment& experiment, const JFJochProtoBuf::DatasetSettings &settings) {
// Save DatasetSettings - if something goes wrong, restore old settings
auto tmp = experiment;
@@ -211,14 +118,14 @@ void JFJochStateMachine::ImportPedestalG0(const JFJochReceiverOutput &receiver_o
calibration->Pedestal(module, 0, s)
= receiver_output.pedestal_result[module + s * experiment.GetModulesNum()];
}
SetCalibrationStatistics(Convert(calibration->GetModuleStatistics()));
SetCalibrationStatistics(calibration->GetModuleStatistics());
}
void JFJochStateMachine::ImportPedestal(const JFJochReceiverOutput &receiver_output, size_t gain_level,
size_t storage_cell) {
for (int i = 0; i < receiver_output.pedestal_result.size(); i++)
calibration->Pedestal(i, gain_level, storage_cell) = receiver_output.pedestal_result[i];
SetCalibrationStatistics(Convert(calibration->GetModuleStatistics()));
SetCalibrationStatistics(calibration->GetModuleStatistics());
}
void JFJochStateMachine::TakePedestalInternalAll(std::unique_lock<std::mutex> &ul) {
@@ -543,12 +450,12 @@ void JFJochStateMachine::LoadMask(const std::vector<uint32_t> &vec, uint32_t bit
calibration->LoadMask(experiment, vec, bit);
}
JFJochProtoBuf::JFCalibrationStatistics JFJochStateMachine::GetCalibrationStatistics() const {
std::vector<JFCalibrationModuleStatistics> JFJochStateMachine::GetCalibrationStatistics() const {
std::unique_lock<std::mutex> ul(calibration_statistics_mutex);
return calibration_statistics;
}
void JFJochStateMachine::SetCalibrationStatistics(const JFJochProtoBuf::JFCalibrationStatistics &input) {
void JFJochStateMachine::SetCalibrationStatistics(const std::vector<JFCalibrationModuleStatistics> &input) {
std::unique_lock<std::mutex> ul(calibration_statistics_mutex);
calibration_statistics = input;
}
@@ -687,25 +594,24 @@ JFJochProtoBuf::BrokerStatus JFJochStateMachine::GetStatus() const {
return ret;
}
JFJochProtoBuf::Plot JFJochStateMachine::GetPlots(const JFJochProtoBuf::PlotRequest &request) const {
return Convert(services.GetPlots(Convert(request)));
Plot JFJochStateMachine::GetPlots(const PlotRequest &request) const {
return services.GetPlots(request);
}
JFJochProtoBuf::RadialIntegrationProfiles JFJochStateMachine::GetRadialIntegrationProfiles() const {
return Convert(services.GetRadialIntegrationProfiles());
RadialIntegrationProfiles JFJochStateMachine::GetRadialIntegrationProfiles() const {
return services.GetRadialIntegrationProfiles();
}
void JFJochStateMachine::SetDataProcessingSettings(const JFJochProtoBuf::DataProcessingSettings &settings) {
void JFJochStateMachine::SetDataProcessingSettings(const DataProcessingSettings &settings) {
std::unique_lock<std::mutex> ul(data_processing_settings_mutex);
auto tmp = Convert(settings);
DiffractionExperiment::CheckDataProcessingSettings(tmp);
data_processing_settings = tmp;
services.SetDataProcessingSettings(tmp);
DiffractionExperiment::CheckDataProcessingSettings(settings);
data_processing_settings = settings;
services.SetDataProcessingSettings(settings);
}
JFJochProtoBuf::DataProcessingSettings JFJochStateMachine::GetDataProcessingSettings() const {
DataProcessingSettings JFJochStateMachine::GetDataProcessingSettings() const {
std::unique_lock<std::mutex> ul(data_processing_settings_mutex);
return Convert(data_processing_settings);
return data_processing_settings;
}
DataProcessingSettings JFJochStateMachine::GetDataAnalysisSettings() const {