77 :
TH1(name,title,nbinsx,xlow,xup),
82 Warning(
"TH3",
"nbinsy is <=0 - set to nbinsy = 1");
86 Warning(
"TH3",
"nbinsz is <=0 - set to nbinsz = 1");
91 fNcells = (nbinsx+2)*(nbinsy+2)*(nbinsz+2);
103 :
TH1(name,title,nbinsx,xbins),
107 if (nbinsy <= 0) {
Warning(
"TH3",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
108 if (nbinsz <= 0) nbinsz = 1;
113 fNcells = (nbinsx+2)*(nbinsy+2)*(nbinsz+2);
125 :
TH1(name,title,nbinsx,xbins),
129 if (nbinsy <= 0) {
Warning(
"TH3",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
130 if (nbinsz <= 0) nbinsz = 1;
135 fNcells = (nbinsx+2)*(nbinsy+2)*(nbinsz+2);
147 ((
TH3&)h).Copy(*
this);
188 if (!nbentries)
return 0;
191 if (action == 0)
return 0;
192 nbentries = -nbentries;
207 for (
Int_t i=1;i<nbentries;i++) {
209 if (x < xmin) xmin =
x;
210 if (x > xmax) xmax =
x;
212 if (y < ymin) ymin =
y;
213 if (y > ymax) ymax =
y;
215 if (z < zmin) zmin =
z;
216 if (z > zmax) zmax =
z;
235 for (
Int_t i=0;i<nbentries;i++) {
236 Fill(buffer[4*i+2],buffer[4*i+3],buffer[4*i+4],buffer[4*i+1]);
262 nbentries = -nbentries;
272 return Fill(x,y,z,w);
288 Error(
"Fill",
"Invalid signature - do nothing");
303 Int_t binx, biny, binz, bin;
308 if (binx <0 || biny <0 || binz<0)
return -1;
351 Int_t binx, biny, binz, bin;
356 if (binx <0 || biny <0 || binz<0)
return -1;
396 Int_t binx, biny, binz, bin;
401 if (binx <0 || biny <0 || binz<0)
return -1;
439 Int_t binx, biny, binz, bin;
444 if (binx <0 || biny <0 || binz<0)
return -1;
483 Int_t binx, biny, binz, bin;
488 if (binx <0 || biny <0 || binz<0)
return -1;
527 Int_t binx, biny, binz, bin;
532 if (binx <0 || biny <0 || binz<0)
return -1;
571 Int_t binx, biny, binz, bin;
576 if (binx <0 || biny <0 || binz<0)
return -1;
616 Int_t binx, biny, binz, bin;
621 if (binx <0 || biny <0 || binz<0)
return -1;
670 Int_t bin, binx, biny, binz, ibin, loop;
674 if (!fobj) {
Error(
"FillRandom",
"Unknown function: %s",fname);
return; }
675 TF3 *
f1 =
dynamic_cast<TF3*
>( fobj );
676 if (!f1) {
Error(
"FillRandom",
"Function: %s is not a TF3, is a %s",fname,fobj->IsA()->
GetName());
return; }
685 f1->
GetRange(xmin,ymin,zmin,xmax,ymax,zmax);
686 Info(
"FillRandom",
"Using function axis and range ([%g,%g],[%g,%g],[%g,%g])",xmin, xmax,ymin,ymax,zmin,zmax);
696 Int_t nxy = nbinsx*nbinsy;
697 Int_t nbins = nbinsx*nbinsy*nbinsz;
703 for (binz=1;binz<=nbinsz;binz++) {
705 for (biny=1;biny<=nbinsy;biny++) {
707 for (binx=1;binx<=nbinsx;binx++) {
715 integral[ibin] = integral[ibin-1] + fint;
721 if (integral[nbins] == 0 ) {
723 Error(
"FillRandom",
"Integral = zero");
return;
725 for (bin=1;bin<=nbins;bin++) integral[bin] /= integral[nbins];
730 for (loop=0;loop<ntimes;loop++) {
734 biny = (ibin - nxy*binz)/nbinsx;
735 binx = 1 + ibin - nbinsx*(biny + nbinsy*binz);
761 if (!h) {
Error(
"FillRandom",
"Null histogram");
return; }
763 Error(
"FillRandom",
"Histograms with different dimensions");
return;
771 for (loop=0;loop<ntimes;loop++) {
784 if (axis < 1 || axis > 3) {
785 Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
791 Int_t binx, biny, binz;
793 for (binx=1;binx<=nbinsx;binx++) {
794 for (biny=1;biny<=nbinsy;biny++) {
795 for (binz=1;binz<=nbinsz;binz++) {
800 }
else if (axis == 2) {
801 for (biny=1;biny<=nbinsy;biny++) {
802 for (binx=1;binx<=nbinsx;binx++) {
803 for (binz=1;binz<=nbinsz;binz++) {
809 for (binz=1;binz<=nbinsz;binz++) {
810 for (binx=1;binx<=nbinsx;binx++) {
811 for (biny=1;biny<=nbinsy;biny++) {
827 if (axis < 1 || axis > 3) {
828 Warning(
"FindLastBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
834 Int_t binx, biny, binz;
836 for (binx=nbinsx;binx>=1;binx--) {
837 for (biny=1;biny<=nbinsy;biny++) {
838 for (binz=1;binz<=nbinsz;binz++) {
843 }
else if (axis == 2) {
844 for (biny=nbinsy;biny>=1;biny--) {
845 for (binx=1;binx<=nbinsx;binx++) {
846 for (binz=1;binz<=nbinsz;binz++) {
852 for (binz=nbinsz;binz>=1;binz--) {
853 for (binx=1;binx<=nbinsx;binx++) {
854 for (biny=1;biny<=nbinsy;biny++) {
901 if (binminx < 1) binminx = 1;
902 if (binmaxx > nbinsx) binmaxx = nbinsx;
903 if (binmaxx < binminx) {binminx = 1; binmaxx = nbinsx;}
904 if (binminy < 1) binminy = 1;
905 if (binmaxy > nbinsy) binmaxy = nbinsy;
906 if (binmaxy < binminy) {binminy = 1; binmaxy = nbinsy;}
910 f1 = (
TF1*)
gROOT->GetFunction(
"gaus");
914 const char *fname = f1->
GetName();
921 char name[80], title[80];
925 for (ipar=0;ipar<npar;ipar++) {
928 if (xbins->
fN == 0) {
929 hlist[ipar] =
new TH2D(name, title,
933 hlist[ipar] =
new TH2D(name, title,
946 Int_t bin,binx,biny,binz;
947 for (biny=binminy;biny<=binmaxy;biny++) {
949 for (binx=binminx;binx<=binmaxx;binx++) {
953 for (binz=1;binz<=nbinsz;binz++) {
954 bin =
GetBin(binx,biny,binz);
956 if (w == 0)
continue;
961 if (nfill < cut)
continue;
963 hpz->Fit(fname,option);
965 if (npfits > npar && npfits >= cut) {
966 for (ipar=0;ipar<npar;ipar++) {
985 if (biny < 0) biny = 0;
986 if (biny > ofy) biny = ofy;
989 if (binz < 0) binz = 0;
990 if (binz > ofz) binz = ofz;
1026 Error(
"GetBinWithContent3",
"function is only valid for 3-D histograms");
1029 if (firstx <= 0) firstx = 1;
1031 if (firsty <= 0) firsty = 1;
1033 if (firstz <= 0) firstz = 1;
1035 Int_t binminx = 0, binminy=0, binminz=0;
1037 for (
Int_t k=firstz;k<=lastz;k++) {
1038 for (
Int_t j=firsty;j<=lasty;j++) {
1039 for (
Int_t i=firstx;i<=lastx;i++) {
1041 if (diff <= 0) {binx = i; biny=j; binz=k;
return diff;}
1042 if (diff < curmax && diff <= maxdiff) {curmax = diff, binminx=i; binminy=j;binminz=k;}
1058 if (axis1 < 1 || axis2 < 1 || axis1 > 3 || axis2 > 3) {
1059 Error(
"GetCorrelationFactor",
"Wrong parameters");
1062 if (axis1 == axis2)
return 1;
1064 if (stddev1 == 0)
return 0;
1066 if (stddev2 == 0)
return 0;
1076 if (axis1 < 1 || axis2 < 1 || axis1 > 3 || axis2 > 3) {
1077 Error(
"GetCovariance",
"Wrong parameters");
1094 if (sumw == 0)
return 0;
1095 if (axis1 == 1 && axis2 == 1) {
1096 return TMath::Abs(sumwx2/sumw - sumwx*sumwx/sumw2);
1098 if (axis1 == 2 && axis2 == 2) {
1099 return TMath::Abs(sumwy2/sumw - sumwy*sumwy/sumw2);
1101 if (axis1 == 3 && axis2 == 3) {
1102 return TMath::Abs(sumwz2/sumw - sumwz*sumwz/sumw2);
1104 if ((axis1 == 1 && axis2 == 2) || (axis1 == 2 && axis2 == 1)) {
1105 return sumwxy/sumw - sumwx/sumw*sumwy/sumw;
1107 if ((axis1 == 1 && axis2 == 3) || (axis1 == 3 && axis2 == 1)) {
1108 return sumwxz/sumw - sumwx/sumw*sumwz/sumw;
1110 if ((axis1 == 2 && axis2 == 3) || (axis1 == 3 && axis2 == 2)) {
1111 return sumwyz/sumw - sumwy/sumw*sumwz/sumw;
1126 Int_t nxy = nbinsx*nbinsy;
1127 Int_t nbins = nxy*nbinsz;
1136 if (integral == 0 ) { x = 0; y = 0; z = 0;
return;}
1142 Int_t binz = ibin/nxy;
1143 Int_t biny = (ibin - nxy*binz)/nbinsx;
1144 Int_t binx = ibin - nbinsx*(biny + nbinsy*binz);
1172 Int_t bin, binx, biny, binz;
1176 for (bin=0;bin<9;bin++) stats[bin] = 0;
1187 if (firstBinX == 1) firstBinX = 0;
1191 if (firstBinY == 1) firstBinY = 0;
1195 if (firstBinZ == 1) firstBinZ = 0;
1199 for (binz = firstBinZ; binz <= lastBinZ; binz++) {
1201 for (biny = firstBinY; biny <= lastBinY; biny++) {
1203 for (binx = firstBinX; binx <= lastBinX; binx++) {
1204 bin =
GetBin(binx,biny,binz);
1210 stats[1] += err*err;
1264 return DoIntegral(binx1,binx2,biny1,biny2,binz1,binz2,err,option);
1280 return DoIntegral(binx1,binx2,biny1,biny2,binz1,binz2,error,option,
kTRUE);
1289 Error(
"Interpolate",
"This function must be called with 3 arguments for a TH3");
1299 Error(
"Interpolate",
"This function must be called with 3 arguments for a TH3");
1318 Int_t obx = ubx + 1;
1322 Int_t oby = uby + 1;
1326 Int_t obz = ubz + 1;
1331 if (ubx <=0 || uby <=0 || ubz <= 0 ||
1333 Error(
"Interpolate",
"Cannot interpolate outside histogram domain.");
1352 Double_t i1 = v[0] * (1 - zd) + v[1] * zd;
1353 Double_t i2 = v[2] * (1 - zd) + v[3] * zd;
1354 Double_t j1 = v[4] * (1 - zd) + v[5] * zd;
1355 Double_t j2 = v[6] * (1 - zd) + v[7] * zd;
1358 Double_t w1 = i1 * (1 - yd) + i2 * yd;
1359 Double_t w2 = j1 * (1 - yd) + j2 * yd;
1362 Double_t result = w1 * (1 - xd) + w2 * xd;
1395 if (h2 == 0)
return 0;
1411 Error(
"KolmogorovTest",
"Histograms must be 3-D\n");
1417 Error(
"KolmogorovTest",
"Number of channels in X is different, %d and %d\n",ncx1,ncx2);
1421 Error(
"KolmogorovTest",
"Number of channels in Y is different, %d and %d\n",ncy1,ncy2);
1425 Error(
"KolmogorovTest",
"Number of channels in Z is different, %d and %d\n",ncz1,ncz2);
1435 if (diff1 > difprec || diff2 > difprec) {
1436 Error(
"KolmogorovTest",
"histograms with different binning along X");
1441 if (diff1 > difprec || diff2 > difprec) {
1442 Error(
"KolmogorovTest",
"histograms with different binning along Y");
1447 if (diff1 > difprec || diff2 > difprec) {
1448 Error(
"KolmogorovTest",
"histograms with different binning along Z");
1453 Int_t ibeg = 1, jbeg = 1, kbeg = 1;
1454 Int_t iend = ncx1, jend = ncy1, kend = ncz1;
1455 if (opt.
Contains(
"U")) {ibeg = 0; jbeg = 0; kbeg = 0;}
1456 if (opt.
Contains(
"O")) {iend = ncx1+1; jend = ncy1+1; kend = ncz1+1;}
1463 for (i = ibeg; i <= iend; i++) {
1464 for (j = jbeg; j <= jend; j++) {
1465 for (k = kbeg; k <= kend; k++) {
1480 Error(
"KolmogorovTest",
"Integral is zero for h1=%s\n",h1->
GetName());
1484 Error(
"KolmogorovTest",
"Integral is zero for h2=%s\n",h2->
GetName());
1492 esum1 = sum1 * sum1 / w1;
1497 esum2 = sum2 * sum2 / w2;
1501 if (afunc2 && afunc1) {
1502 Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
1508 int order[3] = {0,1,2};
1512 binbeg[0] = ibeg; binbeg[1] = jbeg; binbeg[2] = kbeg;
1513 binend[0] = iend; binend[1] = jend; binend[2] = kend;
1522 for (i = binbeg[order[0] ]; i <= binend[order[0] ]; i++) {
1523 for ( j = binbeg[order[1] ]; j <= binend[order[1] ]; j++) {
1524 for ( k = binbeg[order[2] ]; k <= binend[order[2] ]; k++) {
1525 ibin[ order[0] ] = i;
1526 ibin[ order[1] ] = j;
1527 ibin[ order[2] ] = k;
1528 bin = h1->
GetBin(ibin[0],ibin[1],ibin[2]);
1535 vdfmax[icomb] = dmax;
1554 if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
1558 Double_t chi2 = d12*d12/(esum1+esum2);
1561 if (prb > 0 && prb2 > 0) prb = prb*prb2*(1-
TMath::Log(prb*prb2));
1567 printf(
" Kolmo Prob h1 = %s, sum1=%g\n",h1->
GetName(),sum1);
1568 printf(
" Kolmo Prob h2 = %s, sum2=%g\n",h2->
GetName(),sum2);
1569 printf(
" Kolmo Probabil = %f, Max Dist = %g\n",prb,dfmax);
1571 printf(
" Kolmo Probabil = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
1577 if (opt.
Contains(
"M"))
return dfmax;
1695 const_cast<TAxis*
>(axis1)->SetRange(imin1,imax1);
1696 const_cast<TAxis*
>(axis2)->SetRange(imin2,imax2);
1700 computeErrors =
kTRUE;
1705 originalRange =
kTRUE;
1709 TH1D *
h1 =
DoProject1D(name, title, projAxis, computeErrors, originalRange,
true,
true);
1721 if (!
gPad || !
gPad->FindObject(h1)) {
1726 if (padsav) padsav->
cd();
1737 bool computeErrors,
bool originalRange,
1738 bool useUF,
bool useOF)
const 1747 Int_t nx = ixmax-ixmin+1;
1753 Error(
"DoProject1D",
"Histogram with name %s must be a TH1D and is a %s",name,h1obj->
ClassName());
1760 if ( originalRange )
1762 if (bins->
fN == 0) {
1768 if (bins->
fN == 0) {
1778 if ( originalRange )
1780 if (bins->
fN == 0) {
1786 if (bins->
fN == 0) {
1789 h1 =
new TH1D(name,title,nx,&bins->
fArray[ixmin-1]);
1815 const TAxis* out1 = 0;
1816 const TAxis* out2 = 0;
1820 }
else if ( projX ==
GetYaxis() ) {
1828 Int_t *refX = 0, *refY = 0, *refZ = 0;
1829 Int_t ixbin, out1bin, out2bin;
1830 if ( projX ==
GetXaxis() ) { refX = &ixbin; refY = &out1bin; refZ = &out2bin; }
1831 if ( projX ==
GetYaxis() ) { refX = &out2bin; refY = &ixbin; refZ = &out1bin; }
1832 if ( projX ==
GetZaxis() ) { refX = &out2bin; refY = &out1bin; refZ = &ixbin; }
1833 R__ASSERT (refX != 0 && refY != 0 && refZ != 0);
1852 for (ixbin=0;ixbin<=1+projX->
GetNbins();ixbin++) {
1859 for (out1bin = out1min; out1bin <= out1max; out1bin++) {
1860 for (out2bin = out2min; out2bin <= out2max; out2bin++) {
1866 if (computeErrors) {
1884 bool resetStats =
true;
1885 double eps = 1.E-12;
1889 bool resetEntries = resetStats;
1891 resetEntries |= !useUF || !useOF;
1898 stats[2] = stats[4];
1899 stats[3] = stats[5];
1902 stats[2] = stats[7];
1903 stats[3] = stats[8];
1932 bool computeErrors,
bool originalRange,
1933 bool useUF,
bool useOF)
const 1943 Int_t nx = ixmax-ixmin+1;
1944 Int_t ny = iymax-iymin+1;
1952 Error(
"DoProject2D",
"Histogram with name %s must be a TH2D and is a %s",name,h2obj->
ClassName());
1960 if ( originalRange ) {
1982 if ( originalRange )
1984 if (xbins->
fN == 0 && ybins->
fN == 0) {
1987 }
else if (ybins->
fN == 0) {
1990 }
else if (xbins->
fN == 0) {
1997 if (xbins->
fN == 0 && ybins->
fN == 0) {
2000 }
else if (ybins->
fN == 0) {
2002 ,nx,&xbins->
fArray[ixmin-1]);
2003 }
else if (xbins->
fN == 0) {
2004 h2 =
new TH2D(name,title,ny,&ybins->
fArray[iymin-1]
2007 h2 =
new TH2D(name,title,ny,&ybins->
fArray[iymin-1],nx,&xbins->
fArray[ixmin-1]);
2047 const TAxis* out = 0;
2056 Int_t *refX = 0, *refY = 0, *refZ = 0;
2057 Int_t ixbin, iybin, outbin;
2058 if ( projX ==
GetXaxis() && projY ==
GetYaxis() ) { refX = &ixbin; refY = &iybin; refZ = &outbin; }
2059 if ( projX ==
GetYaxis() && projY ==
GetXaxis() ) { refX = &iybin; refY = &ixbin; refZ = &outbin; }
2060 if ( projX ==
GetXaxis() && projY ==
GetZaxis() ) { refX = &ixbin; refY = &outbin; refZ = &iybin; }
2061 if ( projX ==
GetZaxis() && projY ==
GetXaxis() ) { refX = &iybin; refY = &outbin; refZ = &ixbin; }
2062 if ( projX ==
GetYaxis() && projY ==
GetZaxis() ) { refX = &outbin; refY = &ixbin; refZ = &iybin; }
2063 if ( projX ==
GetZaxis() && projY ==
GetYaxis() ) { refX = &outbin; refY = &iybin; refZ = &ixbin; }
2064 R__ASSERT (refX != 0 && refY != 0 && refZ != 0);
2073 if (outmin == 0 && outmax == 0) { outmin = 1; outmax = out->
GetNbins(); }
2078 for (ixbin=0;ixbin<=1+projX->
GetNbins();ixbin++) {
2082 for (iybin=0;iybin<=1+projY->
GetNbins();iybin++) {
2090 for (outbin = outmin; outbin <= outmax; outbin++) {
2096 if (computeErrors) {
2114 bool resetStats =
true;
2115 double eps = 1.E-12;
2119 bool resetEntries = resetStats;
2121 resetEntries |= !useUF || !useOF;
2126 for (
Int_t i = 0; i <
kNstat; ++i) { oldst[i] = 0; }
2128 std::copy(oldst,oldst+kNstat,stats);
2132 stats[4] = oldst[7];
2133 stats[5] = oldst[8];
2134 stats[6] = oldst[9];
2137 stats[2] = oldst[4];
2138 stats[3] = oldst[5];
2140 stats[4] = oldst[2];
2141 stats[5] = oldst[3];
2144 stats[4] = oldst[7];
2145 stats[5] = oldst[8];
2146 stats[6] = oldst[10];
2150 stats[2] = oldst[7];
2151 stats[3] = oldst[8];
2153 stats[4] = oldst[2];
2154 stats[5] = oldst[3];
2155 stats[6] = oldst[9];
2158 stats[4] = oldst[4];
2159 stats[5] = oldst[5];
2160 stats[6] = oldst[10];
2175 if (!computeErrors) entries =
TMath::Floor( entries + 0.5);
2238 if (opt.
Contains(
"x")) { pcase = 1; ptype =
"x"; }
2239 if (opt.
Contains(
"y")) { pcase = 2; ptype =
"y"; }
2240 if (opt.
Contains(
"z")) { pcase = 3; ptype =
"z"; }
2241 if (opt.
Contains(
"xy")) { pcase = 4; ptype =
"xy"; }
2242 if (opt.
Contains(
"yx")) { pcase = 5; ptype =
"yx"; }
2243 if (opt.
Contains(
"xz")) { pcase = 6; ptype =
"xz"; }
2244 if (opt.
Contains(
"zx")) { pcase = 7; ptype =
"zx"; }
2245 if (opt.
Contains(
"yz")) { pcase = 8; ptype =
"yz"; }
2246 if (opt.
Contains(
"zy")) { pcase = 9; ptype =
"zy"; }
2249 Error(
"Project3D",
"No projection axis specified - return a NULL pointer");
2256 computeErrors =
kTRUE;
2273 originalRange =
kTRUE;
2283 name +=
"_"; name += opt;
2284 title +=
" "; title += ptype; title +=
" projection";
2290 computeErrors, originalRange, useUF, useOF);
2296 computeErrors, originalRange, useUF, useOF);
2302 computeErrors, originalRange, useUF, useOF);
2308 computeErrors, originalRange, useUF, useOF);
2314 computeErrors, originalRange, useUF, useOF);
2320 computeErrors, originalRange, useUF, useOF);
2326 computeErrors, originalRange, useUF, useOF);
2332 computeErrors, originalRange, useUF, useOF);
2338 computeErrors, originalRange, useUF, useOF);
2349 if (!
gPad || !
gPad->FindObject(h)) {
2354 if (padsav) padsav->
cd();
2372 if (useWeights && binSumw2.
fN <= 0) useWeights =
false;
2379 if (outBin <0)
return;
2381 if ( useWeights ) tmp = binSumw2.
fArray[outBin];
2382 p2->
Fill( u , v, w, cont);
2392 bool originalRange,
bool useUF,
bool useOF)
const 2400 Int_t nx = ixmax-ixmin+1;
2401 Int_t ny = iymax-iymin+1;
2411 Error(
"DoProjectProfile2D",
"Histogram with name %s must be a TProfile2D and is a %s",name,p2obj->
ClassName());
2419 if ( originalRange ) {
2440 if ( originalRange ) {
2441 if (xbins->
fN == 0 && ybins->
fN == 0) {
2444 }
else if (ybins->
fN == 0) {
2447 }
else if (xbins->
fN == 0) {
2454 if (xbins->
fN == 0 && ybins->
fN == 0) {
2457 }
else if (ybins->
fN == 0) {
2459 ,nx,&xbins->
fArray[ixmin-1]);
2460 }
else if (xbins->
fN == 0) {
2470 const TAxis* outAxis = 0;
2485 Int_t *refX = 0, *refY = 0, *refZ = 0;
2486 Int_t ixbin, iybin, outbin;
2487 if ( projX ==
GetXaxis() && projY ==
GetYaxis() ) { refX = &ixbin; refY = &iybin; refZ = &outbin; }
2488 if ( projX ==
GetYaxis() && projY ==
GetXaxis() ) { refX = &iybin; refY = &ixbin; refZ = &outbin; }
2489 if ( projX ==
GetXaxis() && projY ==
GetZaxis() ) { refX = &ixbin; refY = &outbin; refZ = &iybin; }
2490 if ( projX ==
GetZaxis() && projY ==
GetXaxis() ) { refX = &iybin; refY = &outbin; refZ = &ixbin; }
2491 if ( projX ==
GetYaxis() && projY ==
GetZaxis() ) { refX = &outbin; refY = &ixbin; refZ = &iybin; }
2492 if ( projX ==
GetZaxis() && projY ==
GetYaxis() ) { refX = &outbin; refY = &iybin; refZ = &ixbin; }
2493 R__ASSERT (refX != 0 && refY != 0 && refZ != 0);
2503 if (useWeights && binSumw2.
fN <= 0) useWeights =
false;
2507 for (ixbin=0;ixbin<=1+projX->
GetNbins();ixbin++) {
2509 for ( iybin=0;iybin<=1+projY->
GetNbins();iybin++) {
2514 if (poutBin <0)
continue;
2516 for (outbin = outmin; outbin <= outmax; outbin++) {
2523 if (!cont)
continue;
2527 if ( useWeights ) tmp = binSumw2.
fArray[poutBin];
2537 bool resetStats =
true;
2548 if (!useWeights) entries =
TMath::Floor( entries + 0.5);
2602 if (opt.
Contains(
"xy")) { pcase = 4; ptype =
"xy"; }
2603 if (opt.
Contains(
"yx")) { pcase = 5; ptype =
"yx"; }
2604 if (opt.
Contains(
"xz")) { pcase = 6; ptype =
"xz"; }
2605 if (opt.
Contains(
"zx")) { pcase = 7; ptype =
"zx"; }
2606 if (opt.
Contains(
"yz")) { pcase = 8; ptype =
"yz"; }
2607 if (opt.
Contains(
"zy")) { pcase = 9; ptype =
"zy"; }
2610 Error(
"Project3D",
"No projection axis specified - return a NULL pointer");
2628 originalRange =
kTRUE;
2636 name +=
"_p"; name += opt;
2637 title +=
" profile "; title += ptype; title +=
" projection";
2699 return Rebin3D(ngroup, 1, 1, newname);
2709 return Rebin3D(1, ngroup, 1, newname);
2719 return Rebin3D(1, 1, ngroup, newname);
2750 Int_t i,j,k,xbin,ybin,zbin;
2760 if ((nxgroup <= 0) || (nxgroup > nxbins)) {
2761 Error(
"Rebin",
"Illegal value of nxgroup=%d",nxgroup);
2764 if ((nygroup <= 0) || (nygroup > nybins)) {
2765 Error(
"Rebin",
"Illegal value of nygroup=%d",nygroup);
2768 if ((nzgroup <= 0) || (nzgroup > nzbins)) {
2769 Error(
"Rebin",
"Illegal value of nzgroup=%d",nzgroup);
2773 Int_t newxbins = nxbins/nxgroup;
2774 Int_t newybins = nybins/nygroup;
2775 Int_t newzbins = nzbins/nzgroup;
2793 if (newname && strlen(newname)) {
2801 bool resetStat =
false;
2805 if (newxbins*nxgroup != nxbins) {
2809 if (newybins*nygroup != nybins) {
2813 if (newzbins*nzgroup != nzbins) {
2855 if (nxgroup != 1 || nygroup != 1 || nzgroup != 1) {
2864 hnew->
SetBins(newxbins,xbins, newybins, ybins, newzbins, zbins);
2869 hnew->
SetBins(newxbins, xmin, xmax, newybins, ymin, ymax, newzbins, zmin, zmax);
2877 for (xbin = 1; xbin <= newxbins; xbin++) {
2880 for (ybin = 1; ybin <= newybins; ybin++) {
2882 for (zbin = 1; zbin <= newzbins; zbin++) {
2885 for (i = 0; i < nxgroup; i++) {
2886 if (oldxbin+i > nxbins)
break;
2887 for (j =0; j < nygroup; j++) {
2888 if (oldybin+j > nybins)
break;
2889 for (k =0; k < nzgroup; k++) {
2890 if (oldzbin+k > nzbins)
break;
2892 bin = oldxbin + i + (oldybin + j)*(nxbins + 2) + (oldzbin + k)*(nxbins + 2)*(nybins + 2);
2893 binContent += oldBins[bin];
2894 if (oldSumw2) binSumw2 += oldSumw2[bin];
2909 for (
Int_t xover = 0; xover <= 1; xover++) {
2910 for (
Int_t yover = 0; yover <= 1; yover++) {
2911 for (
Int_t zover = 0; zover <= 1; zover++) {
2915 for (xbin = xover*oldxbin; xbin <= xover*(nxbins+1); xbin++) {
2916 for (ybin = yover*oldybin; ybin <= yover*(nybins+1); ybin++) {
2917 for (zbin = zover*oldzbin; zbin <= zover*(nzbins+1); zbin++) {
2918 bin =
GetBin(xbin,ybin,zbin);
2919 binContent += oldBins[bin];
2920 if (oldSumw2) binSumw2 += oldSumw2[bin];
2925 yover*(newybins+1), zover*(newzbins+1) );
2932 Double_t binContent0, binContent2, binContent3, binContent4;
2933 Double_t binError0, binError2, binError3, binError4;
2934 Int_t oldxbin2, oldybin2, oldzbin2;
2935 Int_t ufbin, ofbin, ofbin2, ofbin3, ofbin4;
2941 for (xbin = 1; xbin<=newxbins; xbin++) {
2943 for (zbin = 1; zbin<=newzbins; zbin++) {
2944 binContent0 = binContent2 = 0;
2945 binError0 = binError2 = 0;
2946 for (i=0; i<nxgroup; i++) {
2947 if (oldxbin2+i > nxbins)
break;
2948 for (k=0; k<nzgroup; k++) {
2949 if (oldzbin2+k > nzbins)
break;
2951 ufbin = oldxbin2 + i + (nxbins+2)*(nybins+2)*(oldzbin2+k);
2952 binContent0 += oldBins[ufbin];
2953 if (oldSumw2) binError0 += oldSumw2[ufbin];
2954 for (ybin = oldybin; ybin <= nybins + 1; ybin++) {
2956 ofbin = ufbin + ybin*(nxbins+2);
2957 binContent2 += oldBins[ofbin];
2958 if (oldSumw2) binError2 += oldSumw2[ofbin];
2968 oldzbin2 += nzgroup;
2970 oldxbin2 += nxgroup;
2977 for (ybin = 1; ybin<=newybins; ybin++) {
2979 for (zbin = 1; zbin<=newzbins; zbin++) {
2980 binContent0 = binContent2 = 0;
2981 binError0 = binError2 = 0;
2982 for (j=0; j<nygroup; j++) {
2983 if (oldybin2+j > nybins)
break;
2984 for (k=0; k<nzgroup; k++) {
2985 if (oldzbin2+k > nzbins)
break;
2987 ufbin = (oldybin2 + j)*(nxbins+2) + (nxbins+2)*(nybins+2)*(oldzbin2+k);
2988 binContent0 += oldBins[ufbin];
2989 if (oldSumw2) binError0 += oldSumw2[ufbin];
2990 for (xbin = oldxbin; xbin <= nxbins + 1; xbin++) {
2992 ofbin = ufbin + xbin;
2993 binContent2 += oldBins[ofbin];
2994 if (oldSumw2) binError2 += oldSumw2[ofbin];
3004 oldzbin2 += nzgroup;
3006 oldybin2 += nygroup;
3013 for (xbin = 1; xbin<=newxbins; xbin++) {
3015 for (ybin = 1; ybin<=newybins; ybin++) {
3016 binContent0 = binContent2 = 0;
3017 binError0 = binError2 = 0;
3018 for (i=0; i<nxgroup; i++) {
3019 if (oldxbin2+i > nxbins)
break;
3020 for (j=0; j<nygroup; j++) {
3021 if (oldybin2+j > nybins)
break;
3023 ufbin = oldxbin2 + i + (nxbins+2)*(oldybin2+j);
3024 binContent0 += oldBins[ufbin];
3025 if (oldSumw2) binError0 += oldSumw2[ufbin];
3026 for (zbin = oldzbin; zbin <= nzbins + 1; zbin++) {
3028 ofbin = ufbin + (nxbins+2)*(nybins+2)*zbin;
3029 binContent2 += oldBins[ofbin];
3030 if (oldSumw2) binError2 += oldSumw2[ofbin];
3040 oldybin2 += nygroup;
3042 oldxbin2 += nxgroup;
3049 for (xbin = 1; xbin<=newxbins; xbin++) {
3058 for (i=0; i<nxgroup; i++) {
3059 if (oldxbin2+i > nxbins)
break;
3060 ufbin = oldxbin2 + i;
3061 binContent0 += oldBins[ufbin];
3062 if (oldSumw2) binError0 += oldSumw2[ufbin];
3063 for (ybin = oldybin; ybin <= nybins + 1; ybin++) {
3064 ofbin3 = ufbin+ybin*(nxbins+2);
3065 binContent3 += oldBins[ ofbin3 ];
3066 if (oldSumw2) binError3 += oldSumw2[ofbin3];
3067 for (zbin = oldzbin; zbin <= nzbins + 1; zbin++) {
3069 ofbin4 = oldxbin2 + i + ybin*(nxbins+2) + (nxbins+2)*(nybins+2)*zbin;
3070 binContent4 += oldBins[ofbin4];
3071 if (oldSumw2) binError4 += oldSumw2[ofbin4];
3074 for (zbin = oldzbin; zbin <= nzbins + 1; zbin++) {
3075 ofbin2 = ufbin+zbin*(nxbins+2)*(nybins+2);
3076 binContent2 += oldBins[ ofbin2 ];
3077 if (oldSumw2) binError2 += oldSumw2[ofbin2];
3083 hnew->
SetBinContent(xbin,newybins+1,newzbins+1,binContent4);
3090 oldxbin2 += nxgroup;
3097 for (zbin = 1; zbin<=newzbins; zbin++) {
3106 for (i=0; i<nzgroup; i++) {
3107 if (oldzbin2+i > nzbins)
break;
3108 ufbin = (oldzbin2 + i)*(nxbins+2)*(nybins+2);
3109 binContent0 += oldBins[ufbin];
3110 if (oldSumw2) binError0 += oldSumw2[ufbin];
3111 for (ybin = oldybin; ybin <= nybins + 1; ybin++) {
3112 ofbin3 = ufbin+ybin*(nxbins+2);
3113 binContent3 += oldBins[ ofbin3 ];
3114 if (oldSumw2) binError3 += oldSumw2[ofbin3];
3115 for (xbin = oldxbin; xbin <= nxbins + 1; xbin++) {
3117 ofbin4 = ufbin + xbin + ybin*(nxbins+2);
3118 binContent4 += oldBins[ofbin4];
3119 if (oldSumw2) binError4 += oldSumw2[ofbin4];
3122 for (xbin = oldxbin; xbin <= nxbins + 1; xbin++) {
3123 ofbin2 = xbin +(oldzbin2+i)*(nxbins+2)*(nybins+2);
3124 binContent2 += oldBins[ ofbin2 ];
3125 if (oldSumw2) binError2 += oldSumw2[ofbin2];
3131 hnew->
SetBinContent(newxbins+1,newybins+1,zbin,binContent4);
3138 oldzbin2 += nzgroup;
3145 for (ybin = 1; ybin<=newybins; ybin++) {
3154 for (i=0; i<nygroup; i++) {
3155 if (oldybin2+i > nybins)
break;
3156 ufbin = (oldybin2 + i)*(nxbins+2);
3157 binContent0 += oldBins[ufbin];
3158 if (oldSumw2) binError0 += oldSumw2[ufbin];
3159 for (xbin = oldxbin; xbin <= nxbins + 1; xbin++) {
3160 ofbin3 = ufbin+xbin;
3161 binContent3 += oldBins[ ofbin3 ];
3162 if (oldSumw2) binError3 += oldSumw2[ofbin3];
3163 for (zbin = oldzbin; zbin <= nzbins + 1; zbin++) {
3165 ofbin4 = xbin + (nxbins+2)*(nybins+2)*zbin+(oldybin2+i)*(nxbins+2);
3166 binContent4 += oldBins[ofbin4];
3167 if (oldSumw2) binError4 += oldSumw2[ofbin4];
3170 for (zbin = oldzbin; zbin <= nzbins + 1; zbin++) {
3171 ofbin2 = (oldybin2+i)*(nxbins+2)+zbin*(nxbins+2)*(nybins+2);
3172 binContent2 += oldBins[ ofbin2 ];
3173 if (oldSumw2) binError2 += oldSumw2[ofbin2];
3179 hnew->
SetBinContent(newxbins+1,ybin,newzbins+1,binContent4);
3186 oldybin2 += nygroup;
3229 if (!resetStat) hnew->
PutStats(stat);
3232 if (oldSumw2)
delete [] oldSumw2;
3263 if (bin < 0)
return;
3272 void TH3::Streamer(
TBuffer &R__b)
3282 TH1::Streamer(R__b);
3283 TAtt3D::Streamer(R__b);
3325 :
TH3(name,title,nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup)
3340 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
3353 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
3384 if (newval > -128 && newval < 128) {
fArray[bin] =
Char_t(newval);
return;}
3385 if (newval < -127)
fArray[bin] = -127;
3386 if (newval > 127)
fArray[bin] = 127;
3454 void TH3C::Streamer(
TBuffer &R__b)
3467 TH1::Streamer(R__b);
3468 TArrayC::Streamer(R__b);
3470 TAtt3D::Streamer(R__b);
3472 TH3::Streamer(R__b);
3473 TArrayC::Streamer(R__b);
3489 if (
this != &h1) ((
TH3C&)h1).
Copy(*
this);
3586 :
TH3(name,title,nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup)
3601 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
3614 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
3645 if (newval > -32768 && newval < 32768) {
fArray[bin] =
Short_t(newval);
return;}
3646 if (newval < -32767)
fArray[bin] = -32767;
3647 if (newval > 32767)
fArray[bin] = 32767;
3686 void TH3S::Streamer(
TBuffer &R__b)
3699 TH1::Streamer(R__b);
3700 TArrayS::Streamer(R__b);
3702 TAtt3D::Streamer(R__b);
3704 TH3::Streamer(R__b);
3705 TArrayS::Streamer(R__b);
3721 if (
this != &h1) ((
TH3S&)h1).
Copy(*
this);
3818 :
TH3(name,title,nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup)
3833 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
3846 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
3877 if (newval > -2147483647 && newval < 2147483647) {
fArray[bin] =
Int_t(newval);
return;}
3878 if (newval < -2147483647)
fArray[bin] = -2147483647;
3879 if (newval > 2147483647)
fArray[bin] = 2147483647;
3920 if (
this != &h1) ((
TH3I&)h1).
Copy(*
this);
4017 :
TH3(name,title,nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup)
4032 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
4045 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
4096 void TH3F::Streamer(
TBuffer &R__b)
4109 TH1::Streamer(R__b);
4110 TArrayF::Streamer(R__b);
4112 TAtt3D::Streamer(R__b);
4114 TH3::Streamer(R__b);
4115 TArrayF::Streamer(R__b);
4131 if (
this != &h1) ((
TH3F&)h1).
Copy(*
this);
4228 :
TH3(name,title,nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup)
4243 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
4256 :
TH3(name,title,nbinsx,xbins,nbinsy,ybins,nbinsz,zbins)
4307 void TH3D::Streamer(
TBuffer &R__b)
4320 TH1::Streamer(R__b);
4321 TArrayD::Streamer(R__b);
4323 TAtt3D::Streamer(R__b);
4325 TH3::Streamer(R__b);
4326 TArrayD::Streamer(R__b);
4342 if (
this != &h1) ((
TH3D&)h1).
Copy(*
this);
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title Offset is a correction factor with respect to the "s...
virtual const char * GetName() const
Returns name of object.
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
virtual Float_t GetTickLength() const
virtual Int_t GetNcells() const
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
virtual Double_t GetEffectiveEntries() const
Number of effective entries of the histogram.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms.
TH3()
Default constructor.
virtual void SetParameters(const Double_t *params)
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
friend TH3D operator*(Float_t c1, TH3D &h1)
Operator *.
Double_t Floor(Double_t x)
void Set(Int_t n)
Set size of this array to n chars.
Int_t GetFirst() const
Return first bin on the axis i.e.
virtual void Copy(TObject &hnew) const
Copy this 3-D histogram structure to newth3.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
void Copy(TArrayI &array) const
virtual void Copy(TObject &hnew) const
Copy this 3-D histogram structure to newth3.
virtual TH1 * Project3D(Option_t *option="x") const
Project a 3-d histogram into 1 or 2-d histograms depending on the option parameter, which may contain a combination of the characters x,y,z,e.
virtual TH3 * RebinX(Int_t ngroup=2, const char *newname="")
Rebin only the X axis see Rebin3D.
virtual void Sumw2(Bool_t flag=kTRUE)
Create/Delete structure to store sum of squares of weights per bin.
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
friend TH3F operator+(TH3F &h1, TH3F &h2)
Operator +.
static Bool_t fgDefaultSumw2
!flag to call TH1::Sumw2 automatically at histogram creation time
TVirtualHistPainter * GetPainter(Option_t *option="")
Return pointer to painter.
Collectable string class.
virtual void FillRandom(const char *fname, Int_t ntimes=5000)
Fill histogram following distribution in function fname.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
friend TH3F operator/(TH3F &h1, TH3F &h2)
Operator /.
virtual Float_t GetLabelOffset() const
3-D histogram with a float per channel (see TH1 documentation)}
virtual TProfile2D * DoProjectProfile2D(const char *name, const char *title, const TAxis *projX, const TAxis *projY, bool originalRange, bool useUF, bool useOF) const
internal method to project to a 2D Profile called from TH3::Project3DProfile
friend TH3I operator+(TH3I &h1, TH3I &h2)
Operator +.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Double_t KolmogorovProb(Double_t z)
TObject * GetParent() const
Return pointer to parent of this buffer.
Double_t QuietNaN()
Returns a quiet NaN as defined by IEEE 754
TAxis fYaxis
Y axis descriptor.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content.
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
Bool_t GetStatOverflowsBehaviour() const
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
virtual TH3 * Rebin3D(Int_t nxgroup=2, Int_t nygroup=2, Int_t nzgroup=2, const char *newname="")
Rebin this histogram grouping nxgroup/nygroup/nzgroup bins along the xaxis/yaxis/zaxis together...
virtual Color_t GetAxisColor() const
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels.
virtual TH1D * ProjectionZ(const char *name="_pz", Int_t ixmin=0, Int_t ixmax=-1, Int_t iymin=0, Int_t iymax=-1, Option_t *option="") const
Project a 3-D histogram into a 1-D histogram along Z.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
virtual Int_t GetBin(Int_t binx, Int_t biny, Int_t binz) const
See comments in TH1::GetBin.
Use this attribute class when an object should have 3D capabilities.
void ToUpper()
Change string to upper case.
TH3S & operator=(const TH3S &h1)
Operator =.
virtual Int_t FindLastBinAbove(Double_t threshold=0, Int_t axis=1) const
Find last bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold i...
friend TH3D operator-(TH3D &h1, TH3D &h2)
Operator -.
Buffer base class used for serializing objects.
friend TH3C operator+(TH3C &h1, TH3C &h2)
Operator +.
virtual Int_t GetNbinsZ() const
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual ~TH3D()
Destructor.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Array of floats (32 bits per element).
virtual void SetTitleFont(Style_t font=62)
Set the title font.
void ToLower()
Change string to lower-case.
friend TH3F operator*(Float_t c1, TH3F &h1)
Operator *.
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
TArrayD fSumw2
Array of sum of squares of weights.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
friend TH3I operator/(TH3I &h1, TH3I &h2)
Operator /.
void Copy(TArrayC &array) const
virtual Float_t GetLabelSize() const
virtual TProfile2D * Project3DProfile(Option_t *option="xy") const
Project a 3-d histogram into a 2-d profile histograms depending on the option parameter option may co...
virtual Int_t FindGoodLimits(TH1 *h, Double_t xmin, Double_t xmax)
Compute the best axis limits for the X axis.
virtual Int_t FindFirstBinAbove(Double_t threshold=0, Int_t axis=1) const
Find first bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold ...
TAxis fZaxis
Z axis descriptor.
friend TH3F operator-(TH3F &h1, TH3F &h2)
Operator -.
virtual Double_t GetCovariance(Int_t axis1=1, Int_t axis2=2) const
Return covariance between axis1 and axis2.
virtual void SetLabelOffset(Float_t offset=0.005)
Set distance between the axis and the labels The distance is expressed in per cent of the pad width...
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Int_t BufferFill(Double_t x, Double_t y, Double_t z, Double_t w)
accumulate arguments in buffer.
Double_t Prob(Double_t chi2, Int_t ndf)
Array of integers (32 bits per element).
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void SetBuffer(Int_t buffersize, Option_t *option="")
Set the maximum number of entries to be kept in the buffer.
Double_t fTsumwx2
Total Sum of weight*X*X.
virtual Bool_t CanExtendAllAxes() const
Returns true if all axes are extendable.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
virtual void SetLabelFont(Style_t font=62)
Set labels' font.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual Style_t GetTitleFont() const
virtual Int_t GetDimension() const
Int_t Fill(const Double_t *v)
virtual TH2D * DoProject2D(const char *name, const char *title, const TAxis *projX, const TAxis *projY, bool computeErrors, bool originalRange, bool useUF, bool useOF) const
internal method performing the projection to a 2D histogram called from TH3::Project3D ...
virtual const char * ClassName() const
Returns name of class to which the object belongs.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
virtual Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between THIS histogram and h2, using Kolmogorov test...
friend TH3D operator+(TH3D &h1, TH3D &h2)
Operator +.
virtual Int_t GetVersionOwner() const =0
virtual TH1D * ProjectionY(const char *name="_py", Int_t ixmin=0, Int_t ixmax=-1, Int_t izmin=0, Int_t izmax=-1, Option_t *option="") const
Project a 3-D histogram into a 1-D histogram along Y.
virtual TH3 * RebinY(Int_t ngroup=2, const char *newname="")
Rebin only the Y axis see Rebin3D.
virtual Double_t GetCorrelationFactor(Int_t axis1=1, Int_t axis2=2) const
Return correlation factor between axis1 and axis2.
friend TH3C operator*(Float_t c1, TH3C &h1)
Operator *.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
THashList * GetLabels() const
static double p2(double t, double a, double b, double c)
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Ssiz_t First(char c) const
Find first occurrence of a character c.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
virtual void ResetStats()
Reset the statistics including the number of entries and replace with values calculates from bin cont...
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void Set(Int_t n)
Set size of this array to n ints.
virtual void Reset(Option_t *option="")
Reset.
virtual void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
virtual Double_t ComputeIntegral(Bool_t onlyPositive=false)
Compute integral (cumulative sum of bins) The result stored in fIntegral is used by the GetRandom fun...
virtual Color_t GetLabelColor() const
virtual void GetStats(Double_t *stats) const
Fill the array stats from the contents of this histogram The array stats must be correctly dimensione...
The 3-D histogram classes derived from the 1-D histogram classes.
Double_t fTsumwx
Total Sum of weight*X.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
3-D histogram with an int per channel (see TH1 documentation)}
virtual Bool_t Divide(TF1 *f1, Double_t c1=1)
Performs the operation: this = this/(c1*f1) if errors are defined (see TH1::Sumw2), errors are also recalculated.
virtual Int_t GetNdivisions() const
virtual ~TH3I()
Destructor.
virtual ~TH3S()
Destructor.
void Set(Int_t n)
Set size of this array to n shorts.
virtual Double_t Rndm()
Machine independent random number generator.
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
virtual const char * GetParName(Int_t ipar) const
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
Return integral of bin contents in range [binx1,binx2],[biny1,biny2],[binz1,binz2] for a 3-D histogra...
virtual void ExtendAxis(Double_t x, TAxis *axis)
Histogram is resized along axis such that x is in the axis range.
3-D histogram with a short per channel (see TH1 documentation)
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
TH3C & operator=(const TH3C &h1)
Operator =.
friend TH3S operator-(TH3S &h1, TH3S &h2)
Operator -.
void Copy(TArrayF &array) const
Int_t GetLast() const
Return last bin on the axis i.e.
const char * GetTitle() const
Returns title of object.
Class to manage histogram axis.
friend TH3S operator+(TH3S &h1, TH3S &h2)
Operator +.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
3-D histogram with a double per channel (see TH1 documentation)}
Array of shorts (16 bits per element).
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual Int_t GetNumberFitPoints() const
A 3-Dim function with parameters.
virtual void FitSlicesZ(TF1 *f1=0, Int_t binminx=1, Int_t binmaxx=0, Int_t binminy=1, Int_t binmaxy=0, Int_t cut=0, Option_t *option="QNR")
Project slices along Z in case of a 3-D histogram, then fit each slice with function f1 and make a 2-...
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Bool_t Permute(Int_t n, Int_t *a)
static Int_t fgBufferSize
!default buffer size for automatic histograms
Double_t Mean(Long64_t n, const T *a, const Double_t *w=0)
Return the weighted mean of an array a with length n.
virtual Bool_t Multiply(TF1 *f1, Double_t c1=1)
Performs the operation:
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
Double_t fEntries
Number of entries.
virtual TH1D * DoProject1D(const char *name, const char *title, int imin1, int imax1, int imin2, int imax2, const TAxis *projAxis, const TAxis *axis1, const TAxis *axis2, Option_t *option) const
internal method performing the projection to 1D histogram called from TH3::Project3D ...
virtual Float_t GetTitleOffset() const
virtual void GetRange(Double_t &xmin, Double_t &xmax) const
Return range of a 1-D function.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Copy(TObject &hnew) const
Copy this histogram structure to newth1.
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
virtual void SetShowProjection(const char *option="xy", Int_t nbins=1)
When the mouse is moved in a pad containing a 3-d view of this histogram a second canvas shows a proj...
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Int_t Fill(Double_t)
Invalid Fill method.
virtual void Copy(TObject &hnew) const
Copy.
virtual Color_t GetTitleColor() const
Double_t * fIntegral
!Integral of bins used by GetRandom
virtual TH1D * ProjectionX(const char *name="_px", Int_t iymin=0, Int_t iymax=-1, Int_t izmin=0, Int_t izmax=-1, Option_t *option="") const
Project a 3-D histogram into a 1-D histogram along X.
R__EXTERN TRandom * gRandom
1-D histogram with a double per channel (see TH1 documentation)}
friend TH3I operator-(TH3I &h1, TH3I &h2)
Operator _.
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
Set color of the line axis and tick marks.
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels The size is expressed in per cent of the pad width.
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title The size is expressed in per cent of the pad width.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
virtual Double_t RetrieveBinContent(Int_t bin) const
Raw retrieval of bin content on internal data structure see convention for numbering bins in TH1::Get...
virtual Color_t GetLineColor() const
Return the line color.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual void SetName(const char *name)
Change the name of this histogram.
friend TH3S operator/(TH3S &h1, TH3S &h2)
Operator /.
TString & Remove(Ssiz_t pos)
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual Int_t GetSumw2N() const
Double_t GetChisquare() const
Double_t fTsumw2
Total Sum of squares of weights.
virtual void Copy(TObject &hnew) const
Copy this 3-D histogram structure to newth3.
virtual void Reset(Option_t *option="")
Reset contents of a Profile2D histogram.
friend TH3D operator/(TH3D &h1, TH3D &h2)
Operator /.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
TH3D & operator=(const TH3D &h1)
Operator =.
Double_t fTsumw
Total Sum of weights.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
virtual void SetShowProjection(const char *option, Int_t nbins)=0
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
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
internal function to fill the bins of the projected profile 2D histogram called from DoProjectProfile...
friend TH3C operator-(TH3C &h1, TH3C &h2)
Operator -.
virtual Color_t GetFillColor() const
Return the fill area color.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
3-D histogram with a byte per channel (see TH1 documentation)
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
virtual Float_t GetTitleSize() const
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
Array of doubles (64 bits per element).
friend TH3I operator*(Float_t c1, TH3I &h1)
Operator *.
virtual void Copy(TObject &hnew) const
Copy this 3-D histogram structure to newth3.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual Bool_t Add(TF1 *h1, Double_t c1=1, Option_t *option="")
Performs the operation: this = this + c1*f1 if errors are defined (see TH1::Sumw2), errors are also recalculated.
Mother of all ROOT objects.
you should not use this method at all Int_t Int_t z
virtual Int_t GetNpar() const
friend TH3C operator/(TH3C &h1, TH3C &h2)
Operator /.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
TVirtualHistPainter * fPainter
!pointer to histogram painter
virtual void Copy(TObject &hnew) const
Copy this 3-D histogram structure to newth3.
virtual ~TH3C()
Destructor.
virtual TH3 * RebinZ(Int_t ngroup=2, const char *newname="")
Rebin only the Z axis see Rebin3D.
virtual void GetRandom3(Double_t &x, Double_t &y, Double_t &z)
Return 3 random numbers along axis x , y and z distributed according the cell-contents of a 3-dim his...
Int_t fBufferSize
fBuffer size
virtual Double_t GetParameter(Int_t ipar) const
virtual Double_t DoIntegral(Int_t ix1, Int_t ix2, Int_t iy1, Int_t iy2, Int_t iz1, Int_t iz2, Double_t &err, Option_t *opt, Bool_t doerr=kFALSE) const
Internal function compute integral and optionally the error between the limits specified by the bin n...
Short_t Max(Short_t a, Short_t b)
virtual ~TH3F()
Destructor.
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
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
Compute first cell (binx,biny,binz) in the range [firstx,lastx](firsty,lasty][firstz,lastz] for which diff = abs(cell_content-c) <= maxdiff In case several cells in the specified range with diff=0 are found the first cell found is returned in binx,biny,binz.
Int_t fDimension
!Histogram dimension (1, 2 or 3 dim)
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
virtual void SetTickLength(Float_t length=0.03)
Set tick mark length The length is expressed in per cent of the pad width.
virtual Double_t * GetParameters() const
void Set(Int_t n)
Set size of this array to n floats.
virtual void SetEntries(Double_t n)
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
TAxis fXaxis
X axis descriptor.
virtual TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Int_t GetNbinsX() const
Double_t Sqrt(Double_t x)
virtual ~TH3()
Destructor.
TH3F & operator=(const TH3F &h1)
Operator =.
virtual const char * GetName() const
Returns name of object.
friend TH3S operator*(Float_t c1, TH3S &h1)
Operator *.
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
virtual Double_t Interpolate(Double_t x)
Not yet implemented.
Int_t Fill(Double_t)
Invalid Fill method.
virtual Double_t EvalPar(const Double_t *x, const Double_t *params=0)
Evaluate function with given coordinates and parameters.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
void SetBins(const Int_t *nbins, const Double_t *range)
Double_t * fBuffer
[fBufferSize] entry buffer
virtual void UpdateBinContent(Int_t bin, Double_t content)
Raw update of bin content on internal data structure see convention for numbering bins in TH1::GetBin...
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
void Set(Int_t n)
Set size of this array to n doubles.
void Copy(TArrayD &array) const
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
const TArrayD * GetXbins() const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Style_t GetLabelFont() const
void Copy(TArrayS &array) const
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual const char * GetTitle() const
Returns title of object.
virtual Int_t GetNbinsY() const
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
Int_t fNcells
number of bins(1D), cells (2D) +U/Overflows
2-D histogram with a double per channel (see TH1 documentation)}
const char * Data() const
Array of chars or bytes (8 bits per element).
virtual TArrayD * GetBinSumw2()
TH3I & operator=(const TH3I &h1)
Operator =.