// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JUNGFRAUJOCH_INDEXERWRAPPER_H #define JUNGFRAUJOCH_INDEXERWRAPPER_H #include #include #include "../common/Coord.h" #include "CrystalLattice.h" #include "../common/Definitions.h" #include "../frame_serialize/JFJochMessages.h" #include "../common/DiffractionSpot.h" struct IndexerWrapperImpl; struct IndexingResult { CrystalLattice l; std::vector indexed_spot; }; class IndexerWrapper { std::unique_ptr impl_; constexpr const static uint32_t viable_cell_min_spots = 9; public: IndexerWrapper(); ~IndexerWrapper(); IndexerWrapper(const IndexerWrapper &i) = delete; const IndexerWrapper& operator=(const IndexerWrapper &i) = delete; void Setup(const UnitCell &cell); std::vector Run(const std::vector &coord, float indexing_threshold, size_t nspots); void Run(DataMessage &message, const std::vector &coord, const DiffractionGeometry &geom, float indexing_threshold); }; #endif //JUNGFRAUJOCH_INDEXERWRAPPER_H