00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TH3
00013 #define ROOT_TH3
00014
00015
00017
00018
00019
00020
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;}
00038 virtual Int_t BufferFill(Axis_t, Axis_t, Stat_t) {return -2;}
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;}
00056 Int_t Fill(Axis_t,Stat_t) {return -1;}
00057 Int_t Fill(const char*, Stat_t) {return -1;}
00058 Int_t Fill(Axis_t,const char*,Stat_t) {return -1;}
00059 Int_t Fill(const char*,Axis_t,Stat_t) {return -1;}
00060 Int_t Fill(const char*,const char*,Stat_t) {return -1;}
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");
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;
00085 TH1 *Project3D(Option_t *option="x") const;
00086 virtual void PutStats(Stat_t *stats);
00087 virtual void Reset(Option_t *option="");
00088 virtual void Sizeof3D() const;
00089
00090 ClassDef(TH3,3)
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)
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)
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)
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)
00250 };
00251
00252 #endif
00253