Files
Jungfraujoch/receiver/LossyFilter.cpp
2024-04-20 13:41:41 +02:00

28 lines
604 B
C++

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