00001 #ifndef FASTSHOWER_FUNCTIONSTATS_H 00002 #define FASTSHOWER_FUNCTIONSTATS_H 00003 00004 #ifndef FASTSHOWER_IFUNCTIONSTATS_H 00005 #include "FastShowerUtils/IFunctionStats.h" 00006 #endif 00007 00008 class ostream; 00009 namespace FastShower{ 00010 00011 class FunctionStats; 00012 class ParticleParameters; 00013 00014 std::ostream& operator<<(std::ostream&, const FunctionStats&); 00015 std::ostream& operator<<(std::ostream&, const FunctionStats*); 00016 00017 class StatsCollector; 00018 class FunctionStats: virtual public IFunctionStats{ 00019 public: 00020 FunctionStats(); 00021 FunctionStats(const FunctionStats&); 00022 FunctionStats& operator=(const FunctionStats&) ; 00023 void bump(double x) ; 00024 void bump(double x, const ParticleParameters*); 00025 int nCalls() const; 00026 double mean() const; 00027 double variance() const; 00028 double lastX() const; 00029 void report(std::ostream& ostr) const; 00030 void prime() ; 00031 bool lastIsValid() const; 00032 void header(std::ostream& ostr) const; 00033 private: 00034 bool m_lastIsValid; 00035 double m_lastX; 00036 int m_n; 00037 double m_sumX; 00038 double m_sumXsq; 00039 }; 00040 }//namesapce 00041 #endif 00042 00043 00044 00045