00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TH2
00013 #define ROOT_TH2
00014
00015
00017
00018
00019
00020
00021
00023
00024 #ifndef ROOT_TH1
00025 #include "TH1.h"
00026 #endif
00027
00028 class TProfile;
00029 class TMatrix;
00030 class TMatrixD;
00031
00032 class TH2 : public TH1 {
00033
00034 protected:
00035 Stat_t fScalefactor;
00036 Stat_t fTsumwy;
00037 Stat_t fTsumwy2;
00038 Stat_t fTsumwxy;
00039
00040 virtual Int_t BufferFill(Axis_t, Stat_t) {return -2;}
00041 virtual Int_t BufferFill(Axis_t x, Axis_t y, Stat_t w);
00042
00043 public:
00044 TH2();
00045 TH2(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00046 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00047 TH2(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00048 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00049 TH2(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_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 virtual ~TH2();
00056 virtual Int_t BufferEmpty(Bool_t deleteBuffer=kFALSE);
00057 virtual void Copy(TObject &hnew) const;
00058 Int_t Fill(Axis_t) {return -1;}
00059 Int_t Fill(const char*, Stat_t) {return -1;}
00060 virtual Int_t Fill(Axis_t x, Axis_t y);
00061 virtual Int_t Fill(Axis_t x, Axis_t y, Stat_t w);
00062 virtual Int_t Fill(Axis_t x, const char *namey, Stat_t w);
00063 virtual Int_t Fill(const char *namex, Axis_t y, Stat_t w);
00064 virtual Int_t Fill(const char *namex, const char *namey, Stat_t w);
00065 virtual void FillN(Int_t, const Axis_t *, const Double_t *, Int_t) {;}
00066 virtual void FillN(Int_t ntimes, const Axis_t *x, const Axis_t *y, const Double_t *w, Int_t stride=1);
00067 virtual void FillRandom(const char *fname, Int_t ntimes=5000);
00068 virtual void FillRandom(TH1 *h, Int_t ntimes=5000);
00069 virtual void FitSlicesX(TF1 *f1=0,Int_t binmin=1, Int_t binmax=0, Int_t cut=0 ,Option_t *option="QNR");
00070 virtual void FitSlicesY(TF1 *f1=0,Int_t binmin=1, Int_t binmax=0, Int_t cut=0 ,Option_t *option="QNR");
00071 virtual Stat_t GetCorrelationFactor(Int_t axis1=1,Int_t axis2=2) const;
00072 virtual Stat_t GetCovariance(Int_t axis1=1,Int_t axis2=2) const;
00073 virtual void GetRandom2(Axis_t &x, Axis_t &y);
00074 virtual void GetStats(Stat_t *stats) const;
00075 virtual Stat_t Integral(Option_t *option="") const;
00076 virtual Stat_t Integral(Int_t, Int_t, Option_t * ="") const {return 0;}
00077 virtual Stat_t Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Option_t *option="") const;
00078 virtual Stat_t Integral(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Option_t * ="") const {return 0;}
00079 virtual Double_t KolmogorovTest(TH1 *h2, Option_t *option="") const;
00080 virtual Int_t Merge(TCollection *list);
00081 TProfile *ProfileX(const char *name="_pfx", Int_t firstybin=-1, Int_t lastybin=-1, Option_t *option="") const;
00082 TProfile *ProfileY(const char *name="_pfy", Int_t firstxbin=-1, Int_t lastxbin=-1, Option_t *option="") const ;
00083 TH1D *ProjectionX(const char *name="_px", Int_t firstybin=-1, Int_t lastybin=-1, Option_t *option="") const;
00084 TH1D *ProjectionY(const char *name="_py", Int_t firstxbin=-1, Int_t lastxbin=-1, Option_t *option="") const;
00085 virtual void PutStats(Stat_t *stats);
00086 virtual void Reset(Option_t *option="");
00087
00088 ClassDef(TH2,3)
00089 };
00090
00091
00092
00093
00094 class TH2C : public TH2, public TArrayC {
00095
00096 public:
00097 TH2C();
00098 TH2C(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 TH2C(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00101 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00102 TH2C(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00103 ,Int_t nbinsy,const Double_t *ybins);
00104 TH2C(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00105 ,Int_t nbinsy,const Double_t *ybins);
00106 TH2C(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00107 ,Int_t nbinsy,const Float_t *ybins);
00108 TH2C(const TH2C &h2c);
00109 virtual ~TH2C();
00110 virtual void AddBinContent(Int_t bin);
00111 virtual void AddBinContent(Int_t bin, Stat_t w);
00112 virtual void Copy(TObject &hnew) const;
00113 virtual TH1 *DrawCopy(Option_t *option="") const;
00114 virtual Stat_t GetBinContent(Int_t bin) const;
00115 virtual Stat_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00116 virtual Stat_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00117 virtual void Reset(Option_t *option="");
00118 virtual void SetBinContent(Int_t bin, Stat_t content);
00119 virtual void SetBinContent(Int_t binx, Int_t biny, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00120 virtual void SetBinContent(Int_t binx, Int_t biny, Int_t, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00121 virtual void SetBinsLength(Int_t n=-1);
00122 TH2C& operator=(const TH2C &h1);
00123 friend TH2C operator*(Float_t c1, TH2C &h1);
00124 friend TH2C operator*(TH2C &h1, Float_t c1) {return operator*(c1,h1);}
00125 friend TH2C operator+(TH2C &h1, TH2C &h2);
00126 friend TH2C operator-(TH2C &h1, TH2C &h2);
00127 friend TH2C operator*(TH2C &h1, TH2C &h2);
00128 friend TH2C operator/(TH2C &h1, TH2C &h2);
00129
00130 ClassDef(TH2C,3)
00131 };
00132
00133
00134
00135
00136 class TH2S : public TH2, public TArrayS {
00137
00138 public:
00139 TH2S();
00140 TH2S(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00141 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00142 TH2S(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00143 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00144 TH2S(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00145 ,Int_t nbinsy,const Double_t *ybins);
00146 TH2S(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00147 ,Int_t nbinsy,const Double_t *ybins);
00148 TH2S(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00149 ,Int_t nbinsy,const Float_t *ybins);
00150 TH2S(const TH2S &h2s);
00151 virtual ~TH2S();
00152 virtual void AddBinContent(Int_t bin);
00153 virtual void AddBinContent(Int_t bin, Stat_t w);
00154 virtual void Copy(TObject &hnew) const;
00155 virtual TH1 *DrawCopy(Option_t *option="") const;
00156 virtual Stat_t GetBinContent(Int_t bin) const;
00157 virtual Stat_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00158 virtual Stat_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00159 virtual void Reset(Option_t *option="");
00160 virtual void SetBinContent(Int_t bin, Stat_t content);
00161 virtual void SetBinContent(Int_t binx, Int_t biny, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00162 virtual void SetBinContent(Int_t binx, Int_t biny, Int_t, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00163 virtual void SetBinsLength(Int_t n=-1);
00164 TH2S& operator=(const TH2S &h1);
00165 friend TH2S operator*(Float_t c1, TH2S &h1);
00166 friend TH2S operator*(TH2S &h1, Float_t c1) {return operator*(c1,h1);}
00167 friend TH2S operator+(TH2S &h1, TH2S &h2);
00168 friend TH2S operator-(TH2S &h1, TH2S &h2);
00169 friend TH2S operator*(TH2S &h1, TH2S &h2);
00170 friend TH2S operator/(TH2S &h1, TH2S &h2);
00171
00172 ClassDef(TH2S,3)
00173 };
00174
00175
00176
00177
00178 class TH2F : public TH2, public TArrayF {
00179
00180 public:
00181 TH2F();
00182 TH2F(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00183 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00184 TH2F(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00185 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00186 TH2F(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00187 ,Int_t nbinsy,const Double_t *ybins);
00188 TH2F(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00189 ,Int_t nbinsy,const Double_t *ybins);
00190 TH2F(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00191 ,Int_t nbinsy,const Float_t *ybins);
00192 TH2F(const TMatrix &m);
00193 TH2F(const TH2F &h2f);
00194 virtual ~TH2F();
00195 virtual void AddBinContent(Int_t bin) {++fArray[bin];}
00196 virtual void AddBinContent(Int_t bin, Stat_t w)
00197 {fArray[bin] += Float_t (w);}
00198 virtual void Copy(TObject &hnew) const;
00199 virtual TH1 *DrawCopy(Option_t *option="") const;
00200 virtual Stat_t GetBinContent(Int_t bin) const;
00201 virtual Stat_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00202 virtual Stat_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00203 virtual void Reset(Option_t *option="");
00204 virtual void SetBinContent(Int_t bin, Stat_t content);
00205 virtual void SetBinContent(Int_t binx, Int_t biny, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00206 virtual void SetBinContent(Int_t binx, Int_t biny, Int_t, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00207 virtual void SetBinsLength(Int_t n=-1);
00208 TH2F& operator=(const TH2F &h1);
00209 friend TH2F operator*(Float_t c1, TH2F &h1);
00210 friend TH2F operator*(TH2F &h1, Float_t c1);
00211 friend TH2F operator+(TH2F &h1, TH2F &h2);
00212 friend TH2F operator-(TH2F &h1, TH2F &h2);
00213 friend TH2F operator*(TH2F &h1, TH2F &h2);
00214 friend TH2F operator/(TH2F &h1, TH2F &h2);
00215
00216 ClassDef(TH2F,3)
00217 };
00218
00219
00220
00221
00222 class TH2D : public TH2, public TArrayD {
00223
00224 public:
00225 TH2D();
00226 TH2D(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00227 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00228 TH2D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00229 ,Int_t nbinsy,Axis_t ylow,Axis_t yup);
00230 TH2D(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup
00231 ,Int_t nbinsy,const Double_t *ybins);
00232 TH2D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins
00233 ,Int_t nbinsy,const Double_t *ybins);
00234 TH2D(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins
00235 ,Int_t nbinsy,const Float_t *ybins);
00236 TH2D(const TMatrixD &m);
00237 TH2D(const TH2D &h2d);
00238 virtual ~TH2D();
00239 virtual void AddBinContent(Int_t bin) {++fArray[bin];}
00240 virtual void AddBinContent(Int_t bin, Stat_t w)
00241 {fArray[bin] += Double_t (w);}
00242 virtual void Copy(TObject &hnew) const;
00243 virtual TH1 *DrawCopy(Option_t *option="") const;
00244 virtual Stat_t GetBinContent(Int_t bin) const;
00245 virtual Stat_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
00246 virtual Stat_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
00247 virtual void Reset(Option_t *option="");
00248 virtual void SetBinContent(Int_t bin, Stat_t content);
00249 virtual void SetBinContent(Int_t binx, Int_t biny, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00250 virtual void SetBinContent(Int_t binx, Int_t biny, Int_t, Stat_t content) {SetBinContent(GetBin(binx,biny),content);}
00251 virtual void SetBinsLength(Int_t n=-1);
00252 TH2D& operator=(const TH2D &h1);
00253 friend TH2D operator*(Float_t c1, TH2D &h1);
00254 friend TH2D operator*(TH2D &h1, Float_t c1) {return operator*(c1,h1);}
00255 friend TH2D operator+(TH2D &h1, TH2D &h2);
00256 friend TH2D operator-(TH2D &h1, TH2D &h2);
00257 friend TH2D operator*(TH2D &h1, TH2D &h2);
00258 friend TH2D operator/(TH2D &h1, TH2D &h2);
00259
00260 ClassDef(TH2D,3)
00261 };
00262
00263 #endif
00264