00001 #ifndef artdaq_Application_MPI2_StatisticsHelper_hh
00002 #define artdaq_Application_MPI2_StatisticsHelper_hh
00003
00004 #include "artdaq-core/Core/StatisticsCollection.hh"
00005 #include "fhiclcpp/ParameterSet.h"
00006 #include <vector>
00007
00008 namespace artdaq
00009 {
00010 class StatisticsHelper;
00011 }
00012
00016 class artdaq::StatisticsHelper
00017 {
00018 public:
00022 StatisticsHelper();
00023
00027 StatisticsHelper(StatisticsHelper const&) = delete;
00028
00032 virtual ~StatisticsHelper() = default;
00033
00038 StatisticsHelper& operator=(StatisticsHelper const&) = delete;
00039
00044 void addMonitoredQuantityName(std::string const& statKey);
00045
00051 void addSample(std::string const& statKey, double value) const;
00052
00068 bool createCollectors(fhicl::ParameterSet const& pset,
00069 int defaultReportIntervalFragments,
00070 double defaultReportIntervalSeconds,
00071 double defaultMonitorWindow,
00072 std::string const& primaryStatKeyName);
00073
00077 void resetStatistics();
00078
00084 bool readyToReport(size_t currentCount);
00085
00090 bool statsRollingWindowHasMoved();
00091
00092 private:
00093 std::vector<std::string> monitored_quantity_name_list_;
00094 artdaq::MonitoredQuantityPtr primary_stat_ptr_;
00095
00096 int reporting_interval_fragments_;
00097 double reporting_interval_seconds_;
00098 size_t previous_reporting_index_;
00099 MonitoredQuantityStats::TIME_POINT_T previous_stats_calc_time_;
00100 };
00101
00102 #endif