99 :
TH1(
name,title,nbinsx,xlow,xup)
104 if (nbinsy <= 0) {
Warning(
"TH2",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
133 if (nbinsy <= 0) {
Warning(
"TH2",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
156 :
TH1(
name,title,nbinsx,xlow,xup)
161 if (nbinsy <= 0) {
Warning(
"TH2",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
190 if (nbinsy <= 0) {
Warning(
"TH2",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
220 if (nbinsy <= 0) {
Warning(
"TH2",
"nbinsy is <=0 - set to nbinsy = 1"); nbinsy = 1; }
286 if (nbentries == 0)
return 0;
287 if (nbentries < 0 && action == 0)
return 0;
291 nbentries = -nbentries;
306 for (
Int_t i=1;i<nbentries;i++) {
329 for (
Int_t i=0;i<nbentries;i++) {
330 Fill(buffer[3*i+2],buffer[3*i+3],buffer[3*i+1]);
357 nbentries = -nbentries;
395 Error(
"Fill",
"Invalid signature - do nothing");
419 Int_t binx, biny, bin;
423 if (binx <0 || biny <0)
return -1;
463 Int_t binx, biny, bin;
467 if (binx <0 || biny <0)
return -1;
507 Int_t binx, biny, bin;
511 if (binx <0 || biny <0)
return -1;
554 Int_t binx, biny, bin;
558 if (binx <0 || biny <0)
return -1;
600 Int_t binx, biny, bin;
604 if (binx <0 || biny <0)
return -1;
648 Int_t binx, biny, bin, i;
655 for (i=0;i<ntimes;i+=stride) {
661 if (i < ntimes &&
fBuffer==
nullptr)
668 for (i=ifirst;i<ntimes;i+=stride) {
672 if (binx <0 || biny <0)
continue;
716 Int_t bin, binx, biny, ibin, loop;
720 if (!fobj) {
Error(
"FillRandom",
"Unknown function: %s",fname);
return; }
721 TF2 *
f1 =
dynamic_cast<TF2*
>(fobj);
722 if (!
f1) {
Error(
"FillRandom",
"Function: %s is not a TF2, is a %s",fname,fobj->
IsA()->
GetName());
return; }
741 Int_t nbins = nbinsx*nbinsy;
747 for (biny=1;biny<=nbinsy;biny++) {
748 for (binx=1;binx<=nbinsx;binx++) {
751 integral[ibin] = integral[ibin-1] + fint;
756 if (integral[nbins] == 0 ) {
758 Error(
"FillRandom",
"Integral = zero");
return;
760 for (bin=1;bin<=nbins;bin++) integral[bin] /= integral[nbins];
763 for (loop=0;loop<ntimes;loop++) {
767 binx = 1 + ibin - nbinsx*biny;
795 if (!
h) {
Error(
"FillRandom",
"Null histogram");
return; }
797 Error(
"FillRandom",
"Histograms with different dimensions");
return;
800 if (
h->ComputeIntegral() == 0)
return;
805 for (loop=0;loop<ntimes;loop++) {
806 h2->GetRandom2(
x,
y,rng);
830 if (firstbin == 0 && lastbin == 0) {
835 if (firstbin < 0) firstbin = 0;
836 if (lastbin < 0 || lastbin > nbins + 1) lastbin = nbins + 1;
837 if (lastbin < firstbin) {firstbin = 0; lastbin = nbins + 1;}
844 if (i1>=0 && i2>i1) {
845 proj_opt += opt(i1,i2-i1+1);
856 Int_t nstep = ngroup;
866 if (npar <= 0)
return;
878 char *
name =
new char[2000];
879 char *title =
new char[2000];
885 Int_t nOutBins = lastOutBin-firstOutBin+1;
887 if (bins->
fN == 0) nOutBins /= nstep;
888 for (ipar=0;ipar<npar;ipar++) {
895 hlist[ipar] =
new TH1D(
name,title, nOutBins, &bins->
fArray[firstOutBin-1]);
899 (*arr)[ipar] = hlist[ipar];
903 TH1D *hchi2 =
nullptr;
907 hchi2 =
new TH1D(
name,
"chisquare", nOutBins, &bins->
fArray[firstOutBin-1]);
911 (*arr)[npar] = hchi2;
921 for (bin=firstbin;bin+ngroup-1<=lastbin;bin += nstep) {
923 hp=
ProjectionX(
"_temp",bin,bin+ngroup-1,proj_opt);
925 hp=
ProjectionY(
"_temp",bin,bin+ngroup-1,proj_opt);
926 if (hp ==
nullptr)
continue;
931 Info(
"DoFitSlices",
"Slice %d skipped, the number of entries is zero or smaller than the given cut value, n=%f",bin,
nentries);
940 if (npfits > npar && npfits >= cut) {
941 for (ipar=0;ipar<npar;ipar++) {
949 Info(
"DoFitSlices",
"Fitted slice %d skipped, the number of fitted points is too small, n=%d",bin,npfits);
1090 if (biny < 0) biny = 0;
1091 if (biny > ofy) biny = ofy;
1123 Error(
"GetBinWithContent2",
"function is only valid for 2-D histograms");
1126 if (firstxbin < 0) firstxbin = 1;
1128 if (firstybin < 0) firstybin = 1;
1131 for (
Int_t j = firstybin; j <= lastybin; j++) {
1132 for (
Int_t i = firstxbin; i <= lastxbin; i++) {
1134 if (diff <= 0) {binx = i; biny=j;
return diff;}
1135 if (diff < curmax && diff <= maxdiff) {curmax = diff, binx=i; biny=j;}
1147 if (axis1 < 1 || axis2 < 1 || axis1 > 2 || axis2 > 2) {
1148 Error(
"GetCorrelationFactor",
"Wrong parameters");
1151 if (axis1 == axis2)
return 1;
1153 if (stddev1 == 0)
return 0;
1155 if (stddev2 == 0)
return 0;
1165 if (axis1 < 1 || axis2 < 1 || axis1 > 2 || axis2 > 2) {
1166 Error(
"GetCovariance",
"Wrong parameters");
1179 if (sumw == 0)
return 0;
1180 if (axis1 == 1 && axis2 == 1) {
1181 return TMath::Abs(sumwx2/sumw - sumwx/sumw*sumwx/sumw);
1183 if (axis1 == 2 && axis2 == 2) {
1184 return TMath::Abs(sumwy2/sumw - sumwy/sumw*sumwy/sumw);
1186 return sumwxy/sumw - sumwx/sumw*sumwy/sumw;
1204 Int_t nbins = nbinsx*nbinsy;
1213 if (integral == 0 ) {
x = 0;
y = 0;
return;}
1220 Int_t biny = ibin/nbinsx;
1221 Int_t binx = ibin - nbinsx*biny;
1259 std::fill(stats, stats + 7, 0);
1268 if (firstBinX == 1) firstBinX = 0;
1272 if (firstBinY == 1) firstBinY = 0;
1280 for (
Int_t biny = firstBinY; biny <= lastBinY; ++biny) {
1282 for (
Int_t binx = firstBinX; binx <= lastBinX; ++binx) {
1355 Error(
"Interpolate",
"This function must be called with 2 arguments for a TH2");
1374 Error(
"Interpolate",
"Cannot interpolate outside histogram domain.");
1416 if(bin_x1<1) bin_x1=1;
1420 if(bin_y1<1) bin_y1=1;
1442 Error(
"Interpolate",
"This function must be called with 2 arguments for a TH2");
1477 if (h2 ==
nullptr)
return 0;
1479 const TAxis *xaxis2 = h2->GetXaxis();
1481 const TAxis *yaxis2 = h2->GetYaxis();
1489 Error(
"KolmogorovTest",
"Histograms must be 2-D\n");
1495 Error(
"KolmogorovTest",
"Number of channels in X is different, %d and %d\n",ncx1,ncx2);
1499 Error(
"KolmogorovTest",
"Number of channels in Y is different, %d and %d\n",ncy1,ncy2);
1509 if (diff1 > difprec || diff2 > difprec) {
1510 Error(
"KolmogorovTest",
"histograms with different binning along X");
1515 if (diff1 > difprec || diff2 > difprec) {
1516 Error(
"KolmogorovTest",
"histograms with different binning along Y");
1521 Int_t ibeg = 1, jbeg = 1;
1522 Int_t iend = ncx1, jend = ncy1;
1523 if (opt.
Contains(
"U")) {ibeg = 0; jbeg = 0;}
1524 if (opt.
Contains(
"O")) {iend = ncx1+1; jend = ncy1+1;}
1531 for (i = ibeg; i <= iend; i++) {
1532 for (j = jbeg; j <= jend; j++) {
1534 sum2 += h2->GetBinContent(i,j);
1536 Double_t ew2 = h2->GetBinError(i,j);
1545 Error(
"KolmogorovTest",
"Integral is zero for h1=%s\n",
h1->
GetName());
1549 Error(
"KolmogorovTest",
"Integral is zero for h2=%s\n",h2->GetName());
1557 esum1 = sum1 * sum1 / w1;
1562 esum2 = sum2 * sum2 / w2;
1566 if (afunc2 && afunc1) {
1567 Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
1576 for (i=ibeg;i<=iend;i++) {
1577 for (j=jbeg;j<=jend;j++) {
1579 rsum2 += s2*h2->GetBinContent(i,j);
1587 for (j=jbeg;j<=jend;j++) {
1588 for (i=ibeg;i<=iend;i++) {
1590 rsum2 += s2*h2->GetBinContent(i,j);
1599 else factnm =
TMath::Sqrt(esum1*sum2/(esum1+esum2));
1602 Double_t dfmax = 0.5*(dfmax1+dfmax2);
1609 if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
1613 Double_t chi2 = d12*d12/(esum1+esum2);
1616 if (prb > 0 && prb2 > 0) prb = prb*prb2*(1-
TMath::Log(prb*prb2));
1622 printf(
" Kolmo Prob h1 = %s, sum1=%g\n",
h1->
GetName(),sum1);
1623 printf(
" Kolmo Prob h2 = %s, sum2=%g\n",h2->GetName(),sum2);
1624 printf(
" Kolmo Probabil = %f, Max Dist = %g\n",prb,dfmax);
1626 printf(
" Kolmo Probabil = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
1630 if (
TMath::Abs(rsum2-1) > 0.002)
Warning(
"KolmogorovTest",
"Numerical problems with h2=%s\n",h2->GetName());
1632 if(opt.
Contains(
"M"))
return dfmax;
1644 return Rebin2D(ngroup, 1, newname);
1654 return Rebin2D(1, ngroup, newname);
1665 if (xbins !=
nullptr) {
1666 Error(
"Rebin",
"Rebinning a 2-d histogram into variable bins is not supported (it is possible only for 1-d histograms). Return a nullptr");
1669 Info(
"Rebin",
"Rebinning only the x-axis. Use Rebin2D for rebinning both axes");
1670 return RebinX(ngroup, newname);
1702 Int_t nx = nxbins + 2;
1703 Int_t ny = nybins + 2;
1710 Error(
"Rebin2D",
"Histogram must be TH2. This histogram has %d dimensions.",
GetDimension());
1713 if ((nxgroup <= 0) || (nxgroup > nxbins)) {
1714 Error(
"Rebin2D",
"Illegal value of nxgroup=%d",nxgroup);
1717 if ((nygroup <= 0) || (nygroup > nybins)) {
1718 Error(
"Rebin2D",
"Illegal value of nygroup=%d",nygroup);
1722 Int_t newxbins = nxbins / nxgroup;
1723 Int_t newybins = nybins / nygroup;
1724 Int_t newnx = newxbins + 2;
1725 Int_t newny = newybins + 2;
1739 if (newname && strlen(newname)) {
1744 bool resetStat =
false;
1747 if(newxbins * nxgroup != nxbins) {
1751 if(newybins * nygroup != nybins) {
1783 if (nxgroup != 1 || nygroup != 1) {
1790 hnew->
SetBins(newxbins, xbins, newybins, ybins);
1799 if (oldErrors) hnew->
fSumw2[0] = 0;
1802 for(
Int_t binx = 1, oldbinx = 1; binx < newnx; ++binx, oldbinx += nxgroup){
1803 Double_t binContent = 0.0, binErrorSq = 0.0;
1804 for (
Int_t i = 0; i < nxgroup && (oldbinx + i) < nx; ++i) {
1805 Int_t bin = oldbinx + i;
1806 binContent += oldBins[bin];
1807 if(oldErrors) binErrorSq += oldErrors[bin];
1809 Int_t newbin = binx;
1811 if (oldErrors) hnew->
fSumw2[newbin] = binErrorSq;
1815 for(
Int_t biny = 1, oldbiny = 1; biny < newny; ++biny, oldbiny += nygroup){
1816 Double_t binContent = 0.0, binErrorSq = 0.0;
1817 for (
Int_t j = 0; j < nygroup && (oldbiny + j) < ny; ++j) {
1818 Int_t bin = (oldbiny + j) * nx;
1819 binContent += oldBins[bin];
1820 if(oldErrors) binErrorSq += oldErrors[bin];
1822 Int_t newbin = biny * newnx;
1824 if (oldErrors) hnew->
fSumw2[newbin] = binErrorSq;
1828 for (
Int_t binx = 1, oldbinx = 1; binx < newnx; ++binx, oldbinx += nxgroup) {
1829 for (
Int_t biny = 1, oldbiny = 1; biny < newny; ++biny, oldbiny += nygroup) {
1830 Double_t binContent = 0.0, binErrorSq = 0.0;
1831 for (
Int_t i = 0; i < nxgroup && (oldbinx + i) < nx; ++i) {
1832 for (
Int_t j = 0; j < nygroup && (oldbiny + j) < ny; ++j) {
1833 Int_t bin = oldbinx + i + (oldbiny + j) * nx;
1834 binContent += oldBins[bin];
1835 if (oldErrors) binErrorSq += oldErrors[bin];
1838 Int_t newbin = binx + biny * newnx;
1840 if (oldErrors) hnew->
fSumw2[newbin] = binErrorSq;
1873 if (oldErrors)
delete [] oldErrors;
1888 cut = opt(i1,i2-i1+1);
1891 bool originalRange = opt.
Contains(
"o");
1896 const char *expectedName = ( onX ?
"_pfx" :
"_pfy" );
1909 if (firstbin == 0 && lastbin == 0)
1915 if (firstbin < 0) firstbin = 1;
1916 if (lastbin < 0) lastbin = inN;
1917 if (lastbin > inN+1) lastbin = inN;
1920 char *pname = (
char*)
name;
1921 if (
name && strcmp(
name, expectedName) == 0) {
1923 pname =
new char[nch];
1932 Error(
"DoProfile",
"Histogram with name %s must be a TProfile and is a %s",
name,h1obj->
ClassName());
1941 if (xbins->fN == 0) {
1942 if ( originalRange )
1951 h1->
SetBins(lastOutBin-firstOutBin+1,&xbins->fArray[firstOutBin-1]);
1957 ((
TH2 *)
this)->GetPainter();
1963 if (bins->
fN == 0) {
1964 if ( originalRange )
1978 if (pname !=
name)
delete [] pname;
2000 TArrayD & binSumw2 = *(
h1->GetBinSumw2());
2013 for (
Int_t outbin = 0; outbin <= outAxis.
GetNbins() + 1; ++outbin) {
2019 if (binOut <0)
continue;
2021 for (
Int_t inbin = firstbin ; inbin <= lastbin ; ++inbin) {
2023 if (onX) { binx = outbin; biny=inbin; }
2024 else { binx = inbin; biny=outbin; }
2036 if ( useWeights ) tmp = binSumw2.
fArray[binOut];
2171 const char *expectedName =
nullptr;
2173 const TAxis* outAxis;
2174 const TAxis* inAxis;
2181 cut = opt(i1,i2-i1+1);
2184 bool originalRange = opt.
Contains(
"o");
2188 expectedName =
"_px";
2195 expectedName =
"_py";
2212 if (firstbin == 0 && lastbin == 0)
2218 if (firstbin < 0) firstbin = 0;
2219 if (lastbin < 0) lastbin = inNbin + 1;
2220 if (lastbin > inNbin+1) lastbin = inNbin + 1;
2223 char *pname = (
char*)
name;
2224 if (
name && strcmp(
name,expectedName) == 0) {
2226 pname =
new char[nch];
2236 Error(
"DoProjection",
"Histogram with name %s must be a TH1D and is a %s",
name,h1obj->
ClassName());
2245 if (xbins->fN == 0) {
2246 if ( originalRange )
2255 h1->
SetBins(lastOutBin-firstOutBin+1,&xbins->fArray[firstOutBin-1]);
2261 ((
TH2 *)
this)->GetPainter();
2267 if (bins->
fN == 0) {
2268 if ( originalRange )
2282 if (pname !=
name)
delete [] pname;
2313 for (
Int_t outbin = 0; outbin <= outAxis->
GetNbins() + 1; ++outbin) {
2318 for (
Int_t inbin = firstbin ; inbin <= lastbin ; ++inbin) {
2320 if (onX) { binx = outbin; biny=inbin; }
2321 else { binx = inbin; biny=outbin; }
2328 if (computeErrors) {
2343 bool reuseStats =
false;
2349 double eps = 1.E-12;
2354 if (ncuts) reuseStats =
false;
2356 bool reuseEntries = reuseStats;
2358 reuseEntries &= (firstbin==0 && lastbin == inNbin+1);
2363 stats[2] = stats[4];
2364 stats[3] = stats[5];
2529 const TAxis *outAxis =
nullptr;
2538 if (qname.
IsNull() || qname ==
"_qx" || qname ==
"_qy") {
2539 const char * qtype = (onX) ?
"qx" :
"qy";
2547 h1 =
dynamic_cast<TH1D*
>(h1obj);
2549 Error(
"DoQuantiles",
"Histogram with name %s must be a TH1D and is a %s",qname.
Data(),h1obj->
ClassName());
2566 h1->
SetBins(lastOutBin-firstOutBin+1,&xbins->fArray[firstOutBin-1]);
2572 TH1D * slice =
nullptr;
2573 for (
int ibin = outAxis->
GetFirst() ; ibin <= outAxis->
GetLast() ; ++ibin) {
2578 if (slice->
GetSum() == 0)
continue;
2592 if (slice)
delete slice;
2620 if (bin < 0)
return;
2683 (
size_t)
this, niter,
option).Data());
2729 Double_t k5a[5][5] = { { 0, 0, 1, 0, 0 },
2733 { 0, 0, 1, 0, 0 } };
2734 Double_t k5b[5][5] = { { 0, 1, 2, 1, 0 },
2738 { 0, 1, 2, 1, 0 } };
2739 Double_t k3a[3][3] = { { 0, 1, 0 },
2744 Warning(
"Smooth",
"Currently only ntimes=1 is supported");
2751 if (opt.
Contains(
"k5b")) kernel = &k5b[0][0];
2753 kernel = &k3a[0][0];
2768 Int_t bufSize = (nx+2)*(ny+2);
2775 for (i=ifirst; i<=ilast; i++){
2776 for (j=jfirst; j<=jlast; j++){
2784 Int_t x_push = (ksize_x-1)/2;
2785 Int_t y_push = (ksize_y-1)/2;
2788 for (i=ifirst; i<=ilast; i++){
2789 for (j=jfirst; j<=jlast; j++) {
2798 if ( (xb >= 1) && (xb <= nx) && (yb >= 1) && (yb <= ny) ) {
2804 content += k*buf[bin];
2805 if (ebuf) error += k*k*ebuf[bin]*ebuf[bin];
2811 if ( norm != 0.0 ) {
2814 error /= (norm*norm);
2883 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ylow,yup)
2898 :
TH2(
name,title,nbinsx,xbins,nbinsy,ylow,yup)
2911 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ybins)
2924 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
2937 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
2950 h2c.TH2C::Copy(*
this);
2972 if (newval > -128 && newval < 128) {
fArray[bin] =
Char_t(newval);
return;}
2973 if (newval < -127)
fArray[bin] = -127;
2974 if (newval > 127)
fArray[bin] = 127;
3050 h2c.TH2C::Copy(*
this);
3147 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ylow,yup)
3162 :
TH2(
name,title,nbinsx,xbins,nbinsy,ylow,yup)
3175 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ybins)
3188 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3201 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3214 h2s.TH2S::Copy(*
this);
3236 if (newval > -32768 && newval < 32768) {
fArray[bin] =
Short_t(newval);
return;}
3237 if (newval < -32767)
fArray[bin] = -32767;
3238 if (newval > 32767)
fArray[bin] = 32767;
3314 h2s.TH2S::Copy(*
this);
3411 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ylow,yup)
3426 :
TH2(
name,title,nbinsx,xbins,nbinsy,ylow,yup)
3439 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ybins)
3452 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3465 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3478 h2i.TH2I::Copy(*
this);
3500 if (newval > -INT_MAX && newval < INT_MAX) {
fArray[bin] =
Int_t(newval);
return;}
3501 if (newval < -INT_MAX)
fArray[bin] = -INT_MAX;
3502 if (newval > INT_MAX)
fArray[bin] = INT_MAX;
3543 h2i.TH2I::Copy(*
this);
3640 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ylow,yup)
3655 :
TH2(
name,title,nbinsx,xbins,nbinsy,ylow,yup)
3668 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ybins)
3681 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3694 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3707 h2l.TH2L::Copy(*
this);
3729 if (newval > -LLONG_MAX && newval < LLONG_MAX) {
fArray[bin] =
Int_t(newval);
return;}
3730 if (newval < -LLONG_MAX)
fArray[bin] = -LLONG_MAX;
3731 if (newval > LLONG_MAX)
fArray[bin] = LLONG_MAX;
3772 h2l.TH2L::Copy(*
this);
3869 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ylow,yup)
3884 :
TH2(
name,title,nbinsx,xbins,nbinsy,ylow,yup)
3897 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ybins)
3910 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3923 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
3935:
TH2(
"TMatrixFBase",
"",
m.GetNcols(),
m.GetColLwb(),1+
m.GetColUpb(),
m.GetNrows(),
m.GetRowLwb(),1+
m.GetRowUpb())
3938 Int_t ilow =
m.GetRowLwb();
3939 Int_t iup =
m.GetRowUpb();
3940 Int_t jlow =
m.GetColLwb();
3941 Int_t jup =
m.GetColUpb();
3942 for (
Int_t i=ilow;i<=iup;i++) {
3943 for (
Int_t j=jlow;j<=jup;j++) {
3956 h2f.TH2F::Copy(*
this);
4032 h2f.TH2F::Copy(*
this);
4141 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ylow,yup)
4156 :
TH2(
name,title,nbinsx,xbins,nbinsy,ylow,yup)
4169 :
TH2(
name,title,nbinsx,xlow,xup,nbinsy,ybins)
4182 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
4195 :
TH2(
name,title,nbinsx,xbins,nbinsy,ybins)
4207:
TH2(
"TMatrixDBase",
"",
m.GetNcols(),
m.GetColLwb(),1+
m.GetColUpb(),
m.GetNrows(),
m.GetRowLwb(),1+
m.GetRowUpb())
4210 Int_t ilow =
m.GetRowLwb();
4211 Int_t iup =
m.GetRowUpb();
4212 Int_t jlow =
m.GetColLwb();
4213 Int_t jup =
m.GetColUpb();
4214 for (
Int_t i=ilow;i<=iup;i++) {
4215 for (
Int_t j=jlow;j<=jup;j++) {
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char y1
TH2C operator+(TH2C const &h1, TH2C const &h2)
Operator +.
TH2C operator*(Float_t c1, TH2C const &h1)
Operator *.
TH2C operator/(TH2C const &h1, TH2C const &h2)
Operator /.
TH2C operator-(TH2C const &h1, TH2C const &h2)
Operator -.
R__EXTERN TRandom * gRandom
Array of chars or bytes (8 bits per element).
void Streamer(TBuffer &) override
Stream a TArrayC object.
void Set(Int_t n) override
Set size of this array to n chars.
Array of doubles (64 bits per element).
void Streamer(TBuffer &) override
Stream a TArrayD object.
void Set(Int_t n) override
Set size of this array to n doubles.
Array of floats (32 bits per element).
void Set(Int_t n) override
Set size of this array to n floats.
void Streamer(TBuffer &) override
Stream a TArrayF object.
Array of integers (32 bits per element).
void Set(Int_t n) override
Set size of this array to n ints.
Array of long64s (64 bits per element).
void Set(Int_t n) override
Set size of this array to n long64s.
Array of shorts (16 bits per element).
void Set(Int_t n) override
Set size of this array to n shorts.
void Streamer(TBuffer &) override
Stream a TArrayS object.
virtual Color_t GetTitleColor() const
virtual Color_t GetLabelColor() const
virtual Int_t GetNdivisions() const
virtual Color_t GetAxisColor() const
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
virtual Style_t GetTitleFont() const
virtual Float_t GetLabelOffset() const
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.
virtual Style_t GetLabelFont() const
virtual void SetTitleFont(Style_t font=62)
Set the title font.
virtual void SetLabelOffset(Float_t offset=0.005)
Set distance between the axis and the labels.
virtual void SetLabelFont(Style_t font=62)
Set labels' font.
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title.
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
virtual Float_t GetTitleSize() const
virtual Float_t GetLabelSize() const
virtual Float_t GetTickLength() const
virtual Float_t GetTitleOffset() const
virtual void SetTickLength(Float_t length=0.03)
Set tick mark length.
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis.
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Class to manage histogram axis.
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
Bool_t IsAlphanumeric() const
const char * GetTitle() const override
Returns title of object.
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
const TArrayD * GetXbins() const
void SetCanExtend(Bool_t canExtend)
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Int_t GetFirst() const
Return first bin on the axis i.e.
THashList * GetLabels() const
Buffer base class used for serializing objects.
virtual Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr)=0
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=nullptr)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function Note that this histogram is managed ...
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
Double_t GetChisquare() const
Return the Chisquare after fitting. See ROOT::Fit::FitResult::Chi2()
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
virtual Int_t GetNpar() const
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral.
virtual Int_t GetNumberFitPoints() const
virtual Double_t * GetParameters() const
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
virtual const char * GetParName(Int_t ipar) const
virtual void SetParameters(const Double_t *params)
virtual Double_t GetParameter(Int_t ipar) const
A 2-Dim function with parameters.
1-D histogram with a double per channel (see TH1 documentation)
void Reset(Option_t *option="") override
Reset.
TH1 is the base class of all histogram classes in ROOT.
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
Double_t * fBuffer
[fBufferSize] entry buffer
virtual Double_t GetEffectiveEntries() const
Number of effective entries of the histogram.
virtual Bool_t Multiply(TF1 *f1, Double_t c1=1)
Performs the operation:
Int_t fNcells
Number of bins(1D), cells (2D) +U/Overflows.
void Copy(TObject &hnew) const override
Copy this histogram structure to newth1.
Double_t fTsumw
Total Sum of weights.
Double_t fTsumw2
Total Sum of squares of weights.
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...
Double_t fTsumwx2
Total Sum of weight*X*X.
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
virtual Int_t GetNbinsY() const
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
virtual Int_t GetDimension() const
void Streamer(TBuffer &) override
Stream a class object.
@ kIsNotW
Histogram is forced to be not weighted even when the histogram is filled with weighted.
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 Int_t GetNcells() const
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
TVirtualHistPainter * GetPainter(Option_t *option="")
Return pointer to painter.
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
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 Int_t GetNbinsX() const
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),...
Int_t fBufferSize
fBuffer size
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...
Int_t fDimension
! Histogram dimension (1, 2 or 3 dim)
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...
static Int_t fgBufferSize
! Default buffer size for automatic histograms
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
void Draw(Option_t *option="") override
Draw this histogram with options.
virtual Double_t GetBinErrorSqUnchecked(Int_t bin) const
UInt_t GetAxisLabelStatus() const
Internal function used in TH1::Fill to see which axis is full alphanumeric, i.e.
Double_t * fIntegral
! Integral of bins used by GetRandom
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...
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual Double_t GetEntries() const
Return the current number of entries.
void SetName(const char *name) override
Change the name of this histogram.
void Paint(Option_t *option="") override
Control routine to paint any kind of histograms.
virtual void ResetStats()
Reset the statistics including the number of entries and replace with values calculated from bin cont...
virtual void SetBuffer(Int_t buffersize, Option_t *option="")
Set the maximum number of entries to be kept in the buffer.
@ kNstat
Size of statistics data (up to TProfile3D)
Double_t fEntries
Number of entries.
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 GetBinContent(Int_t bin) const
Return content of bin number bin.
TAxis fXaxis
X axis descriptor.
virtual void ExtendAxis(Double_t x, TAxis *axis)
Histogram is resized along axis such that x is in the axis range.
TArrayD fSumw2
Array of sum of squares of weights.
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=nullptr)
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined...
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
virtual Int_t GetSumw2N() const
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
Bool_t GetStatOverflowsBehaviour() const
TObject * Clone(const char *newname="") const override
Make a complete copy of the underlying object.
virtual Bool_t Divide(TF1 *f1, Double_t c1=1)
Performs the operation: this = this/(c1*f1) if errors are defined (see TH1::Sumw2),...
TAxis fYaxis
Y axis descriptor.
TVirtualHistPainter * fPainter
! Pointer to histogram painter
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
virtual void SetEntries(Double_t n)
static Bool_t fgDefaultSumw2
! Flag to call TH1::Sumw2 automatically at histogram creation time
Double_t fTsumwx
Total Sum of weight*X.
virtual Double_t ComputeIntegral(Bool_t onlyPositive=false)
Compute integral (normalized cumulative sum of bins) w/o under/overflows The result is stored in fInt...
2-D histogram with a byte per channel (see TH1 documentation)
void Reset(Option_t *option="") override
Reset this histogram: contents, errors, etc.
TClass * IsA() const override
void Streamer(TBuffer &) override
Stream an object of class TH2C.
void AddBinContent(Int_t bin) override
Increment bin content by 1.
TH2C & operator=(const TH2C &h1)
Operator =.
~TH2C() override
Destructor.
void Copy(TObject &hnew) const override
Copy.
void SetBinsLength(Int_t n=-1) override
Set total number of bins including under/overflow Reallocate bin contents array.
2-D histogram with a double per channel (see TH1 documentation)
void Streamer(TBuffer &) override
Stream an object of class TH2D.
TClass * IsA() const override
void SetBinsLength(Int_t n=-1) override
Set total number of bins including under/overflow Reallocate bin contents array.
~TH2D() override
Destructor.
void Copy(TObject &hnew) const override
Copy.
TH2D & operator=(const TH2D &h1)
Operator =.
2-D histogram with a float per channel (see TH1 documentation)
TClass * IsA() const override
TH2F & operator=(const TH2F &h1)
Operator =.
~TH2F() override
Destructor.
void Copy(TObject &hnew) const override
Copy.
void Streamer(TBuffer &) override
Stream an object of class TH2F.
void SetBinsLength(Int_t n=-1) override
Set total number of bins including under/overflow Reallocate bin contents array.
2-D histogram with an int per channel (see TH1 documentation)
void Copy(TObject &hnew) const override
Copy.
void AddBinContent(Int_t bin) override
Increment bin content by 1.
~TH2I() override
Destructor.
TH2I & operator=(const TH2I &h1)
Operator =.
void SetBinsLength(Int_t n=-1) override
Set total number of bins including under/overflow Reallocate bin contents array.
2-D histogram with a long64 per channel (see TH1 documentation)
TH2L & operator=(const TH2L &h1)
Operator =.
void SetBinsLength(Int_t n=-1) override
Set total number of bins including under/overflow Reallocate bin contents array.
~TH2L() override
Destructor.
void Copy(TObject &hnew) const override
Copy.
void AddBinContent(Int_t bin) override
Increment bin content by 1.
2-D histogram with a short per channel (see TH1 documentation)
void AddBinContent(Int_t bin) override
Increment bin content by 1.
~TH2S() override
Destructor.
TH2S & operator=(const TH2S &h1)
Operator =.
void Copy(TObject &hnew) const override
Copy.
void Streamer(TBuffer &) override
Stream an object of class TH2S.
void SetBinsLength(Int_t n=-1) override
Set total number of bins including under/overflow Reallocate bin contents array.
TClass * IsA() const override
Service class for 2-D histogram classes.
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a 1-D histogram along Y.
void GetStats(Double_t *stats) const override
Fill the array stats from the contents of this histogram The array stats must be correctly dimensione...
Int_t ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05) override
Interface to TSpectrum2::Search the function finds peaks in this histogram where the width is > sigma...
virtual Double_t GetCorrelationFactor(Int_t axis1=1, Int_t axis2=2) const
Return correlation factor between axis1 and axis2.
virtual TProfile * DoProfile(bool onX, const char *name, Int_t firstbin, Int_t lastbin, Option_t *option) const
Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const override
Statistical test of compatibility in shape between THIS histogram and h2, using Kolmogorov test.
virtual void FitSlicesY(TF1 *f1=nullptr, Int_t firstxbin=0, Int_t lastxbin=-1, Int_t cut=0, Option_t *option="QNR", TObjArray *arr=nullptr)
Project slices along Y in case of a 2-D histogram, then fit each slice with function f1 and make a hi...
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
compute first cell (binx,biny) in the range [firstxbin,lastxbin][firstybin,lastybin] for which diff =...
TProfile * ProfileX(const char *name="_pfx", Int_t firstybin=1, Int_t lastybin=-1, Option_t *option="") const
Project a 2-D histogram into a profile histogram along X.
void AddBinContent(Int_t bin) override
Increment bin content by 1.
TH2 * Rebin(Int_t ngroup=2, const char *newname="", const Double_t *xbins=nullptr) override
Override TH1::Rebin as TH2::RebinX Rebinning in variable binning as for TH1 is not allowed If a non-n...
void FillN(Int_t, const Double_t *, const Double_t *, Int_t) override
Fill this histogram with an array x and weights w.
TH1D * QuantilesY(Double_t prob=0.5, const char *name="_qy") const
Compute the Y distribution of quantiles in the other variable X name is the name of the returned hist...
TProfile * ProfileY(const char *name="_pfy", Int_t firstxbin=1, Int_t lastxbin=-1, Option_t *option="") const
Project a 2-D histogram into a profile histogram along Y.
void Copy(TObject &hnew) const override
Copy.
virtual TH1D * DoQuantiles(bool onX, const char *name, Double_t prob) const
Implementation of quantiles for x or y.
Double_t fTsumwxy
Total Sum of weight*X*Y.
void SetBinContent(Int_t bin, Double_t content) override
Set bin content.
Int_t BufferEmpty(Int_t action=0) override
F