Files
Jungfraujoch/image_analysis/indexing/IndexerFactory.cpp
2025-09-21 19:27:51 +02:00

40 lines
1.1 KiB
C++

// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include "IndexerFactory.h"
#ifdef JFJOCH_USE_CUDA
#include "FFBIDXIndexer.h"
#include "FFTIndexerGPU.h"
#endif
#ifdef JFJOCH_USE_FFTW
#include "FFTIndexerCPU.h"
#endif
std::unique_ptr<Indexer> CreateIndexer(const DiffractionExperiment& experiment) {
std::unique_ptr<Indexer> indexer;
switch (experiment.GetIndexingAlgorithm()) {
case IndexingAlgorithmEnum::FFBIDX:
#ifdef JFJOCH_USE_CUDA
indexer = std::make_unique<FFBIDXIndexer>();
indexer->Setup(experiment);
#endif
break;
case IndexingAlgorithmEnum::FFTW:
#ifdef JFJOCH_USE_FFTW
indexer = std::make_unique<FFTIndexerCPU>(experiment.GetIndexingSettings());
indexer->Setup(experiment);
#endif
break;
case IndexingAlgorithmEnum::FFT:
#ifdef JFJOCH_USE_CUDA
indexer = std::make_unique<FFTIndexerGPU>(experiment.GetIndexingSettings());
indexer->Setup(experiment);
#endif
break;
default:
break;
}
return indexer;
}