// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once // This include should be only included in sections of the code, where it is certain that CUDA is present // so with JFJOCH_USE_CUDA preprocessor definition, given this file is included in the source only in this case #include #include #include "../../common/Coord.h" #include "../../common/CrystalLattice.h" #include "../../common/Definitions.h" #include "../../common/JFJochMessages.h" #include "../../common/DiffractionSpot.h" #include "Indexer.h" #include class FFBIDXIndexer : public Indexer { fast_feedback::config_runtime crt{}; fast_feedback::config_persistent cpers{ .max_output_cells = 32, .max_input_cells = 1, .max_spots = MAX_SPOT_COUNT, .num_candidate_vectors = 32, .redundant_computations = true, }; // default persistent config fast_feedback::refine::indexer indexer{cpers, crt}; void SetupUnitCell(const std::optional &cell) override; public: FFBIDXIndexer() = default; ~FFBIDXIndexer() = default; FFBIDXIndexer(const FFBIDXIndexer &i) = delete; const FFBIDXIndexer& operator=(const FFBIDXIndexer &i) = delete; std::vector RunInternal(const std::vector &coord, size_t nspots) override; };