// Copyright (2019-2024) Paul Scherrer Institute #ifndef JUNGFRAUJOCH_INDEXERWRAPPER_H #define JUNGFRAUJOCH_INDEXERWRAPPER_H #include #include #include "../common/Coord.h" #include "CrystalLattice.h" #include "../common/Definitions.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, int nspots = -1); }; #endif //JUNGFRAUJOCH_INDEXERWRAPPER_H