// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_IMAGESPOTFINDER_H #define JFJOCH_IMAGESPOTFINDER_H #include #include #include "SpotFindingSettings.h" #include "../common/AzimuthalIntegration.h" #include "../common/DiffractionSpot.h" // This is "slow" spot finder for image-based analysis // To complement "fast" PSI detector module based spot finder // This one is expected to be used in cases, where images are already assembled // and it aims for 100 ms execution class ImageSpotFinder { size_t width; size_t height; const std::vector &resolution_map; int NBX = 15; template std::vector Run(const T *input, const T special_value, const SpotFindingSettings &settings) const; public: explicit ImageSpotFinder(const AzimuthalIntegration &integration); ImageSpotFinder(const std::vector &resolution_map, size_t width, size_t height); void nbx(int input); std::vector Run(const int32_t *input, const SpotFindingSettings &settings) const; std::vector Run(const int16_t *input, const SpotFindingSettings &settings) const; std::vector Run(const int8_t *input, const SpotFindingSettings &settings) const; std::vector Run(const uint32_t *input, const SpotFindingSettings &settings) const; std::vector Run(const uint16_t *input, const SpotFindingSettings &settings) const; std::vector Run(const uint8_t *input, const SpotFindingSettings &settings) const; }; #endif //JFJOCH_IMAGESPOTFINDER_H