12 #ifndef ROOT_TStatistic
13 #define ROOT_TStatistic
35 class TStatistic :
public TObject {
49 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>::Min()) { }
50 TStatistic(
const char *name, Int_t n,
const Double_t *val,
const Double_t *w = 0);
54 const char *GetName()
const {
return fName; }
55 ULong_t Hash()
const {
return fName.Hash(); }
57 inline Long64_t GetN()
const {
return fN; }
58 inline Long64_t GetNeff()
const {
return fW*fW/fW2; }
59 inline Double_t GetM2()
const {
return fM2; }
60 inline Double_t GetMean()
const {
return (fW > 0) ? fM/fW : 0; }
61 inline Double_t GetMeanErr()
const {
return (fW > 0.) ? TMath::Sqrt( GetVar()/ GetNeff() ) : 0; }
62 inline Double_t GetRMS()
const {
double var = GetVar();
return (var>0) ? TMath::Sqrt(var) : -1; }
63 inline Double_t GetVar()
const {
return (fW>0) ? ( (fN>1) ? (fM2 / fW)*(fN / (fN-1.)) : 0 ) : -1; }
64 inline Double_t GetW()
const {
return fW; }
65 inline Double_t GetW2()
const {
return fW2; }
66 inline Double_t GetMin()
const {
return fMin; }
67 inline Double_t GetMax()
const {
return fMax; }
70 Int_t Merge(TCollection *in);
73 void Fill(Double_t val, Double_t w = 1.);
76 void Print(Option_t * =
"")
const;
77 void ls(Option_t *opt =
"")
const { Print(opt); }
79 ClassDef(TStatistic,3)