00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TH2
00013 #define ROOT_TH2
00014
00015
00016
00017
00018
00019
00020
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;
00040 Double_t fTsumwy;
00041 Double_t fTsumwy2;
00042 Double_t fTsumwxy;
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;}
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;}
00068 Int_t Fill(const char*, Double_t) {return -1;}
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) {;}
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);
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);
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
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;
00103 TProfile *ProfileY(const char *name="_pfy", Int_t firstxbin=1, Int_t lastxbin=-1, Option_t *option="") const;
00104 TH1D *ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const;
00105 TH1D *ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const;
00106 virtual void PutStats(Double_t *stats);
00107 virtual void Reset(Option_t *option="");
00108 virtual void SetShowProjectionX(Int_t nbins);
00109 virtual void SetShowProjectionY(Int_t nbins);
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);
00112 virtual void Smooth(Int_t ntimes=1, Option_t *option="");
00113
00114 ClassDef(TH2,4)
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)
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)
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)
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)
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)
00329 };
00330
00331 #endif
00332