TH2.h

Go to the documentation of this file.
00001 // @(#)root/hist:$Id: TH2.h 29775 2009-08-13 15:07:28Z moneta $
00002 // Author: Rene Brun   26/12/94
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TH2
00013 #define ROOT_TH2
00014 
00015 
00016 //////////////////////////////////////////////////////////////////////////
00017 //                                                                      //
00018 // TH2                                                                  //
00019 //                                                                      //
00020 // 2-Dim histogram base class.                                          //
00021 //                                                                      //
00022 //////////////////////////////////////////////////////////////////////////
00023 
00024 #ifndef ROOT_TH1
00025 #include "TH1.h"
00026 #endif
00027 #ifndef ROOT_TMatrixFBasefwd
00028 #include "TMatrixFBasefwd.h"
00029 #endif
00030 #ifndef ROOT_TMatrixDBasefwd
00031 #include "TMatrixDBasefwd.h"
00032 #endif
00033 
00034 class TProfile;
00035 
00036 class TH2 : public TH1 {
00037    
00038 protected:
00039    Double_t     fScalefactor;     //Scale factor
00040    Double_t     fTsumwy;          //Total Sum of weight*Y
00041    Double_t     fTsumwy2;         //Total Sum of weight*Y*Y
00042    Double_t     fTsumwxy;         //Total Sum of weight*X*Y
00043 
00044    TH2();
00045    TH2(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00046                                          ,Int_t nbinsy,Double_t ylow,Double_t yup);
00047    TH2(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00048                                          ,Int_t nbinsy,Double_t ylow,Double_t yup);
00049    TH2(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00050                                          ,Int_t nbinsy,const Double_t *ybins);
00051    TH2(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00052                                          ,Int_t nbinsy,const Double_t *ybins);
00053    TH2(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins
00054                                          ,Int_t nbinsy,const Float_t  *ybins);
00055 
00056    virtual Int_t     BufferFill(Double_t, Double_t) {return -2;} //may not use
00057    virtual Int_t     BufferFill(Double_t x, Double_t y, Double_t w);
00058    virtual TH1D     *DoProjection(bool onX, const char *name, Int_t firstbin, Int_t lastbin, Option_t *option) const;
00059    virtual TProfile *DoProfile(bool onX, const char *name, Int_t firstbin, Int_t lastbin, Option_t *option) const;
00060    virtual void      DoFitSlices(bool onX, TF1 *f1, Int_t firstbin, Int_t lastbin, Int_t cut, Option_t *option, TObjArray* arr);
00061 
00062 public:
00063    TH2(const TH2&);
00064    virtual ~TH2();
00065    virtual Int_t    BufferEmpty(Int_t action=0);
00066    virtual void     Copy(TObject &hnew) const;
00067            Int_t    Fill(Double_t) {return -1;} //MayNotUse
00068            Int_t    Fill(const char*, Double_t) {return -1;} //MayNotUse
00069    virtual Int_t    Fill(Double_t x, Double_t y);
00070    virtual Int_t    Fill(Double_t x, Double_t y, Double_t w);
00071    virtual Int_t    Fill(Double_t x, const char *namey, Double_t w);
00072    virtual Int_t    Fill(const char *namex, Double_t y, Double_t w);
00073    virtual Int_t    Fill(const char *namex, const char *namey, Double_t w);
00074    virtual void     FillN(Int_t, const Double_t *, const Double_t *, Int_t) {;} //MayNotUse
00075    virtual void     FillN(Int_t ntimes, const Double_t *x, const Double_t *y, const Double_t *w, Int_t stride=1);
00076    virtual void     FillRandom(const char *fname, Int_t ntimes=5000);
00077    virtual void     FillRandom(TH1 *h, Int_t ntimes=5000);
00078    virtual Int_t    FindFirstBinAbove(Double_t threshold=0, Int_t axis=1) const;
00079    virtual Int_t    FindLastBinAbove (Double_t threshold=0, Int_t axis=1) const;
00080    virtual void     FitSlicesX(TF1 *f1=0,Int_t firstybin=0, Int_t lastybin=-1, Int_t cut=0, Option_t *option="QNR", TObjArray* arr = 0); // *MENU*
00081    virtual void     FitSlicesY(TF1 *f1=0,Int_t firstxbin=0, Int_t lastxbin=-1, Int_t cut=0, Option_t *option="QNR", TObjArray* arr = 0); // *MENU*
00082    virtual Double_t GetBinWithContent2(Double_t c, Int_t &binx, Int_t &biny, Int_t firstxbin=1, Int_t lastxbin=-1,Int_t firstybin=1, Int_t lastybin=-1, Double_t maxdiff=0) const;
00083    virtual Double_t GetCorrelationFactor(Int_t axis1=1,Int_t axis2=2) const;
00084    virtual Double_t GetCovariance(Int_t axis1=1,Int_t axis2=2) const;
00085    virtual void     GetRandom2(Double_t &x, Double_t &y);
00086    virtual void     GetStats(Double_t *stats) const;
00087    virtual Double_t Integral(Option_t *option="") const;
00088    //virtual Double_t Integral(Int_t, Int_t, Option_t * ="") const {return 0;}
00089    using TH1::Integral;
00090    virtual Double_t Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Option_t *option="") const;
00091    virtual Double_t Integral(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Option_t * ="") const {return 0;}
00092    using TH1::IntegralAndError;
00093    virtual Double_t IntegralAndError(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Double_t & err, Option_t *option="") const;
00094    virtual Double_t Interpolate(Double_t x);
00095    virtual Double_t Interpolate(Double_t x, Double_t y);
00096    virtual Double_t Interpolate(Double_t x, Double_t y, Double_t z);
00097    virtual Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const;
00098    virtual Long64_t Merge(TCollection *list);
00099    virtual TH2     *RebinX(Int_t ngroup=2, const char *newname="");
00100    virtual TH2     *RebinY(Int_t ngroup=2, const char *newname="");  
00101    virtual TH2     *Rebin2D(Int_t nxgroup=2, Int_t nygroup=2, const char *newname="");     
00102       TProfile     *ProfileX(const char *name="_pfx", Int_t firstybin=1, Int_t lastybin=-1, Option_t *option="") const;   // *MENU*
00103       TProfile     *ProfileY(const char *name="_pfy", Int_t firstxbin=1, Int_t lastxbin=-1, Option_t *option="") const;   // *MENU*
00104          TH1D      *ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const; // *MENU*
00105          TH1D      *ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const; // *MENU*
00106    virtual void     PutStats(Double_t *stats);
00107    virtual void     Reset(Option_t *option="");
00108    virtual void     SetShowProjectionX(Int_t nbins);  // *MENU*
00109    virtual void     SetShowProjectionY(Int_t nbins);  // *MENU*
00110    virtual TH1     *ShowBackground(Int_t niter=20, Option_t *option="same");
00111    virtual Int_t    ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05); // *MENU*
00112    virtual void     Smooth(Int_t ntimes=1, Option_t *option=""); // *MENU*
00113            
00114    ClassDef(TH2,4)  //2-Dim histogram base class
00115 };
00116 
00117 
00118 //______________________________________________________________________________
00119 
00120 class TH2C : public TH2, public TArrayC {
00121 
00122 public:
00123    TH2C();
00124    TH2C(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00125                                 ,Int_t nbinsy,Double_t ylow,Double_t yup);
00126    TH2C(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00127                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00128    TH2C(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00129                                           ,Int_t nbinsy,const Double_t *ybins);
00130    TH2C(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00131                                           ,Int_t nbinsy,const Double_t *ybins);
00132    TH2C(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins
00133                                           ,Int_t nbinsy,const Float_t  *ybins);
00134    TH2C(const TH2C &h2c);
00135    virtual ~TH2C();
00136    virtual void     AddBinContent(Int_t bin);
00137    virtual void     AddBinContent(Int_t bin, Double_t w);
00138    virtual void     Copy(TObject &hnew) const;
00139    virtual TH1     *DrawCopy(Option_t *option="") const;
00140    virtual Double_t GetBinContent(Int_t bin) const;
00141    virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00142    virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00143    virtual void     Reset(Option_t *option="");
00144    virtual void     SetBinContent(Int_t bin, Double_t content);
00145    virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00146    virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00147    virtual void     SetBinsLength(Int_t n=-1);
00148            TH2C&    operator=(const TH2C &h1);
00149    friend  TH2C     operator*(Float_t c1, TH2C &h1);
00150    friend  TH2C     operator*(TH2C &h1, Float_t c1) {return operator*(c1,h1);}
00151    friend  TH2C     operator+(TH2C &h1, TH2C &h2);
00152    friend  TH2C     operator-(TH2C &h1, TH2C &h2);
00153    friend  TH2C     operator*(TH2C &h1, TH2C &h2);
00154    friend  TH2C     operator/(TH2C &h1, TH2C &h2);
00155 
00156    ClassDef(TH2C,3)  //2-Dim histograms (one char per channel)
00157 };
00158 
00159 
00160 //______________________________________________________________________________
00161 
00162 class TH2S : public TH2, public TArrayS {
00163 
00164 public:
00165    TH2S();
00166    TH2S(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00167                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00168    TH2S(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00169                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00170    TH2S(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00171                                           ,Int_t nbinsy,const Double_t *ybins);
00172    TH2S(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00173                                           ,Int_t nbinsy,const Double_t *ybins);
00174    TH2S(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins
00175                                           ,Int_t nbinsy,const Float_t  *ybins);
00176    TH2S(const TH2S &h2s);
00177    virtual ~TH2S();
00178    virtual void     AddBinContent(Int_t bin);
00179    virtual void     AddBinContent(Int_t bin, Double_t w);
00180    virtual void     Copy(TObject &hnew) const;
00181    virtual TH1     *DrawCopy(Option_t *option="") const;
00182    virtual Double_t GetBinContent(Int_t bin) const;
00183    virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00184    virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00185    virtual void     Reset(Option_t *option="");
00186    virtual void     SetBinContent(Int_t bin, Double_t content);
00187    virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00188    virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00189    virtual void     SetBinsLength(Int_t n=-1);
00190            TH2S&    operator=(const TH2S &h1);
00191    friend  TH2S     operator*(Float_t c1, TH2S &h1);
00192    friend  TH2S     operator*(TH2S &h1, Float_t c1) {return operator*(c1,h1);}
00193    friend  TH2S     operator+(TH2S &h1, TH2S &h2);
00194    friend  TH2S     operator-(TH2S &h1, TH2S &h2);
00195    friend  TH2S     operator*(TH2S &h1, TH2S &h2);
00196    friend  TH2S     operator/(TH2S &h1, TH2S &h2);
00197 
00198    ClassDef(TH2S,3)  //2-Dim histograms (one short per channel)
00199 };
00200 
00201 
00202 //______________________________________________________________________________
00203 
00204 class TH2I : public TH2, public TArrayI {
00205 
00206 public:
00207    TH2I();
00208    TH2I(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00209                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00210    TH2I(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00211                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00212    TH2I(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00213                                           ,Int_t nbinsy,const Double_t *ybins);
00214    TH2I(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00215                                           ,Int_t nbinsy,const Double_t *ybins);
00216    TH2I(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins
00217                                           ,Int_t nbinsy,const Float_t  *ybins);
00218    TH2I(const TH2I &h2i);
00219    virtual ~TH2I();
00220    virtual void     AddBinContent(Int_t bin);
00221    virtual void     AddBinContent(Int_t bin, Double_t w);
00222    virtual void     Copy(TObject &hnew) const;
00223    virtual TH1     *DrawCopy(Option_t *option="") const;
00224    virtual Double_t GetBinContent(Int_t bin) const;
00225    virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00226    virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00227    virtual void     Reset(Option_t *option="");
00228    virtual void     SetBinContent(Int_t bin, Double_t content);
00229    virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00230    virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00231    virtual void     SetBinsLength(Int_t n=-1);
00232            TH2I&    operator=(const TH2I &h1);
00233    friend  TH2I     operator*(Float_t c1, TH2I &h1);
00234    friend  TH2I     operator*(TH2I &h1, Float_t c1) {return operator*(c1,h1);}
00235    friend  TH2I     operator+(TH2I &h1, TH2I &h2);
00236    friend  TH2I     operator-(TH2I &h1, TH2I &h2);
00237    friend  TH2I     operator*(TH2I &h1, TH2I &h2);
00238    friend  TH2I     operator/(TH2I &h1, TH2I &h2);
00239 
00240    ClassDef(TH2I,3)  //2-Dim histograms (one 32 bits integer per channel)
00241 };
00242 
00243 
00244 //______________________________________________________________________________
00245 
00246 class TH2F : public TH2, public TArrayF {
00247 
00248 public:
00249    TH2F();
00250    TH2F(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00251                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00252    TH2F(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00253                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00254    TH2F(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00255                                           ,Int_t nbinsy,const Double_t *ybins);
00256    TH2F(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00257                                           ,Int_t nbinsy,const Double_t *ybins);
00258    TH2F(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins
00259                                           ,Int_t nbinsy,const Float_t  *ybins);
00260    TH2F(const TMatrixFBase &m);
00261    TH2F(const TH2F &h2f);
00262    virtual ~TH2F();
00263    virtual void     AddBinContent(Int_t bin) {++fArray[bin];}
00264    virtual void     AddBinContent(Int_t bin, Double_t w)
00265                                  {fArray[bin] += Float_t (w);}
00266    virtual void     Copy(TObject &hnew) const;
00267    virtual TH1     *DrawCopy(Option_t *option="") const;
00268    virtual Double_t GetBinContent(Int_t bin) const;
00269    virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00270    virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00271    virtual void     Reset(Option_t *option="");
00272    virtual void     SetBinContent(Int_t bin, Double_t content);
00273    virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00274    virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00275    virtual void     SetBinsLength(Int_t n=-1);
00276            TH2F&    operator=(const TH2F &h1);
00277    friend  TH2F     operator*(Float_t c1, TH2F &h1);
00278    friend  TH2F     operator*(TH2F &h1, Float_t c1);
00279    friend  TH2F     operator+(TH2F &h1, TH2F &h2);
00280    friend  TH2F     operator-(TH2F &h1, TH2F &h2);
00281    friend  TH2F     operator*(TH2F &h1, TH2F &h2);
00282    friend  TH2F     operator/(TH2F &h1, TH2F &h2);
00283 
00284    ClassDef(TH2F,3)  //2-Dim histograms (one float per channel)
00285 };
00286 
00287 
00288 //______________________________________________________________________________
00289 
00290 class TH2D : public TH2, public TArrayD {
00291 
00292 public:
00293    TH2D();
00294    TH2D(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00295                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00296    TH2D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00297                                           ,Int_t nbinsy,Double_t ylow,Double_t yup);
00298    TH2D(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
00299                                           ,Int_t nbinsy,const Double_t *ybins);
00300    TH2D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00301                                           ,Int_t nbinsy,const Double_t *ybins);
00302    TH2D(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins
00303                                           ,Int_t nbinsy,const Float_t  *ybins);
00304    TH2D(const TMatrixDBase &m);
00305    TH2D(const TH2D &h2d);
00306    virtual ~TH2D();
00307    virtual void     AddBinContent(Int_t bin) {++fArray[bin];}
00308    virtual void     AddBinContent(Int_t bin, Double_t w)
00309                                  {fArray[bin] += Double_t (w);}
00310    virtual void     Copy(TObject &hnew) const;
00311    virtual TH1     *DrawCopy(Option_t *option="") const;
00312    virtual Double_t GetBinContent(Int_t bin) const;
00313    virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00314    virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00315    virtual void     Reset(Option_t *option="");
00316    virtual void     SetBinContent(Int_t bin, Double_t content);
00317    virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00318    virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
00319    virtual void     SetBinsLength(Int_t n=-1);
00320            TH2D&    operator=(const TH2D &h1);
00321    friend  TH2D     operator*(Float_t c1, TH2D &h1);
00322    friend  TH2D     operator*(TH2D &h1, Float_t c1) {return operator*(c1,h1);}
00323    friend  TH2D     operator+(TH2D &h1, TH2D &h2);
00324    friend  TH2D     operator-(TH2D &h1, TH2D &h2);
00325    friend  TH2D     operator*(TH2D &h1, TH2D &h2);
00326    friend  TH2D     operator/(TH2D &h1, TH2D &h2);
00327 
00328    ClassDef(TH2D,3)  //2-Dim histograms (one double per channel)
00329 };
00330 
00331 #endif
00332 

Generated on Tue Jul 5 14:22:52 2011 for ROOT_528-00b_version by  doxygen 1.5.1