artdaq  v3_12_02
StatisticsHelper.hh
1 #ifndef artdaq_Application_MPI2_StatisticsHelper_hh
2 #define artdaq_Application_MPI2_StatisticsHelper_hh
3 
4 #include "artdaq-core/Core/MonitoredQuantity.hh"
5 #include "artdaq-core/Core/StatisticsCollection.hh"
6 
7 namespace fhicl {
8 class ParameterSet;
9 }
10 
11 #include <atomic>
12 #include <string>
13 #include <vector>
14 
15 namespace artdaq {
16 class StatisticsHelper;
17 }
18 
23 {
24 public:
29 
33  StatisticsHelper(StatisticsHelper const&) = delete;
34 
38  virtual ~StatisticsHelper() = default;
39 
47 
52  void addMonitoredQuantityName(std::string const& statKey);
53 
59  void addSample(std::string const& statKey, double value) const;
60 
76  bool createCollectors(fhicl::ParameterSet const& pset,
77  int defaultReportIntervalFragments,
78  double defaultReportIntervalSeconds,
79  double defaultMonitorWindow,
80  std::string const& primaryStatKeyName);
81 
85  void resetStatistics();
86 
91  bool readyToReport();
92 
98 
99 private:
100  std::vector<std::string> monitored_quantity_name_list_;
101  artdaq::MonitoredQuantityPtr primary_stat_ptr_;
102 
103  int reporting_interval_fragments_;
104  double reporting_interval_seconds_;
105  size_t previous_reporting_index_{0};
106  std::atomic<MonitoredQuantityStats::TIME_POINT_T> previous_stats_calc_time_{0.0};
107 };
108 
109 #endif /* artdaq_Application_MPI2_StatisticsHelper_hh */
This class manages MonitoredQuantity instances for the *Core classes.
void addMonitoredQuantityName(std::string const &statKey)
Add a MonitoredQuantity name to the list.
bool statsRollingWindowHasMoved()
Determine if the MonitoredQuantity &quot;recent&quot; window has changed since the last time this function was ...
virtual ~StatisticsHelper()=default
Default Destructor.
void addSample(std::string const &statKey, double value) const
Add a sample to the MonitoredQuantity with the given name.
bool createCollectors(fhicl::ParameterSet const &pset, int defaultReportIntervalFragments, double defaultReportIntervalSeconds, double defaultMonitorWindow, std::string const &primaryStatKeyName)
Create MonitoredQuantity objects for all names registered with the StatisticsHelper.
StatisticsHelper & operator=(StatisticsHelper const &)=delete
Copy Assignment operator is deleted.
StatisticsHelper()
StatisticsHelper default constructor.
void resetStatistics()
Reset all MonitoredQuantity instances.
bool readyToReport()
Determine if the reporting interval condition has been met.