Accumulator

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#ifndef Statistics_Accumulator_h
#define Statistics_Accumulator_h

/** For validation purposes.  This program
    calculates mean and RMS of a distribution

  \Author Rick Wilkinson
*/
#include <iosfwd>
#include <cmath>

class Accumulator {
public:
  Accumulator();

  void addEntry(double value, double weight = 1.);

  double mean() const;

  double variance() const;

  double sigma() const { return std::sqrt(variance()); }

  double weightedMean() const;

  unsigned long nEntries() const { return n_; }

private:
  double sum_;
  double sumOfSquares_;
  double weightedSum_;
  double sumOfWeights_;
  unsigned long n_;
};

std::ostream& operator<<(std::ostream& os, const Accumulator& stat);

#endif