31 class TH3 :
public TH1,
public TAtt3D {
43 TH3(
const char *name,
const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
44 ,Int_t nbinsy,Double_t ylow,Double_t yup
45 ,Int_t nbinsz,Double_t zlow,Double_t zup);
46 TH3(
const char *name,
const char *title,Int_t nbinsx,
const Float_t *xbins
47 ,Int_t nbinsy,
const Float_t *ybins
48 ,Int_t nbinsz,
const Float_t *zbins);
49 TH3(
const char *name,
const char *title,Int_t nbinsx,
const Double_t *xbins
50 ,Int_t nbinsy,
const Double_t *ybins
51 ,Int_t nbinsz,
const Double_t *zbins);
52 virtual Int_t BufferFill(Double_t x, Double_t y, Double_t z, Double_t w);
54 void DoFillProfileProjection(TProfile2D * p2,
const TAxis & a1,
const TAxis & a2,
const TAxis & a3, Int_t bin1, Int_t bin2, Int_t bin3, Int_t inBin, Bool_t useWeights)
const;
56 virtual Int_t BufferFill(Double_t, Double_t) {
return -2;}
57 virtual Int_t BufferFill(Double_t, Double_t, Double_t) {
return -2;}
59 Int_t Fill(Double_t,Double_t) {
return Fill(0.);}
60 Int_t Fill(
const char*, Double_t) {
return Fill(0);}
61 Int_t Fill(Double_t,
const char*,Double_t) {
return Fill(0);}
62 Int_t Fill(
const char*,Double_t,Double_t) {
return Fill(0);}
63 Int_t Fill(
const char*,
const char*,Double_t) {
return Fill(0);}
65 virtual Double_t Interpolate(Double_t x, Double_t y)
const;
66 virtual Double_t Interpolate(Double_t x)
const;
71 TH3& operator=(
const TH3&);
74 using TH1::IntegralAndError;
78 virtual Int_t BufferEmpty(Int_t action=0);
79 virtual void Copy(TObject &hnew)
const;
80 virtual Int_t Fill(Double_t x, Double_t y, Double_t z);
81 virtual Int_t Fill(Double_t x, Double_t y, Double_t z, Double_t w);
83 virtual Int_t Fill(
const char *namex,
const char *namey,
const char *namez, Double_t w);
84 virtual Int_t Fill(
const char *namex, Double_t y,
const char *namez, Double_t w);
85 virtual Int_t Fill(
const char *namex,
const char *namey, Double_t z, Double_t w);
86 virtual Int_t Fill(Double_t x,
const char *namey,
const char *namez, Double_t w);
87 virtual Int_t Fill(Double_t x,
const char *namey, Double_t z, Double_t w);
88 virtual Int_t Fill(Double_t x, Double_t y,
const char *namez, Double_t w);
90 virtual void FillRandom(
const char *fname, Int_t ntimes=5000);
91 virtual void FillRandom(TH1 *h, Int_t ntimes=5000);
92 virtual void FitSlicesZ(TF1 *f1=0,Int_t binminx=1, Int_t binmaxx=0,Int_t binminy=1, Int_t binmaxy=0,
93 Int_t cut=0 ,Option_t *option=
"QNR");
94 virtual Int_t GetBin(Int_t binx, Int_t biny, Int_t binz)
const;
95 virtual Double_t GetBinContent(Int_t bin)
const {
return TH1::GetBinContent(bin); }
96 virtual Double_t GetBinContent(Int_t bin, Int_t)
const {
return TH1::GetBinContent(bin); }
97 virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t binz)
const {
return TH1::GetBinContent( GetBin(binx, biny, binz) ); }
98 using TH1::GetBinErrorLow;
99 using TH1::GetBinErrorUp;
100 virtual Double_t GetBinErrorLow(Int_t binx, Int_t biny, Int_t binz) {
return TH1::GetBinErrorLow( GetBin(binx, biny, binz) ); }
101 virtual Double_t GetBinErrorUp(Int_t binx, Int_t biny, Int_t binz) {
return TH1::GetBinErrorUp( GetBin(binx, biny, binz) ); }
102 virtual Double_t GetBinWithContent3(Double_t c, Int_t &binx, Int_t &biny, Int_t &binz, Int_t firstx=0, Int_t lastx=0,Int_t firsty=0, Int_t lasty=0, Int_t firstz=0, Int_t lastz=0, Double_t maxdiff=0)
const;
103 virtual Double_t GetCorrelationFactor(Int_t axis1=1,Int_t axis2=2)
const;
104 virtual Double_t GetCovariance(Int_t axis1=1,Int_t axis2=2)
const;
105 virtual void GetRandom3(Double_t &x, Double_t &y, Double_t &z);
106 virtual void GetStats(Double_t *stats)
const;
107 virtual Double_t Integral(Option_t *option=
"")
const;
108 virtual Double_t Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Int_t binz1, Int_t binz2, Option_t *option=
"")
const;
109 virtual Double_t IntegralAndError(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Int_t binz1, Int_t binz2, Double_t & err, Option_t *option=
"")
const;
110 virtual Double_t Interpolate(Double_t x, Double_t y, Double_t z)
const;
111 virtual Double_t KolmogorovTest(
const TH1 *h2, Option_t *option=
"")
const;
112 virtual TH1D *ProjectionX(
const char *name=
"_px", Int_t iymin=0, Int_t iymax=-1, Int_t izmin=0,
113 Int_t izmax=-1, Option_t *option=
"")
const;
114 virtual TH1D *ProjectionY(
const char *name=
"_py", Int_t ixmin=0, Int_t ixmax=-1, Int_t izmin=0,
115 Int_t izmax=-1, Option_t *option=
"")
const;
116 virtual TH1D *ProjectionZ(
const char *name=
"_pz", Int_t ixmin=0, Int_t ixmax=-1, Int_t iymin=0,
117 Int_t iymax=-1, Option_t *option=
"")
const;
118 virtual TH1 *Project3D(Option_t *option=
"x")
const;
119 virtual TProfile2D *Project3DProfile(Option_t *option=
"xy")
const;
120 virtual void PutStats(Double_t *stats);
121 virtual TH3 *RebinX(Int_t ngroup = 2,
const char *newname =
"");
122 virtual TH3 *RebinY(Int_t ngroup = 2,
const char *newname =
"");
123 virtual TH3 *RebinZ(Int_t ngroup = 2,
const char *newname =
"");
124 virtual TH3 *Rebin3D(Int_t nxgroup = 2, Int_t nygroup = 2, Int_t nzgroup = 2,
const char *newname =
"");
125 virtual void Reset(Option_t *option=
"");
126 virtual void SetBinContent(Int_t bin, Double_t content);
127 virtual void SetBinContent(Int_t bin, Int_t, Double_t content) { SetBinContent(bin, content); }
128 virtual void SetBinContent(Int_t binx, Int_t biny, Int_t binz, Double_t content) { SetBinContent(GetBin(binx, biny, binz), content); }
129 virtual void SetShowProjection(
const char *option=
"xy",Int_t nbins=1);
133 virtual TH1D *DoProject1D(
const char* name,
const char * title,
int imin1,
int imax1,
int imin2,
int imax2,
134 const TAxis* projAxis,
const TAxis * axis1,
const TAxis * axis2, Option_t * option)
const;
135 virtual TH1D *DoProject1D(
const char *name,
const char *title,
const TAxis *projAxis,
const TAxis *axis1,
136 const TAxis *axis2,
bool computeErrors,
bool originalRange,
bool useUF,
bool useOF)
const;
137 virtual TH2D *DoProject2D(
const char* name,
const char * title,
const TAxis* projX,
const TAxis* projY,
138 bool computeErrors,
bool originalRange,
139 bool useUF,
bool useOF)
const;
140 virtual TProfile2D *DoProjectProfile2D(
const char* name,
const char * title,
const TAxis* projX,
const TAxis* projY,
141 bool originalRange,
bool useUF,
bool useOF)
const;
144 static TH1D *DoProject1D(
const TH3 & h,
const char* name,
const char * title,
const TAxis* projX,
145 bool computeErrors,
bool originalRange,
bool useUF,
bool useOF) {
146 return h.DoProject1D(name, title, projX,
nullptr,
nullptr, computeErrors, originalRange, useUF, useOF);
148 static TH2D *DoProject2D(
const TH3 & h,
const char* name,
const char * title,
const TAxis* projX,
const TAxis* projY,
149 bool computeErrors,
bool originalRange,
bool useUF,
bool useOF) {
150 return h.DoProject2D(name, title, projX,projY, computeErrors, originalRange, useUF, useOF);
158 class TH3C :
public TH3,
public TArrayC {
161 TH3C(
const char *name,
const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
162 ,Int_t nbinsy,Double_t ylow,Double_t yup
163 ,Int_t nbinsz,Double_t zlow,Double_t zup);
164 TH3C(
const char *name,
const char *title,Int_t nbinsx,
const Float_t *xbins
165 ,Int_t nbinsy,
const Float_t *ybins
166 ,Int_t nbinsz,
const Float_t *zbins);
167 TH3C(
const char *name,
const char *title,Int_t nbinsx,
const Double_t *xbins
168 ,Int_t nbinsy,
const Double_t *ybins
169 ,Int_t nbinsz,
const Double_t *zbins);
170 TH3C(
const TH3C &h3c);
172 virtual void AddBinContent(Int_t bin);
173 virtual void AddBinContent(Int_t bin, Double_t w);
174 virtual void Copy(TObject &hnew)
const;
175 virtual void Reset(Option_t *option=
"");
176 virtual void SetBinsLength(Int_t n=-1);
177 TH3C& operator=(
const TH3C &h1);
178 friend TH3C operator*(Float_t c1, TH3C &h1);
179 friend TH3C operator*(TH3C &h1, Float_t c1) {
return operator*(c1,h1);}
180 friend TH3C operator+(TH3C &h1, TH3C &h2);
181 friend TH3C operator-(TH3C &h1, TH3C &h2);
182 friend TH3C operator*(TH3C &h1, TH3C &h2);
183 friend TH3C operator/(TH3C &h1, TH3C &h2);
186 virtual Double_t RetrieveBinContent(Int_t bin)
const {
return Double_t (fArray[bin]); }
187 virtual void UpdateBinContent(Int_t bin, Double_t content) { fArray[bin] = Char_t (content); }
194 class TH3S :
public TH3,
public TArrayS {
197 TH3S(
const char *name,
const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
198 ,Int_t nbinsy,Double_t ylow,Double_t yup
199 ,Int_t nbinsz,Double_t zlow,Double_t zup);
200 TH3S(
const char *name,
const char *title,Int_t nbinsx,
const Float_t *xbins
201 ,Int_t nbinsy,
const Float_t *ybins
202 ,Int_t nbinsz,
const Float_t *zbins);
203 TH3S(
const char *name,
const char *title,Int_t nbinsx,
const Double_t *xbins
204 ,Int_t nbinsy,
const Double_t *ybins
205 ,Int_t nbinsz,
const Double_t *zbins);
206 TH3S(
const TH3S &h3s);
208 virtual void AddBinContent(Int_t bin);
209 virtual void AddBinContent(Int_t bin, Double_t w);
210 virtual void Copy(TObject &hnew)
const;
211 virtual void Reset(Option_t *option=
"");
212 virtual void SetBinsLength(Int_t n=-1);
213 TH3S& operator=(
const TH3S &h1);
214 friend TH3S operator*(Float_t c1, TH3S &h1);
215 friend TH3S operator*(TH3S &h1, Float_t c1) {
return operator*(c1,h1);}
216 friend TH3S operator+(TH3S &h1, TH3S &h2);
217 friend TH3S operator-(TH3S &h1, TH3S &h2);
218 friend TH3S operator*(TH3S &h1, TH3S &h2);
219 friend TH3S operator/(TH3S &h1, TH3S &h2);
222 virtual Double_t RetrieveBinContent(Int_t bin)
const {
return Double_t (fArray[bin]); }
223 virtual void UpdateBinContent(Int_t bin, Double_t content) { fArray[bin] = Short_t (content); }
230 class TH3I :
public TH3,
public TArrayI {
233 TH3I(
const char *name,
const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
234 ,Int_t nbinsy,Double_t ylow,Double_t yup
235 ,Int_t nbinsz,Double_t zlow,Double_t zup);
236 TH3I(
const char *name,
const char *title,Int_t nbinsx,
const Float_t *xbins
237 ,Int_t nbinsy,
const Float_t *ybins
238 ,Int_t nbinsz,
const Float_t *zbins);
239 TH3I(
const char *name,
const char *title,Int_t nbinsx,
const Double_t *xbins
240 ,Int_t nbinsy,
const Double_t *ybins
241 ,Int_t nbinsz,
const Double_t *zbins);
242 TH3I(
const TH3I &h3i);
244 virtual void AddBinContent(Int_t bin);
245 virtual void AddBinContent(Int_t bin, Double_t w);
246 virtual void Copy(TObject &hnew)
const;
247 virtual void Reset(Option_t *option=
"");
248 virtual void SetBinsLength(Int_t n=-1);
249 TH3I& operator=(
const TH3I &h1);
250 friend TH3I operator*(Float_t c1, TH3I &h1);
251 friend TH3I operator*(TH3I &h1, Float_t c1) {
return operator*(c1,h1);}
252 friend TH3I operator+(TH3I &h1, TH3I &h2);
253 friend TH3I operator-(TH3I &h1, TH3I &h2);
254 friend TH3I operator*(TH3I &h1, TH3I &h2);
255 friend TH3I operator/(TH3I &h1, TH3I &h2);
258 virtual Double_t RetrieveBinContent(Int_t bin)
const {
return Double_t (fArray[bin]); }
259 virtual void UpdateBinContent(Int_t bin, Double_t content) { fArray[bin] = Int_t (content); }
267 class TH3F :
public TH3,
public TArrayF {
270 TH3F(
const char *name,
const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
271 ,Int_t nbinsy,Double_t ylow,Double_t yup
272 ,Int_t nbinsz,Double_t zlow,Double_t zup);
273 TH3F(
const char *name,
const char *title,Int_t nbinsx,
const Float_t *xbins
274 ,Int_t nbinsy,
const Float_t *ybins
275 ,Int_t nbinsz,
const Float_t *zbins);
276 TH3F(
const char *name,
const char *title,Int_t nbinsx,
const Double_t *xbins
277 ,Int_t nbinsy,
const Double_t *ybins
278 ,Int_t nbinsz,
const Double_t *zbins);
279 TH3F(
const TH3F &h3f);
281 virtual void AddBinContent(Int_t bin) {++fArray[bin];}
282 virtual void AddBinContent(Int_t bin, Double_t w)
283 {fArray[bin] += Float_t (w);}
284 virtual void Copy(TObject &hnew)
const;
285 virtual void Reset(Option_t *option=
"");
286 virtual void SetBinsLength(Int_t n=-1);
287 TH3F& operator=(
const TH3F &h1);
288 friend TH3F operator*(Float_t c1, TH3F &h1);
289 friend TH3F operator*(TH3F &h1, Float_t c1) {
return operator*(c1,h1);}
290 friend TH3F operator+(TH3F &h1, TH3F &h2);
291 friend TH3F operator-(TH3F &h1, TH3F &h2);
292 friend TH3F operator*(TH3F &h1, TH3F &h2);
293 friend TH3F operator/(TH3F &h1, TH3F &h2);
296 virtual Double_t RetrieveBinContent(Int_t bin)
const {
return Double_t (fArray[bin]); }
297 virtual void UpdateBinContent(Int_t bin, Double_t content) { fArray[bin] = Float_t (content); }
304 class TH3D :
public TH3,
public TArrayD {
307 TH3D(
const char *name,
const char *title,Int_t nbinsx,Double_t xlow,Double_t xup
308 ,Int_t nbinsy,Double_t ylow,Double_t yup
309 ,Int_t nbinsz,Double_t zlow,Double_t zup);
310 TH3D(
const char *name,
const char *title,Int_t nbinsx,
const Float_t *xbins
311 ,Int_t nbinsy,
const Float_t *ybins
312 ,Int_t nbinsz,
const Float_t *zbins);
313 TH3D(
const char *name,
const char *title,Int_t nbinsx,
const Double_t *xbins
314 ,Int_t nbinsy,
const Double_t *ybins
315 ,Int_t nbinsz,
const Double_t *zbins);
316 TH3D(
const TH3D &h3d);
318 virtual void AddBinContent(Int_t bin) {++fArray[bin];}
319 virtual void AddBinContent(Int_t bin, Double_t w)
320 {fArray[bin] += Double_t (w);}
321 virtual void Copy(TObject &hnew)
const;
322 virtual void Reset(Option_t *option=
"");
323 virtual void SetBinsLength(Int_t n=-1);
324 TH3D& operator=(
const TH3D &h1);
325 friend TH3D operator*(Float_t c1, TH3D &h1);
326 friend TH3D operator*(TH3D &h1, Float_t c1) {
return operator*(c1,h1);}
327 friend TH3D operator+(TH3D &h1, TH3D &h2);
328 friend TH3D operator-(TH3D &h1, TH3D &h2);
329 friend TH3D operator*(TH3D &h1, TH3D &h2);
330 friend TH3D operator/(TH3D &h1, TH3D &h2);
333 virtual Double_t RetrieveBinContent(Int_t bin)
const {
return fArray[bin]; }
334 virtual void UpdateBinContent(Int_t bin, Double_t content) { fArray[bin] = content; }