// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include "../../common/DiffractionSpot.h" void GenerateSpotPlot(DataMessage &msg, const std::vector &spots, float d_min_A); void CountSpots(DataMessage &msg, const DiffractionExperiment& experiment, const std::vector &spots, float d_min_A); void CountSpots(DataMessage &msg, const std::vector &spots, float d_min_A); void MarkIceRings(std::vector &spots, float tolerance_q_recipA); void FilterSpotsByCount(std::vector &input, int64_t count); void FilterSpuriousHighResolutionSpots(std::vector &spots, float threshold); // Ignore high res. spots if there is a gap in (1/d) between two spots of dist_threshold (default: 0.25 A^-1) // For less than 4 spots - don't provide resolution estimation // For less than 20 spots - take the third best high resolution // For 20 spots or more - take the 95% percentile best high resolution spot std::optional GetResolution(const std::vector &spots); void SpotAnalyze(const DiffractionExperiment &experiment, const SpotFindingSettings &settings, const std::vector &spots, DataMessage &message);