Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

TH3.h

Go to the documentation of this file.
00001 // @(#)root/hist:$Name:  $:$Id: TH3.h,v 1.24 2003/04/19 16:59:27 brun Exp $
00002 // Author: Rene Brun   27/10/95
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_TH3
00013 #define ROOT_TH3
00014 
00015 
00017 //                                                                      //
00018 // TH3                                                                  //
00019 //                                                                      //
00020 // 3-Dim histogram base class.                                          //
00021 //                                                                      //
00023 
00024 #ifndef ROOT_TH1
00025 #include "TH1.h"
00026 #endif
00027 
00028 #ifndef ROOT_TAtt3D
00029 #include "TAtt3D.h"
00030 #endif
00031 
00032 
00033 class TH3 : public TH1, public TAtt3D {
00034 
00035 protected:
00036 
00037    virtual Int_t    BufferFill(Axis_t, Stat_t) {return -2;} //may not use
00038    virtual Int_t    BufferFill(Axis_t, Axis_t, Stat_t) {return -2;} //may not use
00039    virtual Int_t    BufferFill(Axis_t x, Axis_t y, Axis_t z, Stat_t w);
00040 
00041 public:
00042    TH3();
00043    TH3(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00044                                   ,Int_t nbinsy,Axis_t ylow,Axis_t yup
00045                                   ,Int_t nbinsz,Axis_t zlow,Axis_t zup);
00046    TH3(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00047                                          ,Int_t nbinsy,const Float_t *ybins
00048                                          ,Int_t nbinsz,const Float_t *zbins);
00049    TH3(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00050                                          ,Int_t nbinsy,const Double_t *ybins
00051                                          ,Int_t nbinsz,const Double_t *zbins);
00052    virtual ~TH3();
00053    virtual Int_t   BufferEmpty(Bool_t deleteBuffer=kFALSE);
00054    virtual void    Copy(TObject &hnew) const;
00055            Int_t   Fill(Axis_t) {return -1;}        //MayNotUse
00056            Int_t   Fill(Axis_t,Stat_t) {return -1;} //MayNotUse
00057            Int_t   Fill(const char*, Stat_t) {return -1;} //MayNotUse
00058            Int_t   Fill(Axis_t,const char*,Stat_t) {return -1;} //MayNotUse
00059            Int_t   Fill(const char*,Axis_t,Stat_t) {return -1;} //MayNotUse
00060            Int_t   Fill(const char*,const char*,Stat_t) {return -1;} //MayNotUse
00061    virtual Int_t   Fill(Axis_t x, Axis_t y, Axis_t z);
00062    virtual Int_t   Fill(Axis_t x, Axis_t y, Axis_t z, Stat_t w);
00063 
00064    virtual Int_t   Fill(const char *namex, const char *namey, const char *namez, Stat_t w);
00065    virtual Int_t   Fill(const char *namex, Axis_t y, const char *namez, Stat_t w);
00066    virtual Int_t   Fill(const char *namex, const char *namey, Axis_t z, Stat_t w);
00067    virtual Int_t   Fill(Axis_t x, const char *namey, const char *namez, Stat_t w);
00068    virtual Int_t   Fill(Axis_t x, const char *namey, Axis_t z, Stat_t w);
00069    virtual Int_t   Fill(Axis_t x, Axis_t y, const char *namez, Stat_t w);
00070 
00071    virtual void    FillRandom(const char *fname, Int_t ntimes=5000);
00072    virtual void    FillRandom(TH1 *h, Int_t ntimes=5000);
00073    virtual void    FitSlicesZ(TF1 *f1=0,Int_t binminx=1, Int_t binmaxx=0,Int_t binminy=1, Int_t binmaxy=0,
00074                                         Int_t cut=0 ,Option_t *option="QNR"); // *MENU*
00075    virtual void    GetRandom3(Axis_t &x, Axis_t &y, Axis_t &z);
00076    virtual void    GetStats(Stat_t *stats) const;
00077    virtual Stat_t  Integral(Option_t *option="") const;
00078    virtual Stat_t  Integral(Int_t, Int_t, Option_t * ="") const {return 0;}
00079    virtual Stat_t  Integral(Int_t, Int_t, Int_t, Int_t, Option_t * ="") const {return 0;}
00080    virtual Stat_t  Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Int_t binz1, Int_t binz2, Option_t *option="") const;
00081    virtual Double_t KolmogorovTest(TH1 *h2, Option_t *option="") const;
00082    virtual Int_t   Merge(TCollection *list);
00083           TH1D    *ProjectionZ(const char *name="_pz", Int_t firstxbin=-1, Int_t lastxbin=9999, Int_t firstybin=0,
00084                                  Int_t lastybin=-1, Option_t *option="") const; // *MENU*
00085           TH1     *Project3D(Option_t *option="x") const; // *MENU*
00086    virtual void    PutStats(Stat_t *stats);
00087    virtual void    Reset(Option_t *option="");
00088    virtual void    Sizeof3D() const;
00089 
00090    ClassDef(TH3,3)  //3-Dim histogram base class
00091 };
00092 
00093 //________________________________________________________________________
00094 
00095 class TH3C : public TH3, public TArrayC {
00096 public:
00097    TH3C();
00098    TH3C(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00099                                   ,Int_t nbinsy,Axis_t ylow,Axis_t yup
00100                                   ,Int_t nbinsz,Axis_t zlow,Axis_t zup);
00101    TH3C(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00102                                           ,Int_t nbinsy,const Float_t *ybins
00103                                           ,Int_t nbinsz,const Float_t *zbins);
00104    TH3C(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00105                                           ,Int_t nbinsy,const Double_t *ybins
00106                                           ,Int_t nbinsz,const Double_t *zbins);
00107    TH3C(const TH3C &h3c);
00108    virtual ~TH3C();
00109    virtual void    AddBinContent(Int_t bin);
00110    virtual void    AddBinContent(Int_t bin, Stat_t w);
00111    virtual void    Copy(TObject &hnew) const;
00112    virtual TH1    *DrawCopy(Option_t *option="") const ;
00113    virtual Stat_t  GetBinContent(Int_t bin) const;
00114    virtual Stat_t  GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00115    virtual Stat_t  GetBinContent(Int_t binx, Int_t biny, Int_t binz) const {return GetBinContent(GetBin(binx,biny,binz));}
00116    virtual void    Reset(Option_t *option="");
00117    virtual void    SetBinContent(Int_t bin, Stat_t content);
00118    virtual void    SetBinContent(Int_t bin, Int_t, Stat_t content) {SetBinContent(bin,content);}
00119    virtual void    SetBinContent(Int_t binx, Int_t biny, Int_t binz, Stat_t content) {SetBinContent(GetBin(binx,biny,binz),content);}
00120    virtual void    SetBinsLength(Int_t n=-1);
00121            TH3C&   operator=(const TH3C &h1);
00122    friend  TH3C    operator*(Float_t c1, TH3C &h1);
00123    friend  TH3C    operator*(TH3C &h1, Float_t c1) {return operator*(c1,h1);}
00124    friend  TH3C    operator+(TH3C &h1, TH3C &h2);
00125    friend  TH3C    operator-(TH3C &h1, TH3C &h2);
00126    friend  TH3C    operator*(TH3C &h1, TH3C &h2);
00127    friend  TH3C    operator/(TH3C &h1, TH3C &h2);
00128 
00129    ClassDef(TH3C,3)  //3-Dim histograms (one char per channel)
00130 };
00131 
00132 //________________________________________________________________________
00133 
00134 class TH3S : public TH3, public TArrayS {
00135 public:
00136    TH3S();
00137    TH3S(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00138                                   ,Int_t nbinsy,Axis_t ylow,Axis_t yup
00139                                   ,Int_t nbinsz,Axis_t zlow,Axis_t zup);
00140    TH3S(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00141                                           ,Int_t nbinsy,const Float_t *ybins
00142                                           ,Int_t nbinsz,const Float_t *zbins);
00143    TH3S(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00144                                           ,Int_t nbinsy,const Double_t *ybins
00145                                           ,Int_t nbinsz,const Double_t *zbins);
00146    TH3S(const TH3S &h3s);
00147    virtual ~TH3S();
00148    virtual void    AddBinContent(Int_t bin);
00149    virtual void    AddBinContent(Int_t bin, Stat_t w);
00150    virtual void    Copy(TObject &hnew) const;
00151    virtual TH1    *DrawCopy(Option_t *option="") const;
00152    virtual Stat_t  GetBinContent(Int_t bin) const;
00153    virtual Stat_t  GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00154    virtual Stat_t  GetBinContent(Int_t binx, Int_t biny, Int_t binz) const {return GetBinContent(GetBin(binx,biny,binz));}
00155    virtual void    Reset(Option_t *option="");
00156    virtual void    SetBinContent(Int_t bin, Stat_t content);
00157    virtual void    SetBinContent(Int_t bin, Int_t, Stat_t content) {SetBinContent(bin,content);}
00158    virtual void    SetBinContent(Int_t binx, Int_t biny, Int_t binz, Stat_t content) {SetBinContent(GetBin(binx,biny,binz),content);}
00159    virtual void    SetBinsLength(Int_t n=-1);
00160            TH3S&   operator=(const TH3S &h1);
00161    friend  TH3S    operator*(Float_t c1, TH3S &h1);
00162    friend  TH3S    operator*(TH3S &h1, Float_t c1) {return operator*(c1,h1);}
00163    friend  TH3S    operator+(TH3S &h1, TH3S &h2);
00164    friend  TH3S    operator-(TH3S &h1, TH3S &h2);
00165    friend  TH3S    operator*(TH3S &h1, TH3S &h2);
00166    friend  TH3S    operator/(TH3S &h1, TH3S &h2);
00167 
00168    ClassDef(TH3S,3)  //3-Dim histograms (one short per channel)
00169 };
00170 
00171 
00172 //________________________________________________________________________
00173 
00174 class TH3F : public TH3, public TArrayF {
00175 public:
00176    TH3F();
00177    TH3F(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00178                                   ,Int_t nbinsy,Axis_t ylow,Axis_t yup
00179                                   ,Int_t nbinsz,Axis_t zlow,Axis_t zup);
00180    TH3F(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00181                                           ,Int_t nbinsy,const Float_t *ybins
00182                                           ,Int_t nbinsz,const Float_t *zbins);
00183    TH3F(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00184                                           ,Int_t nbinsy,const Double_t *ybins
00185                                           ,Int_t nbinsz,const Double_t *zbins);
00186    TH3F(const TH3F &h3f);
00187    virtual ~TH3F();
00188    virtual void    AddBinContent(Int_t bin) {++fArray[bin];}
00189    virtual void    AddBinContent(Int_t bin, Stat_t w)
00190                                  {fArray[bin] += Float_t (w);}
00191    virtual void    Copy(TObject &hnew) const;
00192    virtual TH1    *DrawCopy(Option_t *option="") const;
00193    virtual Stat_t  GetBinContent(Int_t bin) const;
00194    virtual Stat_t  GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00195    virtual Stat_t  GetBinContent(Int_t binx, Int_t biny, Int_t binz) const {return GetBinContent(GetBin(binx,biny,binz));}
00196    virtual void    Reset(Option_t *option="");
00197    virtual void    SetBinContent(Int_t bin, Stat_t content);
00198    virtual void    SetBinContent(Int_t bin, Int_t, Stat_t content) {SetBinContent(bin,content);}
00199    virtual void    SetBinContent(Int_t binx, Int_t biny, Int_t binz, Stat_t content) {SetBinContent(GetBin(binx,biny,binz),content);}
00200    virtual void    SetBinsLength(Int_t n=-1);
00201            TH3F&   operator=(const TH3F &h1);
00202    friend  TH3F    operator*(Float_t c1, TH3F &h1);
00203    friend  TH3F    operator*(TH3F &h1, Float_t c1) {return operator*(c1,h1);}
00204    friend  TH3F    operator+(TH3F &h1, TH3F &h2);
00205    friend  TH3F    operator-(TH3F &h1, TH3F &h2);
00206    friend  TH3F    operator*(TH3F &h1, TH3F &h2);
00207    friend  TH3F    operator/(TH3F &h1, TH3F &h2);
00208 
00209    ClassDef(TH3F,3)  //3-Dim histograms (one float per channel)
00210 };
00211 
00212 //________________________________________________________________________
00213 
00214 class TH3D : public TH3, public TArrayD {
00215 public:
00216    TH3D();
00217    TH3D(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00218                                   ,Int_t nbinsy,Axis_t ylow,Axis_t yup
00219                                   ,Int_t nbinsz,Axis_t zlow,Axis_t zup);
00220    TH3D(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00221                                           ,Int_t nbinsy,const Float_t *ybins
00222                                           ,Int_t nbinsz,const Float_t *zbins);
00223    TH3D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00224                                           ,Int_t nbinsy,const Double_t *ybins
00225                                           ,Int_t nbinsz,const Double_t *zbins);
00226    TH3D(const TH3D &h3d);
00227    virtual ~TH3D();
00228    virtual void    AddBinContent(Int_t bin) {++fArray[bin];}
00229    virtual void    AddBinContent(Int_t bin, Stat_t w)
00230                                  {fArray[bin] += Double_t (w);}
00231    virtual void    Copy(TObject &hnew) const;
00232    virtual TH1    *DrawCopy(Option_t *option="") const;
00233    virtual Stat_t  GetBinContent(Int_t bin) const;
00234    virtual Stat_t  GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00235    virtual Stat_t  GetBinContent(Int_t binx, Int_t biny, Int_t binz) const {return GetBinContent(GetBin(binx,biny,binz));}
00236    virtual void    Reset(Option_t *option="");
00237    virtual void    SetBinContent(Int_t bin, Stat_t content);
00238    virtual void    SetBinContent(Int_t bin, Int_t, Stat_t content) {SetBinContent(bin,content);}
00239    virtual void    SetBinContent(Int_t binx, Int_t biny, Int_t binz, Stat_t content) {SetBinContent(GetBin(binx,biny,binz),content);}
00240    virtual void    SetBinsLength(Int_t n=-1);
00241            TH3D&   operator=(const TH3D &h1);
00242    friend  TH3D    operator*(Float_t c1, TH3D &h1);
00243    friend  TH3D    operator*(TH3D &h1, Float_t c1) {return operator*(c1,h1);}
00244    friend  TH3D    operator+(TH3D &h1, TH3D &h2);
00245    friend  TH3D    operator-(TH3D &h1, TH3D &h2);
00246    friend  TH3D    operator*(TH3D &h1, TH3D &h2);
00247    friend  TH3D    operator/(TH3D &h1, TH3D &h2);
00248 
00249    ClassDef(TH3D,3)  //3-Dim histograms (one double per channel)
00250 };
00251 
00252 #endif
00253 

Generated on Thu Dec 18 14:52:21 2003 for ROOT by doxygen1.2.16