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 {};
642 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
664 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
686 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
714 Draw(
b ?
b->GetDrawOption() :
"");
778 Error(
"Add",
"Attempt to add a non-existing function");
798 for (
Int_t i = 0; i < 10; ++i) s1[i] = 0;
804 Int_t bin, binx, biny, binz;
809 for (binz = 0; binz < ncellsz; ++binz) {
811 for (biny = 0; biny < ncellsy; ++biny) {
813 for (binx = 0; binx < ncellsx; ++binx) {
817 bin = binx + ncellsx * (biny + ncellsy * binz);
863 Error(
"Add",
"Attempt to add a non-existing histogram");
874 }
catch(DifferentNumberOfBins&) {
876 Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
878 Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 = %d",
GetNbinsX(),
h1->
GetNbinsX());
881 }
catch(DifferentAxisLimits&) {
883 Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
885 Warning(
"Add",
"Attempt to add histograms with different axis limits");
886 }
catch(DifferentBinLimits&) {
888 Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
890 Warning(
"Add",
"Attempt to add histograms with different bin limits");
891 }
catch(DifferentLabels&) {
894 Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
896 Info(
"Warning",
"Attempt to add histograms with different labels");
901 l.Add(const_cast<TH1*>(
h1));
944 if (e1sq) w1 = 1. / e1sq;
949 double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
953 if (e2sq) w2 = 1. / e2sq;
958 double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
963 double y = (w1*y1 + w2*y2)/(w1 + w2);
966 double err2 = 1./(w1 + w2);
967 if (err2 < 1.
E-200) err2 = 0;
983 if (i == 1) s1[i] +=
c1*
c1*s2[i];
984 else s1[i] +=
c1*s2[i];
1025 Error(
"Add",
"Attempt to add a non-existing histogram");
1033 if (
h1 == h2 &&
c2 < 0) {
c2 = 0; normWidth =
kTRUE;}
1042 }
catch(DifferentNumberOfBins&) {
1044 Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
1046 Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 = %d",
GetNbinsX(),
h1->
GetNbinsX());
1049 }
catch(DifferentAxisLimits&) {
1051 Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
1053 Warning(
"Add",
"Attempt to add histograms with different axis limits");
1054 }
catch(DifferentBinLimits&) {
1056 Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
1058 Warning(
"Add",
"Attempt to add histograms with different bin limits");
1059 }
catch(DifferentLabels&) {
1062 Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
1064 Info(
"Warning",
"Attempt to add histograms with different labels");
1070 l.Add(const_cast<TH1*>(
h1));
1071 l.Add(const_cast<TH1*>(h2));
1093 Bool_t resetStats = (
c1*
c2 < 0) || normWidth;
1100 if (i == 1) s3[i] =
c1*
c1*s1[i] +
c2*
c2*s2[i];
1102 else s3[i] =
c1*s1[i] +
c2*s2[i];
1118 Int_t bin, binx, biny, binz;
1119 for (binz = 0; binz < nbinsz; ++binz) {
1121 for (biny = 0; biny < nbinsy; ++biny) {
1123 for (binx = 0; binx < nbinsx; ++binx) {
1125 bin =
GetBin(binx, biny, binz);
1146 if (e1sq) w1 = 1./ e1sq;
1150 double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
1154 if (e2sq) w2 = 1./ e2sq;
1158 double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
1163 double y = (w1*y1 + w2*y2)/(w1 + w2);
1166 double err2 = 1./(w1 + w2);
1167 if (err2 < 1.
E-200) err2 = 0;
1241 return ((next &&
x > 0.) || (!next &&
x <= 0.)) ?
std::ldexp(std::copysign(1., f2), nn)
1296 Double_t rr = (xhma - xhmi) / (xma - xmi);
1306 Int_t nbup = (xhma - xma) / bw;
1309 if (nbup != nbside) {
1311 xhma -= bw * (nbup - nbside);
1312 nb -= (nbup - nbside);
1316 Int_t nblw = (xmi - xhmi) / bw;
1319 if (nblw != nbside) {
1321 xhmi += bw * (nblw - nbside);
1322 nb -= (nblw - nbside);
1352 if (nbentries == 0) {
1362 if (nbentries < 0 && action == 0)
return 0;
1365 if (nbentries < 0) {
1366 nbentries = -nbentries;
1378 for (
Int_t i=1;i<nbentries;i++) {
1388 "incosistency found by power-of-2 autobin algorithm: fallback to standard method");
1406 DoFillN(nbentries,&buffer[2],&buffer[1],2);
1440 if (nbentries < 0) {
1443 nbentries = -nbentries;
1475 if ( h2Array->
fN != fN ) {
1476 throw DifferentBinLimits();
1480 for (
int i = 0; i < fN; ++i ) {
1482 throw DifferentBinLimits();
1503 throw DifferentLabels();
1508 throw DifferentLabels();
1511 for (
int i = 1; i <= a1->
GetNbins(); ++i) {
1514 if (label1 != label2) {
1515 throw DifferentLabels();
1531 throw DifferentAxisLimits();
1544 ::Info(
"CheckEqualAxes",
"Axes have different number of bins : nbin1 = %d nbin2 = %d",a1->
GetNbins(),a2->
GetNbins() );
1549 }
catch (DifferentAxisLimits&) {
1550 ::Info(
"CheckEqualAxes",
"Axes have different limits");
1555 }
catch (DifferentBinLimits&) {
1556 ::Info(
"CheckEqualAxes",
"Axes have different bin limits");
1563 }
catch (DifferentLabels&) {
1564 ::Info(
"CheckEqualAxes",
"Axes have different labels");
1579 Int_t nbins1 = lastBin1-firstBin1 + 1;
1587 if (firstBin2 < lastBin2) {
1589 nbins2 = lastBin1-firstBin1 + 1;
1594 if (nbins1 != nbins2 ) {
1595 ::Info(
"CheckConsistentSubAxes",
"Axes have different number of bins");
1601 ::Info(
"CheckConsistentSubAxes",
"Axes have different limits");
1613 if (
h1 == h2)
return true;
1616 throw DifferentDimension();
1628 (dim > 1 && nbinsy != h2->
GetNbinsY()) ||
1629 (dim > 2 && nbinsz != h2->
GetNbinsZ()) ) {
1630 throw DifferentNumberOfBins();
1946 Int_t ndf = 0, igood = 0;
1954 printf(
"Chi2 = %f, Prob = %g, NDF = %d, igood = %d\n", chi2,prob,ndf,igood);
1957 if (ndf == 0)
return 0;
2005 Int_t i_start, i_end;
2006 Int_t j_start, j_end;
2007 Int_t k_start, k_end;
2036 Error(
"Chi2TestX",
"Histograms have different dimensions.");
2041 if (nbinx1 != nbinx2) {
2042 Error(
"Chi2TestX",
"different number of x channels");
2044 if (nbiny1 != nbiny2) {
2045 Error(
"Chi2TestX",
"different number of y channels");
2047 if (nbinz1 != nbinz2) {
2048 Error(
"Chi2TestX",
"different number of z channels");
2052 i_start = j_start = k_start = 1;
2083 ndf = (i_end - i_start + 1) * (j_end - j_start + 1) * (k_end - k_start + 1) - 1;
2090 if (scaledHistogram && !comparisonUU) {
2091 Info(
"Chi2TestX",
"NORM option should be used together with UU option. It is ignored");
2098 Double_t effEntries1 = (
s[1] ?
s[0] *
s[0] /
s[1] : 0.0);
2102 Double_t effEntries2 = (
s[1] ?
s[0] *
s[0] /
s[1] : 0.0);
2104 if (!comparisonUU && !comparisonUW && !comparisonWW ) {
2106 if (
TMath::Abs(sumBinContent1 - effEntries1) < 1) {
2107 if (
TMath::Abs(sumBinContent2 - effEntries2) < 1) comparisonUU =
true;
2108 else comparisonUW =
true;
2110 else comparisonWW =
true;
2114 if (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) {
2115 Warning(
"Chi2TestX",
"First histogram is not unweighted and option UW has been requested");
2118 if ( (!scaledHistogram && comparisonUU) ) {
2119 if ( (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) || (
TMath::Abs(sumBinContent2 - effEntries2) >= 1) ) {
2120 Warning(
"Chi2TestX",
"Both histograms are not unweighted and option UU has been requested");
2126 if (comparisonUU && scaledHistogram) {
2127 for (
Int_t i = i_start; i <= i_end; ++i) {
2128 for (
Int_t j = j_start; j <= j_end; ++j) {
2129 for (
Int_t k = k_start; k <= k_end; ++k) {
2138 if (e1sq > 0.0) cnt1 =
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5);
2141 if (e2sq > 0.0) cnt2 =
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5);
2152 if (sumw1 <= 0.0 || sumw2 <= 0.0) {
2153 Error(
"Chi2TestX",
"Cannot use option NORM when one histogram has all zero errors");
2158 for (
Int_t i = i_start; i <= i_end; ++i) {
2159 for (
Int_t j = j_start; j <= j_end; ++j) {
2160 for (
Int_t k = k_start; k <= k_end; ++k) {
2174 if (sum1 == 0.0 || sum2 == 0.0) {
2175 Error(
"Chi2TestX",
"one histogram is empty");
2179 if ( comparisonWW && ( sumw1 <= 0.0 && sumw2 <= 0.0 ) ){
2180 Error(
"Chi2TestX",
"Hist1 and Hist2 have both all zero errors\n");
2190 for (
Int_t i = i_start; i <= i_end; ++i) {
2191 for (
Int_t j = j_start; j <= j_end; ++j) {
2192 for (
Int_t k = k_start; k <= k_end; ++k) {
2199 if (scaledHistogram) {
2204 if (e1sq > 0) cnt1 =
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5);
2207 if (e2sq > 0) cnt2 =
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5);
2211 if (
Int_t(cnt1) == 0 &&
Int_t(cnt2) == 0) --ndf;
2218 if (res) res[i - i_start] = (cnt1 - nexp1) /
TMath::Sqrt(nexp1);
2227 Double_t delta = sum2 * cnt1 - sum1 * cnt2;
2228 chi2 += delta * delta / cntsum;
2233 chi2 /= sum1 * sum2;
2238 Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
2242 Info(
"Chi2TestX",
"There is a bin in h2 with less than 1 event.\n");
2253 if ( comparisonUW ) {
2254 for (
Int_t i = i_start; i <= i_end; ++i) {
2255 for (
Int_t j = j_start; j <= j_end; ++j) {
2256 for (
Int_t k = k_start; k <= k_end; ++k) {
2265 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
2271 if (cnt2 * cnt2 == 0 && e2sq == 0) {
2275 e2sq = sumw2 / sum2;
2280 Error(
"Chi2TestX",
"Hist2 has in bin (%d,%d,%d) zero content and zero errors\n", i, j, k);
2286 if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10)
n++;
2288 Double_t var1 = sum2 * cnt2 - sum1 * e2sq;
2289 Double_t var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2294 while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
2297 var1 = sum2 * cnt2 - sum1 * e2sq;
2298 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2302 while (var1 + var2 == 0) {
2305 var1 = sum2 * cnt2 - sum1 * e2sq;
2306 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2307 while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
2310 var1 = sum2 * cnt2 - sum1 * e2sq;
2311 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2316 Double_t probb = (var1 + var2) / (2. * sum2 * sum2);
2324 chi2 += delta1 * delta1 / nexp1;
2327 chi2 += delta2 * delta2 / e2sq;
2332 Double_t temp1 = sum2 * e2sq / var2;
2333 Double_t temp2 = 1.0 + (sum1 * e2sq - sum2 * cnt2) / var2;
2334 temp2 = temp1 * temp1 * sum1 * probb * (1.0 - probb) + temp2 * temp2 * e2sq / 4.0;
2347 Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
2351 Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
2361 for (
Int_t i = i_start; i <= i_end; ++i) {
2362 for (
Int_t j = j_start; j <= j_end; ++j) {
2363 for (
Int_t k = k_start; k <= k_end; ++k) {
2373 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
2378 if (e1sq == 0 && e2sq == 0) {
2380 Error(
"Chi2TestX",
"h1 and h2 both have bin %d,%d,%d with all zero errors\n", i,j,k);
2385 Double_t delta = sum2 * cnt1 - sum1 * cnt2;
2386 chi2 += delta * delta /
sigma;
2389 Double_t temp = cnt1 * sum1 * e2sq + cnt2 * sum2 * e1sq;
2402 res[i - i_start] =
z;
2405 if (e1sq > 0 && cnt1 * cnt1 / e1sq < 10)
m++;
2406 if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10)
n++;
2412 Info(
"Chi2TestX",
"There is a bin in h1 with less than 10 effective events.\n");
2416 Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
2433 Error(
"Chisquare",
"Function pointer is Null - return -1");
2479 Int_t nbins = nbinsx * nbinsy * nbinsz;
2484 for (
Int_t binz=1; binz <= nbinsz; ++binz) {
2485 for (
Int_t biny=1; biny <= nbinsy; ++biny) {
2486 for (
Int_t binx=1; binx <= nbinsx; ++binx) {
2489 if (onlyPositive &&
y < 0) {
2490 Error(
"ComputeIntegral",
"Bin content is negative - return a NaN value");
2501 Error(
"ComputeIntegral",
"Integral = zero");
return 0;
2544 hintegrated->
Reset();
2547 for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
2548 for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
2549 for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
2550 const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
2558 for (
Int_t binz = nbinsz; binz >= 1; --binz) {
2559 for (
Int_t biny = nbinsy; biny >= 1; --biny) {
2560 for (
Int_t binx = nbinsx; binx >= 1; --binx) {
2561 const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
2587 ((
TH1&)obj).fDirectory->Remove(&obj);
2588 ((
TH1&)obj).fDirectory = 0;
2602 delete [] ((
TH1&)obj).fBuffer;
2603 ((
TH1&)obj).fBuffer = 0;
2609 ((
TH1&)obj).fBuffer = buf;
2635 ((
TH1&)obj).fXaxis.SetParent(&obj);
2636 ((
TH1&)obj).fYaxis.SetParent(&obj);
2637 ((
TH1&)obj).fZaxis.SetParent(&obj);
2647 ((
TH1&)obj).fFunctions->UseRWLock();
2668 if(newname && strlen(newname) ) {
2723 Error(
"Add",
"Attempt to divide by a non-existing function");
2741 Int_t bin, binx, biny, binz;
2746 for (binz = 0; binz < nz; ++binz) {
2748 for (biny = 0; biny < ny; ++biny) {
2750 for (binx = 0; binx < nx; ++binx) {
2754 bin = binx + nx * (biny + ny * binz);
2791 Error(
"Divide",
"Input histogram passed does not exist (NULL).");
2800 }
catch(DifferentNumberOfBins&) {
2801 Error(
"Divide",
"Cannot divide histograms with different number of bins");
2803 }
catch(DifferentAxisLimits&) {
2804 Warning(
"Divide",
"Dividing histograms with different axis limits");
2805 }
catch(DifferentBinLimits&) {
2806 Warning(
"Divide",
"Dividing histograms with different bin limits");
2807 }
catch(DifferentLabels&) {
2808 Warning(
"Divide",
"Dividing histograms with different labels");
2863 Error(
"Divide",
"At least one of the input histograms passed does not exist (NULL).");
2873 }
catch(DifferentNumberOfBins&) {
2874 Error(
"Divide",
"Cannot divide histograms with different number of bins");
2876 }
catch(DifferentAxisLimits&) {
2877 Warning(
"Divide",
"Dividing histograms with different axis limits");
2878 }
catch(DifferentBinLimits&) {
2879 Warning(
"Divide",
"Dividing histograms with different bin limits");
2880 }
catch(DifferentLabels&) {
2881 Warning(
"Divide",
"Dividing histograms with different labels");
2886 Error(
"Divide",
"Coefficient of dividing histogram cannot be zero");
2923 fSumw2.
fArray[i] = c1sq * c2sq * (e1sq * b2sq + e2sq * b1sq) / (c2sq * c2sq * b2sq * b2sq);
2976 if (index>indb && index<indk) index = -1;
2982 if (!
gPad->IsEditable())
gROOT->MakeDefCanvas();
2984 if (
gPad->GetX1() == 0 &&
gPad->GetX2() == 1 &&
2985 gPad->GetY1() == 0 &&
gPad->GetY2() == 1 &&
2986 gPad->GetListOfPrimitives()->GetSize()==0) opt2.
Remove(index,4);
2993 gPad->IncrementPaletteColor(1, opt1);
2995 if (index>=0) opt2.
Remove(index,4);
3044 Error(
"DrawNormalized",
"Sum of weights is null. Cannot normalize histogram: %s",
GetName());
3056 if (opt.
IsNull() || opt ==
"SAME") opt +=
"HIST";
3091 Int_t range, stat, add;
3111 for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
3113 for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
3115 for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
3215 for (
Int_t binx = 1; binx<=ndim[0]; binx++) {
3216 for (
Int_t biny=1; biny<=ndim[1]; biny++) {
3217 for (
Int_t binz=1; binz<=ndim[2]; binz++) {
3247 if (bin <0)
return -1;
3280 if (bin <0)
return -1;
3313 if (bin <0)
return -1;
3349 for (i=0;i<ntimes;i+=stride) {
3355 if (i < ntimes &&
fBuffer==0) {
3356 auto weights = w ? &w[i] :
nullptr;
3357 DoFillN((ntimes-i)/stride,&
x[i],weights,stride);
3377 for (i=0;i<ntimes;i+=stride) {
3379 if (bin <0)
continue;
3384 if (bin == 0 || bin > nbins) {
3416 if (!
f1) {
Error(
"FillRandom",
"Unknown function: %s",fname);
return; }
3426 Info(
"FillRandom",
"Using function axis and range [%g,%g]",
xmin,
xmax);
3436 for (binx=1;binx<=nbinsx;binx++) {
3438 integral[binx] = integral[binx-1] + fint;
3442 if (integral[nbinsx] == 0 ) {
3444 Error(
"FillRandom",
"Integral = zero");
return;
3446 for (bin=1;bin<=nbinsx;bin++) integral[bin] /= integral[nbinsx];
3449 for (loop=0;loop<ntimes;loop++) {
3455 +xAxis->
GetBinWidth(ibin+
first)*(r1-integral[ibin])/(integral[ibin+1] - integral[ibin]);
3479 if (!
h) {
Error(
"FillRandom",
"Null histogram");
return; }
3481 Error(
"FillRandom",
"Histograms with different dimensions");
return;
3484 Error(
"FillRandom",
"Histograms contains negative bins, does not represent probabilities");
3493 if (ntimes > 10*nbins) {
3497 if (sumw == 0)
return;
3511 if (sumgen < ntimes) {
3513 for (i =
Int_t(sumgen+0.5); i < ntimes; ++i)
3519 else if (sumgen > ntimes) {
3521 i =
Int_t(sumgen+0.5);
3522 while( i > ntimes) {
3537 catch(std::exception&) {}
3544 for (loop=0;loop<ntimes;loop++) {
3570 return binx + nx*biny;
3578 return binx + nx*(biny +ny*binz);
3603 return binx + nx*biny;
3611 return binx + nx*(biny +ny*binz);
3625 Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
3629 for (
Int_t bin=1;bin<=nbins;bin++) {
3644 Warning(
"FindLastBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
3648 for (
Int_t bin=nbins;bin>=1;bin--) {
3687 linear= (
char*)strstr(fname,
"++");
3694 f1=
new TF1(fname, fname, xxmin, xxmax);
3695 return Fit(
f1,option,goption,xxmin,xxmax);
3698 f2=
new TF2(fname, fname);
3699 return Fit(f2,option,goption,xxmin,xxmax);
3702 f3=
new TF3(fname, fname);
3703 return Fit(f3,option,goption,xxmin,xxmax);
3709 if (!
f1) {
Printf(
"Unknown function: %s",fname);
return -1; }
3710 return Fit(
f1,option,goption,xxmin,xxmax);
4038 gROOT->MakeDefCanvas();
4041 Error(
"FitPanel",
"Unable to create a default canvas");
4048 if (handler && handler->
LoadPlugin() != -1) {
4050 Error(
"FitPanel",
"Unable to create the FitPanel");
4053 Error(
"FitPanel",
"Unable to find the FitPanel plug-in");
4098 asym->SetTitle(title);
4110 asym->Divide(top,bottom);
4114 Int_t zmax = asym->GetNbinsZ();
4124 for(
Int_t k=1; k<= zmax; k++){
4141 asym->SetBinError(i,j,k,error);
4213 return ((
TH1*)
this)->GetPainter()->GetObjectInfo(px,py);
4314 Error(
"GetQuantiles",
"Only available for 1-d histograms");
4324 Int_t nq = nprobSum;
4329 for (i=1;i<nq;i++) {
4334 for (i = 0; i < nq; i++) {
4336 while (ibin < nbins-1 &&
fIntegral[ibin+1] == prob[i]) {
4337 if (
fIntegral[ibin+2] == prob[i]) ibin++;
4345 if (!probSum)
delete [] prob;
4374 allcha = sumx = sumx2 = 0;
4375 for (bin=hxfirst;bin<=hxlast;bin++) {
4378 if (val > valmax) valmax = val;
4383 if (allcha == 0)
return;
4385 stddev = sumx2/allcha - mean*mean;
4388 if (stddev == 0) stddev = binwidx*(hxlast-hxfirst+1)/4;
4395 Double_t constant = 0.5*(valmax+binwidx*allcha/(sqrtpi*stddev));
4403 if ((mean < xmin || mean >
xmax) && stddev > (
xmax-
xmin)) {
4424 Int_t nchanx = hxlast - hxfirst + 1;
4445 Int_t nchanx = hxlast - hxfirst + 1;
4448 if (nchanx <=1 || npar == 1) {
4471 const Int_t idim = 20;
4482 if (
m > idim ||
m >
n)
return;
4485 for (
l = 2;
l <=
m; ++
l) {
4487 b[
m +
l*20 - 21] = zero;
4494 for (k = hxfirst; k <= hxlast; ++k) {
4499 for (
l = 2;
l <=
m; ++
l) {
4502 da[
l-1] += power*yk;
4504 for (
l = 2;
l <=
m; ++
l) {
4506 b[
m +
l*20 - 21] += power;
4509 for (i = 3; i <=
m; ++i) {
4510 for (k = i; k <=
m; ++k) {
4511 b[k - 1 + (i-1)*20 - 21] =
b[k + (i-2)*20 - 21];
4516 for (i=0; i<
m; ++i)
a[i] = da[i];
4536 xbar = ybar = x2bar = xybar = 0;
4541 for (i = hxfirst; i <= hxlast; ++i) {
4545 if (yk <= 0) yk = 1
e-9;
4554 det = fn*x2bar - xbar*xbar;
4562 a0 = (x2bar*ybar - xbar*xybar) / det;
4563 a1 = (fn*xybar - xbar*ybar) / det;
4574 Int_t a_dim1, a_offset, b_dim1, b_offset;
4576 Int_t im1, jp1, nm1, nmi;
4582 b_offset = b_dim1 + 1;
4585 a_offset = a_dim1 + 1;
4588 if (idim <
n)
return;
4591 for (j = 1; j <=
n; ++j) {
4592 if (
a[j + j*a_dim1] <= 0) { ifail = -1;
return; }
4593 a[j + j*a_dim1] = one /
a[j + j*a_dim1];
4594 if (j ==
n)
continue;
4596 for (
l = jp1;
l <=
n; ++
l) {
4597 a[j +
l*a_dim1] =
a[j + j*a_dim1] *
a[
l + j*a_dim1];
4598 s1 = -
a[
l + (j+1)*a_dim1];
4599 for (i = 1; i <= j; ++i) { s1 =
a[
l + i*a_dim1] *
a[i + (j+1)*a_dim1] + s1; }
4600 a[
l + (j+1)*a_dim1] = -s1;
4605 for (
l = 1;
l <= k; ++
l) {
4606 b[
l*b_dim1 + 1] =
a[a_dim1 + 1]*
b[
l*b_dim1 + 1];
4609 for (
l = 1;
l <= k; ++
l) {
4610 for (i = 2; i <=
n; ++i) {
4612 s21 = -
b[i +
l*b_dim1];
4613 for (j = 1; j <= im1; ++j) {
4614 s21 =
a[i + j*a_dim1]*
b[j +
l*b_dim1] + s21;
4616 b[i +
l*b_dim1] = -
a[i + i*a_dim1]*s21;
4619 for (i = 1; i <= nm1; ++i) {
4621 s22 = -
b[nmi +
l*b_dim1];
4622 for (j = 1; j <= i; ++j) {
4624 s22 =
a[nmi + nmjp1*a_dim1]*
b[nmjp1 +
l*b_dim1] + s22;
4626 b[nmi +
l*b_dim1] = -s22;
4664 if (binx < 0) binx = 0;
4665 if (binx > ofx) binx = ofx;
4680 binx = binglobal%nx;
4686 binx = binglobal%nx;
4687 biny = ((binglobal-binx)/nx)%ny;
4692 binx = binglobal%nx;
4693 biny = ((binglobal-binx)/nx)%ny;
4694 binz = ((binglobal-binx)/nx -biny)/ny;
4711 Error(
"GetRandom",
"Function only valid for 1-d histograms");
4721 integral = ((
TH1*)
this)->ComputeIntegral(
true);
4723 if (integral == 0)
return 0;
4762 if (bin < 0) bin = 0;
4788 Error(
"GetBinWithContent",
"function is only valid for 1-D histograms");
4794 if (firstx <= 0) firstx = 1;
4798 for (
Int_t i=firstx;i<=lastx;i++) {
4800 if (diff <= 0) {binx = i;
return diff;}
4801 if (diff < curmax && diff <= maxdiff) {curmax = diff, binminx=i;}
4836 return y0 + (
x-x0)*((y1-y0)/(
x1-x0));
4845 Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
4854 Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
4885 Error(
"IsBinOverflow",
"Invalid axis value");
4902 return (binx <= 0 || biny <= 0);
4904 return (binx <= 0 || biny <= 0 || binz <= 0);
4915 Error(
"IsBinUnderflow",
"Invalid axis value");
4932 Error(
"LabelsDeflate",
"Invalid axis option %s",ax);
4943 while ((obj = next())) {
4945 if (ibin > nbins) nbins = ibin;
4947 if (nbins < 1) nbins = 1;
4950 if (nbins==axis->
GetNbins())
return;
4952 TH1 *hold = (
TH1*)IsA()->New();
4975 Int_t bin,binx,biny,binz;
4976 for (bin=0; bin < hold->
fNcells; ++bin) {
5003 TH1 *hold = (
TH1*)IsA()->New();;
5024 Int_t bin,ibin,binx,biny,binz;
5025 for (ibin =0; ibin < hold->
fNcells; ibin++) {
5028 bin =
GetBin(binx,biny,binz);
5065 Warning(
"LabelsOption",
"Cannot sort. No labels");
5098 if (sort < 0)
return;
5100 Error(
"LabelsOption",
"Sorting by value not implemented for 3-D histograms");
5106 std::vector<Int_t>
a(
n+2);
5109 std::vector<Double_t> cont;
5110 std::vector<Double_t> errors;
5112 TIter nextold(labels);
5114 while ((obj=nextold())) {
5123 for (i=1;i<=
n;i++) {
5125 if (!errors.empty()) errors[i-1] =
GetBinError(i);
5129 for (i=1;i<=
n;i++) {
5133 for (i=1;i<=
n;i++) {
5134 obj = labold->
At(
a[i-1]);
5139 std::vector<Double_t> pcont(
n+2);
5142 cont.resize( (nx+2)*(ny+2));
5143 if (
fSumw2.
fN) errors.resize( (nx+2)*(ny+2));
5144 for (i=1;i<=nx;i++) {
5145 for (j=1;j<=ny;j++) {
5147 if (!errors.empty()) errors[i+nx*j] =
GetBinError(i,j);
5150 pcont[k-1] += cont[i+nx*j];
5156 obj = labold->
At(
a[i]);
5161 for (i=1;i<=
n;i++) {
5162 for (j=1;j<=ny;j++) {
5164 if (!errors.empty())
SetBinError(i,j,errors[
a[i-1]+1+nx*j]);
5170 for (i=1;i<=nx;i++) {
5171 for (j=1;j<=
n;j++) {
5173 if (!errors.empty())
SetBinError(i,j,errors[i+nx*(
a[j-1]+1)]);
5182 const UInt_t kUsed = 1<<18;
5186 for (i=1;i<=
n;i++) {
5187 const char *label =
"zzzzzzzzzzzz";
5188 for (j=1;j<=
n;j++) {
5189 obj = labold->
At(j-1);
5191 if (obj->
TestBit(kUsed))
continue;
5193 if (strcmp(label,obj->
GetName()) < 0)
continue;
5204 for (i=1;i<=
n;i++) {
5205 obj = labels->
At(i-1);
5213 for (i=1;i<=
n;i++) {
5217 for (i=1;i<=
n;i++) {
5225 if (
fSumw2.
fN) errors.resize(nx*ny);
5226 for (i=0;i<nx;i++) {
5227 for (j=0;j<ny;j++) {
5229 if (!errors.empty()) errors[i+nx*j] =
GetBinError(i,j);
5233 for (i=1;i<=
n;i++) {
5234 for (j=0;j<ny;j++) {
5236 if (!errors.empty())
SetBinError(i,j,errors[
a[i]+nx*j]);
5240 for (i=0;i<nx;i++) {
5241 for (j=1;j<=
n;j++) {
5243 if (!errors.empty())
SetBinError(i,j,errors[i+nx*
a[j]]);
5251 cont.resize(nx*ny*nz);
5252 if (
fSumw2.
fN) errors.resize(nx*ny*nz);
5253 for (i=0;i<nx;i++) {
5254 for (j=0;j<ny;j++) {
5255 for (k=0;k<nz;k++) {
5257 if (!errors.empty()) errors[i+nx*(j+ny*k)] =
GetBinError(i,j,k);
5263 for (i=1;i<=
n;i++) {
5264 for (j=0;j<ny;j++) {
5265 for (k=0;k<nz;k++) {
5267 if (!errors.empty())
SetBinError(i,j,k,errors[
a[i]+nx*(j+ny*k)]);
5274 for (i=0;i<nx;i++) {
5275 for (j=1;j<=
n;j++) {
5276 for (k=0;k<nz;k++) {
5278 if (!errors.empty())
SetBinError(i,j,k,errors[i+nx*(
a[j]+ny*k)]);
5285 for (i=0;i<nx;i++) {
5286 for (j=0;j<ny;j++) {
5287 for (k=1;k<=
n;k++) {
5289 if (!errors.empty())
SetBinError(i,j,k,errors[i+nx*(j+ny*
a[k])]);
5325 bool isEquidistant =
true;
5327 for (
int i = 1; i < axis.
GetNbins(); ++i) {
5330 isEquidistant &= match;
5334 return isEquidistant;
5361 if (width1 == 0 || width2 == 0)
5407 printf(
"TH1::RecomputeAxisLimits - Impossible\n");
5487 Error(
"Add",
"Attempt to multiply by a non-existing function");
5509 for (
Int_t binz = 0; binz < nz; ++binz) {
5511 for (
Int_t biny = 0; biny < ny; ++biny) {
5513 for (
Int_t binx = 0; binx < nx; ++binx) {
5517 Int_t bin = binx + nx * (biny + ny *binz);
5549 Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
5558 }
catch(DifferentNumberOfBins&) {
5559 Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
5561 }
catch(DifferentAxisLimits&) {
5562 Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
5563 }
catch(DifferentBinLimits&) {
5564 Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
5565 }
catch(DifferentLabels&) {
5566 Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
5611 Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
5621 }
catch(DifferentNumberOfBins&) {
5622 Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
5624 }
catch(DifferentAxisLimits&) {
5625 Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
5626 }
catch(DifferentBinLimits&) {
5627 Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
5628 }
catch(DifferentLabels&) {
5629 Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
5730 if ((ngroup <= 0) || (ngroup > nbins)) {
5731 Error(
"Rebin",
"Illegal value of ngroup=%d",ngroup);
5736 Error(
"Rebin",
"Operation valid on 1-D histograms only");
5739 if (!newname && xbins) {
5740 Error(
"Rebin",
"if xbins is specified, newname must be given");
5744 Int_t newbins = nbins/ngroup;
5746 Int_t nbg = nbins/ngroup;
5747 if (nbg*ngroup != nbins) {
5748 Warning(
"Rebin",
"ngroup=%d is not an exact divider of nbins=%d.",ngroup,nbins);
5768 for (bin=0;bin<nbins+2;bin++) oldErrors[bin] =
GetBinError(bin);
5773 Warning(
"Rebin",
"underflow entries will not be used when rebinning");
5774 if (xbins[newbins] >
fXaxis.
GetXmax() && oldBins[nbins+1] != 0 )
5775 Warning(
"Rebin",
"overflow entries will not be used when rebinning");
5781 if ((newname && strlen(newname) > 0) || xbins) {
5791 bool resetStat =
false;
5793 if(!xbins && (newbins*ngroup != nbins)) {
5841 Int_t oldbin = startbin;
5843 for (bin = 1;bin<=newbins;bin++) {
5846 Int_t imax = ngroup;
5848 for (i=0;i<ngroup;i++) {
5849 if( (oldbin+i > nbins) ||
5854 binContent += oldBins[oldbin+i];
5855 if (oldErrors) binError += oldErrors[oldbin+i]*oldErrors[oldbin+i];
5865 for (i = 0; i < startbin; ++i) {
5866 binContent += oldBins[i];
5867 if (oldErrors) binError += oldErrors[i]*oldErrors[i];
5874 for (i = oldbin; i <= nbins+1; ++i) {
5875 binContent += oldBins[i];
5876 if (oldErrors) binError += oldErrors[i]*oldErrors[i];
5885 if (!resetStat) hnew->
PutStats(stat);
5887 if (oldErrors)
delete [] oldErrors;
5912 while (point <
xmin) {
5924 while (point >=
xmax) {
5975 TH1 *hold = (
TH1*)IsA()->New();
5988 if (axis == &
fXaxis) iaxis = 1;
5989 if (axis == &
fYaxis) iaxis = 2;
5990 if (axis == &
fZaxis) iaxis = 3;
5991 bool firstw =
kTRUE;
5992 Int_t binx,biny, binz = 0;
5993 Int_t ix = 0,iy = 0,iz = 0;
5996 for (
Int_t bin = 0; bin < ncells; ++bin) {
6010 if (content == 0)
continue;
6013 Warning(
"ExtendAxis",
"Histogram %s has underflow or overflow in the axis that is extendable" 6014 " their content will be lost",
GetName() );
6075 if (ncontours == 0)
return;
6077 for (
Int_t i = 0; i < ncontours; ++i) levels[i] *=
c1;
6116 return oldExtendBitMask;
6162 str1 = str1(isc+1, lns);
6163 isc = str1.
Index(
";");
6166 str2.ReplaceAll(
"#semicolon",10,
";",1);
6169 str1 = str1(isc+1, lns);
6170 isc = str1.
Index(
";");
6173 str2.ReplaceAll(
"#semicolon",10,
";",1);
6176 str1 = str1(isc+1, lns);
6202 ::Error(
"SmoothArray",
"Need at least 3 points for smoothing: n = %d",nn);
6209 std::vector<double> yy(nn);
6210 std::vector<double> zz(nn);
6211 std::vector<double> rr(nn);
6213 for (
Int_t pass=0;pass<ntimes;pass++) {
6215 std::copy(xx, xx+nn, zz.begin() );
6217 for (
int noent = 0; noent < 2; ++noent) {
6220 for (
int kk = 0; kk < 3; kk++) {
6221 std::copy(zz.begin(), zz.end(), yy.begin());
6222 int medianType = (kk != 1) ? 3 : 5;
6223 int ifirst = (kk != 1 ) ? 1 : 2;
6224 int ilast = (kk != 1 ) ? nn-1 : nn -2;
6228 for ( ii = ifirst; ii < ilast; ii++) {
6229 assert(ii - ifirst >= 0);
6230 for (
int jj = 0; jj < medianType; jj++) {
6231 hh[jj] = yy[ii - ifirst + jj ];
6240 hh[2] = 3*zz[1] - 2*zz[2];
6245 hh[2] = 3*zz[nn - 2] - 2*zz[nn - 3];
6250 for (ii = 0; ii < 3; ii++) {
6255 for (ii = 0; ii < 3; ii++) {
6256 hh[ii] = yy[nn - 3 + ii];
6263 std::copy ( zz.begin(), zz.end(), yy.begin() );
6266 for (ii = 2; ii < (nn - 2); ii++) {
6267 if (zz[ii - 1] != zz[ii])
continue;
6268 if (zz[ii] != zz[ii + 1])
continue;
6269 hh[0] = zz[ii - 2] - zz[ii];
6270 hh[1] = zz[ii + 2] - zz[ii];
6271 if (hh[0] * hh[1] <= 0)
continue;
6274 yy[ii] = -0.5*zz[ii - 2*jk] + zz[ii]/0.75 + zz[ii + 2*jk] /6.;
6275 yy[ii + jk] = 0.5*(zz[ii + 2*jk] - zz[ii - 2*jk]) + zz[ii];
6280 for (ii = 1; ii < nn - 1; ii++) {
6281 zz[ii] = 0.25*yy[ii - 1] + 0.5*yy[ii] + 0.25*yy[ii + 1];
6284 zz[nn - 1] = yy[nn - 1];
6289 std::copy(zz.begin(), zz.end(), rr.begin());
6292 for (ii = 0; ii < nn; ii++) {
6293 zz[ii] = xx[ii] - zz[ii];
6301 for (ii = 0; ii < nn; ii++) {
6302 if (
xmin < 0) xx[ii] = rr[ii] + zz[ii];
6304 else xx[ii] =
TMath::Max((rr[ii] + zz[ii]),0.0 );
6320 Error(
"Smooth",
"Smooth only supported for 1-d histograms");
6325 Error(
"Smooth",
"Smooth only supported for histograms with >= 3 bins. Nbins = %d",nbins);
6332 Int_t firstbin = 1, lastbin = nbins;
6339 nbins = lastbin - firstbin + 1;
6343 for (i=0;i<nbins;i++) {
6349 for (i=0;i<nbins;i++) {
6373 if (
b.IsReading()) {
6375 Version_t R__v =
b.ReadVersion(&R__s, &R__c);
6379 b.ReadClassBuffer(
TH1::Class(),
this, R__v, R__s, R__c);
6387 while ((obj=next())) {
6393 TNamed::Streamer(
b);
6394 TAttLine::Streamer(
b);
6395 TAttFill::Streamer(
b);
6396 TAttMarker::Streamer(
b);
6412 Float_t maximum, minimum, norm;
6417 Int_t n =
b.ReadArray(contour);
6431 b.CheckByteCount(R__s, R__c, TH1::IsA());
6455 else if (opt.
Contains(
"range")) all = 1;
6456 else if (opt.
Contains(
"base")) all = 2;
6459 Int_t bin, binx, biny, binz;
6460 Int_t firstx=0,lastx=0,firsty=0,lasty=0,firstz=0,lastz=0;
6472 printf(
" Title = %s\n",
GetTitle());
6483 for (binx=firstx;binx<=lastx;binx++) {
6487 if(
fSumw2.
fN) printf(
" fSumw[%d]=%g, x=%g, error=%g\n",binx,w,
x,
e);
6488 else printf(
" fSumw[%d]=%g, x=%g\n",binx,w,
x);
6492 for (biny=firsty;biny<=lasty;biny++) {
6494 for (binx=firstx;binx<=lastx;binx++) {
6499 if(
fSumw2.
fN) printf(
" fSumw[%d][%d]=%g, x=%g, y=%g, error=%g\n",binx,biny,w,
x,
y,
e);
6500 else printf(
" fSumw[%d][%d]=%g, x=%g, y=%g\n",binx,biny,w,
x,
y);
6505 for (binz=firstz;binz<=lastz;binz++) {
6507 for (biny=firsty;biny<=lasty;biny++) {
6509 for (binx=firstx;binx<=lastx;binx++) {
6510 bin =
GetBin(binx,biny,binz);
6514 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);
6515 else printf(
" fSumw[%d][%d][%d]=%g, x=%g, y=%g, z=%g\n",binx,biny,binz,w,
x,
y,
z);
6573 if (opt ==
"ICES")
return;
6603 static Int_t nxaxis = 0;
6604 static Int_t nyaxis = 0;
6605 static Int_t nzaxis = 0;
6606 TString sxaxis=
"xAxis",syaxis=
"yAxis",szaxis=
"zAxis";
6617 if (i != 0) out <<
", ";
6620 out <<
"}; " << std::endl;
6633 if (i != 0) out <<
", ";
6636 out <<
"}; " << std::endl;
6649 if (i != 0) out <<
", ";
6652 out <<
"}; " << std::endl;
6656 out <<
" "<<std::endl;
6666 static Int_t hcounter = 0;
6673 histName += hcounter;
6676 const char *hname = histName.
Data();
6677 if (!strlen(hname)) hname =
"unnamed";
6681 t.ReplaceAll(
"\\",
"\\\\");
6682 t.ReplaceAll(
"\"",
"\\\"");
6683 out << hname <<
" = new " <<
ClassName() <<
"(" << quote
6684 << hname << quote <<
"," << quote<< t.Data() << quote
6687 out <<
", "<<sxaxis;
6694 out <<
", "<<syaxis;
6702 out <<
", "<<szaxis;
6707 out <<
");" << std::endl;
6711 for (bin=0;bin<
fNcells;bin++) {
6714 out<<
" "<<hname<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
6720 for (bin=0;bin<
fNcells;bin++) {
6723 out<<
" "<<hname<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
6740 out<<
" "<<hname<<
"->SetBarOffset("<<
GetBarOffset()<<
");"<<std::endl;
6743 out<<
" "<<hname<<
"->SetBarWidth("<<
GetBarWidth()<<
");"<<std::endl;
6746 out<<
" "<<hname<<
"->SetMinimum("<<
fMinimum<<
");"<<std::endl;
6749 out<<
" "<<hname<<
"->SetMaximum("<<
fMaximum<<
");"<<std::endl;
6752 out<<
" "<<hname<<
"->SetNormFactor("<<
fNormFactor<<
");"<<std::endl;
6755 out<<
" "<<hname<<
"->SetEntries("<<
fEntries<<
");"<<std::endl;
6758 out<<
" "<<hname<<
"->SetDirectory(0);"<<std::endl;
6761 out<<
" "<<hname<<
"->SetStats(0);"<<std::endl;
6764 out<<
" "<<hname<<
"->SetOption("<<quote<<
fOption.
Data()<<quote<<
");"<<std::endl;
6769 if (ncontours > 0) {
6770 out<<
" "<<hname<<
"->SetContour("<<ncontours<<
");"<<std::endl;
6772 for (
Int_t bin=0;bin<ncontours;bin++) {
6773 if (
gPad->GetLogz()) {
6778 out<<
" "<<hname<<
"->SetContourLevel("<<bin<<
","<<zlevel<<
");"<<std::endl;
6785 static Int_t funcNumber = 0;
6792 out <<
" " << fname <<
"->SetParent(" << hname <<
");\n";
6793 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(" 6794 << fname <<
");"<<std::endl;
6796 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(ptstats);"<<std::endl;
6797 out<<
" ptstats->SetParent("<<hname<<
");"<<std::endl;
6799 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(" 6801 <<
","<<quote<<lnk->
GetOption()<<quote<<
");"<<std::endl;
6816 out<<
" "<<hname<<
"->Draw(" 6817 <<quote<<option<<quote<<
");"<<std::endl;
6860 while ((obj = next())) {
6890 if (axis<1 || (axis>3 && axis<11) || axis>13)
return 0;
6894 if (stats[0] == 0)
return 0;
6896 Int_t ax[3] = {2,4,7};
6897 return stats[ax[axis-1]]/stats[0];
6902 return ( neff > 0 ? stddev/
TMath::Sqrt(neff) : 0. );
6944 if (axis<1 || (axis>3 && axis<11) || axis>13)
return 0;
6949 if (stats[0] == 0)
return 0;
6950 Int_t ax[3] = {2,4,7};
6951 Int_t axm = ax[axis%10 - 1];
6952 x = stats[axm]/stats[0];
6960 return ( neff > 0 ?
TMath::Sqrt(stddev2/(2*neff) ) : 0. );
6996 if (axis > 0 && axis <= 3){
7000 Double_t stddev3 = stddev*stddev*stddev;
7011 if (firstBinX == 1) firstBinX = 0;
7015 if (firstBinY == 1) firstBinY = 0;
7019 if (firstBinZ == 1) firstBinZ = 0;
7027 for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
7028 for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
7029 for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
7035 sum+=w*(
x-mean)*(
x-mean)*(
x-mean);
7042 else if (axis > 10 && axis <= 13) {
7049 Error(
"GetSkewness",
"illegal value of parameter");
7065 if (axis > 0 && axis <= 3){
7069 Double_t stddev4 = stddev*stddev*stddev*stddev;
7080 if (firstBinX == 1) firstBinX = 0;
7084 if (firstBinY == 1) firstBinY = 0;
7088 if (firstBinZ == 1) firstBinZ = 0;
7096 for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
7097 for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
7098 for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
7104 sum+=w*(
x-mean)*(
x-mean)*(
x-mean)*(
x-mean);
7111 }
else if (axis > 10 && axis <= 13) {
7115 return ( neff > 0 ?
TMath::Sqrt(24./neff ) : 0. );
7118 Error(
"GetKurtosis",
"illegal value of parameter");
7163 for (bin=0;bin<4;bin++) stats[bin] = 0;
7169 if (firstBinX == 1) firstBinX = 0;
7172 for (binx = firstBinX; binx <= lastBinX; binx++) {
7179 stats[1] += err*err;
7232 Int_t bin,binx,biny,binz;
7237 bin =
GetBin(binx,biny,binz);
7267 return DoIntegral(binx1,binx2,0,-1,0,-1,err,option);
7294 if (binx1 < 0) binx1 = 0;
7295 if (binx2 >= nx || binx2 < binx1) binx2 = nx - 1;
7299 if (biny1 < 0) biny1 = 0;
7300 if (biny2 >= ny || biny2 < biny1) biny2 = ny - 1;
7302 biny1 = 0; biny2 = 0;
7307 if (binz1 < 0) binz1 = 0;
7308 if (binz2 >= nz || binz2 < binz1) binz2 = nz - 1;
7310 binz1 = 0; binz2 = 0;
7323 for (
Int_t binx = binx1; binx <= binx2; ++binx) {
7325 for (
Int_t biny = biny1; biny <= biny2; ++biny) {
7327 for (
Int_t binz = binz1; binz <= binz2; ++binz) {
7380 printf(
" AndersonDarlingTest Prob = %g, AD TestStatistic = %g\n",pvalue,advalue);
7382 if (opt.
Contains(
"T") )
return advalue;
7393 Error(
"AndersonDarlingTest",
"Histograms must be 1-D");
7493 if (h2 == 0)
return 0;
7501 Error(
"KolmogorovTest",
"Histograms must be 1-D\n");
7507 Error(
"KolmogorovTest",
"Histograms have different number of bins, %d and %d\n",ncx1,ncx2);
7517 Error(
"KolmogorovTest",
"Histograms are not consistent: they have different bin edges");
7531 if (opt.
Contains(
"O")) ilast = ncx1 +1;
7532 for (bin = ifirst; bin <= ilast; bin++) {
7541 Error(
"KolmogorovTest",
"Histogram1 %s integral is zero\n",
h1->
GetName());
7545 Error(
"KolmogorovTest",
"Histogram2 %s integral is zero\n",h2->
GetName());
7554 esum1 = sum1 * sum1 / w1;
7559 esum2 = sum2 * sum2 / w2;
7563 if (afunc2 && afunc1) {
7564 Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
7573 Double_t dfmax =0, rsum1 = 0, rsum2 = 0;
7575 for (bin=ifirst;bin<=ilast;bin++) {
7597 if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
7601 Double_t chi2 = d12*d12/(esum1+esum2);
7604 if (prob > 0 && prb2 > 0) prob *= prb2*(1-
TMath::Log(prob*prb2));
7608 const Int_t nEXPT = 1000;
7609 if (opt.
Contains(
"X") && !(afunc1 || afunc2 ) ) {
7616 Warning(
"KolmogorovTest",
"Detected bins with negative weights, these have been ignored and output might be " 7617 "skewed. Reduce number of bins for histogram?");
7626 for (
Int_t i=0; i < nEXPT; i++) {
7630 if (dSEXPT>dfmax) prb3 += 1.0;
7639 printf(
" Kolmo Prob h1 = %s, sum bin content =%g effective entries =%g\n",
h1->
GetName(),sum1,esum1);
7640 printf(
" Kolmo Prob h2 = %s, sum bin content =%g effective entries =%g\n",h2->
GetName(),sum2,esum2);
7641 printf(
" Kolmo Prob = %g, Max Dist = %g\n",prob,dfmax);
7643 printf(
" Kolmo Prob = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
7645 printf(
" Kolmo Prob = %f with %d pseudo-experiments\n",prb3,nEXPT);
7651 if(opt.
Contains(
"M"))
return dfmax;
7652 else if(opt.
Contains(
"X"))
return prb3;
7710 if (zlevel <= 0)
return 0;
7726 if (buffersize <= 0) {
7730 if (buffersize < 100) buffersize = 100;
7757 for (level=0; level<nlevels; level++)
fContour.
fArray[level] = levels[level];
7762 if ((zmin == zmax) && (zmin != 0)) {
7768 if (zmax <= 0)
return;
7769 if (zmin <= 0) zmin = 0.001*zmax;
7772 dz = (zmax-zmin)/
Double_t(nlevels);
7774 for (level=0; level<nlevels; level++) {
7810 Int_t bin, binx, biny, binz;
7817 Double_t maximum = -FLT_MAX, value;
7818 for (binz=zfirst;binz<=zlast;binz++) {
7819 for (biny=yfirst;biny<=ylast;biny++) {
7820 for (binx=xfirst;binx<=xlast;binx++) {
7821 bin =
GetBin(binx,biny,binz);
7823 if (value > maximum && value < maxval) maximum = value;
7847 Int_t bin, binx, biny, binz;
7855 Double_t maximum = -FLT_MAX, value;
7856 locm = locmax = locmay = locmaz = 0;
7857 for (binz=zfirst;binz<=zlast;binz++) {
7858 for (biny=yfirst;biny<=ylast;biny++) {
7859 for (binx=xfirst;binx<=xlast;binx++) {
7860 bin =
GetBin(binx,biny,binz);
7862 if (value > maximum) {
7895 Int_t bin, binx, biny, binz;
7903 for (binz=zfirst;binz<=zlast;binz++) {
7904 for (biny=yfirst;biny<=ylast;biny++) {
7905 for (binx=xfirst;binx<=xlast;binx++) {
7906 bin =
GetBin(binx,biny,binz);
7908 if (value < minimum && value > minval) minimum = value;
7932 Int_t bin, binx, biny, binz;
7941 locm = locmix = locmiy = locmiz = 0;
7942 for (binz=zfirst;binz<=zlast;binz++) {
7943 for (biny=yfirst;biny<=ylast;biny++) {
7944 for (binx=xfirst;binx<=xlast;binx++) {
7945 bin =
GetBin(binx,biny,binz);
7947 if (value < minimum) {
7989 Int_t bin, binx, biny, binz;
7999 for (binz=zfirst;binz<=zlast;binz++) {
8000 for (biny=yfirst;biny<=ylast;biny++) {
8001 for (binx=xfirst;binx<=xlast;binx++) {
8002 bin =
GetBin(binx,biny,binz);
8004 if (value < min) min = value;
8005 if (value > max) max = value;
8023 Error(
"SetBins",
"Operation only valid for 1-d histograms");
8050 Error(
"SetBins",
"Operation only valid for 1-d histograms");
8076 Error(
"SetBins",
"Operation only valid for 2-D histograms");
8104 Error(
"SetBins",
"Operation only valid for 2-D histograms");
8131 Error(
"SetBins",
"Operation only valid for 3-D histograms");
8140 fNcells = (nx+2)*(ny+2)*(nz+2);
8161 Error(
"SetBins",
"Operation only valid for 3-D histograms");
8170 fNcells = (nx+2)*(ny+2)*(nz+2);
8282 Warning(
"Sumw2",
"Sum of squares of weights structure already created");
8317 if (bin < 0) bin = 0;
8337 if (bin < 0) bin = 0;
8347 Warning(
"GetBinErrorLow",
"Histogram has negative bin content-force usage to normal errors");
8352 if (
n == 0)
return 0;
8367 if (bin < 0) bin = 0;
8377 Warning(
"GetBinErrorUp",
"Histogram has negative bin content-force usage to normal errors");
8396 Error(
"GetBinCenter",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8407 Error(
"GetBinLowEdge",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8418 Error(
"GetBinWidth",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8445 Error(
"GetLowEdge",
"Invalid method for a %d-d histogram ",
fDimension);
8460 if (bin < 0 || bin>=
fSumw2.
fN)
return;
8477 if (bin < 0)
return;
8541 return (
TH1*)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticBackground((TH1*)0x%lx,%d,\"%s\")",
8542 (
ULong_t)
this, niter, option));
8555 return (
Int_t)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticSearch((TH1*)0x%lx,%g,\"%s\",%g)",
8574 ::Error(
"TransformHisto",
"Invalid FFT transform class");
8579 ::Error(
"TransformHisto",
"Only 1d and 2D transform are supported");
8603 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8604 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8605 ind[0] = binx-1; ind[1] = biny-1;
8611 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8612 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8613 ind[0] = binx-1; ind[1] = biny-1;
8622 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8623 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8624 ind[0] = binx-1; ind[1] = biny-1;
8630 ::Error(
"TransformHisto",
"No complex numbers in the output");
8637 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8638 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8639 ind[0] = binx-1; ind[1] = biny-1;
8645 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8646 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8647 ind[0] = binx-1; ind[1] = biny-1;
8656 for (binx = 1; binx<=hout->
GetNbinsX(); binx++){
8657 for (biny=1; biny<=hout->
GetNbinsY(); biny++){
8658 ind[0] = binx-1; ind[1] = biny-1;
8679 printf(
"Pure real output, no phase");
8710 std::ostringstream strm;
8729 if (fgDefaultSumw2) Sumw2();
8737 :
TH1(
name,title,nbins,xlow,xup)
8742 if (xlow >= xup) SetBuffer(fgBufferSize);
8743 if (fgDefaultSumw2) Sumw2();
8755 if (fgDefaultSumw2) Sumw2();
8767 if (fgDefaultSumw2) Sumw2();
8799 if (newval > -128 && newval < 128) {
fArray[bin] =
Char_t(newval);
return;}
8800 if (newval < -127)
fArray[bin] = -127;
8801 if (newval > 127)
fArray[bin] = 127;
8910 if (fgDefaultSumw2) Sumw2();
8918 :
TH1(
name,title,nbins,xlow,xup)
8923 if (xlow >= xup) SetBuffer(fgBufferSize);
8924 if (fgDefaultSumw2) Sumw2();
8936 if (fgDefaultSumw2) Sumw2();
8948 if (fgDefaultSumw2) Sumw2();
8980 if (newval > -32768 && newval < 32768) {
fArray[bin] =
Short_t(newval);
return;}
8981 if (newval < -32767)
fArray[bin] = -32767;
8982 if (newval > 32767)
fArray[bin] = 32767;
9091 if (fgDefaultSumw2) Sumw2();
9099 :
TH1(
name,title,nbins,xlow,xup)
9104 if (xlow >= xup) SetBuffer(fgBufferSize);
9105 if (fgDefaultSumw2) Sumw2();
9117 if (fgDefaultSumw2) Sumw2();
9129 if (fgDefaultSumw2) Sumw2();
9161 if (newval > -2147483647 && newval < 2147483647) {
fArray[bin] =
Int_t(newval);
return;}
9162 if (newval < -2147483647)
fArray[bin] = -2147483647;
9163 if (newval > 2147483647)
fArray[bin] = 2147483647;
9273 if (fgDefaultSumw2) Sumw2();
9281 :
TH1(
name,title,nbins,xlow,xup)
9286 if (xlow >= xup) SetBuffer(fgBufferSize);
9287 if (fgDefaultSumw2) Sumw2();
9299 if (fgDefaultSumw2) Sumw2();
9311 if (fgDefaultSumw2) Sumw2();
9319 :
TH1(
"TVectorF",
"",
v.GetNrows(),0,
v.GetNrows())
9323 Int_t ivlow =
v.GetLwb();
9324 for (
Int_t i=0;i<fNcells-2;i++) {
9325 SetBinContent(i+1,
v(i+ivlow));
9328 if (fgDefaultSumw2) Sumw2();
9452 if (fgDefaultSumw2) Sumw2();
9460 :
TH1(
name,title,nbins,xlow,xup)
9465 if (xlow >= xup) SetBuffer(fgBufferSize);
9466 if (fgDefaultSumw2) Sumw2();
9478 if (fgDefaultSumw2) Sumw2();
9490 if (fgDefaultSumw2) Sumw2();
9498 :
TH1(
"TVectorD",
"",
v.GetNrows(),0,
v.GetNrows())
9502 Int_t ivlow =
v.GetLwb();
9503 for (
Int_t i=0;i<fNcells-2;i++) {
9504 SetBinContent(i+1,
v(i+ivlow));
9507 if (fgDefaultSumw2) Sumw2();
9625 if(hid >= 0) hname.
Form(
"h%d",hid);
9626 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 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)
Calculates the Kolmogorov distribution function,.
virtual void ResetAttAxis(Option_t *option="")
Reset axis attributes.
virtual void SetError(const Double_t *error)
Replace bin errors by values in array error.
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
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.
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.
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.
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 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 Bool_t Multiply(TF1 *h1, Double_t c1=1)
Performs the operation: this = this*c1*f1 if errors are defined (see TH1::Sumw2), errors are also rec...
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.
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (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.
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
TH1C operator/(const TH1C &h1, const TH1C &h2)
Operator /.
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
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)
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
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.
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.
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...
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.
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.
void Copy(TArrayF &array) const
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...
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
TH1C operator-(const TH1C &h1, const TH1C &h2)
Operator -.
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 ...
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)
static bool CheckConsistency(const TH1 *h1, const TH1 *h2)
Check histogram compatibility.
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...
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.
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
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.
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 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.
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
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)
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.
#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...
TH1C operator+(const TH1C &h1, const TH1C &h2)
Operator +.
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.
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)
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.
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)
Change (i.e.
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
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
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.
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract...
TH1C operator*(Double_t c1, const TH1C &h1)
Operator *.
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)
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.
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.
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.
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)
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".