539 class DifferentDimension:
public std::exception {};
540 class DifferentNumberOfBins:
public std::exception {};
541 class DifferentAxisLimits:
public std::exception {};
542 class DifferentBinLimits:
public std::exception {};
543 class DifferentLabels:
public std::exception {};
643 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
665 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
687 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
754 fFunctions->UseRWLock();
780 Error(
"Add",
"Attempt to add a non-existing function");
800 for (
Int_t i = 0; i < 10; ++i) s1[i] = 0;
806 Int_t bin, binx, biny, binz;
811 for (binz = 0; binz < ncellsz; ++binz) {
813 for (biny = 0; biny < ncellsy; ++biny) {
815 for (binx = 0; binx < ncellsx; ++binx) {
819 bin = binx + ncellsx * (biny + ncellsy * binz);
865 Error(
"Add",
"Attempt to add a non-existing histogram");
876 }
catch(DifferentNumberOfBins&) {
878 Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
880 Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 = %d",
GetNbinsX(), h1->
GetNbinsX());
883 }
catch(DifferentAxisLimits&) {
885 Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
887 Warning(
"Add",
"Attempt to add histograms with different axis limits");
888 }
catch(DifferentBinLimits&) {
890 Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
892 Warning(
"Add",
"Attempt to add histograms with different bin limits");
893 }
catch(DifferentLabels&) {
896 Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
898 Info(
"Warning",
"Attempt to add histograms with different labels");
903 l.
Add(const_cast<TH1*>(h1));
904 auto iret =
Merge(&l);
916 Bool_t resetStats = (c1 < 0);
946 if (e1sq) w1 = 1. / e1sq;
951 double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
955 if (e2sq) w2 = 1. / e2sq;
960 double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
965 double y = (w1*y1 + w2*y2)/(w1 + w2);
968 double err2 = 1./(w1 + w2);
969 if (err2 < 1.
E-200) err2 = 0;
985 if (i == 1) s1[i] += c1*c1*s2[i];
986 else s1[i] += c1*s2[i];
1027 Error(
"Add",
"Attempt to add a non-existing histogram");
1035 if (h1 == h2 && c2 < 0) {c2 = 0; normWidth =
kTRUE;}
1044 }
catch(DifferentNumberOfBins&) {
1046 Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
1048 Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 = %d",
GetNbinsX(), h1->
GetNbinsX());
1051 }
catch(DifferentAxisLimits&) {
1053 Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
1055 Warning(
"Add",
"Attempt to add histograms with different axis limits");
1056 }
catch(DifferentBinLimits&) {
1058 Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
1060 Warning(
"Add",
"Attempt to add histograms with different bin limits");
1061 }
catch(DifferentLabels&) {
1064 Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
1066 Info(
"Warning",
"Attempt to add histograms with different labels");
1072 l.
Add(const_cast<TH1*>(h1));
1073 l.
Add(const_cast<TH1*>(h2));
1075 auto iret =
Merge(&l);
1095 Bool_t resetStats = (c1*c2 < 0) || normWidth;
1102 if (i == 1) s3[i] = c1*c1*s1[i] + c2*c2*s2[i];
1104 else s3[i] = c1*s1[i] + c2*s2[i];
1120 Int_t bin, binx, biny, binz;
1121 for (binz = 0; binz < nbinsz; ++binz) {
1123 for (biny = 0; biny < nbinsy; ++biny) {
1125 for (binx = 0; binx < nbinsx; ++binx) {
1127 bin =
GetBin(binx, biny, binz);
1148 if (e1sq) w1 = 1./ e1sq;
1152 double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
1156 if (e2sq) w2 = 1./ e2sq;
1160 double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
1165 double y = (w1*y1 + w2*y2)/(w1 + w2);
1168 double err2 = 1./(w1 + w2);
1169 if (err2 < 1.
E-200) err2 = 0;
1243 return ((next && x > 0.) || (!next && x <= 0.)) ?
std::ldexp(std::copysign(1., f2), nn)
1298 Double_t rr = (xhma - xhmi) / (xma - xmi);
1308 Int_t nbup = (xhma - xma) / bw;
1311 if (nbup != nbside) {
1313 xhma -= bw * (nbup - nbside);
1314 nb -= (nbup - nbside);
1318 Int_t nblw = (xmi - xhmi) / bw;
1321 if (nblw != nbside) {
1323 xhmi += bw * (nblw - nbside);
1324 nb -= (nblw - nbside);
1354 if (nbentries == 0) {
1364 if (nbentries < 0 && action == 0)
return 0;
1367 if (nbentries < 0) {
1368 nbentries = -nbentries;
1380 for (
Int_t i=1;i<nbentries;i++) {
1382 if (x < xmin) xmin =
x;
1383 if (x > xmax) xmax =
x;
1390 "incosistency found by power-of-2 autobin algorithm: fallback to standard method");
1408 DoFillN(nbentries,&buffer[2],&buffer[1],2);
1442 if (nbentries < 0) {
1445 nbentries = -nbentries;
1477 if ( h2Array->
fN != fN ) {
1478 throw DifferentBinLimits();
1482 for (
int i = 0; i < fN; ++i ) {
1484 throw DifferentBinLimits();
1505 throw DifferentLabels();
1510 throw DifferentLabels();
1513 for (
int i = 1; i <= a1->
GetNbins(); ++i) {
1516 if (label1 != label2) {
1517 throw DifferentLabels();
1533 throw DifferentAxisLimits();
1546 ::Info(
"CheckEqualAxes",
"Axes have different number of bins : nbin1 = %d nbin2 = %d",a1->
GetNbins(),a2->
GetNbins() );
1551 }
catch (DifferentAxisLimits&) {
1552 ::Info(
"CheckEqualAxes",
"Axes have different limits");
1557 }
catch (DifferentBinLimits&) {
1558 ::Info(
"CheckEqualAxes",
"Axes have different bin limits");
1565 }
catch (DifferentLabels&) {
1566 ::Info(
"CheckEqualAxes",
"Axes have different labels");
1581 Int_t nbins1 = lastBin1-firstBin1 + 1;
1589 if (firstBin2 < lastBin2) {
1591 nbins2 = lastBin1-firstBin1 + 1;
1596 if (nbins1 != nbins2 ) {
1597 ::Info(
"CheckConsistentSubAxes",
"Axes have different number of bins");
1603 ::Info(
"CheckConsistentSubAxes",
"Axes have different limits");
1615 if (h1 == h2)
return true;
1618 throw DifferentDimension();
1630 (dim > 1 && nbinsy != h2->
GetNbinsY()) ||
1631 (dim > 2 && nbinsz != h2->
GetNbinsZ()) ) {
1632 throw DifferentNumberOfBins();
1947 Int_t ndf = 0, igood = 0;
1955 printf(
"Chi2 = %f, Prob = %g, NDF = %d, igood = %d\n", chi2,prob,ndf,igood);
1958 if (ndf == 0)
return 0;
2006 Int_t i_start, i_end;
2007 Int_t j_start, j_end;
2008 Int_t k_start, k_end;
2037 Error(
"Chi2TestX",
"Histograms have different dimensions.");
2042 if (nbinx1 != nbinx2) {
2043 Error(
"Chi2TestX",
"different number of x channels");
2045 if (nbiny1 != nbiny2) {
2046 Error(
"Chi2TestX",
"different number of y channels");
2048 if (nbinz1 != nbinz2) {
2049 Error(
"Chi2TestX",
"different number of z channels");
2053 i_start = j_start = k_start = 1;
2084 ndf = (i_end - i_start + 1) * (j_end - j_start + 1) * (k_end - k_start + 1) - 1;
2091 if (scaledHistogram && !comparisonUU) {
2092 Info(
"Chi2TestX",
"NORM option should be used together with UU option. It is ignored");
2099 Double_t effEntries1 = (s[1] ? s[0] * s[0] / s[1] : 0.0);
2103 Double_t effEntries2 = (s[1] ? s[0] * s[0] / s[1] : 0.0);
2105 if (!comparisonUU && !comparisonUW && !comparisonWW ) {
2107 if (
TMath::Abs(sumBinContent1 - effEntries1) < 1) {
2108 if (
TMath::Abs(sumBinContent2 - effEntries2) < 1) comparisonUU =
true;
2109 else comparisonUW =
true;
2111 else comparisonWW =
true;
2115 if (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) {
2116 Warning(
"Chi2TestX",
"First histogram is not unweighted and option UW has been requested");
2119 if ( (!scaledHistogram && comparisonUU) ) {
2120 if ( (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) || (
TMath::Abs(sumBinContent2 - effEntries2) >= 1) ) {
2121 Warning(
"Chi2TestX",
"Both histograms are not unweighted and option UU has been requested");
2127 if (comparisonUU && scaledHistogram) {
2128 for (
Int_t i = i_start; i <= i_end; ++i) {
2129 for (
Int_t j = j_start; j <= j_end; ++j) {
2130 for (
Int_t k = k_start; k <= k_end; ++k) {
2139 if (e1sq > 0.0) cnt1 =
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5);
2142 if (e2sq > 0.0) cnt2 =
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5);
2153 if (sumw1 <= 0.0 || sumw2 <= 0.0) {
2154 Error(
"Chi2TestX",
"Cannot use option NORM when one histogram has all zero errors");
2159 for (
Int_t i = i_start; i <= i_end; ++i) {
2160 for (
Int_t j = j_start; j <= j_end; ++j) {
2161 for (
Int_t k = k_start; k <= k_end; ++k) {
2175 if (sum1 == 0.0 || sum2 == 0.0) {
2176 Error(
"Chi2TestX",
"one histogram is empty");
2180 if ( comparisonWW && ( sumw1 <= 0.0 && sumw2 <= 0.0 ) ){
2181 Error(
"Chi2TestX",
"Hist1 and Hist2 have both all zero errors\n");
2191 for (
Int_t i = i_start; i <= i_end; ++i) {
2192 for (
Int_t j = j_start; j <= j_end; ++j) {
2193 for (
Int_t k = k_start; k <= k_end; ++k) {
2200 if (scaledHistogram) {
2205 if (e1sq > 0) cnt1 =
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5);
2208 if (e2sq > 0) cnt2 =
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5);
2212 if (
Int_t(cnt1) == 0 &&
Int_t(cnt2) == 0) --ndf;
2219 if (res) res[i - i_start] = (cnt1 - nexp1) /
TMath::Sqrt(nexp1);
2225 Double_t correc = (1. - sum1 /
sum) * (1. - cntsum / sum);
2228 Double_t delta = sum2 * cnt1 - sum1 * cnt2;
2229 chi2 += delta * delta / cntsum;
2234 chi2 /= sum1 * sum2;
2239 Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
2243 Info(
"Chi2TestX",
"There is a bin in h2 with less than 1 event.\n");
2254 if ( comparisonUW ) {
2255 for (
Int_t i = i_start; i <= i_end; ++i) {
2256 for (
Int_t j = j_start; j <= j_end; ++j) {
2257 for (
Int_t k = k_start; k <= k_end; ++k) {
2266 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
2272 if (cnt2 * cnt2 == 0 && e2sq == 0) {
2276 e2sq = sumw2 / sum2;
2281 Error(
"Chi2TestX",
"Hist2 has in bin (%d,%d,%d) zero content and zero errors\n", i, j, k);
2287 if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10)
n++;
2289 Double_t var1 = sum2 * cnt2 - sum1 * e2sq;
2290 Double_t var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2295 while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
2298 var1 = sum2 * cnt2 - sum1 * e2sq;
2299 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2303 while (var1 + var2 == 0) {
2306 var1 = sum2 * cnt2 - sum1 * e2sq;
2307 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2308 while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
2311 var1 = sum2 * cnt2 - sum1 * e2sq;
2312 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2317 Double_t probb = (var1 + var2) / (2. * sum2 * sum2);
2325 chi2 += delta1 * delta1 / nexp1;
2328 chi2 += delta2 * delta2 / e2sq;
2333 Double_t temp1 = sum2 * e2sq / var2;
2334 Double_t temp2 = 1.0 + (sum1 * e2sq - sum2 * cnt2) / var2;
2335 temp2 = temp1 * temp1 * sum1 * probb * (1.0 - probb) + temp2 * temp2 * e2sq / 4.0;
2348 Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
2352 Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
2362 for (
Int_t i = i_start; i <= i_end; ++i) {
2363 for (
Int_t j = j_start; j <= j_end; ++j) {
2364 for (
Int_t k = k_start; k <= k_end; ++k) {
2374 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
2379 if (e1sq == 0 && e2sq == 0) {
2381 Error(
"Chi2TestX",
"h1 and h2 both have bin %d,%d,%d with all zero errors\n", i,j,k);
2386 Double_t delta = sum2 * cnt1 - sum1 * cnt2;
2387 chi2 += delta * delta /
sigma;
2390 Double_t temp = cnt1 * sum1 * e2sq + cnt2 * sum2 * e1sq;
2403 res[i - i_start] =
z;
2406 if (e1sq > 0 && cnt1 * cnt1 / e1sq < 10) m++;
2407 if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10)
n++;
2413 Info(
"Chi2TestX",
"There is a bin in h1 with less than 10 effective events.\n");
2417 Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
2434 Error(
"Chisquare",
"Function pointer is Null - return -1");
2480 Int_t nbins = nbinsx * nbinsy * nbinsz;
2485 for (
Int_t binz=1; binz <= nbinsz; ++binz) {
2486 for (
Int_t biny=1; biny <= nbinsy; ++biny) {
2487 for (
Int_t binx=1; binx <= nbinsx; ++binx) {
2490 if (onlyPositive && y < 0) {
2491 Error(
"ComputeIntegral",
"Bin content is negative - return a NaN value");
2502 Error(
"ComputeIntegral",
"Integral = zero");
return 0;
2545 hintegrated->
Reset();
2548 for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
2549 for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
2550 for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
2551 const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
2559 for (
Int_t binz = nbinsz; binz >= 1; --binz) {
2560 for (
Int_t biny = nbinsy; biny >= 1; --biny) {
2561 for (
Int_t binx = nbinsx; binx >= 1; --binx) {
2562 const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
2588 ((
TH1&)obj).fDirectory->Remove(&obj);
2589 ((
TH1&)obj).fDirectory = 0;
2603 delete [] ((
TH1&)obj).fBuffer;
2604 ((
TH1&)obj).fBuffer = 0;
2610 ((
TH1&)obj).fBuffer = buf;
2636 ((
TH1&)obj).fXaxis.SetParent(&obj);
2637 ((
TH1&)obj).fYaxis.SetParent(&obj);
2638 ((
TH1&)obj).fZaxis.SetParent(&obj);
2648 ((
TH1&)obj).fFunctions->UseRWLock();
2651 ((
TH1&)obj).fDirectory = 0;
2661 TH1* obj = (
TH1*)IsA()->GetNew()(0);
2679 if(newname && strlen(newname) ) {
2734 Error(
"Divide",
"Attempt to divide by a non-existing function");
2752 Int_t bin, binx, biny, binz;
2757 for (binz = 0; binz < nz; ++binz) {
2759 for (biny = 0; biny < ny; ++biny) {
2761 for (binx = 0; binx < nx; ++binx) {
2765 bin = binx + nx * (biny + ny * binz);
2802 Error(
"Divide",
"Input histogram passed does not exist (NULL).");
2811 }
catch(DifferentNumberOfBins&) {
2812 Error(
"Divide",
"Cannot divide histograms with different number of bins");
2814 }
catch(DifferentAxisLimits&) {
2815 Warning(
"Divide",
"Dividing histograms with different axis limits");
2816 }
catch(DifferentBinLimits&) {
2817 Warning(
"Divide",
"Dividing histograms with different bin limits");
2818 }
catch(DifferentLabels&) {
2819 Warning(
"Divide",
"Dividing histograms with different labels");
2874 Error(
"Divide",
"At least one of the input histograms passed does not exist (NULL).");
2884 }
catch(DifferentNumberOfBins&) {
2885 Error(
"Divide",
"Cannot divide histograms with different number of bins");
2887 }
catch(DifferentAxisLimits&) {
2888 Warning(
"Divide",
"Dividing histograms with different axis limits");
2889 }
catch(DifferentBinLimits&) {
2890 Warning(
"Divide",
"Dividing histograms with different bin limits");
2891 }
catch(DifferentLabels&) {
2892 Warning(
"Divide",
"Dividing histograms with different labels");
2897 Error(
"Divide",
"Coefficient of dividing histogram cannot be zero");
2934 fSumw2.
fArray[i] = c1sq * c2sq * (e1sq * b2sq + e2sq * b1sq) / (c2sq * c2sq * b2sq * b2sq);
2987 if (index>indb && index<indk) index = -1;
2993 if (!
gPad->IsEditable())
gROOT->MakeDefCanvas();
2995 if (
gPad->GetX1() == 0 &&
gPad->GetX2() == 1 &&
2996 gPad->GetY1() == 0 &&
gPad->GetY2() == 1 &&
2997 gPad->GetListOfPrimitives()->GetSize()==0) opt2.
Remove(index,4);
3004 gPad->IncrementPaletteColor(1, opt1);
3006 if (index>=0) opt2.
Remove(index,4);
3032 if (
gPad)
gPad->IncrementPaletteColor(1, opt);
3057 Error(
"DrawNormalized",
"Sum of weights is null. Cannot normalize histogram: %s",
GetName());
3069 if (opt.
IsNull() || opt ==
"SAME") opt +=
"HIST";
3104 Int_t range, stat, add;
3124 for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
3126 for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
3128 for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
3131 if (range && !f1->
IsInside(x))
continue;
3228 for (
Int_t binx = 1; binx<=ndim[0]; binx++) {
3229 for (
Int_t biny=1; biny<=ndim[1]; biny++) {
3230 for (
Int_t binz=1; binz<=ndim[2]; binz++) {
3260 if (bin <0)
return -1;
3293 if (bin <0)
return -1;
3326 if (bin <0)
return -1;
3362 for (i=0;i<ntimes;i+=stride) {
3368 if (i < ntimes &&
fBuffer==0) {
3369 auto weights = w ? &w[i] :
nullptr;
3370 DoFillN((ntimes-i)/stride,&x[i],weights,stride);
3375 DoFillN(ntimes, x, w, stride);
3390 for (i=0;i<ntimes;i+=stride) {
3392 if (bin <0)
continue;
3397 if (bin == 0 || bin > nbins) {
3425 Int_t bin, binx, ibin, loop;
3429 if (!f1) {
Error(
"FillRandom",
"Unknown function: %s",fname);
return; }
3439 Info(
"FillRandom",
"Using function axis and range [%g,%g]",xmin, xmax);
3445 Int_t nbinsx = last-first+1;
3449 for (binx=1;binx<=nbinsx;binx++) {
3451 integral[binx] = integral[binx-1] + fint;
3455 if (integral[nbinsx] == 0 ) {
3457 Error(
"FillRandom",
"Integral = zero");
return;
3459 for (bin=1;bin<=nbinsx;bin++) integral[bin] /= integral[nbinsx];
3462 for (loop=0;loop<ntimes;loop++) {
3468 +xAxis->
GetBinWidth(ibin+first)*(r1-integral[ibin])/(integral[ibin+1] - integral[ibin]);
3492 if (!h) {
Error(
"FillRandom",
"Null histogram");
return; }
3494 Error(
"FillRandom",
"Histograms with different dimensions");
return;
3497 Error(
"FillRandom",
"Histograms contains negative bins, does not represent probabilities");
3505 Int_t nbins = last-first+1;
3506 if (ntimes > 10*nbins) {
3510 if (sumw == 0)
return;
3512 for (
Int_t bin=first;bin<=last;bin++) {
3524 if (sumgen < ntimes) {
3526 for (i =
Int_t(sumgen+0.5); i < ntimes; ++i)
3532 else if (sumgen > ntimes) {
3534 i =
Int_t(sumgen+0.5);
3535 while( i > ntimes) {
3550 catch(std::exception&) {}
3557 for (loop=0;loop<ntimes;loop++) {
3583 return binx + nx*biny;
3591 return binx + nx*(biny +ny*binz);
3616 return binx + nx*biny;
3624 return binx + nx*(biny +ny*binz);
3638 Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
3642 for (
Int_t bin=1;bin<=nbins;bin++) {
3657 Warning(
"FindLastBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
3661 for (
Int_t bin=nbins;bin>=1;bin--) {
3700 linear= (
char*)strstr(fname,
"++");
3707 f1=
new TF1(fname, fname, xxmin, xxmax);
3708 return Fit(f1,option,goption,xxmin,xxmax);
3711 f2=
new TF2(fname, fname);
3712 return Fit(f2,option,goption,xxmin,xxmax);
3715 f3=
new TF3(fname, fname);
3716 return Fit(f3,option,goption,xxmin,xxmax);
3721 f1 = (
TF1*)
gROOT->GetFunction(fname);
3722 if (!f1) {
Printf(
"Unknown function: %s",fname);
return -1; }
3723 return Fit(f1,option,goption,xxmin,xxmax);
4051 gROOT->MakeDefCanvas();
4054 Error(
"FitPanel",
"Unable to create a default canvas");
4061 if (handler && handler->
LoadPlugin() != -1) {
4063 Error(
"FitPanel",
"Unable to create the FitPanel");
4066 Error(
"FitPanel",
"Unable to find the FitPanel plug-in");
4111 asym->SetTitle(title);
4121 top->
Add(h1,h2,1,-c2);
4122 bottom->
Add(h1,h2,1,c2);
4123 asym->Divide(top,bottom);
4127 Int_t zmax = asym->GetNbinsZ();
4137 for(
Int_t k=1; k<= zmax; k++){
4153 Double_t error = 2*
TMath::Sqrt(a*a*c2*c2*dbsq + c2*c2*b*b*dasq+a*a*b*b*dc2*dc2)/(bot*bot);
4154 asym->SetBinError(i,j,k,error);
4216 return (s[1] ? s[0]*s[0]/s[1] :
TMath::Abs(s[0]) );
4226 return ((
TH1*)
this)->GetPainter()->GetObjectInfo(px,py);
4327 Error(
"GetQuantiles",
"Only available for 1-d histograms");
4337 Int_t nq = nprobSum;
4342 for (i=1;i<nq;i++) {
4347 for (i = 0; i < nq; i++) {
4349 while (ibin < nbins-1 &&
fIntegral[ibin+1] == prob[i]) {
4350 if (
fIntegral[ibin+2] == prob[i]) ibin++;
4355 if (dint > 0) q[i] +=
GetBinWidth(ibin+1)*(prob[i]-fIntegral[ibin])/dint;
4358 if (!probSum)
delete [] prob;
4376 Double_t allcha, sumx, sumx2,
x, val, stddev, mean;
4387 allcha = sumx = sumx2 = 0;
4388 for (bin=hxfirst;bin<=hxlast;bin++) {
4391 if (val > valmax) valmax = val;
4396 if (allcha == 0)
return;
4398 stddev = sumx2/allcha - mean*mean;
4401 if (stddev == 0) stddev = binwidx*(hxlast-hxfirst+1)/4;
4408 Double_t constant = 0.5*(valmax+binwidx*allcha/(sqrtpi*stddev));
4416 if ((mean < xmin || mean > xmax) && stddev > (xmax-xmin)) {
4417 mean = 0.5*(xmax+
xmin);
4418 stddev = 0.5*(xmax-
xmin);
4437 Int_t nchanx = hxlast - hxfirst + 1;
4458 Int_t nchanx = hxlast - hxfirst + 1;
4461 if (nchanx <=1 || npar == 1) {
4484 const Int_t idim = 20;
4495 if (m > idim || m > n)
return;
4498 for (l = 2; l <=
m; ++
l) {
4500 b[m + l*20 - 21] = zero;
4507 for (k = hxfirst; k <= hxlast; ++k) {
4512 for (l = 2; l <=
m; ++
l) {
4515 da[l-1] += power*yk;
4517 for (l = 2; l <=
m; ++
l) {
4519 b[m + l*20 - 21] += power;
4522 for (i = 3; i <=
m; ++i) {
4523 for (k = i; k <=
m; ++k) {
4524 b[k - 1 + (i-1)*20 - 21] = b[k + (i-2)*20 - 21];
4529 for (i=0; i<
m; ++i) a[i] = da[i];
4549 xbar = ybar = x2bar = xybar = 0;
4554 for (i = hxfirst; i <= hxlast; ++i) {
4558 if (yk <= 0) yk = 1
e-9;
4567 det = fn*x2bar - xbar*xbar;
4575 a0 = (x2bar*ybar - xbar*xybar) / det;
4576 a1 = (fn*xybar - xbar*ybar) / det;
4587 Int_t a_dim1, a_offset, b_dim1, b_offset;
4589 Int_t im1, jp1, nm1, nmi;
4595 b_offset = b_dim1 + 1;
4598 a_offset = a_dim1 + 1;
4601 if (idim < n)
return;
4604 for (j = 1; j <=
n; ++j) {
4605 if (a[j + j*a_dim1] <= 0) { ifail = -1;
return; }
4606 a[j + j*a_dim1] = one / a[j + j*a_dim1];
4607 if (j == n)
continue;
4609 for (l = jp1; l <=
n; ++
l) {
4610 a[j + l*a_dim1] = a[j + j*a_dim1] * a[l + j*a_dim1];
4611 s1 = -a[l + (j+1)*a_dim1];
4612 for (i = 1; i <= j; ++i) { s1 = a[l + i*a_dim1] * a[i + (j+1)*a_dim1] + s1; }
4613 a[l + (j+1)*a_dim1] = -s1;
4618 for (l = 1; l <= k; ++
l) {
4619 b[l*b_dim1 + 1] = a[a_dim1 + 1]*b[l*b_dim1 + 1];
4622 for (l = 1; l <= k; ++
l) {
4623 for (i = 2; i <=
n; ++i) {
4625 s21 = -b[i + l*b_dim1];
4626 for (j = 1; j <= im1; ++j) {
4627 s21 = a[i + j*a_dim1]*b[j + l*b_dim1] + s21;
4629 b[i + l*b_dim1] = -a[i + i*a_dim1]*s21;
4632 for (i = 1; i <= nm1; ++i) {
4634 s22 = -b[nmi + l*b_dim1];
4635 for (j = 1; j <= i; ++j) {
4637 s22 = a[nmi + nmjp1*a_dim1]*b[nmjp1 + l*b_dim1] + s22;
4639 b[nmi + l*b_dim1] = -s22;
4677 if (binx < 0) binx = 0;
4678 if (binx > ofx) binx = ofx;
4693 binx = binglobal%nx;
4699 binx = binglobal%nx;
4700 biny = ((binglobal-binx)/nx)%ny;
4705 binx = binglobal%nx;
4706 biny = ((binglobal-binx)/nx)%ny;
4707 binz = ((binglobal-binx)/nx -biny)/ny;
4724 Error(
"GetRandom",
"Function only valid for 1-d histograms");
4734 integral = ((
TH1*)
this)->ComputeIntegral(
true);
4736 if (integral == 0)
return 0;
4775 if (bin < 0) bin = 0;
4801 Error(
"GetBinWithContent",
"function is only valid for 1-D histograms");
4807 if (firstx <= 0) firstx = 1;
4811 for (
Int_t i=firstx;i<=lastx;i++) {
4813 if (diff <= 0) {binx = i;
return diff;}
4814 if (diff < curmax && diff <= maxdiff) {curmax = diff, binminx=i;}
4849 return y0 + (x-x0)*((y1-y0)/(x1-x0));
4858 Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
4867 Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
4895 Int_t binx, biny, binz;
4917 Error(
"IsBinOverflow",
"Invalid axis value");
4927 Int_t binx, biny, binz;
4934 return (binx <= 0 || biny <= 0);
4936 return (binx <= 0 || biny <= 0 || binz <= 0);
4947 Error(
"IsBinUnderflow",
"Invalid axis value");
4964 Error(
"LabelsDeflate",
"Invalid axis option %s",ax);
4975 while ((obj = next())) {
4977 if (ibin > nbins) nbins = ibin;
4979 if (nbins < 1) nbins = 1;
4982 if (nbins==axis->
GetNbins())
return;
4984 TH1 *hold = (
TH1*)IsA()->New();
4992 if (xmax <= xmin) xmax = xmin +nbins;
4994 axis->
Set(nbins,xmin,xmax);
5007 Int_t bin,binx,biny,binz;
5008 for (bin=0; bin < hold->
fNcells; ++bin) {
5035 TH1 *hold = (
TH1*)IsA()->New();;
5043 xmax = xmin + 2*(xmax-
xmin);
5046 axis->
Set(2*nbins,xmin,xmax);
5056 Int_t bin,ibin,binx,biny,binz;
5057 for (ibin =0; ibin < hold->
fNcells; ibin++) {
5060 bin =
GetBin(binx,biny,binz);
5097 Warning(
"LabelsOption",
"Cannot sort. No labels");
5130 if (sort < 0)
return;
5132 Error(
"LabelsOption",
"Sorting by value not implemented for 3-D histograms");
5138 std::vector<Int_t>
a(n+2);
5141 std::vector<Double_t> cont;
5142 std::vector<Double_t> errors;
5144 TIter nextold(labels);
5146 while ((obj=nextold())) {
5155 for (i=1;i<=
n;i++) {
5157 if (!errors.empty()) errors[i-1] =
GetBinError(i);
5161 for (i=1;i<=
n;i++) {
5163 if (!errors.empty())
SetBinError(i,errors[a[i-1]]);
5165 for (i=1;i<=
n;i++) {
5166 obj = labold->
At(a[i-1]);
5171 std::vector<Double_t> pcont(n+2);
5174 cont.resize( (nx+2)*(ny+2));
5175 if (
fSumw2.
fN) errors.resize( (nx+2)*(ny+2));
5176 for (i=1;i<=nx;i++) {
5177 for (j=1;j<=ny;j++) {
5179 if (!errors.empty()) errors[i+nx*j] =
GetBinError(i,j);
5182 pcont[k-1] += cont[i+nx*j];
5188 obj = labold->
At(a[i]);
5193 for (i=1;i<=
n;i++) {
5194 for (j=1;j<=ny;j++) {
5196 if (!errors.empty())
SetBinError(i,j,errors[a[i-1]+1+nx*j]);
5202 for (i=1;i<=nx;i++) {
5203 for (j=1;j<=
n;j++) {
5205 if (!errors.empty())
SetBinError(i,j,errors[i+nx*(a[j-1]+1)]);
5214 const UInt_t kUsed = 1<<18;
5218 for (i=1;i<=
n;i++) {
5219 const char *label =
"zzzzzzzzzzzz";
5220 for (j=1;j<=
n;j++) {
5221 obj = labold->
At(j-1);
5223 if (obj->
TestBit(kUsed))
continue;
5225 if (strcmp(label,obj->
GetName()) < 0)
continue;
5236 for (i=1;i<=
n;i++) {
5237 obj = labels->
At(i-1);
5245 for (i=1;i<=
n;i++) {
5247 if (!errors.empty()) errors[i] =
GetBinError(a[i]);
5249 for (i=1;i<=
n;i++) {
5257 if (
fSumw2.
fN) errors.resize(nx*ny);
5258 for (i=0;i<nx;i++) {
5259 for (j=0;j<ny;j++) {
5261 if (!errors.empty()) errors[i+nx*j] =
GetBinError(i,j);
5265 for (i=1;i<=
n;i++) {
5266 for (j=0;j<ny;j++) {
5268 if (!errors.empty())
SetBinError(i,j,errors[a[i]+nx*j]);
5272 for (i=0;i<nx;i++) {
5273 for (j=1;j<=
n;j++) {
5275 if (!errors.empty())
SetBinError(i,j,errors[i+nx*a[j]]);
5283 cont.resize(nx*ny*nz);
5284 if (
fSumw2.
fN) errors.resize(nx*ny*nz);
5285 for (i=0;i<nx;i++) {
5286 for (j=0;j<ny;j++) {
5287 for (k=0;k<nz;k++) {
5289 if (!errors.empty()) errors[i+nx*(j+ny*k)] =
GetBinError(i,j,k);
5295 for (i=1;i<=
n;i++) {
5296 for (j=0;j<ny;j++) {
5297 for (k=0;k<nz;k++) {
5299 if (!errors.empty())
SetBinError(i,j,k,errors[a[i]+nx*(j+ny*k)]);
5306 for (i=0;i<nx;i++) {
5307 for (j=1;j<=
n;j++) {
5308 for (k=0;k<nz;k++) {
5310 if (!errors.empty())
SetBinError(i,j,k,errors[i+nx*(a[j]+ny*k)]);
5317 for (i=0;i<nx;i++) {
5318 for (j=0;j<ny;j++) {
5319 for (k=1;k<=
n;k++) {
5321 if (!errors.empty())
SetBinError(i,j,k,errors[i+nx*(j+ny*a[k])]);
5357 bool isEquidistant =
true;
5359 for (
int i = 1; i < axis.
GetNbins(); ++i) {
5362 isEquidistant &= match;
5366 return isEquidistant;
5393 if (width1 == 0 || width2 == 0)
5424 delta = (xmax - destAxis.
GetXmax())/width1;
5429 delta = (xmax - anAxis.
GetXmax())/width2;
5434 delta = (xmax - destAxis.
GetXmax())/width1;
5439 printf(
"TH1::RecomputeAxisLimits - Impossible\n");
5522 Error(
"Multiply",
"Attempt to multiply by a non-existing function");
5544 for (
Int_t binz = 0; binz < nz; ++binz) {
5546 for (
Int_t biny = 0; biny < ny; ++biny) {
5548 for (
Int_t binx = 0; binx < nx; ++binx) {
5552 Int_t bin = binx + nx * (biny + ny *binz);
5584 Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
5593 }
catch(DifferentNumberOfBins&) {
5594 Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
5596 }
catch(DifferentAxisLimits&) {
5597 Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
5598 }
catch(DifferentBinLimits&) {
5599 Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
5600 }
catch(DifferentLabels&) {
5601 Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
5646 Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
5656 }
catch(DifferentNumberOfBins&) {
5657 Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
5659 }
catch(DifferentAxisLimits&) {
5660 Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
5661 }
catch(DifferentBinLimits&) {
5662 Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
5663 }
catch(DifferentLabels&) {
5664 Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
5766 if ((ngroup <= 0) || (ngroup > nbins)) {
5767 Error(
"Rebin",
"Illegal value of ngroup=%d",ngroup);
5772 Error(
"Rebin",
"Operation valid on 1-D histograms only");
5775 if (!newname && xbins) {
5776 Error(
"Rebin",
"if xbins is specified, newname must be given");
5780 Int_t newbins = nbins/ngroup;
5782 Int_t nbg = nbins/ngroup;
5783 if (nbg*ngroup != nbins) {
5784 Warning(
"Rebin",
"ngroup=%d is not an exact divider of nbins=%d.",ngroup,nbins);
5804 for (bin=0;bin<nbins+2;bin++) oldErrors[bin] =
GetBinError(bin);
5809 Warning(
"Rebin",
"underflow entries will not be used when rebinning");
5810 if (xbins[newbins] >
fXaxis.
GetXmax() && oldBins[nbins+1] != 0 )
5811 Warning(
"Rebin",
"overflow entries will not be used when rebinning");
5817 if ((newname && strlen(newname) > 0) || xbins) {
5827 bool resetStat =
false;
5829 if(!xbins && (newbins*ngroup != nbins)) {
5854 hnew->
SetBins(newbins,xmin,xmax);
5877 Int_t oldbin = startbin;
5879 for (bin = 1;bin<=newbins;bin++) {
5882 Int_t imax = ngroup;
5890 Warning(
"Rebin",
"Bin edge %d of rebinned histogram does not much any bin edges of the old histogram. Result can be inconsistent",bin);
5892 for (i=0;i<ngroup;i++) {
5893 if( (oldbin+i > nbins) ||
5898 binContent += oldBins[oldbin+i];
5899 if (oldErrors) binError += oldErrors[oldbin+i]*oldErrors[oldbin+i];
5909 for (i = 0; i < startbin; ++i) {
5910 binContent += oldBins[i];
5911 if (oldErrors) binError += oldErrors[i]*oldErrors[i];
5918 for (i = oldbin; i <= nbins+1; ++i) {
5919 binContent += oldBins[i];
5920 if (oldErrors) binError += oldErrors[i]*oldErrors[i];
5929 if (!resetStat) hnew->
PutStats(stat);
5931 if (oldErrors)
delete [] oldErrors;
5950 if (xmin >= xmax)
return kFALSE;
5956 while (point < xmin) {
5959 xmin = xmin - range;
5968 while (point >= xmax) {
5971 xmax = xmax + range;
6019 TH1 *hold = (
TH1*)IsA()->New();
6032 if (axis == &
fXaxis) iaxis = 1;
6033 if (axis == &
fYaxis) iaxis = 2;
6034 if (axis == &
fZaxis) iaxis = 3;
6035 bool firstw =
kTRUE;
6036 Int_t binx,biny, binz = 0;
6037 Int_t ix = 0,iy = 0,iz = 0;
6040 for (
Int_t bin = 0; bin < ncells; ++bin) {
6054 if (content == 0)
continue;
6057 Warning(
"ExtendAxis",
"Histogram %s has underflow or overflow in the axis that is extendable" 6058 " their content will be lost",
GetName() );
6109 if (opt.
Contains(
"width"))
Add(
this,
this, c1, -1);
6119 if (ncontours == 0)
return;
6121 for (
Int_t i = 0; i < ncontours; ++i) levels[i] *= c1;
6160 return oldExtendBitMask;
6206 str1 = str1(isc+1, lns);
6207 isc = str1.
Index(
";");
6210 str2.ReplaceAll(
"#semicolon",10,
";",1);
6213 str1 = str1(isc+1, lns);
6214 isc = str1.
Index(
";");
6217 str2.ReplaceAll(
"#semicolon",10,
";",1);
6220 str1 = str1(isc+1, lns);
6246 ::Error(
"SmoothArray",
"Need at least 3 points for smoothing: n = %d",nn);
6253 std::vector<double> yy(nn);
6254 std::vector<double> zz(nn);
6255 std::vector<double> rr(nn);
6257 for (
Int_t pass=0;pass<ntimes;pass++) {
6259 std::copy(xx, xx+nn, zz.begin() );
6261 for (
int noent = 0; noent < 2; ++noent) {
6264 for (
int kk = 0; kk < 3; kk++) {
6265 std::copy(zz.begin(), zz.end(), yy.begin());
6266 int medianType = (kk != 1) ? 3 : 5;
6267 int ifirst = (kk != 1 ) ? 1 : 2;
6268 int ilast = (kk != 1 ) ? nn-1 : nn -2;
6272 for ( ii = ifirst; ii < ilast; ii++) {
6273 assert(ii - ifirst >= 0);
6274 for (
int jj = 0; jj < medianType; jj++) {
6275 hh[jj] = yy[ii - ifirst + jj ];
6284 hh[2] = 3*zz[1] - 2*zz[2];
6289 hh[2] = 3*zz[nn - 2] - 2*zz[nn - 3];
6294 for (ii = 0; ii < 3; ii++) {
6299 for (ii = 0; ii < 3; ii++) {
6300 hh[ii] = yy[nn - 3 + ii];
6307 std::copy ( zz.begin(), zz.end(), yy.begin() );
6310 for (ii = 2; ii < (nn - 2); ii++) {
6311 if (zz[ii - 1] != zz[ii])
continue;
6312 if (zz[ii] != zz[ii + 1])
continue;
6313 hh[0] = zz[ii - 2] - zz[ii];
6314 hh[1] = zz[ii + 2] - zz[ii];
6315 if (hh[0] * hh[1] <= 0)
continue;
6318 yy[ii] = -0.5*zz[ii - 2*jk] + zz[ii]/0.75 + zz[ii + 2*jk] /6.;
6319 yy[ii + jk] = 0.5*(zz[ii + 2*jk] - zz[ii - 2*jk]) + zz[ii];
6324 for (ii = 1; ii < nn - 1; ii++) {
6325 zz[ii] = 0.25*yy[ii - 1] + 0.5*yy[ii] + 0.25*yy[ii + 1];
6328 zz[nn - 1] = yy[nn - 1];
6333 std::copy(zz.begin(), zz.end(), rr.begin());
6336 for (ii = 0; ii < nn; ii++) {
6337 zz[ii] = xx[ii] - zz[ii];
6345 for (ii = 0; ii < nn; ii++) {
6346 if (xmin < 0) xx[ii] = rr[ii] + zz[ii];
6348 else xx[ii] =
TMath::Max((rr[ii] + zz[ii]),0.0 );
6364 Error(
"Smooth",
"Smooth only supported for 1-d histograms");
6369 Error(
"Smooth",
"Smooth only supported for histograms with >= 3 bins. Nbins = %d",nbins);
6376 Int_t firstbin = 1, lastbin = nbins;
6383 nbins = lastbin - firstbin + 1;
6387 for (i=0;i<nbins;i++) {
6393 for (i=0;i<nbins;i++) {
6431 while ((obj=next())) {
6437 TNamed::Streamer(b);
6438 TAttLine::Streamer(b);
6439 TAttFill::Streamer(b);
6440 TAttMarker::Streamer(b);
6456 Float_t maximum, minimum, norm;
6499 else if (opt.
Contains(
"range")) all = 1;
6500 else if (opt.
Contains(
"base")) all = 2;
6503 Int_t bin, binx, biny, binz;
6504 Int_t firstx=0,lastx=0,firsty=0,lasty=0,firstz=0,lastz=0;
6516 printf(
" Title = %s\n",
GetTitle());
6527 for (binx=firstx;binx<=lastx;binx++) {
6531 if(
fSumw2.
fN) printf(
" fSumw[%d]=%g, x=%g, error=%g\n",binx,w,x,e);
6532 else printf(
" fSumw[%d]=%g, x=%g\n",binx,w,x);
6536 for (biny=firsty;biny<=lasty;biny++) {
6538 for (binx=firstx;binx<=lastx;binx++) {
6543 if(
fSumw2.
fN) printf(
" fSumw[%d][%d]=%g, x=%g, y=%g, error=%g\n",binx,biny,w,x,y,e);
6544 else printf(
" fSumw[%d][%d]=%g, x=%g, y=%g\n",binx,biny,w,x,y);
6549 for (binz=firstz;binz<=lastz;binz++) {
6551 for (biny=firsty;biny<=lasty;biny++) {
6553 for (binx=firstx;binx<=lastx;binx++) {
6554 bin =
GetBin(binx,biny,binz);
6558 if(
fSumw2.
fN) printf(
" fSumw[%d][%d][%d]=%g, x=%g, y=%g, z=%g, error=%g\n",binx,biny,binz,w,x,y,z,e);
6559 else printf(
" fSumw[%d][%d][%d]=%g, x=%g, y=%g, z=%g\n",binx,biny,binz,w,x,y,z);
6617 if (opt ==
"ICES")
return;
6647 static Int_t nxaxis = 0;
6648 static Int_t nyaxis = 0;
6649 static Int_t nzaxis = 0;
6650 TString sxaxis=
"xAxis",syaxis=
"yAxis",szaxis=
"zAxis";
6661 if (i != 0) out <<
", ";
6664 out <<
"}; " << std::endl;
6677 if (i != 0) out <<
", ";
6680 out <<
"}; " << std::endl;
6693 if (i != 0) out <<
", ";
6696 out <<
"}; " << std::endl;
6700 out <<
" "<<std::endl;
6710 static Int_t hcounter = 0;
6717 histName += hcounter;
6720 const char *hname = histName.
Data();
6721 if (!strlen(hname)) hname =
"unnamed";
6727 out << hname <<
" = new " <<
ClassName() <<
"(" << quote
6728 << hname << quote <<
"," << quote<< t.
Data() << quote
6731 out <<
", "<<sxaxis;
6738 out <<
", "<<syaxis;
6746 out <<
", "<<szaxis;
6751 out <<
");" << std::endl;
6755 for (bin=0;bin<
fNcells;bin++) {
6758 out<<
" "<<hname<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
6764 for (bin=0;bin<
fNcells;bin++) {
6767 out<<
" "<<hname<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
6784 out<<
" "<<hname<<
"->SetBarOffset("<<
GetBarOffset()<<
");"<<std::endl;
6787 out<<
" "<<hname<<
"->SetBarWidth("<<
GetBarWidth()<<
");"<<std::endl;
6790 out<<
" "<<hname<<
"->SetMinimum("<<
fMinimum<<
");"<<std::endl;
6793 out<<
" "<<hname<<
"->SetMaximum("<<
fMaximum<<
");"<<std::endl;
6796 out<<
" "<<hname<<
"->SetNormFactor("<<
fNormFactor<<
");"<<std::endl;
6799 out<<
" "<<hname<<
"->SetEntries("<<
fEntries<<
");"<<std::endl;
6802 out<<
" "<<hname<<
"->SetDirectory(0);"<<std::endl;
6805 out<<
" "<<hname<<
"->SetStats(0);"<<std::endl;
6808 out<<
" "<<hname<<
"->SetOption("<<quote<<
fOption.
Data()<<quote<<
");"<<std::endl;
6813 if (ncontours > 0) {
6814 out<<
" "<<hname<<
"->SetContour("<<ncontours<<
");"<<std::endl;
6816 for (
Int_t bin=0;bin<ncontours;bin++) {
6817 if (
gPad->GetLogz()) {
6822 out<<
" "<<hname<<
"->SetContourLevel("<<bin<<
","<<zlevel<<
");"<<std::endl;
6829 static Int_t funcNumber = 0;
6836 out <<
" " << fname <<
"->SetParent(" << hname <<
");\n";
6837 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(" 6838 << fname <<
");"<<std::endl;
6840 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(ptstats);"<<std::endl;
6841 out<<
" ptstats->SetParent("<<hname<<
");"<<std::endl;
6843 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(" 6845 <<
","<<quote<<lnk->
GetOption()<<quote<<
");"<<std::endl;
6860 out<<
" "<<hname<<
"->Draw(" 6861 <<quote<<option<<quote<<
");"<<std::endl;
6904 while ((obj = next())) {
6934 if (axis<1 || (axis>3 && axis<11) || axis>13)
return 0;
6938 if (stats[0] == 0)
return 0;
6940 Int_t ax[3] = {2,4,7};
6941 return stats[ax[axis-1]]/stats[0];
6946 return ( neff > 0 ? stddev/
TMath::Sqrt(neff) : 0. );
6988 if (axis<1 || (axis>3 && axis<11) || axis>13)
return 0;
6993 if (stats[0] == 0)
return 0;
6994 Int_t ax[3] = {2,4,7};
6995 Int_t axm = ax[axis%10 - 1];
6996 x = stats[axm]/stats[0];
6997 stddev2 =
TMath::Abs(stats[axm+1]/stats[0] -x*x);
7004 return ( neff > 0 ?
TMath::Sqrt(stddev2/(2*neff) ) : 0. );
7040 if (axis > 0 && axis <= 3){
7044 Double_t stddev3 = stddev*stddev*stddev;
7055 if (firstBinX == 1) firstBinX = 0;
7059 if (firstBinY == 1) firstBinY = 0;
7063 if (firstBinZ == 1) firstBinZ = 0;
7071 for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
7072 for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
7073 for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
7079 sum+=w*(x-mean)*(x-mean)*(x-mean);
7086 else if (axis > 10 && axis <= 13) {
7093 Error(
"GetSkewness",
"illegal value of parameter");
7109 if (axis > 0 && axis <= 3){
7113 Double_t stddev4 = stddev*stddev*stddev*stddev;
7124 if (firstBinX == 1) firstBinX = 0;
7128 if (firstBinY == 1) firstBinY = 0;
7132 if (firstBinZ == 1) firstBinZ = 0;
7140 for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
7141 for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
7142 for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
7148 sum+=w*(x-mean)*(x-mean)*(x-mean)*(x-mean);
7155 }
else if (axis > 10 && axis <= 13) {
7159 return ( neff > 0 ?
TMath::Sqrt(24./neff ) : 0. );
7162 Error(
"GetKurtosis",
"illegal value of parameter");
7203 for (bin=0;bin<4;bin++) stats[bin] = 0;
7209 if (firstBinX == 1) firstBinX = 0;
7212 for (binx = firstBinX; binx <= lastBinX; binx++) {
7219 stats[1] += err*err;
7275 Int_t bin,binx,biny,binz;
7280 bin =
GetBin(binx,biny,binz);
7310 return DoIntegral(binx1,binx2,0,-1,0,-1,err,option);
7337 if (binx1 < 0) binx1 = 0;
7338 if (binx2 >= nx || binx2 < binx1) binx2 = nx - 1;
7342 if (biny1 < 0) biny1 = 0;
7343 if (biny2 >= ny || biny2 < biny1) biny2 = ny - 1;
7345 biny1 = 0; biny2 = 0;
7350 if (binz1 < 0) binz1 = 0;
7351 if (binz2 >= nz || binz2 < binz1) binz2 = nz - 1;
7353 binz1 = 0; binz2 = 0;
7366 for (
Int_t binx = binx1; binx <= binx2; ++binx) {
7368 for (
Int_t biny = biny1; biny <= biny2; ++biny) {
7370 for (
Int_t binz = binz1; binz <= binz2; ++binz) {
7423 printf(
" AndersonDarlingTest Prob = %g, AD TestStatistic = %g\n",pvalue,advalue);
7425 if (opt.
Contains(
"T") )
return advalue;
7436 Error(
"AndersonDarlingTest",
"Histograms must be 1-D");
7536 if (h2 == 0)
return 0;
7544 Error(
"KolmogorovTest",
"Histograms must be 1-D\n");
7550 Error(
"KolmogorovTest",
"Histograms have different number of bins, %d and %d\n",ncx1,ncx2);
7560 Error(
"KolmogorovTest",
"Histograms are not consistent: they have different bin edges");
7574 if (opt.
Contains(
"O")) ilast = ncx1 +1;
7575 for (bin = ifirst; bin <= ilast; bin++) {
7584 Error(
"KolmogorovTest",
"Histogram1 %s integral is zero\n",h1->
GetName());
7588 Error(
"KolmogorovTest",
"Histogram2 %s integral is zero\n",h2->
GetName());
7597 esum1 = sum1 * sum1 / w1;
7602 esum2 = sum2 * sum2 / w2;
7606 if (afunc2 && afunc1) {
7607 Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
7616 Double_t dfmax =0, rsum1 = 0, rsum2 = 0;
7618 for (bin=ifirst;bin<=ilast;bin++) {
7640 if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
7644 Double_t chi2 = d12*d12/(esum1+esum2);
7647 if (prob > 0 && prb2 > 0) prob *= prb2*(1-
TMath::Log(prob*prb2));
7651 const Int_t nEXPT = 1000;
7652 if (opt.
Contains(
"X") && !(afunc1 || afunc2 ) ) {
7659 Warning(
"KolmogorovTest",
"Detected bins with negative weights, these have been ignored and output might be " 7660 "skewed. Reduce number of bins for histogram?");
7669 for (
Int_t i=0; i < nEXPT; i++) {
7673 if (dSEXPT>dfmax) prb3 += 1.0;
7682 printf(
" Kolmo Prob h1 = %s, sum bin content =%g effective entries =%g\n",h1->
GetName(),sum1,esum1);
7683 printf(
" Kolmo Prob h2 = %s, sum bin content =%g effective entries =%g\n",h2->
GetName(),sum2,esum2);
7684 printf(
" Kolmo Prob = %g, Max Dist = %g\n",prob,dfmax);
7686 printf(
" Kolmo Prob = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
7688 printf(
" Kolmo Prob = %f with %d pseudo-experiments\n",prb3,nEXPT);
7694 if(opt.
Contains(
"M"))
return dfmax;
7695 else if(opt.
Contains(
"X"))
return prb3;
7746 if (level <0 || level >=
fContour.
fN)
return 0;
7753 if (zlevel <= 0)
return 0;
7769 if (buffersize <= 0) {
7773 if (buffersize < 100) buffersize = 100;
7800 for (level=0; level<nlevels; level++)
fContour.
fArray[level] = levels[level];
7805 if ((zmin == zmax) && (zmin != 0)) {
7811 if (zmax <= 0)
return;
7812 if (zmin <= 0) zmin = 0.001*zmax;
7815 dz = (zmax-zmin)/
Double_t(nlevels);
7817 for (level=0; level<nlevels; level++) {
7828 if (level < 0 || level >=
fContour.
fN)
return;
7853 Int_t bin, binx, biny, binz;
7860 Double_t maximum = -FLT_MAX, value;
7861 for (binz=zfirst;binz<=zlast;binz++) {
7862 for (biny=yfirst;biny<=ylast;biny++) {
7863 for (binx=xfirst;binx<=xlast;binx++) {
7864 bin =
GetBin(binx,biny,binz);
7866 if (value > maximum && value < maxval) maximum = value;
7878 Int_t locmax, locmay, locmaz;
7890 Int_t bin, binx, biny, binz;
7898 Double_t maximum = -FLT_MAX, value;
7899 locm = locmax = locmay = locmaz = 0;
7900 for (binz=zfirst;binz<=zlast;binz++) {
7901 for (biny=yfirst;biny<=ylast;biny++) {
7902 for (binx=xfirst;binx<=xlast;binx++) {
7903 bin =
GetBin(binx,biny,binz);
7905 if (value > maximum) {
7938 Int_t bin, binx, biny, binz;
7946 for (binz=zfirst;binz<=zlast;binz++) {
7947 for (biny=yfirst;biny<=ylast;biny++) {
7948 for (binx=xfirst;binx<=xlast;binx++) {
7949 bin =
GetBin(binx,biny,binz);
7951 if (value < minimum && value > minval) minimum = value;
7963 Int_t locmix, locmiy, locmiz;
7975 Int_t bin, binx, biny, binz;
7984 locm = locmix = locmiy = locmiz = 0;
7985 for (binz=zfirst;binz<=zlast;binz++) {
7986 for (biny=yfirst;biny<=ylast;biny++) {
7987 for (binx=xfirst;binx<=xlast;binx++) {
7988 bin =
GetBin(binx,biny,binz);
7990 if (value < minimum) {
8032 Int_t bin, binx, biny, binz;
8042 for (binz=zfirst;binz<=zlast;binz++) {
8043 for (biny=yfirst;biny<=ylast;biny++) {
8044 for (binx=xfirst;binx<=xlast;binx++) {
8045 bin =
GetBin(binx,biny,binz);
8047 if (value < min) min = value;
8048 if (value > max) max = value;
8066 Error(
"SetBins",
"Operation only valid for 1-d histograms");
8093 Error(
"SetBins",
"Operation only valid for 1-d histograms");
8119 Error(
"SetBins",
"Operation only valid for 2-D histograms");
8147 Error(
"SetBins",
"Operation only valid for 2-D histograms");
8174 Error(
"SetBins",
"Operation only valid for 3-D histograms");
8183 fNcells = (nx+2)*(ny+2)*(nz+2);
8204 Error(
"SetBins",
"Operation only valid for 3-D histograms");
8213 fNcells = (nx+2)*(ny+2)*(nz+2);
8325 Warning(
"Sumw2",
"Sum of squares of weights structure already created");
8360 if (bin < 0) bin = 0;
8380 if (bin < 0) bin = 0;
8390 Warning(
"GetBinErrorLow",
"Histogram has negative bin content-force usage to normal errors");
8395 if (n == 0)
return 0;
8410 if (bin < 0) bin = 0;
8420 Warning(
"GetBinErrorUp",
"Histogram has negative bin content-force usage to normal errors");
8439 Error(
"GetBinCenter",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8450 Error(
"GetBinLowEdge",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8461 Error(
"GetBinWidth",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8488 Error(
"GetLowEdge",
"Invalid method for a %d-d histogram ",
fDimension);
8503 if (bin < 0 || bin>=
fSumw2.
fN)
return;
8520 if (bin < 0)
return;
8584 return (
TH1*)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticBackground((TH1*)0x%lx,%d,\"%s\")",
8585 (
ULong_t)
this, niter, option));
8598 return (
Int_t)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticSearch((TH1*)0x%lx,%g,\"%s\",%g)",
8599 (
ULong_t)
this, sigma, option, threshold));
8616 if (!fft || !fft->
GetN() ) {
8617 ::Error(
"TransformHisto",
"Invalid FFT transform class");
8622 ::Error(
"TransformHisto",
"Only 1d and 2D transform are supported");
8636 hout =
new TH1D(name, name,n[0], 0, n[0]);
8638 hout =
new TH2D(name, name, n[0], 0, n[0], n[1], 0, n[1]);
8646 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8647 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8648 ind[0] = binx-1; ind[1] = biny-1;
8654 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8655 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8656 ind[0] = binx-1; ind[1] = biny-1;
8665 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8666 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8667 ind[0] = binx-1; ind[1] = biny-1;
8673 ::Error(
"TransformHisto",
"No complex numbers in the output");
8680 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8681 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8682 ind[0] = binx-1; ind[1] = biny-1;
8688 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8689 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8690 ind[0] = binx-1; ind[1] = biny-1;
8699 for (binx = 1; binx<=hout->
GetNbinsX(); binx++){
8700 for (biny=1; biny<=hout->
GetNbinsY(); biny++){
8701 ind[0] = binx-1; ind[1] = biny-1;
8722 printf(
"Pure real output, no phase");
8753 std::ostringstream strm;
8780 :
TH1(name,title,nbins,xlow,xup)
8794 :
TH1(name,title,nbins,xbins)
8806 :
TH1(name,title,nbins,xbins)
8842 if (newval > -128 && newval < 128) {
fArray[bin] =
Char_t(newval);
return;}
8843 if (newval < -127)
fArray[bin] = -127;
8844 if (newval > 127)
fArray[bin] = 127;
8880 if (
this != &h1) ((
TH1C&)h1).
Copy(*
this);
8961 :
TH1(name,title,nbins,xlow,xup)
8975 :
TH1(name,title,nbins,xbins)
8987 :
TH1(name,title,nbins,xbins)
9023 if (newval > -32768 && newval < 32768) {
fArray[bin] =
Short_t(newval);
return;}
9024 if (newval < -32767)
fArray[bin] = -32767;
9025 if (newval > 32767)
fArray[bin] = 32767;
9061 if (
this != &h1) ((
TH1S&)h1).
Copy(*
this);
9142 :
TH1(name,title,nbins,xlow,xup)
9156 :
TH1(name,title,nbins,xbins)
9168 :
TH1(name,title,nbins,xbins)
9204 if (newval > -2147483647 && newval < 2147483647) {
fArray[bin] =
Int_t(newval);
return;}
9205 if (newval < -2147483647)
fArray[bin] = -2147483647;
9206 if (newval > 2147483647)
fArray[bin] = 2147483647;
9242 if (
this != &h1) ((
TH1I&)h1).
Copy(*
this);
9324 :
TH1(name,title,nbins,xlow,xup)
9338 :
TH1(name,title,nbins,xbins)
9350 :
TH1(name,title,nbins,xbins)
9362 :
TH1(
"TVectorF",
"",v.GetNrows(),0,v.GetNrows())
9422 if (
this != &h1) ((
TH1F&)h1).
Copy(*
this);
9503 :
TH1(name,title,nbins,xlow,xup)
9517 :
TH1(name,title,nbins,xbins)
9529 :
TH1(name,title,nbins,xbins)
9541 :
TH1(
"TVectorD",
"",v.GetNrows(),0,v.GetNrows())
9601 if (
this != &h1) ((
TH1D&)h1).
Copy(*
this);
9668 if(hid >= 0) hname.
Form(
"h%d",hid);
9669 else hname.
Form(
"h_%d",hid);
static void StatOverflows(Bool_t flag=kTRUE)
if flag=kTRUE, underflows and overflows are used by the Fill functions in the computation of statisti...
Abstract array base class.
virtual void Browse(TBrowser *b)
Browse the Histogram object.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
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 void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual void Print(Option_t *option="") const
Print some global quantities for this histogram.
virtual void SetNameTitle(const char *name, const char *title)
Change the name and title of this histogram.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual UInt_t GetUniqueID() const
Return the unique object id.
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
Double_t fNormFactor
Normalization factor.
virtual void SetBarOffset(Float_t offset=0.25)
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual Int_t ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05)
Interface to TSpectrum::Search.
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
TH1D & operator=(const TH1D &h1)
Operator =.
virtual Double_t IntegralAndError(Int_t binx1, Int_t binx2, Double_t &err, Option_t *option="") const
Return integral of bin contents in range [binx1,binx2] and its error.
void SetBarWidth(Float_t barwidth=0.5)
static long int sum(long int i)
virtual void SaveAttributes(std::ostream &out, const char *name, const char *subname)
Save axis attributes as C++ statement(s) on output stream out.
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.
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
const char * GetBinLabel(Int_t bin) const
Return label for bin.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
virtual Double_t PoissonD(Double_t mean)
Generates a random number according to a Poisson law.
Bool_t IsBinUnderflow(Int_t bin, Int_t axis=0) const
Return true if the bin is underflow.
Double_t Floor(Double_t x)
void Set(Int_t n)
Set size of this array to n chars.
virtual ~TH1I()
Destructor.
Int_t GetFirst() const
Return first bin on the axis i.e.
virtual Int_t AutoP2FindLimits(Double_t min, Double_t max)
Buffer-based estimate of the histogram range using the power of 2 algorithm.
virtual void SetMaximum(Double_t maximum=-1111)
double Chisquare(const TH1 &h1, TF1 &f1, bool useRange, bool usePL=false)
compute the chi2 value for an histogram given a function (see TH1::Chisquare for the documentation) ...
void UseCurrentStyle()
Copy current attributes from/to current style.
void Copy(TArrayI &array) const
virtual void LabelsOption(Option_t *option="h", Option_t *axis="X")
Set option(s) to draw axis with labels.
virtual void SetLimits(Double_t xmin, Double_t xmax)
Short_t fBarWidth
(1000*width) for bar charts or legos
Bool_t IsBinOverflow(Int_t bin, Int_t axis=0) const
Return true if the bin is overflow.
static Bool_t fgDefaultSumw2
!flag to call TH1::Sumw2 automatically at histogram creation time
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)=0
Computes distance from point (px,py) to the object.
TVirtualHistPainter * GetPainter(Option_t *option="")
Return pointer to painter.
virtual void FitPanel()
Display a panel with all histogram fit options.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
virtual TF1 * GetFunction(const char *name) const
Return pointer to function with name.
virtual Float_t GetLabelOffset() const
virtual Float_t GetBarOffset() const
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Double_t KolmogorovProb(Double_t z)
virtual void Set(Int_t n)=0
virtual void ResetAttAxis(Option_t *option="")
Reset axis attributes.
Double_t QuietNaN()
Returns a quiet NaN as defined by IEEE 754
virtual void SetError(const Double_t *error)
Replace bin errors by values in array error.
image html pict1_TGaxis_012 png width
Define new text attributes for the label number "labNum".
virtual Double_t GetNormFactor() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TAxis fYaxis
Y axis descriptor.
virtual Int_t BufferFill(Double_t x, Double_t w)
accumulate arguments in buffer.
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
R__EXTERN TStyle * gStyle
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
void SetHistLineWidth(Width_t width=1)
const Double_t * GetArray() const
Bool_t GetStatOverflowsBehaviour() const
TList * fFunctions
->Pointer to list of functions (fits and user)
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...
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
virtual Int_t GetXfirst() const
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual Color_t GetAxisColor() const
TH1 * GetAsymmetry(TH1 *h2, Double_t c2=1, Double_t dc2=0)
Return an histogram containing the asymmetry of this histogram with h2, where the asymmetry is define...
static Bool_t fgStatOverflows
!flag to use under/overflows in statistics
virtual TH1 * DrawNormalized(Option_t *option="", Double_t norm=1) const
Draw a normalized copy of this histogram.
static Bool_t SameLimitsAndNBins(const TAxis &axis1, const TAxis &axis2)
Same limits and bins.
virtual ~TH1F()
Destructor.
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels.
void Build()
Creates histogram basic data structure.
EStatOverflows fStatOverflows
per object flag to use under/overflows in statistics
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
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 Copy(TObject &hnew) const
Copy this to newth1.
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0)
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined...
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
void ToUpper()
Change string to upper case.
virtual void Reset(Option_t *option="")
Reset.
friend TH1D operator/(const TH1D &h1, const TH1D &h2)
Operator /.
static bool CheckAxisLimits(const TAxis *a1, const TAxis *a2)
Check that the axis limits of the histograms are the same.
Buffer base class used for serializing objects.
friend TH1S operator+(const TH1S &h1, const TH1S &h2)
Operator +.
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
virtual Int_t GetNbinsZ() const
virtual void SetMinimum(Double_t minimum=-1111)
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
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.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Copy(TObject &hnew) const
Copy this to newth1.
Int_t LoadPlugin()
Load the plugin library for this handler.
virtual void GetBinXYZ(Int_t binglobal, Int_t &binx, Int_t &biny, Int_t &binz) const
Return binx, biny, binz corresponding to the global bin number globalbin see TH1::GetBin function abo...
Option_t * GetOption() const
double gamma_quantile_c(double z, double alpha, double theta)
Inverse ( ) of the cumulative distribution function of the upper tail of the gamma distribution (gamm...
virtual void Copy(TObject &hnew) const
Copy this to newth1.
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
1-D histogram with a float per channel (see TH1 documentation)}
1-D histogram with a short per channel (see TH1 documentation)
void H1InitExpo()
Compute Initial values of parameters for an exponential.
Array of floats (32 bits per element).
static Double_t AutoP2GetPower2(Double_t x, Bool_t next=kTRUE)
Auxilliary function to get the power of 2 next (larger) or previous (smaller) a given x...
virtual void SetTitleFont(Style_t font=62)
Set the title font.
Short_t Min(Short_t a, Short_t b)
void ToLower()
Change string to lower-case.
void SetBarOffset(Float_t baroff=0.5)
R__EXTERN TVirtualMutex * gROOTMutex
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker.
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void Smooth(Int_t ntimes=1, Option_t *option="")
Smooth bin contents of this histogram.
TArrayD fSumw2
Array of sum of squares of weights.
user specified contour levels
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual void Copy(TObject &axis) const
Copy axis structure to another axis.
void Copy(TArrayC &array) const
virtual Float_t GetLabelSize() const
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
static Bool_t AlmostInteger(Double_t a, Double_t epsilon=0.00000001)
Test if a double is almost an integer.
virtual void Copy(TObject &hnew) const
Copy this to newth1.
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral.
virtual Int_t FindGoodLimits(TH1 *h, Double_t xmin, Double_t xmax)
Compute the best axis limits for the X axis.
static Bool_t RecomputeAxisLimits(TAxis &destAxis, const TAxis &anAxis)
Finds new limits for the axis for the Merge function.
TAxis fZaxis
Z axis descriptor.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
virtual Double_t GetContourLevel(Int_t level) const
Return value of contour number level.
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 Width_t GetLineWidth() const
Return the line width.
friend TH1D operator+(const TH1D &h1, const TH1D &h2)
Operator +.
Double_t Prob(Double_t chi2, Int_t ndf)
static bool CheckBinLimits(const TAxis *a1, const TAxis *a2)
Check bin limits.
Array of integers (32 bits per element).
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
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 void GetStats(Double_t *stats) const
fill the array stats from the contents of this histogram The array stats must be correctly dimensione...
virtual Bool_t CanExtendAllAxes() const
Returns true if all axes are extendable.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
friend TH1S operator-(const TH1S &h1, const TH1S &h2)
Operator -.
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
Width_t GetHistLineWidth() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
if object in a list can be deleted
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual void SetBarWidth(Float_t width=0.5)
virtual void SetLabelFont(Style_t font=62)
Set labels' font.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
static TVirtualHistPainter * HistPainter(TH1 *obj)
Static function returning a pointer to the current histogram painter.
virtual void SetPoint(Int_t ipoint, Double_t re, Double_t im=0)=0
virtual Style_t GetMarkerStyle() const
Return the marker style.
TDirectory * fDirectory
!Pointer to directory holding this histogram
static void SetDefaultSumw2(Bool_t sumw2=kTRUE)
When this static function is called with sumw2=kTRUE, all new histograms will automatically activate ...
virtual Style_t GetTitleFont() const
static bool CheckConsistentSubAxes(const TAxis *a1, Int_t firstBin1, Int_t lastBin1, const TAxis *a2, Int_t firstBin2=0, Int_t lastBin2=0)
Check that two sub axis are the same.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Int_t GetDimension() const
virtual Double_t Interpolate(Double_t x)
Given a point x, approximates the value via linear interpolation based on the two nearest bin centers...
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
TH1C & operator=(const TH1C &h1)
Operator =.
virtual void Paint(Option_t *option="")=0
This method must be overridden if a class wants to paint itself.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Fill Area Attributes class.
static Int_t FitOptionsMake(Option_t *option, Foption_t &Foption)
Decode string choptin and fill fitOption structure.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
virtual void Eval(TF1 *f1, Option_t *option="")
Evaluate function f1 at the center of bins of this histogram.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
static Bool_t GetDefaultSumw2()
Return kTRUE if TH1::Sumw2 must be called when creating new histograms.
void SetHistFillColor(Color_t color=1)
virtual Bool_t GetTimeDisplay() const
static void SetDefaultBufferSize(Int_t buffersize=1000)
Static function to set the default buffer size for automatic histograms.
Use Power(2)-based algorithm for autobinning.
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
virtual Double_t Chi2Test(const TH1 *h2, Option_t *option="UU", Double_t *res=0) const
test for comparing weighted and unweighted histograms
The TNamed class is the base class for all named ROOT classes.
virtual ~TH1()
Histogram default destructor.
THashList * GetLabels() const
friend TH1D operator-(const TH1D &h1, const TH1D &h2)
Operator -.
Double_t Log10(Double_t x)
virtual void SetContourLevel(Int_t level, Double_t value)
Set value for one contour level.
#define R__WRITE_LOCKGUARD(mutex)
virtual void GetCenter(Double_t *center) const
Return an array with the center of all bins.
Abstract interface to a histogram painter.
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Style_t GetHistFillStyle() const
TString & Append(const char *cs)
virtual void GetLowEdge(Double_t *edge) const
Return an array with the lod edge of all bins.
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
Sort the n elements of the array a of generic templated type Element.
void H1InitGaus()
Compute Initial values of parameters for a gaussian.
virtual Size_t GetMarkerSize() const
Return the marker size.
R__EXTERN TVirtualRWMutex * gCoreMutex
virtual bool UseRWLock()
Set this collection to use a RW lock upon access, making it thread safe.
virtual void DrawPanel()=0
errors from Poisson interval at 95% CL (~ 2 sigma)
TString fOption
histogram options
friend TH1I operator-(const TH1I &h1, const TH1I &h2)
Operator -.
virtual void SaveMarkerAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1)
Save line attributes as C++ statement(s) on output stream out.
virtual Int_t * GetN() const =0
Float_t GetBarWidth() const
virtual Bool_t FindNewAxisLimits(const TAxis *axis, const Double_t point, Double_t &newMin, Double_t &newMax)
finds new limits for the axis so that point is within the range and the limits are compatible with th...
virtual void SetContent(const Double_t *content)
Replace bin contents by the contents of array content.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
friend TH1C operator*(Double_t c1, const TH1C &h1)
Operator *.
virtual void ResetStats()
Reset the statistics including the number of entries and replace with values calculates from bin cont...
void Set(Int_t n)
Set size of this array to n ints.
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.
TArrayD fContour
Array to display contour levels.
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...
Int_t AxisChoice(Option_t *axis) const
Choose an axis according to "axis".
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 void LabelsInflate(Option_t *axis="X")
Double the number of bins for axis.
virtual Color_t GetLabelColor() const
object has not been deleted
virtual Double_t GetSkewness(Int_t axis=1) const
virtual void SetTimeDisplay(Int_t value)
Double_t fTsumwx
Total Sum of weight*X.
void H1LeastSquareFit(Int_t n, Int_t m, Double_t *a)
Least squares lpolynomial fitting without weights.
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
static Int_t AutoP2GetBins(Int_t n)
Auxilliary function to get the next power of 2 integer value larger then n.
static Bool_t fgAddDirectory
!flag to add histograms to the directory
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
void Set(Int_t n)
Set size of this array to n shorts.
virtual void GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
virtual Double_t Rndm()
Machine independent random number generator.
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
Double_t fMinimum
Minimum value for plotting.
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...
Bool_t AreEqualAbs(Double_t af, Double_t bf, Double_t epsilon)
virtual void ExtendAxis(Double_t x, TAxis *axis)
Histogram is resized along axis such that x is in the axis range.
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
TH1 * GetCumulative(Bool_t forward=kTRUE, const char *suffix="_cumulative") const
Return a pointer to an histogram containing the cumulative The cumulative can be computed both in the...
virtual TH1 * FFT(TH1 *h_output, Option_t *option)
This function allows to do discrete Fourier transforms of TH1 and TH2.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a line.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
friend TH1S operator/(const TH1S &h1, const TH1S &h2)
Operator /.
Using a TBrowser one can browse all ROOT objects.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual Double_t * GetIntegral()
Return a pointer to the array of bins integral.
NOTE: Must always be 0 !!!
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
void Clear(Option_t *option="")
Remove all objects from the list.
std::string printValue(const TDatime *val)
Print a TDatime at the prompt.
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
Set limits for parameter ipar.
friend TH1C operator-(const TH1C &h1, const TH1C &h2)
Operator -.
void Copy(TArrayF &array) const
friend TH1C operator+(const TH1C &h1, const TH1C &h2)
Operator +.
void FillData(BinData &dv, const TH1 *hist, TF1 *func=0)
fill the data vector from a TH1.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual void FillRandom(const char *fname, Int_t ntimes=5000)
Fill histogram following distribution in function fname.
void SetHistFillStyle(Style_t styl=0)
Int_t GetLast() const
Return last bin on the axis i.e.
static void SmoothArray(Int_t NN, Double_t *XX, Int_t ntimes=1)
Smooth array xx, translation of Hbook routine hsmoof.F based on algorithm 353QH twice presented by J...
Class to manage histogram axis.
virtual Double_t GetKurtosis(Int_t axis=1) const
virtual void Draw(Option_t *option="")
Draw this histogram with options.
static bool CheckBinLabels(const TAxis *a1, const TAxis *a2)
Check that axis have same labels.
Array of shorts (16 bits per element).
virtual Double_t GetPointReal(Int_t ipoint, Bool_t fromInput=kFALSE) const =0
if object ctor succeeded but object should not be used
TH1 * R__H(Int_t hid)
return pointer to histogram with name hid if id >=0 h_id if id <0
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
A 3-Dim function with parameters.
virtual Double_t GetBinWithContent(Double_t c, Int_t &binx, Int_t firstx=0, Int_t lastx=0, Double_t maxdiff=0) const
Compute first binx in the range [firstx,lastx] for which diff = abs(bin_content-c) <= maxdiff...
friend TH1I operator+(const TH1I &h1, const TH1I &h2)
Operator +.
void SetCanExtend(Bool_t canExtend)
1-D histogram with an int per channel (see TH1 documentation)}
Long_t ExecPlugin(int nargs, const T &... params)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)=0
Execute action corresponding to an event at (px,py).
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
static TH1 * TransformHisto(TVirtualFFT *fft, TH1 *h_output, Option_t *option)
For a given transform (first parameter), fills the histogram (second parameter) with the transform ou...
static TVirtualFFT * FFT(Int_t ndim, Int_t *n, Option_t *option)
Returns a pointer to the FFT of requested size and type.
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...
Collection abstract base class.
static Int_t fgBufferSize
!default buffer size for automatic histograms
virtual TH1 * Rebin(Int_t ngroup=2, const char *newname="", const Double_t *xbins=0)
Rebin this histogram.
virtual Double_t AndersonDarlingTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using the Anderson-Darling ...
virtual Bool_t Multiply(TF1 *f1, Double_t c1=1)
Performs the operation:
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Double_t fEntries
Number of entries.
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
virtual Float_t GetTitleOffset() const
virtual void LabelsDeflate(Option_t *axis="X")
Reduce the number of bins for the axis passed in the option to the number of bins having a label...
virtual void DoFillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1)
Internal method to fill histogram content from a vector called directly by TH1::BufferEmpty.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
char * Form(const char *fmt,...)
virtual void Transform()=0
virtual Double_t Chisquare(TF1 *f1, Option_t *option="") const
Compute and return the chisquare of this histogram with respect to a function The chisquare is comput...
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
static TVirtualFitter * GetFitter()
static: return the current Fitter
virtual void Copy(TObject &hnew) const
Copy this histogram structure to newth1.
virtual TH1 * ShowBackground(Int_t niter=20, Option_t *option="same")
This function calculates the background spectrum in this histogram.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual ~TH1C()
Destructor.
static void RejectPoint(Bool_t reject=kTRUE)
Static function to set the global flag to reject points the fgRejectPoint global flag is tested by al...
virtual void Copy(TObject &hnew) const
Copy this to newth1.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual Color_t GetTitleColor() const
Double_t * fIntegral
!Integral of bins used by GetRandom
virtual void SetBinErrorOption(EBinErrorOpt type)
friend TH1F operator*(Double_t c1, const TH1F &h1)
Operator *.
static bool CheckConsistency(const TH1 *h1, const TH1 *h2)
Check histogram compatibility.
A 2-Dim function with parameters.
void H1LeastSquareSeqnd(Int_t n, Double_t *a, Int_t idim, Int_t &ifail, Int_t k, Double_t *b)
Extracted from CERN Program library routine DSEQN.
TH1()
Histogram default constructor.
R__EXTERN TRandom * gRandom
1-D histogram with a double per channel (see TH1 documentation)}
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.
static Int_t GetDefaultBufferSize()
Static function return the default buffer size for automatic histograms the parameter fgBufferSize ma...
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
Set color of the line axis and tick marks.
virtual TObject * FindObject(const char *name) const
Search object named name in the list of functions.
virtual void Rebuild(Option_t *option="")
Using the current bin info, recompute the arrays for contents and errors.
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 ...
if object destructor must call RecursiveRemove()
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 SetMarkerSize(Size_t msize=1)
Set the marker size.
friend TH1I operator/(const TH1I &h1, const TH1I &h2)
Operator /.
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
constexpr Double_t E()
Base of natural log: .
virtual TObjLink * FirstLink() const
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 RecursiveRemove(TObject *obj)
Recursively remove object from the list of functions.
EBinErrorOpt fBinStatErrOpt
option for bin statistical errors
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 Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
TVirtualFFT is an interface class for Fast Fourier Transforms.
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 TH1I operator*(Double_t c1, const TH1I &h1)
Operator *.
static TVirtualFFT * SineCosine(Int_t ndim, Int_t *n, Int_t *r2rkind, Option_t *option)
Returns a pointer to a sine or cosine transform of requested size and kind.
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 fTsumw2
Total Sum of squares of weights.
Color_t GetHistFillColor() const
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
virtual void GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const =0
Bin contents are average (used by Add)
virtual Bool_t IsEmpty() const
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
static const double x1[5]
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
class describing the range in the coordinates it supports multiple range in a coordinate.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
friend TH1F operator+(const TH1F &h1, const TH1F &h2)
Operator +.
void SetHistLineStyle(Style_t styl=0)
virtual void SavePrimitiveHelp(std::ostream &out, const char *hname, Option_t *option="")
Helper function for the SavePrimitive functions from TH1 or classes derived from TH1, eg TProfile, TProfile2D.
Double_t fTsumw
Total Sum of weights.
Color_t GetHistLineColor() const
friend TH1D operator*(Double_t c1, const TH1D &h1)
Operator *.
Describe directory structure in memory.
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
Double_t Median(Long64_t n, const T *a, const Double_t *w=0, Long64_t *work=0)
Return the median of the array a where each entry i has weight w[i] .
virtual Color_t GetFillColor() const
Return the fill area color.
TH1I & operator=(const TH1I &h1)
Operator =.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static constexpr double s
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
virtual Double_t GetEntries() const
Return the current number of entries.
friend TH1F operator/(const TH1F &h1, const TH1F &h2)
Operator /.
#define R__LOCKGUARD(mutex)
void forward(const LAYERDATA &prevLayerData, LAYERDATA &currLayerData)
apply the weights (and functions) in forward direction of the DNN
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual Float_t GetTitleSize() const
virtual Double_t Chi2TestX(const TH1 *h2, Double_t &chi2, Int_t &ndf, Int_t &igood, Option_t *option="UU", Double_t *res=0) const
The computation routine of the Chisquare test.
static bool IsEquidistantBinning(const TAxis &axis)
Test if the binning is equidistant.
Short_t fBarOffset
(1000*offset) for bar charts or legos
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Array of doubles (64 bits per element).
void FitOptionsMake(EFitObjectType type, const char *option, Foption_t &fitOption)
Decode list of options into fitOption.
virtual void InitArgs(const Double_t *x, const Double_t *params)
Initialize parameters addresses.
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.
Abstract Base Class for Fitting.
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
virtual Int_t FindFixBin(Double_t x, Double_t y=0, Double_t z=0) const
Return Global bin number corresponding to x,y,z.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
you should not use this method at all Int_t Int_t z
virtual void ClearUnderflowAndOverflow()
Remove all the content from the underflow and overflow bins, without changing the number of entries A...
virtual Bool_t IsInside(const Double_t *x) const
return kTRUE if the point is inside the function range
TObject * GetObject() const
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Redefines TObject::GetObjectInfo.
TH1S & operator=(const TH1S &h1)
Operator =.
virtual Int_t GetNpar() const
Style_t GetHistLineStyle() const
Double_t fMaximum
Maximum value for plotting.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual void DirectoryAutoAdd(TDirectory *)
Perform the automatic addition of the histogram to the given directory.
TVirtualHistPainter * fPainter
!pointer to histogram painter
virtual void Copy(TObject &named) const
Copy this to obj.
friend TH1C operator/(const TH1C &h1, const TH1C &h2)
Operator /.
friend TH1S operator*(Double_t c1, const TH1S &h1)
Operator *.
static Bool_t RejectedPoint()
See TF1::RejectPoint above.
virtual void DrawPanel()
Display a panel with all histogram drawing options.
virtual void Add(TObject *obj)
Int_t fBufferSize
fBuffer size
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
virtual Double_t GetBinErrorSqUnchecked(Int_t bin) const
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
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...
virtual void FillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1)
Fill this histogram with an array x and weights w.
Short_t Max(Short_t a, Short_t b)
virtual void SetBinsLength(Int_t=-1)
1-D histogram with a byte per channel (see TH1 documentation)
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.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Double_t GetAt(Int_t i) const
Double_t Ceil(Double_t x)
friend TH1F operator-(const TH1F &h1, const TH1F &h2)
Operator -.
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
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 Int_t GetXlast() const
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual void SetParent(TObject *obj)
void Set(Int_t n)
Set size of this array to n floats.
virtual ~TH1D()
Destructor.
virtual void SetEntries(Double_t n)
TAxis fXaxis
X axis descriptor.
Float_t GetBarOffset() const
virtual TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function.
Bool_t IsEmpty() const
Check if an histogram is empty (this a protected method used mainly by TH1Merger ) ...
virtual void SetParameter(Int_t param, Double_t value)
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
TFitResultPtr FitObject(TH1 *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
fitting function for a TH1 (called from TH1::Fit)
virtual Int_t GetNdim() const =0
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Int_t GetNbinsX() const
Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual Int_t Poisson(Double_t mean)
Generates a random integer N according to a Poisson law.
virtual Style_t GetFillStyle() const
Return the fill area style.
Double_t Sqrt(Double_t x)
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
Bool_t GetCanvasPreferGL() const
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
static Bool_t AlmostEqual(Double_t a, Double_t b, Double_t epsilon=0.00000001)
Test if two double are almost equal.
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.
TList * GetListOfFunctions() const
void SetHistLineColor(Color_t color=1)
virtual TObject * GetUserFunc() const
virtual TObject * GetObjectFit() const
Double_t * fBuffer
[fBufferSize] entry buffer
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
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.
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract...
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.
virtual Double_t GetRandom() const
Return a random number distributed according the histogram bin contents.
static bool CheckEqualAxes(const TAxis *a1, const TAxis *a2)
Check that the axis are the same.
double gamma_quantile(double z, double alpha, double theta)
Inverse ( ) of the cumulative distribution function of the lower tail of the gamma distribution (gamm...
virtual ~TH1S()
Destructor.
void Copy(TArrayD &array) const
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
virtual void GetCenter(Double_t *center) const
Fill array with center of bins for 1D histogram Better to use h1.GetXaxis().GetCenter(center) ...
void H1InitPolynom()
Compute Initial values of parameters for a polynom.
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
TH1F & operator=(const TH1F &h1)
Operator =.
virtual Float_t GetBarWidth() 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 GetLowEdge(Double_t *edge) const
Fill array with low edge of bins for 1D histogram Better to use h1.GetXaxis().GetLowEdge(edge) ...
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 void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
virtual Style_t GetLabelFont() const
void Copy(TArrayS &array) const
virtual Long64_t Merge(TCollection *list)
Add all histograms in the collection to this histogram.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
double ldexp(double, int)
virtual const char * GetTitle() const
Returns title of object.
virtual Int_t GetNbinsY() const
virtual Option_t * GetType() const =0
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t ReadArray(Bool_t *&b)=0
Int_t fNcells
number of bins(1D), cells (2D) +U/Overflows
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
void AndersonDarling2SamplesTest(Double_t &pvalue, Double_t &testStat) const
T MinElement(Long64_t n, const T *a)
Return minimum of array a of length n.
void H1LeastSquareLinearFit(Int_t ndata, Double_t &a0, Double_t &a1, Int_t &ifail)
Least square linear fit without weights.
const char * Data() const
Array of chars or bytes (8 bits per element).
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".