// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include class BraggIntegrationSettings { float r_1 = 4; float r_2 = 6; float r_3 = 8; float d_min_limit_A = 1.0; std::optional fixed_profile_radius; float minimum_sigma_in_regards_to_i = 0.02; // PixelRefine only: the measured (physical) tangential profile width is multiplied by // this for the integration template, so the aperture is generous (XDS-style ~6 sigma) // and tolerant of the centroid-floor scatter. Ignored by the classical integrator. float profile_multiplier = 6.0; public: BraggIntegrationSettings& R1(float input); BraggIntegrationSettings& R2(float input); BraggIntegrationSettings& R3(float input); BraggIntegrationSettings& DMinLimit_A(float input); BraggIntegrationSettings& FixedProfileRadius_recipA(std::optional input); BraggIntegrationSettings& ProfileMultiplier(float input); [[nodiscard]] float GetR1() const; [[nodiscard]] float GetR2() const; [[nodiscard]] float GetR3() const; [[nodiscard]] float GetProfileMultiplier() const; [[nodiscard]] std::optional GetFixedProfileRadius_recipA() const; [[nodiscard]] float GetDMinLimit_A() const; [[nodiscard]] float GetMinimumSigmaInRegardsToI() const; };