// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include #include "../common/JFJochMessages.h" #include "../common/DiffractionExperiment.h" #include class LossyFilter { std::mutex random_m; std::random_device rdev; std::mt19937 mt{rdev()}; std::uniform_real_distribution distr{0.0, 1.0}; std::atomic image_number{0}; float p; bool RollDice(); public: explicit LossyFilter(float p); explicit LossyFilter(const DiffractionExperiment& x); bool ApplyFilter(DataMessage& message); };