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)