// Copyright (2019-2024) Paul Scherrer Institute #include "LossyFilter.h" LossyFilter::LossyFilter(bool in_enabled, float in_p) : enabled(in_enabled), p(in_p) {} bool LossyFilter::RollDice() { std::unique_lock ul(random_m); if ((p > 0.0) && (distr(mt) < p)) return true; else return false; } bool LossyFilter::ApplyFilter(DataMessage &message) { if (!enabled) return true; return (message.indexing_result || RollDice()); }