537 class DifferentDimension:
public std::exception {};
538 class DifferentNumberOfBins:
public std::exception {};
539 class DifferentAxisLimits:
public std::exception {};
540 class DifferentBinLimits:
public std::exception {};
541 class DifferentLabels:
public std::exception {};
551 fFunctions =
new TList;
557 fTsumw = fTsumw2=fTsumwx=fTsumwx2=0;
562 fBinStatErrOpt = kNormal;
564 fYaxis.SetName(
"yaxis");
565 fZaxis.SetName(
"zaxis");
566 fXaxis.SetParent(
this);
567 fYaxis.SetParent(
this);
568 fZaxis.SetParent(
this);
577 if (!TestBit(kNotDeleted)) {
594 while ((obj = fFunctions->First())) {
595 while(fFunctions->Remove(obj)) { }
596 if (!obj->
TestBit(kNotDeleted)) {
606 fDirectory->Remove(
this);
638 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
660 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
682 if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
773 Error(
"Add",
"Attempt to add a non-existing function");
793 for (
Int_t i = 0; i < 10; ++i) s1[i] = 0;
799 Int_t bin, binx, biny, binz;
804 for (binz = 0; binz < ncellsz; ++binz) {
806 for (biny = 0; biny < ncellsy; ++biny) {
808 for (binx = 0; binx < ncellsx; ++binx) {
812 bin = binx + ncellsx * (biny + ncellsy * binz);
858 Error(
"Add",
"Attempt to add a non-existing histogram");
869 }
catch(DifferentNumberOfBins&) {
871 Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
873 Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 = %d",
GetNbinsX(), h1->
GetNbinsX());
876 }
catch(DifferentAxisLimits&) {
878 Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
880 Warning(
"Add",
"Attempt to add histograms with different axis limits");
881 }
catch(DifferentBinLimits&) {
883 Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
885 Warning(
"Add",
"Attempt to add histograms with different bin limits");
886 }
catch(DifferentLabels&) {
889 Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
891 Info(
"Warning",
"Attempt to add histograms with different labels");
896 l.
Add(const_cast<TH1*>(h1));
897 auto iret =
Merge(&l);
909 Bool_t resetStats = (c1 < 0);
939 if (e1sq) w1 = 1. / e1sq;
944 double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
948 if (e2sq) w2 = 1. / e2sq;
953 double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
958 double y = (w1*y1 + w2*y2)/(w1 + w2);
961 double err2 = 1./(w1 + w2);
962 if (err2 < 1.
E-200) err2 = 0;
978 if (i == 1) s1[i] += c1*c1*s2[i];
979 else s1[i] += c1*s2[i];
1020 Error(
"Add",
"Attempt to add a non-existing histogram");
1028 if (h1 == h2 && c2 < 0) {c2 = 0; normWidth =
kTRUE;}
1037 }
catch(DifferentNumberOfBins&) {
1039 Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
1041 Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 = %d",
GetNbinsX(), h1->
GetNbinsX());
1044 }
catch(DifferentAxisLimits&) {
1046 Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
1048 Warning(
"Add",
"Attempt to add histograms with different axis limits");
1049 }
catch(DifferentBinLimits&) {
1051 Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
1053 Warning(
"Add",
"Attempt to add histograms with different bin limits");
1054 }
catch(DifferentLabels&) {
1057 Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
1059 Info(
"Warning",
"Attempt to add histograms with different labels");
1065 l.
Add(const_cast<TH1*>(h1));
1066 l.
Add(const_cast<TH1*>(h2));
1068 auto iret =
Merge(&l);
1088 Bool_t resetStats = (c1*c2 < 0) || normWidth;
1095 if (i == 1) s3[i] = c1*c1*s1[i] + c2*c2*s2[i];
1097 else s3[i] = c1*s1[i] + c2*s2[i];
1113 Int_t bin, binx, biny, binz;
1114 for (binz = 0; binz < nbinsz; ++binz) {
1116 for (biny = 0; biny < nbinsy; ++biny) {
1118 for (binx = 0; binx < nbinsx; ++binx) {
1120 bin =
GetBin(binx, biny, binz);
1141 if (e1sq) w1 = 1./ e1sq;
1145 double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
1149 if (e2sq) w2 = 1./ e2sq;
1153 double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
1158 double y = (w1*y1 + w2*y2)/(w1 + w2);
1161 double err2 = 1./(w1 + w2);
1162 if (err2 < 1.
E-200) err2 = 0;
1244 if (nbentries == 0) {
1254 if (nbentries < 0 && action == 0)
return 0;
1257 if (nbentries < 0) {
1258 nbentries = -nbentries;
1270 for (
Int_t i=1;i<nbentries;i++) {
1272 if (x < xmin) xmin =
x;
1273 if (x > xmax) xmax =
x;
1291 DoFillN(nbentries,&buffer[2],&buffer[1],2);
1325 if (nbentries < 0) {
1328 nbentries = -nbentries;
1360 if ( h2Array->
fN != fN ) {
1361 throw DifferentBinLimits();
1365 for (
int i = 0; i < fN; ++i ) {
1367 throw DifferentBinLimits();
1388 throw DifferentLabels();
1393 throw DifferentLabels();
1396 for (
int i = 1; i <= a1->
GetNbins(); ++i) {
1399 if (label1 != label2) {
1400 throw DifferentLabels();
1416 throw DifferentAxisLimits();
1429 ::Info(
"CheckEqualAxes",
"Axes have different number of bins : nbin1 = %d nbin2 = %d",a1->
GetNbins(),a2->
GetNbins() );
1434 }
catch (DifferentAxisLimits&) {
1435 ::Info(
"CheckEqualAxes",
"Axes have different limits");
1440 }
catch (DifferentBinLimits&) {
1441 ::Info(
"CheckEqualAxes",
"Axes have different bin limits");
1448 }
catch (DifferentLabels&) {
1449 ::Info(
"CheckEqualAxes",
"Axes have different labels");
1464 Int_t nbins1 = lastBin1-firstBin1 + 1;
1472 if (firstBin2 < lastBin2) {
1474 nbins2 = lastBin1-firstBin1 + 1;
1479 if (nbins1 != nbins2 ) {
1480 ::Info(
"CheckConsistentSubAxes",
"Axes have different number of bins");
1486 ::Info(
"CheckConsistentSubAxes",
"Axes have different limits");
1498 if (h1 == h2)
return true;
1501 throw DifferentDimension();
1513 (dim > 1 && nbinsy != h2->
GetNbinsY()) ||
1514 (dim > 2 && nbinsz != h2->
GetNbinsZ()) ) {
1515 throw DifferentNumberOfBins();
1831 Int_t ndf = 0, igood = 0;
1839 printf(
"Chi2 = %f, Prob = %g, NDF = %d, igood = %d\n", chi2,prob,ndf,igood);
1842 if (ndf == 0)
return 0;
1890 Int_t i_start, i_end;
1891 Int_t j_start, j_end;
1892 Int_t k_start, k_end;
1921 Error(
"Chi2TestX",
"Histograms have different dimensions.");
1926 if (nbinx1 != nbinx2) {
1927 Error(
"Chi2TestX",
"different number of x channels");
1929 if (nbiny1 != nbiny2) {
1930 Error(
"Chi2TestX",
"different number of y channels");
1932 if (nbinz1 != nbinz2) {
1933 Error(
"Chi2TestX",
"different number of z channels");
1937 i_start = j_start = k_start = 1;
1968 ndf = (i_end - i_start + 1) * (j_end - j_start + 1) * (k_end - k_start + 1) - 1;
1975 if (scaledHistogram && !comparisonUU) {
1976 Info(
"Chi2TestX",
"NORM option should be used together with UU option. It is ignored");
1983 Double_t effEntries1 = (s[1] ? s[0] * s[0] / s[1] : 0.0);
1987 Double_t effEntries2 = (s[1] ? s[0] * s[0] / s[1] : 0.0);
1989 if (!comparisonUU && !comparisonUW && !comparisonWW ) {
1991 if (
TMath::Abs(sumBinContent1 - effEntries1) < 1) {
1992 if (
TMath::Abs(sumBinContent2 - effEntries2) < 1) comparisonUU =
true;
1993 else comparisonUW =
true;
1995 else comparisonWW =
true;
1999 if (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) {
2000 Warning(
"Chi2TestX",
"First histogram is not unweighted and option UW has been requested");
2003 if ( (!scaledHistogram && comparisonUU) ) {
2004 if ( (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) || (
TMath::Abs(sumBinContent2 - effEntries2) >= 1) ) {
2005 Warning(
"Chi2TestX",
"Both histograms are not unweighted and option UU has been requested");
2011 if (comparisonUU && scaledHistogram) {
2012 for (
Int_t i = i_start; i <= i_end; ++i) {
2013 for (
Int_t j = j_start; j <= j_end; ++j) {
2014 for (
Int_t k = k_start; k <= k_end; ++k) {
2023 if (e1sq > 0.0) cnt1 =
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5);
2026 if (e2sq > 0.0) cnt2 =
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5);
2037 if (sumw1 <= 0.0 || sumw2 <= 0.0) {
2038 Error(
"Chi2TestX",
"Cannot use option NORM when one histogram has all zero errors");
2043 for (
Int_t i = i_start; i <= i_end; ++i) {
2044 for (
Int_t j = j_start; j <= j_end; ++j) {
2045 for (
Int_t k = k_start; k <= k_end; ++k) {
2059 if (sum1 == 0.0 || sum2 == 0.0) {
2060 Error(
"Chi2TestX",
"one histogram is empty");
2064 if ( comparisonWW && ( sumw1 <= 0.0 && sumw2 <= 0.0 ) ){
2065 Error(
"Chi2TestX",
"Hist1 and Hist2 have both all zero errors\n");
2075 for (
Int_t i = i_start; i <= i_end; ++i) {
2076 for (
Int_t j = j_start; j <= j_end; ++j) {
2077 for (
Int_t k = k_start; k <= k_end; ++k) {
2084 if (scaledHistogram) {
2089 if (e1sq > 0) cnt1 =
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5);
2092 if (e2sq > 0) cnt2 =
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5);
2096 if (
Int_t(cnt1) == 0 &&
Int_t(cnt2) == 0) --ndf;
2103 if (res) res[i - i_start] = (cnt1 - nexp1) /
TMath::Sqrt(nexp1);
2109 Double_t correc = (1. - sum1 /
sum) * (1. - cntsum / sum);
2112 Double_t delta = sum2 * cnt1 - sum1 * cnt2;
2113 chi2 += delta * delta / cntsum;
2118 chi2 /= sum1 * sum2;
2123 Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
2127 Info(
"Chi2TestX",
"There is a bin in h2 with less than 1 event.\n");
2138 if ( comparisonUW ) {
2139 for (
Int_t i = i_start; i <= i_end; ++i) {
2140 for (
Int_t j = j_start; j <= j_end; ++j) {
2141 for (
Int_t k = k_start; k <= k_end; ++k) {
2150 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
2156 if (cnt2 * cnt2 == 0 && e2sq == 0) {
2160 e2sq = sumw2 / sum2;
2165 Error(
"Chi2TestX",
"Hist2 has in bin (%d,%d,%d) zero content and zero errors\n", i, j, k);
2171 if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10)
n++;
2173 Double_t var1 = sum2 * cnt2 - sum1 * e2sq;
2174 Double_t var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2179 while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
2182 var1 = sum2 * cnt2 - sum1 * e2sq;
2183 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2187 while (var1 + var2 == 0) {
2190 var1 = sum2 * cnt2 - sum1 * e2sq;
2191 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2192 while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
2195 var1 = sum2 * cnt2 - sum1 * e2sq;
2196 var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
2201 Double_t probb = (var1 + var2) / (2. * sum2 * sum2);
2209 chi2 += delta1 * delta1 / nexp1;
2212 chi2 += delta2 * delta2 / e2sq;
2217 Double_t temp1 = sum2 * e2sq / var2;
2218 Double_t temp2 = 1.0 + (sum1 * e2sq - sum2 * cnt2) / var2;
2219 temp2 = temp1 * temp1 * sum1 * probb * (1.0 - probb) + temp2 * temp2 * e2sq / 4.0;
2232 Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
2236 Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
2246 for (
Int_t i = i_start; i <= i_end; ++i) {
2247 for (
Int_t j = j_start; j <= j_end; ++j) {
2248 for (
Int_t k = k_start; k <= k_end; ++k) {
2258 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
2263 if (e1sq == 0 && e2sq == 0) {
2265 Error(
"Chi2TestX",
"h1 and h2 both have bin %d,%d,%d with all zero errors\n", i,j,k);
2270 Double_t delta = sum2 * cnt1 - sum1 * cnt2;
2271 chi2 += delta * delta /
sigma;
2274 Double_t temp = cnt1 * sum1 * e2sq + cnt2 * sum2 * e1sq;
2287 res[i - i_start] =
z;
2290 if (e1sq > 0 && cnt1 * cnt1 / e1sq < 10) m++;
2291 if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10)
n++;
2297 Info(
"Chi2TestX",
"There is a bin in h1 with less than 10 effective events.\n");
2301 Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
2318 Error(
"Chisquare",
"Function pointer is Null - return -1");
2369 for (
Int_t binz=1; binz <= nbinsz; ++binz) {
2370 for (
Int_t biny=1; biny <= nbinsy; ++biny) {
2371 for (
Int_t binx=1; binx <= nbinsx; ++binx) {
2374 if (onlyPositive && y < 0) {
2375 Error(
"ComputeIntegral",
"Bin content is negative - return a NaN value");
2386 Error(
"ComputeIntegral",
"Integral = zero");
return 0;
2429 hintegrated->
Reset();
2432 for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
2433 for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
2434 for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
2435 const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
2443 for (
Int_t binz = nbinsz; binz >= 1; --binz) {
2444 for (
Int_t biny = nbinsy; biny >= 1; --biny) {
2445 for (
Int_t binx = nbinsx; binx >= 1; --binx) {
2446 const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
2472 ((
TH1&)obj).fDirectory->Remove(&obj);
2473 ((
TH1&)obj).fDirectory = 0;
2487 delete [] ((
TH1&)obj).fBuffer;
2488 ((
TH1&)obj).fBuffer = 0;
2494 ((
TH1&)obj).fBuffer = buf;
2499 if (a) a->
Set(fNcells);
2520 ((
TH1&)obj).fXaxis.SetParent(&obj);
2521 ((
TH1&)obj).fYaxis.SetParent(&obj);
2522 ((
TH1&)obj).fZaxis.SetParent(&obj);
2534 ((
TH1&)obj).fDirectory = 0;
2552 if(newname && strlen(newname) ) {
2607 Error(
"Add",
"Attempt to divide by a non-existing function");
2625 Int_t bin, binx, biny, binz;
2630 for (binz = 0; binz < nz; ++binz) {
2632 for (biny = 0; biny <
ny; ++biny) {
2634 for (binx = 0; binx <
nx; ++binx) {
2638 bin = binx + nx * (biny + ny * binz);
2675 Error(
"Divide",
"Input histogram passed does not exist (NULL).");
2684 }
catch(DifferentNumberOfBins&) {
2685 Error(
"Divide",
"Cannot divide histograms with different number of bins");
2687 }
catch(DifferentAxisLimits&) {
2688 Warning(
"Divide",
"Dividing histograms with different axis limits");
2689 }
catch(DifferentBinLimits&) {
2690 Warning(
"Divide",
"Dividing histograms with different bin limits");
2691 }
catch(DifferentLabels&) {
2692 Warning(
"Divide",
"Dividing histograms with different labels");
2747 Error(
"Divide",
"At least one of the input histograms passed does not exist (NULL).");
2757 }
catch(DifferentNumberOfBins&) {
2758 Error(
"Divide",
"Cannot divide histograms with different number of bins");
2760 }
catch(DifferentAxisLimits&) {
2761 Warning(
"Divide",
"Dividing histograms with different axis limits");
2762 }
catch(DifferentBinLimits&) {
2763 Warning(
"Divide",
"Dividing histograms with different bin limits");
2764 }
catch(DifferentLabels&) {
2765 Warning(
"Divide",
"Dividing histograms with different labels");
2770 Error(
"Divide",
"Coefficient of dividing histogram cannot be zero");
2807 fSumw2.
fArray[i] = c1sq * c2sq * (e1sq * b2sq + e2sq * b1sq) / (c2sq * c2sq * b2sq * b2sq);
2860 if (index>indb && index<indk) index = -1;
2866 if (!
gPad->IsEditable())
gROOT->MakeDefCanvas();
2868 if (
gPad->GetX1() == 0 &&
gPad->GetX2() == 1 &&
2869 gPad->GetY1() == 0 &&
gPad->GetY2() == 1 &&
2870 gPad->GetListOfPrimitives()->GetSize()==0) opt2.
Remove(index,4);
2878 if (index>=0) opt2.
Remove(index,4);
2927 Error(
"DrawNormalized",
"Sum of weights is null. Cannot normalize histogram: %s",
GetName());
2939 if (opt.
IsNull() || opt ==
"SAME") opt +=
"HIST";
2974 Int_t range, stat, add;
2994 for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
2996 for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
2998 for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
3001 if (range && !f1->
IsInside(x))
continue;
3098 for (
Int_t binx = 1; binx<=ndim[0]; binx++) {
3099 for (
Int_t biny=1; biny<=ndim[1]; biny++) {
3100 for (
Int_t binz=1; binz<=ndim[2]; binz++) {
3130 if (bin <0)
return -1;
3163 if (bin <0)
return -1;
3196 if (bin <0)
return -1;
3232 for (i=0;i<ntimes;i+=stride) {
3239 DoFillN((ntimes-i)/stride,&x[i],&w[i],stride);
3243 DoFillN(ntimes, x, w, stride);
3258 for (i=0;i<ntimes;i+=stride) {
3260 if (bin <0)
continue;
3265 if (bin == 0 || bin > nbins) {
3297 if (!f1) {
Error(
"FillRandom",
"Unknown function: %s",fname);
return; }
3307 Info(
"FillRandom",
"Using function axis and range [%g,%g]",xmin, xmax);
3313 Int_t nbinsx = last-first+1;
3317 for (binx=1;binx<=nbinsx;binx++) {
3319 integral[binx] = integral[binx-1] + fint;
3323 if (integral[nbinsx] == 0 ) {
3325 Error(
"FillRandom",
"Integral = zero");
return;
3327 for (bin=1;bin<=nbinsx;bin++) integral[bin] /= integral[nbinsx];
3330 for (loop=0;loop<ntimes;loop++) {
3336 +xAxis->
GetBinWidth(ibin+first)*(r1-integral[ibin])/(integral[ibin+1] - integral[ibin]);
3360 if (!h) {
Error(
"FillRandom",
"Null histogram");
return; }
3362 Error(
"FillRandom",
"Histograms with different dimensions");
return;
3369 Int_t nbins = last-first+1;
3370 if (ntimes > 10*nbins) {
3374 if (sumw == 0)
return;
3376 for (
Int_t bin=first;bin<=last;bin++) {
3388 if (sumgen < ntimes) {
3390 for (i =
Int_t(sumgen+0.5); i < ntimes; ++i)
3396 else if (sumgen > ntimes) {
3398 i =
Int_t(sumgen+0.5);
3399 while( i > ntimes) {
3414 catch(std::exception&) {}
3421 for (loop=0;loop<ntimes;loop++) {
3447 return binx + nx*biny;
3455 return binx + nx*(biny +ny*binz);
3480 return binx + nx*biny;
3488 return binx + nx*(biny +ny*binz);
3502 Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
3521 Warning(
"FindLastBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
3525 for (
Int_t bin=nbins;bin>=1;bin--) {
3564 linear= (
char*)strstr(fname,
"++");
3571 f1=
new TF1(fname, fname, xxmin, xxmax);
3572 return Fit(f1,option,goption,xxmin,xxmax);
3575 f2=
new TF2(fname, fname);
3576 return Fit(f2,option,goption,xxmin,xxmax);
3579 f3=
new TF3(fname, fname);
3580 return Fit(f3,option,goption,xxmin,xxmax);
3585 f1 = (
TF1*)
gROOT->GetFunction(fname);
3586 if (!f1) {
Printf(
"Unknown function: %s",fname);
return -1; }
3587 return Fit(f1,option,goption,xxmin,xxmax);
3915 gROOT->MakeDefCanvas();
3918 Error(
"FitPanel",
"Unable to create a default canvas");
3925 if (handler && handler->
LoadPlugin() != -1) {
3927 Error(
"FitPanel",
"Unable to create the FitPanel");
3930 Error(
"FitPanel",
"Unable to find the FitPanel plug-in");
3975 asym->SetTitle(title);
3985 top->
Add(h1,h2,1,-c2);
3986 bottom->
Add(h1,h2,1,c2);
3987 asym->Divide(top,bottom);
3991 Int_t zmax = asym->GetNbinsZ();
4001 for(
Int_t k=1; k<= zmax; k++){
4017 Double_t error = 2*
TMath::Sqrt(a*a*c2*c2*dbsq + c2*c2*b*b*dasq+a*a*b*b*dc2*dc2)/(bot*bot);
4018 asym->SetBinError(i,j,k,error);
4080 return (s[1] ? s[0]*s[0]/s[1] :
TMath::Abs(s[0]) );
4090 return ((
TH1*)
this)->GetPainter()->GetObjectInfo(px,py);
4191 Error(
"GetQuantiles",
"Only available for 1-d histograms");
4201 Int_t nq = nprobSum;
4206 for (i=1;i<nq;i++) {
4211 for (i = 0; i < nq; i++) {
4213 while (ibin < nbins-1 &&
fIntegral[ibin+1] == prob[i]) {
4214 if (
fIntegral[ibin+2] == prob[i]) ibin++;
4219 if (dint > 0) q[i] +=
GetBinWidth(ibin+1)*(prob[i]-fIntegral[ibin])/dint;
4222 if (!probSum)
delete [] prob;
4251 allcha = sumx = sumx2 = 0;
4252 for (bin=hxfirst;bin<=hxlast;bin++) {
4255 if (val > valmax) valmax = val;
4260 if (allcha == 0)
return;
4262 stddev = sumx2/allcha - mean*mean;
4265 if (stddev == 0) stddev = binwidx*(hxlast-hxfirst+1)/4;
4272 Double_t constant = 0.5*(valmax+binwidx*allcha/(sqrtpi*stddev));
4280 if ((mean < xmin || mean > xmax) && stddev > (xmax-xmin)) {
4281 mean = 0.5*(xmax+
xmin);
4282 stddev = 0.5*(xmax-
xmin);
4301 Int_t nchanx = hxlast - hxfirst + 1;
4322 Int_t nchanx = hxlast - hxfirst + 1;
4325 if (nchanx <=1 || npar == 1) {
4348 const Int_t idim = 20;
4359 if (m > idim || m > n)
return;
4362 for (l = 2; l <=
m; ++
l) {
4364 b[m + l*20 - 21] = zero;
4371 for (k = hxfirst; k <= hxlast; ++k) {
4376 for (l = 2; l <=
m; ++
l) {
4379 da[l-1] += power*yk;
4381 for (l = 2; l <=
m; ++
l) {
4383 b[m + l*20 - 21] += power;
4386 for (i = 3; i <=
m; ++i) {
4387 for (k = i; k <=
m; ++k) {
4388 b[k - 1 + (i-1)*20 - 21] = b[k + (i-2)*20 - 21];
4393 for (i=0; i<
m; ++i) a[i] = da[i];
4413 xbar = ybar = x2bar = xybar = 0;
4418 for (i = hxfirst; i <= hxlast; ++i) {
4422 if (yk <= 0) yk = 1
e-9;
4431 det = fn*x2bar - xbar*xbar;
4439 a0 = (x2bar*ybar - xbar*xybar) / det;
4440 a1 = (fn*xybar - xbar*ybar) / det;
4451 Int_t a_dim1, a_offset, b_dim1, b_offset;
4453 Int_t im1, jp1, nm1, nmi;
4459 b_offset = b_dim1 + 1;
4462 a_offset = a_dim1 + 1;
4465 if (idim < n)
return;
4468 for (j = 1; j <=
n; ++j) {
4469 if (a[j + j*a_dim1] <= 0) { ifail = -1;
return; }
4470 a[j + j*a_dim1] = one / a[j + j*a_dim1];
4471 if (j == n)
continue;
4473 for (l = jp1; l <=
n; ++
l) {
4474 a[j + l*a_dim1] = a[j + j*a_dim1] * a[l + j*a_dim1];
4475 s1 = -a[l + (j+1)*a_dim1];
4476 for (i = 1; i <= j; ++i) { s1 = a[l + i*a_dim1] * a[i + (j+1)*a_dim1] + s1; }
4477 a[l + (j+1)*a_dim1] = -s1;
4482 for (l = 1; l <= k; ++
l) {
4483 b[l*b_dim1 + 1] = a[a_dim1 + 1]*b[l*b_dim1 + 1];
4486 for (l = 1; l <= k; ++
l) {
4487 for (i = 2; i <=
n; ++i) {
4489 s21 = -b[i + l*b_dim1];
4490 for (j = 1; j <= im1; ++j) {
4491 s21 = a[i + j*a_dim1]*b[j + l*b_dim1] + s21;
4493 b[i + l*b_dim1] = -a[i + i*a_dim1]*s21;
4496 for (i = 1; i <= nm1; ++i) {
4498 s22 = -b[nmi + l*b_dim1];
4499 for (j = 1; j <= i; ++j) {
4501 s22 = a[nmi + nmjp1*a_dim1]*b[nmjp1 + l*b_dim1] + s22;
4503 b[nmi + l*b_dim1] = -s22;
4541 if (binx < 0) binx = 0;
4542 if (binx > ofx) binx = ofx;
4557 binx = binglobal%
nx;
4563 binx = binglobal%
nx;
4564 biny = ((binglobal-binx)/nx)%
ny;
4569 binx = binglobal%
nx;
4570 biny = ((binglobal-binx)/nx)%
ny;
4571 binz = ((binglobal-binx)/nx -biny)/
ny;
4588 Error(
"GetRandom",
"Function only valid for 1-d histograms");
4598 integral = ((
TH1*)
this)->ComputeIntegral(
true);
4600 if (integral == 0)
return 0;
4639 if (bin < 0) bin = 0;
4640 if (bin >= fNcells) bin = fNcells-1;
4665 Error(
"GetBinWithContent",
"function is only valid for 1-D histograms");
4671 if (firstx <= 0) firstx = 1;
4675 for (
Int_t i=firstx;i<=lastx;i++) {
4677 if (diff <= 0) {binx = i;
return diff;}
4678 if (diff < curmax && diff <= maxdiff) {curmax = diff, binminx=i;}
4713 return y0 + (x-x0)*((y1-y0)/(x1-x0));
4722 Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
4731 Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
4762 Error(
"IsBinOverflow",
"Invalid axis value");
4779 return (binx <= 0 || biny <= 0);
4781 return (binx <= 0 || biny <= 0 || binz <= 0);
4792 Error(
"IsBinUnderflow",
"Invalid axis value");
4809 Error(
"LabelsDeflate",
"Invalid axis option %s",ax);
4820 while ((obj = next())) {
4822 if (ibin > nbins) nbins = ibin;
4824 if (nbins < 1) nbins = 1;
4827 if (nbins==axis->
GetNbins())
return;
4829 TH1 *hold = (
TH1*)IsA()->New();
4837 if (xmax <= xmin) xmax = xmin +
nbins;
4839 axis->
Set(nbins,xmin,xmax);
4852 Int_t bin,binx,biny,binz;
4853 for (bin=0; bin < hold->
fNcells; ++bin) {
4880 TH1 *hold = (
TH1*)IsA()->New();;
4888 xmax = xmin + 2*(xmax-
xmin);
4891 axis->
Set(2*nbins,xmin,xmax);
4901 Int_t bin,ibin,binx,biny,binz;
4902 for (ibin =0; ibin < hold->
fNcells; ibin++) {
4905 bin =
GetBin(binx,biny,binz);
4942 Warning(
"LabelsOption",
"Cannot sort. No labels");
4975 if (sort < 0)
return;
4977 Error(
"LabelsOption",
"Sorting by value not implemented for 3-D histograms");
4983 std::vector<Int_t>
a(n+2);
4986 std::vector<Double_t> cont;
4987 std::vector<Double_t> errors;
4989 TIter nextold(labels);
4991 while ((obj=nextold())) {
5000 for (i=1;i<=
n;i++) {
5002 if (!errors.empty()) errors[i-1] =
GetBinError(i);
5006 for (i=1;i<=
n;i++) {
5008 if (!errors.empty())
SetBinError(i,errors[a[i-1]]);
5010 for (i=1;i<=
n;i++) {
5011 obj = labold->
At(a[i-1]);
5016 std::vector<Double_t> pcont(n+2);
5019 cont.resize( (nx+2)*(ny+2));
5020 if (
fSumw2.
fN) errors.resize( (nx+2)*(ny+2));
5021 for (i=1;i<=
nx;i++) {
5022 for (j=1;j<=
ny;j++) {
5024 if (!errors.empty()) errors[i+nx*j] =
GetBinError(i,j);
5027 pcont[k-1] += cont[i+nx*j];
5033 obj = labold->
At(a[i]);
5038 for (i=1;i<=
n;i++) {
5039 for (j=1;j<=
ny;j++) {
5041 if (!errors.empty())
SetBinError(i,j,errors[a[i-1]+1+nx*j]);
5047 for (i=1;i<=
nx;i++) {
5048 for (j=1;j<=
n;j++) {
5050 if (!errors.empty())
SetBinError(i,j,errors[i+nx*(a[j-1]+1)]);
5059 const UInt_t kUsed = 1<<18;
5063 for (i=1;i<=
n;i++) {
5064 const char *label =
"zzzzzzzzzzzz";
5065 for (j=1;j<=
n;j++) {
5066 obj = labold->
At(j-1);
5068 if (obj->
TestBit(kUsed))
continue;
5070 if (strcmp(label,obj->
GetName()) < 0)
continue;
5081 for (i=1;i<=
n;i++) {
5082 obj = labels->
At(i-1);
5090 for (i=1;i<=
n;i++) {
5092 if (!errors.empty()) errors[i] =
GetBinError(a[i]);
5094 for (i=1;i<=
n;i++) {
5102 if (
fSumw2.
fN) errors.resize(nx*ny);
5103 for (i=0;i<
nx;i++) {
5104 for (j=0;j<
ny;j++) {
5106 if (!errors.empty()) errors[i+nx*j] =
GetBinError(i,j);
5110 for (i=1;i<=
n;i++) {
5111 for (j=0;j<
ny;j++) {
5113 if (!errors.empty())
SetBinError(i,j,errors[a[i]+nx*j]);
5117 for (i=0;i<
nx;i++) {
5118 for (j=1;j<=
n;j++) {
5120 if (!errors.empty())
SetBinError(i,j,errors[i+nx*a[j]]);
5128 cont.resize(nx*ny*nz);
5129 if (
fSumw2.
fN) errors.resize(nx*ny*nz);
5130 for (i=0;i<
nx;i++) {
5131 for (j=0;j<
ny;j++) {
5132 for (k=0;k<nz;k++) {
5134 if (!errors.empty()) errors[i+nx*(j+ny*k)] =
GetBinError(i,j,k);
5140 for (i=1;i<=
n;i++) {
5141 for (j=0;j<
ny;j++) {
5142 for (k=0;k<nz;k++) {
5144 if (!errors.empty())
SetBinError(i,j,k,errors[a[i]+nx*(j+ny*k)]);
5151 for (i=0;i<
nx;i++) {
5152 for (j=1;j<=
n;j++) {
5153 for (k=0;k<nz;k++) {
5155 if (!errors.empty())
SetBinError(i,j,k,errors[i+nx*(a[j]+ny*k)]);
5162 for (i=0;i<
nx;i++) {
5163 for (j=0;j<
ny;j++) {
5164 for (k=1;k<=
n;k++) {
5166 if (!errors.empty())
SetBinError(i,j,k,errors[i+nx*(j+ny*a[k])]);
5202 bool isEquidistant =
true;
5204 for (
int i = 1; i < axis.
GetNbins(); ++i) {
5207 isEquidistant &= match;
5211 return isEquidistant;
5238 if (width1 == 0 || width2 == 0)
5269 delta = (xmax - destAxis.
GetXmax())/width1;
5274 delta = (xmax - anAxis.
GetXmax())/width2;
5279 delta = (xmax - destAxis.
GetXmax())/width1;
5284 printf(
"TH1::RecomputeAxisLimits - Impossible\n");
5364 Error(
"Add",
"Attempt to multiply by a non-existing function");
5386 for (
Int_t binz = 0; binz < nz; ++binz) {
5388 for (
Int_t biny = 0; biny <
ny; ++biny) {
5390 for (
Int_t binx = 0; binx <
nx; ++binx) {
5394 Int_t bin = binx + nx * (biny + ny *binz);
5426 Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
5435 }
catch(DifferentNumberOfBins&) {
5436 Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
5438 }
catch(DifferentAxisLimits&) {
5439 Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
5440 }
catch(DifferentBinLimits&) {
5441 Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
5442 }
catch(DifferentLabels&) {
5443 Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
5488 Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
5498 }
catch(DifferentNumberOfBins&) {
5499 Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
5501 }
catch(DifferentAxisLimits&) {
5502 Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
5503 }
catch(DifferentBinLimits&) {
5504 Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
5505 }
catch(DifferentLabels&) {
5506 Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
5607 if ((ngroup <= 0) || (ngroup > nbins)) {
5608 Error(
"Rebin",
"Illegal value of ngroup=%d",ngroup);
5613 Error(
"Rebin",
"Operation valid on 1-D histograms only");
5616 if (!newname && xbins) {
5617 Error(
"Rebin",
"if xbins is specified, newname must be given");
5621 Int_t newbins = nbins/ngroup;
5623 Int_t nbg = nbins/ngroup;
5624 if (nbg*ngroup != nbins) {
5625 Warning(
"Rebin",
"ngroup=%d is not an exact divider of nbins=%d.",ngroup,nbins);
5645 for (bin=0;bin<nbins+2;bin++) oldErrors[bin] =
GetBinError(bin);
5650 Warning(
"Rebin",
"underflow entries will not be used when rebinning");
5651 if (xbins[newbins] >
fXaxis.
GetXmax() && oldBins[nbins+1] != 0 )
5652 Warning(
"Rebin",
"overflow entries will not be used when rebinning");
5658 if ((newname && strlen(newname) > 0) || xbins) {
5668 bool resetStat =
false;
5670 if(!xbins && (newbins*ngroup != nbins)) {
5695 hnew->
SetBins(newbins,xmin,xmax);
5718 Int_t oldbin = startbin;
5720 for (bin = 1;bin<=newbins;bin++) {
5723 Int_t imax = ngroup;
5725 for (i=0;i<ngroup;i++) {
5726 if( (oldbin+i > nbins) ||
5731 binContent += oldBins[oldbin+i];
5732 if (oldErrors) binError += oldErrors[oldbin+i]*oldErrors[oldbin+i];
5742 for (i = 0; i < startbin; ++i) {
5743 binContent += oldBins[i];
5744 if (oldErrors) binError += oldErrors[i]*oldErrors[i];
5751 for (i = oldbin; i <= nbins+1; ++i) {
5752 binContent += oldBins[i];
5753 if (oldErrors) binError += oldErrors[i]*oldErrors[i];
5762 if (!resetStat) hnew->
PutStats(stat);
5764 if (oldErrors)
delete [] oldErrors;
5783 if (xmin >= xmax)
return kFALSE;
5789 while (point < xmin) {
5792 xmin = xmin - range;
5801 while (point >= xmax) {
5804 xmax = xmax + range;
5852 TH1 *hold = (
TH1*)IsA()->New();
5865 if (axis == &
fXaxis) iaxis = 1;
5866 if (axis == &
fYaxis) iaxis = 2;
5867 if (axis == &
fZaxis) iaxis = 3;
5868 bool firstw =
kTRUE;
5869 Int_t binx,biny, binz = 0;
5870 Int_t ix = 0,iy = 0,iz = 0;
5873 for (
Int_t bin = 0; bin < ncells; ++bin) {
5887 if (content == 0)
continue;
5890 Warning(
"ExtendAxis",
"Histogram %s has underflow or overflow in the axis that is extendable" 5891 " their content will be lost",
GetName() );
5940 if (opt.
Contains(
"width"))
Add(
this,
this, c1, -1);
5950 if (ncontours == 0)
return;
5952 for (
Int_t i = 0; i < ncontours; ++i) levels[i] *= c1;
5991 return oldExtendBitMask;
6037 str1 = str1(isc+1, lns);
6038 isc = str1.
Index(
";");
6041 str2.ReplaceAll(
"#semicolon",10,
";",1);
6044 str1 = str1(isc+1, lns);
6045 isc = str1.
Index(
";");
6048 str2.ReplaceAll(
"#semicolon",10,
";",1);
6051 str1 = str1(isc+1, lns);
6077 ::Error(
"SmoothArray",
"Need at least 3 points for smoothing: n = %d",nn);
6084 std::vector<double> yy(nn);
6085 std::vector<double> zz(nn);
6086 std::vector<double> rr(nn);
6088 for (
Int_t pass=0;pass<ntimes;pass++) {
6090 std::copy(xx, xx+nn, zz.begin() );
6092 for (
int noent = 0; noent < 2; ++noent) {
6095 for (
int kk = 0; kk < 3; kk++) {
6096 std::copy(zz.begin(), zz.end(), yy.begin());
6097 int medianType = (kk != 1) ? 3 : 5;
6098 int ifirst = (kk != 1 ) ? 1 : 2;
6099 int ilast = (kk != 1 ) ? nn-1 : nn -2;
6103 for ( ii = ifirst; ii < ilast; ii++) {
6104 assert(ii - ifirst >= 0);
6105 for (
int jj = 0; jj < medianType; jj++) {
6106 hh[jj] = yy[ii - ifirst + jj ];
6115 hh[2] = 3*zz[1] - 2*zz[2];
6120 hh[2] = 3*zz[nn - 2] - 2*zz[nn - 3];
6125 for (ii = 0; ii < 3; ii++) {
6130 for (ii = 0; ii < 3; ii++) {
6131 hh[ii] = yy[nn - 3 + ii];
6138 std::copy ( zz.begin(), zz.end(), yy.begin() );
6141 for (ii = 2; ii < (nn - 2); ii++) {
6142 if (zz[ii - 1] != zz[ii])
continue;
6143 if (zz[ii] != zz[ii + 1])
continue;
6144 hh[0] = zz[ii - 2] - zz[ii];
6145 hh[1] = zz[ii + 2] - zz[ii];
6146 if (hh[0] * hh[1] <= 0)
continue;
6149 yy[ii] = -0.5*zz[ii - 2*jk] + zz[ii]/0.75 + zz[ii + 2*jk] /6.;
6150 yy[ii + jk] = 0.5*(zz[ii + 2*jk] - zz[ii - 2*jk]) + zz[ii];
6155 for (ii = 1; ii < nn - 1; ii++) {
6156 zz[ii] = 0.25*yy[ii - 1] + 0.5*yy[ii] + 0.25*yy[ii + 1];
6159 zz[nn - 1] = yy[nn - 1];
6164 std::copy(zz.begin(), zz.end(), rr.begin());
6167 for (ii = 0; ii <
nn; ii++) {
6168 zz[ii] = xx[ii] - zz[ii];
6176 for (ii = 0; ii <
nn; ii++) {
6177 if (xmin < 0) xx[ii] = rr[ii] + zz[ii];
6179 else xx[ii] =
TMath::Max((rr[ii] + zz[ii]),0.0 );
6195 Error(
"Smooth",
"Smooth only supported for 1-d histograms");
6200 Error(
"Smooth",
"Smooth only supported for histograms with >= 3 bins. Nbins = %d",nbins);
6214 nbins = lastbin - firstbin + 1;
6218 for (i=0;i<
nbins;i++) {
6224 for (i=0;i<
nbins;i++) {
6246 void TH1::Streamer(
TBuffer &b)
6262 while ((obj=next())) {
6268 TNamed::Streamer(b);
6269 TAttLine::Streamer(b);
6270 TAttFill::Streamer(b);
6271 TAttMarker::Streamer(b);
6330 else if (opt.
Contains(
"range")) all = 1;
6331 else if (opt.
Contains(
"base")) all = 2;
6334 Int_t bin, binx, biny, binz;
6335 Int_t firstx=0,lastx=0,firsty=0,lasty=0,firstz=0,lastz=0;
6347 printf(
" Title = %s\n",
GetTitle());
6358 for (binx=firstx;binx<=lastx;binx++) {
6362 if(
fSumw2.
fN) printf(
" fSumw[%d]=%g, x=%g, error=%g\n",binx,w,x,e);
6363 else printf(
" fSumw[%d]=%g, x=%g\n",binx,w,x);
6367 for (biny=firsty;biny<=lasty;biny++) {
6369 for (binx=firstx;binx<=lastx;binx++) {
6374 if(
fSumw2.
fN) printf(
" fSumw[%d][%d]=%g, x=%g, y=%g, error=%g\n",binx,biny,w,x,y,e);
6375 else printf(
" fSumw[%d][%d]=%g, x=%g, y=%g\n",binx,biny,w,x,y);
6380 for (binz=firstz;binz<=lastz;binz++) {
6382 for (biny=firsty;biny<=lasty;biny++) {
6384 for (binx=firstx;binx<=lastx;binx++) {
6385 bin =
GetBin(binx,biny,binz);
6389 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);
6390 else printf(
" fSumw[%d][%d][%d]=%g, x=%g, y=%g, z=%g\n",binx,biny,binz,w,x,y,z);
6448 if (opt ==
"ICES")
return;
6478 static Int_t nxaxis = 0;
6479 static Int_t nyaxis = 0;
6480 static Int_t nzaxis = 0;
6481 TString sxaxis=
"xAxis",syaxis=
"yAxis",szaxis=
"zAxis";
6492 if (i != 0) out <<
", ";
6495 out <<
"}; " << std::endl;
6508 if (i != 0) out <<
", ";
6511 out <<
"}; " << std::endl;
6524 if (i != 0) out <<
", ";
6527 out <<
"}; " << std::endl;
6531 out <<
" "<<std::endl;
6541 static Int_t hcounter = 0;
6548 histName += hcounter;
6551 const char *hname = histName.
Data();
6552 if (!strlen(hname)) hname =
"unnamed";
6555 t.ReplaceAll(
"\\",
"\\\\");
6556 t.ReplaceAll(
"\"",
"\\\"");
6557 out << hname <<
" = new " <<
ClassName() <<
"(" << quote
6558 << hname << quote <<
"," << quote<< t.Data() << quote
6561 out <<
", "<<sxaxis;
6568 out <<
", "<<syaxis;
6576 out <<
", "<<szaxis;
6581 out <<
");" << std::endl;
6585 for (bin=0;bin<
fNcells;bin++) {
6588 out<<
" "<<hname<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
6594 for (bin=0;bin<
fNcells;bin++) {
6597 out<<
" "<<hname<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
6613 out<<
" "<<hname<<
"->SetBarOffset("<<
GetBarOffset()<<
");"<<std::endl;
6616 out<<
" "<<hname<<
"->SetBarWidth("<<
GetBarWidth()<<
");"<<std::endl;
6619 out<<
" "<<hname<<
"->SetMinimum("<<
fMinimum<<
");"<<std::endl;
6622 out<<
" "<<hname<<
"->SetMaximum("<<
fMaximum<<
");"<<std::endl;
6625 out<<
" "<<hname<<
"->SetNormFactor("<<
fNormFactor<<
");"<<std::endl;
6628 out<<
" "<<hname<<
"->SetEntries("<<
fEntries<<
");"<<std::endl;
6631 out<<
" "<<hname<<
"->SetDirectory(0);"<<std::endl;
6634 out<<
" "<<hname<<
"->SetStats(0);"<<std::endl;
6637 out<<
" "<<hname<<
"->SetOption("<<quote<<
fOption.
Data()<<quote<<
");"<<std::endl;
6642 if (ncontours > 0) {
6643 out<<
" "<<hname<<
"->SetContour("<<ncontours<<
");"<<std::endl;
6645 for (
Int_t bin=0;bin<ncontours;bin++) {
6646 if (
gPad->GetLogz()) {
6651 out<<
" "<<hname<<
"->SetContourLevel("<<bin<<
","<<zlevel<<
");"<<std::endl;
6658 static Int_t funcNumber = 0;
6663 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(" 6664 <<
Form(
"%s%d",obj->
GetName(),funcNumber)<<
");"<<std::endl;
6666 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(ptstats);"<<std::endl;
6667 out<<
" ptstats->SetParent("<<hname<<
");"<<std::endl;
6669 out<<
" "<<hname<<
"->GetListOfFunctions()->Add(" 6671 <<
","<<quote<<lnk->
GetOption()<<quote<<
");"<<std::endl;
6686 out<<
" "<<hname<<
"->Draw(" 6687 <<quote<<option<<quote<<
");"<<std::endl;
6730 while ((obj = next())) {
6760 if (axis<1 || (axis>3 && axis<11) || axis>13)
return 0;
6764 if (stats[0] == 0)
return 0;
6766 Int_t ax[3] = {2,4,7};
6767 return stats[ax[axis-1]]/stats[0];
6772 return ( neff > 0 ? stddev/
TMath::Sqrt(neff) : 0. );
6814 if (axis<1 || (axis>3 && axis<11) || axis>13)
return 0;
6819 if (stats[0] == 0)
return 0;
6820 Int_t ax[3] = {2,4,7};
6821 Int_t axm = ax[axis%10 - 1];
6822 x = stats[axm]/stats[0];
6823 stddev2 =
TMath::Abs(stats[axm+1]/stats[0] -x*x);
6830 return ( neff > 0 ?
TMath::Sqrt(stddev2/(2*neff) ) : 0. );
6866 if (axis > 0 && axis <= 3){
6870 Double_t stddev3 = stddev*stddev*stddev;
6881 if (firstBinX == 1) firstBinX = 0;
6885 if (firstBinY == 1) firstBinY = 0;
6889 if (firstBinZ == 1) firstBinZ = 0;
6897 for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
6898 for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
6899 for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
6905 sum+=w*(x-mean)*(x-mean)*(x-mean);
6912 else if (axis > 10 && axis <= 13) {
6919 Error(
"GetSkewness",
"illegal value of parameter");
6935 if (axis > 0 && axis <= 3){
6939 Double_t stddev4 = stddev*stddev*stddev*stddev;
6950 if (firstBinX == 1) firstBinX = 0;
6954 if (firstBinY == 1) firstBinY = 0;
6958 if (firstBinZ == 1) firstBinZ = 0;
6966 for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
6967 for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
6968 for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
6974 sum+=w*(x-mean)*(x-mean)*(x-mean)*(x-mean);
6981 }
else if (axis > 10 && axis <= 13) {
6985 return ( neff > 0 ?
TMath::Sqrt(24./neff ) : 0. );
6988 Error(
"GetKurtosis",
"illegal value of parameter");
7033 for (bin=0;bin<4;bin++) stats[bin] = 0;
7039 if (firstBinX == 1) firstBinX = 0;
7042 for (binx = firstBinX; binx <= lastBinX; binx++) {
7049 stats[1] += err*err;
7102 Int_t bin,binx,biny,binz;
7107 bin =
GetBin(binx,biny,binz);
7137 return DoIntegral(binx1,binx2,0,-1,0,-1,err,option);
7164 if (binx1 < 0) binx1 = 0;
7165 if (binx2 >= nx || binx2 < binx1) binx2 = nx - 1;
7169 if (biny1 < 0) biny1 = 0;
7170 if (biny2 >= ny || biny2 < biny1) biny2 = ny - 1;
7172 biny1 = 0; biny2 = 0;
7177 if (binz1 < 0) binz1 = 0;
7178 if (binz2 >= nz || binz2 < binz1) binz2 = nz - 1;
7180 binz1 = 0; binz2 = 0;
7193 for (
Int_t binx = binx1; binx <= binx2; ++binx) {
7195 for (
Int_t biny = biny1; biny <= biny2; ++biny) {
7197 for (
Int_t binz = binz1; binz <= binz2; ++binz) {
7250 printf(
" AndersonDarlingTest Prob = %g, AD TestStatistic = %g\n",pvalue,advalue);
7252 if (opt.
Contains(
"T") )
return advalue;
7263 Error(
"AndersonDarlingTest",
"Histograms must be 1-D");
7364 if (h2 == 0)
return 0;
7372 Error(
"KolmogorovTest",
"Histograms must be 1-D\n");
7378 Error(
"KolmogorovTest",
"Number of channels is different, %d and %d\n",ncx1,ncx2);
7389 if (diff1 > difprec || diff2 > difprec) {
7390 Error(
"KolmogorovTest",
"histograms with different binning");
7403 if (opt.
Contains(
"O")) ilast = ncx1 +1;
7404 for (bin = ifirst; bin <= ilast; bin++) {
7413 Error(
"KolmogorovTest",
"Histogram1 %s integral is zero\n",h1->
GetName());
7417 Error(
"KolmogorovTest",
"Histogram2 %s integral is zero\n",h2->
GetName());
7426 esum1 = sum1 * sum1 / w1;
7431 esum2 = sum2 * sum2 / w2;
7435 if (afunc2 && afunc1) {
7436 Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
7445 Double_t dfmax =0, rsum1 = 0, rsum2 = 0;
7447 for (bin=ifirst;bin<=ilast;bin++) {
7469 if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
7473 Double_t chi2 = d12*d12/(esum1+esum2);
7476 if (prob > 0 && prb2 > 0) prob *= prb2*(1-
TMath::Log(prob*prb2));
7480 const Int_t nEXPT = 1000;
7481 if (opt.
Contains(
"X") && !(afunc1 || afunc2 ) ) {
7486 for (
Int_t i=0; i < nEXPT; i++) {
7490 if (dSEXPT>dfmax) prb3 += 1.0;
7498 printf(
" Kolmo Prob h1 = %s, sum bin content =%g effective entries =%g\n",h1->
GetName(),sum1,esum1);
7499 printf(
" Kolmo Prob h2 = %s, sum bin content =%g effective entries =%g\n",h2->
GetName(),sum2,esum2);
7500 printf(
" Kolmo Prob = %g, Max Dist = %g\n",prob,dfmax);
7502 printf(
" Kolmo Prob = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
7504 printf(
" Kolmo Prob = %f with %d pseudo-experiments\n",prb3,nEXPT);
7510 if(opt.
Contains(
"M"))
return dfmax;
7511 else if(opt.
Contains(
"X"))
return prb3;
7569 if (zlevel <= 0)
return 0;
7585 if (buffersize <= 0) {
7589 if (buffersize < 100) buffersize = 100;
7616 for (level=0; level<nlevels; level++)
fContour.
fArray[level] = levels[level];
7621 if ((zmin == zmax) && (zmin != 0)) {
7627 if (zmax <= 0)
return;
7628 if (zmin <= 0) zmin = 0.001*zmax;
7631 dz = (zmax-zmin)/
Double_t(nlevels);
7633 for (level=0; level<nlevels; level++) {
7669 Int_t bin, binx, biny, binz;
7676 Double_t maximum = -FLT_MAX, value;
7677 for (binz=zfirst;binz<=zlast;binz++) {
7678 for (biny=yfirst;biny<=ylast;biny++) {
7679 for (binx=xfirst;binx<=xlast;binx++) {
7680 bin =
GetBin(binx,biny,binz);
7682 if (value > maximum && value < maxval) maximum = value;
7706 Int_t bin, binx, biny, binz;
7714 Double_t maximum = -FLT_MAX, value;
7715 locm = locmax = locmay = locmaz = 0;
7716 for (binz=zfirst;binz<=zlast;binz++) {
7717 for (biny=yfirst;biny<=ylast;biny++) {
7718 for (binx=xfirst;binx<=xlast;binx++) {
7719 bin =
GetBin(binx,biny,binz);
7721 if (value > maximum) {
7754 Int_t bin, binx, biny, binz;
7762 for (binz=zfirst;binz<=zlast;binz++) {
7763 for (biny=yfirst;biny<=ylast;biny++) {
7764 for (binx=xfirst;binx<=xlast;binx++) {
7765 bin =
GetBin(binx,biny,binz);
7767 if (value < minimum && value > minval) minimum = value;
7791 Int_t bin, binx, biny, binz;
7800 locm = locmix = locmiy = locmiz = 0;
7801 for (binz=zfirst;binz<=zlast;binz++) {
7802 for (biny=yfirst;biny<=ylast;biny++) {
7803 for (binx=xfirst;binx<=xlast;binx++) {
7804 bin =
GetBin(binx,biny,binz);
7806 if (value < minimum) {
7848 Int_t bin, binx, biny, binz;
7858 for (binz=zfirst;binz<=zlast;binz++) {
7859 for (biny=yfirst;biny<=ylast;biny++) {
7860 for (binx=xfirst;binx<=xlast;binx++) {
7861 bin =
GetBin(binx,biny,binz);
7863 if (value < min) min = value;
7864 if (value > max) max = value;
7882 Error(
"SetBins",
"Operation only valid for 1-d histograms");
7909 Error(
"SetBins",
"Operation only valid for 1-d histograms");
7935 Error(
"SetBins",
"Operation only valid for 2-D histograms");
7943 fNcells = (nx+2)*(ny+2);
7963 Error(
"SetBins",
"Operation only valid for 2-D histograms");
7971 fNcells = (nx+2)*(ny+2);
7990 Error(
"SetBins",
"Operation only valid for 3-D histograms");
7999 fNcells = (nx+2)*(ny+2)*(nz+2);
8020 Error(
"SetBins",
"Operation only valid for 3-D histograms");
8029 fNcells = (nx+2)*(ny+2)*(nz+2);
8138 Warning(
"Sumw2",
"Sum of squares of weights structure already created");
8173 if (bin < 0) bin = 0;
8174 if (bin >= fNcells) bin = fNcells-1;
8193 if (bin < 0) bin = 0;
8194 if (bin >= fNcells) bin = fNcells-1;
8203 Warning(
"GetBinErrorLow",
"Histogram has negative bin content-force usage to normal errors");
8208 if (n == 0)
return 0;
8223 if (bin < 0) bin = 0;
8224 if (bin >= fNcells) bin = fNcells-1;
8233 Warning(
"GetBinErrorUp",
"Histogram has negative bin content-force usage to normal errors");
8252 Error(
"GetBinCenter",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8263 Error(
"GetBinLowEdge",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8274 Error(
"GetBinWidth",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
8301 Error(
"GetLowEdge",
"Invalid method for a %d-d histogram ",
fDimension);
8310 if (bin < 0 || bin>=
fSumw2.
fN)
return;
8325 if (bin < 0)
return;
8326 if (bin >= fNcells-1) {
8389 return (
TH1*)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticBackground((TH1*)0x%lx,%d,\"%s\")",
8390 (
ULong_t)
this, niter, option));
8403 return (
Int_t)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticSearch((TH1*)0x%lx,%g,\"%s\",%g)",
8404 (
ULong_t)
this, sigma, option, threshold));
8422 ::Error(
"TransformHisto",
"Invalid FFT transform class");
8427 ::Error(
"TransformHisto",
"Only 1d and 2D transform are supported");
8441 hout =
new TH1D(name, name,n[0], 0, n[0]);
8443 hout =
new TH2D(name, name, n[0], 0, n[0], n[1], 0, n[1]);
8451 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8452 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8453 ind[0] = binx-1; ind[1] = biny-1;
8459 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8460 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8461 ind[0] = binx-1; ind[1] = biny-1;
8470 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8471 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8472 ind[0] = binx-1; ind[1] = biny-1;
8478 ::Error(
"TransformHisto",
"No complex numbers in the output");
8485 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8486 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8487 ind[0] = binx-1; ind[1] = biny-1;
8493 for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
8494 for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
8495 ind[0] = binx-1; ind[1] = biny-1;
8504 for (binx = 1; binx<=hout->
GetNbinsX(); binx++){
8505 for (biny=1; biny<=hout->
GetNbinsY(); biny++){
8506 ind[0] = binx-1; ind[1] = biny-1;
8527 printf(
"Pure real output, no phase");
8558 std::ostringstream strm;
8577 if (fgDefaultSumw2) Sumw2();
8585 :
TH1(name,title,nbins,xlow,xup)
8590 if (xlow >= xup) SetBuffer(fgBufferSize);
8591 if (fgDefaultSumw2) Sumw2();
8599 :
TH1(name,title,nbins,xbins)
8603 if (fgDefaultSumw2) Sumw2();
8611 :
TH1(name,title,nbins,xbins)
8615 if (fgDefaultSumw2) Sumw2();
8647 if (newval > -128 && newval < 128) {
fArray[bin] =
Char_t(newval);
return;}
8648 if (newval < -127)
fArray[bin] = -127;
8649 if (newval > 127)
fArray[bin] = 127;
8758 if (fgDefaultSumw2) Sumw2();
8766 :
TH1(name,title,nbins,xlow,xup)
8771 if (xlow >= xup) SetBuffer(fgBufferSize);
8772 if (fgDefaultSumw2) Sumw2();
8780 :
TH1(name,title,nbins,xbins)
8784 if (fgDefaultSumw2) Sumw2();
8792 :
TH1(name,title,nbins,xbins)
8796 if (fgDefaultSumw2) Sumw2();
8828 if (newval > -32768 && newval < 32768) {
fArray[bin] =
Short_t(newval);
return;}
8829 if (newval < -32767)
fArray[bin] = -32767;
8830 if (newval > 32767)
fArray[bin] = 32767;
8939 if (fgDefaultSumw2) Sumw2();
8947 :
TH1(name,title,nbins,xlow,xup)
8952 if (xlow >= xup) SetBuffer(fgBufferSize);
8953 if (fgDefaultSumw2) Sumw2();
8961 :
TH1(name,title,nbins,xbins)
8965 if (fgDefaultSumw2) Sumw2();
8973 :
TH1(name,title,nbins,xbins)
8977 if (fgDefaultSumw2) Sumw2();
9009 if (newval > -2147483647 && newval < 2147483647) {
fArray[bin] =
Int_t(newval);
return;}
9010 if (newval < -2147483647)
fArray[bin] = -2147483647;
9011 if (newval > 2147483647)
fArray[bin] = 2147483647;
9121 if (fgDefaultSumw2) Sumw2();
9129 :
TH1(name,title,nbins,xlow,xup)
9134 if (xlow >= xup) SetBuffer(fgBufferSize);
9135 if (fgDefaultSumw2) Sumw2();
9143 :
TH1(name,title,nbins,xbins)
9147 if (fgDefaultSumw2) Sumw2();
9155 :
TH1(name,title,nbins,xbins)
9159 if (fgDefaultSumw2) Sumw2();
9172 for (
Int_t i=0;i<fNcells-2;i++) {
9173 SetBinContent(i+1,
v(i+ivlow));
9176 if (fgDefaultSumw2) Sumw2();
9300 if (fgDefaultSumw2) Sumw2();
9308 :
TH1(name,title,nbins,xlow,xup)
9313 if (xlow >= xup) SetBuffer(fgBufferSize);
9314 if (fgDefaultSumw2) Sumw2();
9322 :
TH1(name,title,nbins,xbins)
9326 if (fgDefaultSumw2) Sumw2();
9334 :
TH1(name,title,nbins,xbins)
9338 if (fgDefaultSumw2) Sumw2();
9351 for (
Int_t i=0;i<fNcells-2;i++) {
9352 SetBinContent(i+1,
v(i+ivlow));
9355 if (fgDefaultSumw2) Sumw2();
9473 if(hid >= 0) hname.
Form(
"h%d",hid);
9474 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 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 Set(Int_t n)=0
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...
Bool_t TestBit(UInt_t f) const
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.
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
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.
tomato 1-D histogram with a float per channel (see TH1 documentation)}
tomato 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).
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.
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.
friend TH1D operator+(const TH1D &h1, const TH1D &h2)
Operator +.
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.
friend TH1S operator-(const TH1S &h1, const TH1S &h2)
Operator -.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
Width_t GetHistLineWidth() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
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.
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.
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.
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.
TArrayD fContour
Array to display contour levels.
virtual void SetBinError(Int_t bin, Double_t error)
See convention for numbering bins in TH1::GetBin.
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
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 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.
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.
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)
tomato 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).
unsigned int r1[N_CITIES]
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 ...
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
NOTE: Must always be 0 !!!
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
Bin contents are average (used by Add)
Double_t * fIntegral
!Integral of bins used by GetRandom
friend TH1F operator*(Double_t c1, const TH1F &h1)
Operator *.
static bool CheckConsistency(const TH1 *h1, const TH1 *h2)
Check histogram compatibility.
void SetName(const char *name)
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
tomato 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.
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)
#define R__LOCKGUARD2(mutex)
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
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.
user specified contour levels
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.
Double_t Median(Long64_t n, const T *a, const Double_t *w=0, Long64_t *work=0)
double func(double *x, double *p)
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
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 /.
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
double f2(const double *x)
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)
tomato 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.
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
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
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 TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
double norm(double *x, double *p)
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)
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.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual const char * GetTitle() const
Returns title of object.
virtual Int_t GetNbinsY() const
virtual 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)
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".