ROOT   Reference Guide
Searching...
No Matches
TStatistic.h
Go to the documentation of this file.
1// @(#)root/mathcore:$Id$
2// Author: G. Ganis 2012
3
4/*************************************************************************
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. * 9 * For the list of contributors see$ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TStatistic
13#define ROOT_TStatistic
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TStatistic //
19// //
20// Statistical variable, defined by its mean, RMS and related errors. //
21// Named, streamable, storable and mergeable. //
22// //
23//////////////////////////////////////////////////////////////////////////
24
25#include "TObject.h"
26
27#include "TMath.h"
28
29#include "TString.h"
30
31class TCollection;
32
33class TStatistic : public TObject {
34
35private:
36 TString fName; ///< Name given to the TStatistic object
37 Long64_t fN; ///< Number of fills
38 Double_t fW; ///< Sum of weights
39 Double_t fW2; ///< Sum of squared weights
40 Double_t fM; ///< Sum of elements (i.e. sum of (val * weight) pairs
41 Double_t fM2; ///< Second order momentum
42 Double_t fMin; ///< Minimum value in the TStatistic object
43 Double_t fMax; ///< Maximum value in the TStatistic object
44
45public:
46
47 TStatistic(const char *name = "") : fName(name), fN(0), fW(0.), fW2(0.), fM(0.), fM2(0.), fMin(TMath::Limits<Double_t>::Max()), fMax(-TMath::Limits<Double_t>::Max()) { }
48 TStatistic(const char *name, Int_t n, const Double_t *val, const Double_t *w = nullptr);
49 ~TStatistic() override;
50
51 // Getters
52 const char *GetName() const override { return fName; }
53 ULong_t Hash() const override { return fName.Hash(); }
54
55 inline Long64_t GetN() const { return fN; }
56 inline Long64_t GetNeff() const { return fW*fW/fW2; }
57 inline Double_t GetM2() const { return fM2; }
58 inline Double_t GetMean() const { return (fW > 0) ? fM/fW : 0; }
59 inline Double_t GetMeanErr() const { return (fW > 0.) ? TMath::Sqrt( GetVar()/ GetNeff() ) : 0; }
60 inline Double_t GetRMS() const { double var = GetVar(); return (var>0) ? TMath::Sqrt(var) : -1; }
61 inline Double_t GetVar() const { return (fW>0) ? ( (fN>1) ? (fM2 / fW)*(fN / (fN-1.)) : 0 ) : -1; }
62 inline Double_t GetW() const { return fW; }
63 inline Double_t GetW2() const { return fW2; }
64 inline Double_t GetMin() const { return fMin; }
65 inline Double_t GetMax() const { return fMax; }
66
67 // Merging
69
70 // Fill
71 void Fill(Double_t val, Double_t w = 1.);
72
73 // Print
74 void Print(Option_t * = "") const override;
75 void ls(Option_t *opt = "") const override { Print(opt); }
76
77 ClassDefOverride(TStatistic,3) // Named statistical variable
78};
79
80#endif
int Int_t
Definition RtypesCore.h:45
unsigned long ULong_t
Definition RtypesCore.h:55
double Double_t
Definition RtypesCore.h:59
long long Long64_t
Definition RtypesCore.h:80
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
char name[80]
Definition TGX11.cxx:110
Collection abstract base class.
Definition TCollection.h:65
Mother of all ROOT objects.
Definition TObject.h:41
Statistical variable, defined by its mean and variance (RMS).
Definition TStatistic.h:33
TString fName
Name given to the TStatistic object.
Definition TStatistic.h:36
Double_t GetW() const
Definition TStatistic.h:62
Double_t GetW2() const
Definition TStatistic.h:63
Double_t GetMeanErr() const
Definition TStatistic.h:59
Double_t fW2
Sum of squared weights.
Definition TStatistic.h:39
Double_t GetM2() const
Definition TStatistic.h:57
~TStatistic() override
TStatistic destructor.
void Print(Option_t *="") const override
Print the content of the object.
Double_t GetMin() const
Definition TStatistic.h:64
Double_t fW
Sum of weights.
Definition TStatistic.h:38
const char * GetName() const override
Returns name of object.
Definition TStatistic.h:52
TStatistic(const char *name="")
Definition TStatistic.h:47
void Fill(Double_t val, Double_t w=1.)
Increment the entries in the object by one value-weight pair.
ULong_t Hash() const override
Return hash value for this object.
Definition TStatistic.h:53
Long64_t GetN() const
Definition TStatistic.h:55
Long64_t GetNeff() const
Definition TStatistic.h:56
Double_t GetMax() const
Definition TStatistic.h:65
Double_t GetMean() const
Definition TStatistic.h:58
Double_t GetVar() const
Definition TStatistic.h:61
Double_t fMin
Minimum value in the TStatistic object.
Definition TStatistic.h:42
Double_t GetRMS() const
Definition TStatistic.h:60
Double_t fMax
Maximum value in the TStatistic object.
Definition TStatistic.h:43
void ls(Option_t *opt="") const override
The ls function lists the contents of a class on stdout.
Definition TStatistic.h:75
Double_t fM
Sum of elements (i.e. sum of (val * weight) pairs.
Definition TStatistic.h:40
Double_t fM2
Second order momentum.
Definition TStatistic.h:41
Int_t Merge(TCollection *in)
Merge implementation of TStatistic.
Long64_t fN
Number of fills.
Definition TStatistic.h:37
Basic string class.
Definition TString.h:139
UInt_t Hash(ECaseCompare cmp=kExact) const
Return hash value.
Definition TString.cxx:677
const Int_t n
Definition legend1.C:16
TMath.
Definition TMathBase.h:35
Double_t Sqrt(Double_t x)
Returns the square root of x.
Definition TMath.h:662