Files
Jungfraujoch/common/MovingAverage.h
2025-05-28 18:49:27 +02:00

24 lines
554 B
C++

// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#ifndef JFJOCH_MOVINGAVERAGE_H
#define JFJOCH_MOVINGAVERAGE_H
#include <mutex>
#include <deque>
#include <optional>
class MovingAverage {
mutable std::mutex m;
size_t elems;
std::deque<float> q;
public:
explicit MovingAverage(size_t elems);
void Add(float val);
void Add(std::optional<float> val);
[[nodiscard]] std::optional<float> Read() const;
};
#endif //JFJOCH_MOVINGAVERAGE_H