ATLAS Offline Software
Loading...
Searching...
No Matches
MeanAndRMS.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MeanAndRMS_h
6#define MeanAndRMS_h
7
8#include <math.h>
9
11public :
12 MeanAndRMS():m_w(0),m_wx(0),m_wx2(0) {};
13 MeanAndRMS(const double xadd, const double weight=1):m_w(weight),m_wx(weight*xadd),m_wx2(weight*xadd*xadd) {};
15
16 MeanAndRMS& add(double xadd,double weight=1) {m_wx+=weight*xadd;m_wx2+=weight*xadd*xadd;m_w+=weight;return *this;};
17 MeanAndRMS& operator+=(double xadd) {return add(xadd);};
18 MeanAndRMS& operator-=(double xadd) {return add(-xadd);};
19 MeanAndRMS& operator=(const MeanAndRMS& ref) {m_w=ref.m_w;m_wx=ref.m_wx;m_wx2=ref.m_wx2;return *this;};
20
21 double sum_weight() const {return m_w;};
22 double mean() const {if(m_w!=0) return m_wx/m_w; else return 0;};
23 double mean2() const {double x=mean();return x*x;};
24 double rms2() const {if(m_w!=0) return m_wx2/m_w - mean2(); else return 0;};
25 double rms() const {double r2=rms2();if(r2>=0) return sqrt(r2); else return 0;};
26 double mean_error() const {if(m_w>0) return rms()/sqrt(m_w); else return 0;};
27 double rms_error() const {if(m_w>0) return rms()/sqrt(2*m_w); else return 0;};
28
29 operator double() const { return mean(); }
30protected:
31 double m_w;
32 double m_wx,m_wx2;
33};
34
35#endif
36
const boost::regex ref(r_ef)
#define x
MeanAndRMS & add(double xadd, double weight=1)
Definition MeanAndRMS.h:16
double mean2() const
Definition MeanAndRMS.h:23
MeanAndRMS(const double xadd, const double weight=1)
Definition MeanAndRMS.h:13
double m_wx
Definition MeanAndRMS.h:32
double mean_error() const
Definition MeanAndRMS.h:26
MeanAndRMS(const MeanAndRMS &ref)
Definition MeanAndRMS.h:14
double sum_weight() const
Definition MeanAndRMS.h:21
double m_wx2
Definition MeanAndRMS.h:32
double mean() const
Definition MeanAndRMS.h:22
double rms() const
Definition MeanAndRMS.h:25
double rms_error() const
Definition MeanAndRMS.h:27
MeanAndRMS & operator+=(double xadd)
Definition MeanAndRMS.h:17
double rms2() const
Definition MeanAndRMS.h:24
MeanAndRMS & operator=(const MeanAndRMS &ref)
Definition MeanAndRMS.h:19
double m_w
Definition MeanAndRMS.h:31
MeanAndRMS & operator-=(double xadd)
Definition MeanAndRMS.h:18