// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_INDEXER_H #define JFJOCH_INDEXER_H #include #include "../../common/CrystalLattice.h" #include "../../common/DiffractionExperiment.h" #include "../../common/JFJochMessages.h" #include "../../common/SpotToSave.h" class Indexer { protected: int64_t viable_cell_min_spots = 9; float indexing_tolerance = 0.1; float dist_tolerance_vs_reference = 0.05; bool index_ice_rings = true; DiffractionGeometry geom; std::optional reference_unit_cell; virtual void SetupUnitCell(const std::optional& cell) = 0; public: virtual ~Indexer() = default; void Setup(const DiffractionExperiment& experiment); virtual std::vector Run(const std::vector &coord, size_t nspots) = 0; std::optional Run(DataMessage &message); }; #endif //JFJOCH_INDEXER_H