// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_BRAGGPREDICTION_H #define JFJOCH_BRAGGPREDICTION_H #include #include "../../common/CrystalLattice.h" #include "../../common/DiffractionExperiment.h" #include "../../common/Reflection.h" struct BraggPredictionSettings { float high_res_A = 1.5; float ewald_dist_cutoff = 0.0005; int max_hkl = 100; char centering = 'P'; }; class BraggPrediction { protected: const int max_reflections; std::vector reflections; public: explicit BraggPrediction(int max_reflections = 10000); virtual ~BraggPrediction() = default; virtual int Calc(const DiffractionExperiment &experiment, const CrystalLattice &lattice, const BraggPredictionSettings &settings); const std::vector &GetReflections() const; }; std::vector CalcBraggPredictions(const DiffractionExperiment &experiment, const CrystalLattice &lattice, float high_res_A = 1.5, float ewald_dist_cutoff = 0.0005, int max_hkl = 100, int max_reflections = 10000); #endif //JFJOCH_BRAGGPREDICTION_H