// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "ScalingSettings.h" ScalingSettings& ScalingSettings::SetPartialityModel(PartialityModel mode) { partiality_mode = mode; return *this; } ScalingSettings& ScalingSettings::RefineB(bool input) { refine_b = input; return *this; } ScalingSettings& ScalingSettings::MergeFriedel(bool input) { merge_friedel = input; return *this; } ScalingSettings& ScalingSettings::HighResolutionLimit_A(double limit) { if (limit <= 0.0) throw JFJochException(JFJochExceptionCategory::InputParameterBelowMin, "High resolution limit must be positive"); high_resolution_limit_A = limit; return *this; } bool ScalingSettings::GetRefineB() const { return refine_b; } bool ScalingSettings::GetMergeFriedel() const { return merge_friedel; } ScalingSettings &ScalingSettings::RefineRotationWedge(bool input) { refine_wedge = input; return *this; } bool ScalingSettings::GetRefineWedge() const { return refine_wedge; } std::optional ScalingSettings::GetPartialityModel() const { return partiality_mode; } std::optional ScalingSettings::GetHighResolutionLimit_A() const { return high_resolution_limit_A; } double ScalingSettings::GetMinB() const { return min_b; } double ScalingSettings::GetMaxB() const { return max_b; } double ScalingSettings::GetMinMosaicity() const { return 0.001; } double ScalingSettings::GetMaxMosaicity() const { return 1.0; } double ScalingSettings::GetMinWedge() const { return 0.001; } double ScalingSettings::GetMaxWedge() const { return 10.0; } double ScalingSettings::GetDefaultMosaicity() const { return 0.1; } ScalingSettings &ScalingSettings::RotationWedgeForScaling(std::optional input) { if (input) { // TODO: Use fmt if (input.value() < GetMinWedge() || input.value() > GetMaxWedge()) throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Wedge for scaling must be between " + std::to_string(GetMinWedge()) + " and " + std::to_string(GetMaxWedge())); } wedge_for_scaling = input; return *this; } std::optional ScalingSettings::GetRotationWedgeForScaling() const { return wedge_for_scaling; }