// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_INDEXANDREFINE_H #define JFJOCH_INDEXANDREFINE_H #include #include #include "../common/DiffractionSpot.h" #include "../common/DiffractionExperiment.h" #include "bragg_integration/BraggPrediction.h" #include "indexing/IndexerThreadPool.h" #include "lattice_search/LatticeSearch.h" #include "RotationIndexer.h" class IndexAndRefine { const bool index_ice_rings; const DiffractionExperiment& experiment; const DiffractionGeometry geom_; std::optional indexed_lattice; std::optional axis_; IndexerThreadPool *indexer_; std::unique_ptr rotation_indexer; public: IndexAndRefine(const DiffractionExperiment &x, IndexerThreadPool *indexer); void SetLattice(const CrystalLattice &lattice); void ProcessImage(DataMessage &msg, const SpotFindingSettings &settings, const CompressedImage &image, BraggPrediction &prediction); std::optional Finalize(); }; #endif //JFJOCH_INDEXANDREFINE_H