539 class DifferentDimension: 
public std::exception {};
   540 class DifferentNumberOfBins: 
public std::exception {};
   541 class DifferentAxisLimits: 
public std::exception {};
   542 class DifferentBinLimits: 
public std::exception {};
   543 class DifferentLabels: 
public std::exception {};
   643    if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
   665    if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
   687    if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
   754          fFunctions->UseRWLock();
   780       Error(
"Add",
"Attempt to add a non-existing function");
   800    for (
Int_t i = 0; i < 10; ++i) s1[i] = 0;
   806    Int_t bin, binx, biny, binz;
   811    for (binz = 0; binz < ncellsz; ++binz) {
   813       for (biny = 0; biny < ncellsy; ++biny) {
   815          for (binx = 0; binx < ncellsx; ++binx) {
   819             bin = binx + ncellsx * (biny + ncellsy * binz);
   865       Error(
"Add",
"Attempt to add a non-existing histogram");
   876    } 
catch(DifferentNumberOfBins&) {
   878          Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
   880          Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 =  %d",
GetNbinsX(), h1->
GetNbinsX());
   883    } 
catch(DifferentAxisLimits&) {
   885          Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
   887          Warning(
"Add",
"Attempt to add histograms with different axis limits");
   888    } 
catch(DifferentBinLimits&) {
   890          Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
   892          Warning(
"Add",
"Attempt to add histograms with different bin limits");
   893    } 
catch(DifferentLabels&) {
   896          Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
   898          Info(
"Warning",
"Attempt to add histograms with different labels");
   903       l.
Add(const_cast<TH1*>(h1));
   904       auto iret = 
Merge(&l);
   916    Bool_t resetStats = (c1 < 0);
   946          if (e1sq) w1 = 1. / e1sq;
   951                double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
   955          if (e2sq) w2 = 1. / e2sq;
   960                double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
   965          double y =  (w1*y1 + w2*y2)/(w1 + w2);
   968             double err2 =  1./(w1 + w2);
   969             if (err2 < 1.
E-200) err2 = 0;  
   985          if (i == 1) s1[i] += c1*c1*s2[i];
   986          else        s1[i] += c1*s2[i];
  1027       Error(
"Add",
"Attempt to add a non-existing histogram");
  1035    if (h1 == h2 && c2 < 0) {c2 = 0; normWidth = 
kTRUE;}
  1044       } 
catch(DifferentNumberOfBins&) {
  1046             Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
  1048             Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 =  %d",
GetNbinsX(), h1->
GetNbinsX());
  1051       } 
catch(DifferentAxisLimits&) {
  1053             Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
  1055             Warning(
"Add",
"Attempt to add histograms with different axis limits");
  1056       } 
catch(DifferentBinLimits&) {
  1058             Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
  1060             Warning(
"Add",
"Attempt to add histograms with different bin limits");
  1061       } 
catch(DifferentLabels&) {
  1064             Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
  1066             Info(
"Warning",
"Attempt to add histograms with different labels");
  1072          l.
Add(const_cast<TH1*>(h1));
  1073          l.
Add(const_cast<TH1*>(h2));
  1075          auto iret = 
Merge(&l);
  1095    Bool_t resetStats = (c1*c2 < 0) || normWidth;
  1102          if (i == 1) s3[i] = c1*c1*s1[i] + c2*c2*s2[i];
  1104          else        s3[i] = c1*s1[i] + c2*s2[i];
  1120       Int_t bin, binx, biny, binz;
  1121       for (binz = 0; binz < nbinsz; ++binz) {
  1123          for (biny = 0; biny < nbinsy; ++biny) {
  1125             for (binx = 0; binx < nbinsx; ++binx) {
  1127                bin = 
GetBin(binx, biny, binz);
  1148          if (e1sq) w1 = 1./ e1sq;
  1152                double sf = (s1[0] != 0) ? s1[1]/s1[0] : 1;
  1156          if (e2sq) w2 = 1./ e2sq;
  1160                double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
  1165          double y =  (w1*y1 + w2*y2)/(w1 + w2);
  1168             double err2 =  1./(w1 + w2);
  1169             if (err2 < 1.
E-200) err2 = 0;  
  1243    return ((next && x > 0.) || (!next && x <= 0.)) ? 
std::ldexp(std::copysign(1., f2), nn)
  1298    Double_t rr = (xhma - xhmi) / (xma - xmi);
  1308    Int_t nbup = (xhma - xma) / bw;
  1311    if (nbup != nbside) {
  1313       xhma -= bw * (nbup - nbside);
  1314       nb -= (nbup - nbside);
  1318    Int_t nblw = (xmi - xhmi) / bw;
  1321    if (nblw != nbside) {
  1323       xhmi += bw * (nblw - nbside);
  1324       nb -= (nblw - nbside);
  1354    if (nbentries == 0) {
  1364    if (nbentries < 0 && action == 0) 
return 0;    
  1367    if (nbentries < 0) {
  1368       nbentries  = -nbentries;
  1380       for (
Int_t i=1;i<nbentries;i++) {
  1382          if (x < xmin) xmin = 
x;
  1383          if (x > xmax) xmax = 
x;
  1390                        "incosistency found by power-of-2 autobin algorithm: fallback to standard method");
  1408    DoFillN(nbentries,&buffer[2],&buffer[1],2);
  1442    if (nbentries < 0) {
  1445       nbentries  = -nbentries;
  1477       if ( h2Array->
fN != fN ) {
  1478          throw DifferentBinLimits();
  1482          for ( 
int i = 0; i < fN; ++i ) {
  1484                throw DifferentBinLimits();
  1505       throw DifferentLabels();
  1510       throw DifferentLabels();
  1513    for (
int i = 1; i <= a1->
GetNbins(); ++i) {
  1516       if (label1 != label2) {
  1517          throw DifferentLabels();
  1533       throw DifferentAxisLimits();
  1546       ::Info(
"CheckEqualAxes",
"Axes have different number of bins : nbin1 = %d nbin2 = %d",a1->
GetNbins(),a2->
GetNbins() );
  1551    } 
catch (DifferentAxisLimits&) {
  1552       ::Info(
"CheckEqualAxes",
"Axes have different limits");
  1557    } 
catch (DifferentBinLimits&) {
  1558       ::Info(
"CheckEqualAxes",
"Axes have different bin limits");
  1565    } 
catch (DifferentLabels&) {
  1566       ::Info(
"CheckEqualAxes",
"Axes have different labels");
  1581    Int_t nbins1   = lastBin1-firstBin1 + 1;
  1589    if (firstBin2 <  lastBin2) {
  1591       nbins2   = lastBin1-firstBin1 + 1;
  1596    if (nbins1 != nbins2 ) {
  1597       ::Info(
"CheckConsistentSubAxes",
"Axes have different number of bins");
  1603       ::Info(
"CheckConsistentSubAxes",
"Axes have different limits");
  1615    if (h1 == h2) 
return true;
  1618       throw DifferentDimension();
  1630        (dim > 1 && nbinsy != h2->
GetNbinsY())  ||
  1631        (dim > 2 && nbinsz != h2->
GetNbinsZ()) ) {
  1632       throw DifferentNumberOfBins();
  1948    Int_t ndf = 0, igood = 0;
  1956       printf(
"Chi2 = %f, Prob = %g, NDF = %d, igood = %d\n", chi2,prob,ndf,igood);
  1959       if (ndf == 0) 
return 0;
  2007    Int_t i_start, i_end;
  2008    Int_t j_start, j_end;
  2009    Int_t k_start, k_end;
  2038       Error(
"Chi2TestX",
"Histograms have different dimensions.");
  2043    if (nbinx1 != nbinx2) {
  2044       Error(
"Chi2TestX",
"different number of x channels");
  2046    if (nbiny1 != nbiny2) {
  2047       Error(
"Chi2TestX",
"different number of y channels");
  2049    if (nbinz1 != nbinz2) {
  2050       Error(
"Chi2TestX",
"different number of z channels");
  2054    i_start = j_start = k_start = 1;
  2085    ndf = (i_end - i_start + 1) * (j_end - j_start + 1) * (k_end - k_start + 1) - 1;
  2092    if (scaledHistogram && !comparisonUU) {
  2093       Info(
"Chi2TestX", 
"NORM option should be used together with UU option. It is ignored");
  2100    Double_t effEntries1 = (s[1] ? s[0] * s[0] / s[1] : 0.0);
  2104    Double_t effEntries2 = (s[1] ? s[0] * s[0] / s[1] : 0.0);
  2106    if (!comparisonUU && !comparisonUW && !comparisonWW ) {
  2108       if (
TMath::Abs(sumBinContent1 - effEntries1) < 1) {
  2109          if ( 
TMath::Abs(sumBinContent2 - effEntries2) < 1) comparisonUU = 
true;
  2110          else comparisonUW = 
true;
  2112       else comparisonWW = 
true;
  2116       if (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) {
  2117          Warning(
"Chi2TestX",
"First histogram is not unweighted and option UW has been requested");
  2120    if ( (!scaledHistogram && comparisonUU)   ) {
  2121       if ( ( 
TMath::Abs(sumBinContent1 - effEntries1) >= 1) || (
TMath::Abs(sumBinContent2 - effEntries2) >= 1) ) {
  2122          Warning(
"Chi2TestX",
"Both histograms are not unweighted and option UU has been requested");
  2128    if (comparisonUU && scaledHistogram) {
  2129       for (
Int_t i = i_start; i <= i_end; ++i) {
  2130          for (
Int_t j = j_start; j <= j_end; ++j) {
  2131             for (
Int_t k = k_start; k <= k_end; ++k) {
  2140                if (e1sq > 0.0) cnt1 = 
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5); 
  2143                if (e2sq > 0.0) cnt2 = 
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5); 
  2154       if (sumw1 <= 0.0 || sumw2 <= 0.0) {
  2155          Error(
"Chi2TestX", 
"Cannot use option NORM when one histogram has all zero errors");
  2160       for (
Int_t i = i_start; i <= i_end; ++i) {
  2161          for (
Int_t j = j_start; j <= j_end; ++j) {
  2162             for (
Int_t k = k_start; k <= k_end; ++k) {
  2176    if (sum1 == 0.0 || sum2 == 0.0) {
  2177       Error(
"Chi2TestX",
"one histogram is empty");
  2181    if ( comparisonWW  && ( sumw1 <= 0.0 && sumw2 <= 0.0 ) ){
  2182       Error(
"Chi2TestX",
"Hist1 and Hist2 have both all zero errors\n");
  2192       for (
Int_t i = i_start; i <= i_end; ++i) {
  2193          for (
Int_t j = j_start; j <= j_end; ++j) {
  2194             for (
Int_t k = k_start; k <= k_end; ++k) {
  2201                if (scaledHistogram) {
  2206                   if (e1sq > 0) cnt1 = 
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5); 
  2209                   if (e2sq > 0) cnt2 = 
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5); 
  2213                if (
Int_t(cnt1) == 0 && 
Int_t(cnt2) == 0) --ndf;  
  2220                   if (res) res[i - i_start] = (cnt1 - nexp1) / 
TMath::Sqrt(nexp1);
  2226                   Double_t correc = (1. - sum1 / 
sum) * (1. - cntsum / sum);
  2229                   Double_t delta = sum2 * cnt1 - sum1 * cnt2;
  2230                   chi2 += delta * delta / cntsum;
  2235       chi2 /= sum1 * sum2;
  2240          Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
  2244          Info(
"Chi2TestX",
"There is a bin in h2 with less than 1 event.\n");
  2255    if ( comparisonUW ) {
  2256       for (
Int_t i = i_start; i <= i_end; ++i) {
  2257          for (
Int_t j = j_start; j <= j_end; ++j) {
  2258             for (
Int_t k = k_start; k <= k_end; ++k) {
  2267                if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
  2273                if (cnt2 * cnt2 == 0 && e2sq == 0) {
  2277                      e2sq = sumw2 / sum2;
  2282                      Error(
"Chi2TestX",
"Hist2 has in bin (%d,%d,%d) zero content and zero errors\n", i, j, k);
  2288                if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10) 
n++;
  2290                Double_t var1 = sum2 * cnt2 - sum1 * e2sq;
  2291                Double_t var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
  2296                while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
  2299                   var1 = sum2 * cnt2 - sum1 * e2sq;
  2300                   var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
  2304                while (var1 + var2 == 0) {
  2307                   var1 = sum2 * cnt2 - sum1 * e2sq;
  2308                   var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
  2309                   while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
  2312                      var1 = sum2 * cnt2 - sum1 * e2sq;
  2313                      var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
  2318                Double_t probb = (var1 + var2) / (2. * sum2 * sum2);
  2326                chi2 += delta1 * delta1 / nexp1;
  2329                   chi2 += delta2 * delta2 / e2sq;
  2334                      Double_t temp1 = sum2 * e2sq / var2;
  2335                      Double_t temp2 = 1.0 + (sum1 * e2sq - sum2 * cnt2) / var2;
  2336                      temp2 = temp1 * temp1 * sum1 * probb * (1.0 - probb) + temp2 * temp2 * e2sq / 4.0;
  2349          Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
  2353          Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
  2363       for (
Int_t i = i_start; i <= i_end; ++i) {
  2364          for (
Int_t j = j_start; j <= j_end; ++j) {
  2365             for (
Int_t k = k_start; k <= k_end; ++k) {
  2375                 if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
  2380                 if (e1sq == 0 && e2sq == 0) {
  2382                   Error(
"Chi2TestX",
"h1 and h2 both have bin %d,%d,%d with all zero errors\n", i,j,k);
  2387                Double_t delta = sum2 * cnt1 - sum1 * cnt2;
  2388                chi2 += delta * delta / 
sigma;
  2391                   Double_t temp = cnt1 * sum1 * e2sq + cnt2 * sum2 * e1sq;
  2404                   res[i - i_start] = 
z;
  2407                if (e1sq > 0 && cnt1 * cnt1 / e1sq < 10) m++;
  2408                if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10) 
n++;
  2414          Info(
"Chi2TestX",
"There is a bin in h1 with less than 10 effective events.\n");
  2418          Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
  2435       Error(
"Chisquare",
"Function pointer is Null - return -1");
  2481    Int_t nbins  = nbinsx * nbinsy * nbinsz;
  2486    for (
Int_t binz=1; binz <= nbinsz; ++binz) {
  2487       for (
Int_t biny=1; biny <= nbinsy; ++biny) {
  2488          for (
Int_t binx=1; binx <= nbinsx; ++binx) {
  2491             if (onlyPositive && y < 0) {
  2492                  Error(
"ComputeIntegral",
"Bin content is negative - return a NaN value");
  2503       Error(
"ComputeIntegral", 
"Integral = zero"); 
return 0;
  2546    hintegrated->
Reset();
  2549       for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
  2550     for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
  2551        for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
  2552           const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
  2560       for (
Int_t binz = nbinsz; binz >= 1; --binz) {
  2561     for (
Int_t biny = nbinsy; biny >= 1; --biny) {
  2562        for (
Int_t binx = nbinsx; binx >= 1; --binx) {
  2563           const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
  2589       ((
TH1&)obj).fDirectory->Remove(&obj);
  2590       ((
TH1&)obj).fDirectory = 0;
  2604       delete []  ((
TH1&)obj).fBuffer;
  2605       ((
TH1&)obj).fBuffer = 0;
  2611       ((
TH1&)obj).fBuffer    = buf;
  2616    if (a) a->
Set(fNcells);
  2637    ((
TH1&)obj).fXaxis.SetParent(&obj);
  2638    ((
TH1&)obj).fYaxis.SetParent(&obj);
  2639    ((
TH1&)obj).fZaxis.SetParent(&obj);
  2649       ((
TH1&)obj).fFunctions->UseRWLock();
  2652       ((
TH1&)obj).fDirectory = 0;
  2670    if(newname && strlen(newname) ) {
  2725       Error(
"Add",
"Attempt to divide by a non-existing function");
  2743    Int_t bin, binx, biny, binz;
  2748    for (binz = 0; binz < nz; ++binz) {
  2750       for (biny = 0; biny < ny; ++biny) {
  2752          for (binx = 0; binx < nx; ++binx) {
  2756             bin = binx + nx * (biny + ny * binz);
  2793       Error(
"Divide", 
"Input histogram passed does not exist (NULL).");
  2802    } 
catch(DifferentNumberOfBins&) {
  2803       Error(
"Divide",
"Cannot divide histograms with different number of bins");
  2805    } 
catch(DifferentAxisLimits&) {
  2806       Warning(
"Divide",
"Dividing histograms with different axis limits");
  2807    } 
catch(DifferentBinLimits&) {
  2808       Warning(
"Divide",
"Dividing histograms with different bin limits");
  2809    } 
catch(DifferentLabels&) {
  2810       Warning(
"Divide",
"Dividing histograms with different labels");
  2865       Error(
"Divide", 
"At least one of the input histograms passed does not exist (NULL).");
  2875    } 
catch(DifferentNumberOfBins&) {
  2876       Error(
"Divide",
"Cannot divide histograms with different number of bins");
  2878    } 
catch(DifferentAxisLimits&) {
  2879       Warning(
"Divide",
"Dividing histograms with different axis limits");
  2880    } 
catch(DifferentBinLimits&) {
  2881       Warning(
"Divide",
"Dividing histograms with different bin limits");
  2882    }  
catch(DifferentLabels&) {
  2883       Warning(
"Divide",
"Dividing histograms with different labels");
  2888       Error(
"Divide",
"Coefficient of dividing histogram cannot be zero");
  2925             fSumw2.
fArray[i] = c1sq * c2sq * (e1sq * b2sq + e2sq * b1sq) / (c2sq * c2sq * b2sq * b2sq);
  2978          if (index>indb && index<indk) index = -1;
  2984       if (!
gPad->IsEditable()) 
gROOT->MakeDefCanvas();
  2986          if (
gPad->GetX1() == 0   && 
gPad->GetX2() == 1 &&
  2987              gPad->GetY1() == 0   && 
gPad->GetY2() == 1 &&
  2988              gPad->GetListOfPrimitives()->GetSize()==0) opt2.
Remove(index,4);
  2995       gPad->IncrementPaletteColor(1, opt1);
  2997       if (index>=0) opt2.
Remove(index,4);
  3046       Error(
"DrawNormalized",
"Sum of weights is null. Cannot normalize histogram: %s",
GetName());
  3058       if (opt.
IsNull() || opt == 
"SAME") opt += 
"HIST";
  3093    Int_t range, stat, add;
  3113    for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
  3115       for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
  3117          for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
  3120             if (range && !f1->
IsInside(x)) 
continue;
  3217    for (
Int_t binx = 1; binx<=ndim[0]; binx++) {
  3218       for (
Int_t biny=1; biny<=ndim[1]; biny++) {
  3219          for (
Int_t binz=1; binz<=ndim[2]; binz++) {
  3249    if (bin <0) 
return -1;
  3282    if (bin <0) 
return -1;
  3315    if (bin <0) 
return -1;
  3351       for (i=0;i<ntimes;i+=stride) {
  3357       if (i < ntimes && 
fBuffer==0) {
  3358          auto weights = w ? &w[i] : 
nullptr;
  3359          DoFillN((ntimes-i)/stride,&x[i],weights,stride);
  3364    DoFillN(ntimes, x, w, stride);
  3379    for (i=0;i<ntimes;i+=stride) {
  3381       if (bin <0) 
continue;
  3386       if (bin == 0 || bin > nbins) {
  3418    if (!f1) { 
Error(
"FillRandom", 
"Unknown function: %s",fname); 
return; }
  3428       Info(
"FillRandom",
"Using function axis and range [%g,%g]",xmin, xmax);
  3434    Int_t nbinsx = last-first+1;
  3438    for (binx=1;binx<=nbinsx;binx++) {
  3440       integral[binx] = integral[binx-1] + fint;
  3444    if (integral[nbinsx] == 0 ) {
  3446       Error(
"FillRandom", 
"Integral = zero"); 
return;
  3448    for (bin=1;bin<=nbinsx;bin++)  integral[bin] /= integral[nbinsx];
  3451    for (loop=0;loop<ntimes;loop++) {
  3457              +xAxis->
GetBinWidth(ibin+first)*(r1-integral[ibin])/(integral[ibin+1] - integral[ibin]);
  3481    if (!h) { 
Error(
"FillRandom", 
"Null histogram"); 
return; }
  3483       Error(
"FillRandom", 
"Histograms with different dimensions"); 
return;
  3486       Error(
"FillRandom", 
"Histograms contains negative bins, does not represent probabilities");
  3494    Int_t nbins = last-first+1;
  3495    if (ntimes > 10*nbins) {
  3499          if (sumw == 0) 
return;
  3501          for (
Int_t bin=first;bin<=last;bin++) {
  3513          if (sumgen < ntimes) {
  3515             for (i = 
Int_t(sumgen+0.5); i < ntimes; ++i)
  3521          else if (sumgen > ntimes) {
  3523             i =  
Int_t(sumgen+0.5);
  3524             while( i > ntimes) {
  3539       catch(std::exception&) {}  
  3546    for (loop=0;loop<ntimes;loop++) {
  3572       return  binx + nx*biny;
  3580       return  binx + nx*(biny +ny*binz);
  3605       return  binx + nx*biny;
  3613       return  binx + nx*(biny +ny*binz);
  3627       Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
  3631    for (
Int_t bin=1;bin<=nbins;bin++) {
  3646       Warning(
"FindLastBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
  3650    for (
Int_t bin=nbins;bin>=1;bin--) {
  3689    linear= (
char*)strstr(fname, 
"++");
  3696          f1=
new TF1(fname, fname, xxmin, xxmax);
  3697          return Fit(f1,option,goption,xxmin,xxmax);
  3700          f2=
new TF2(fname, fname);
  3701          return Fit(f2,option,goption,xxmin,xxmax);
  3704          f3=
new TF3(fname, fname);
  3705          return Fit(f3,option,goption,xxmin,xxmax);
  3710       f1 = (
TF1*)
gROOT->GetFunction(fname);
  3711       if (!f1) { 
Printf(
"Unknown function: %s",fname); 
return -1; }
  3712       return Fit(f1,option,goption,xxmin,xxmax);
  4040       gROOT->MakeDefCanvas();
  4043       Error(
"FitPanel", 
"Unable to create a default canvas");
  4050    if (handler && handler->
LoadPlugin() != -1) {
  4052          Error(
"FitPanel", 
"Unable to create the FitPanel");
  4055          Error(
"FitPanel", 
"Unable to find the FitPanel plug-in");
  4100    asym->SetTitle(title);
  4110    top->
Add(h1,h2,1,-c2);
  4111    bottom->
Add(h1,h2,1,c2);
  4112    asym->Divide(top,bottom);
  4116    Int_t   zmax = asym->GetNbinsZ();
  4126          for(
Int_t k=1; k<= zmax; k++){
  4142                Double_t error = 2*
TMath::Sqrt(a*a*c2*c2*dbsq + c2*c2*b*b*dasq+a*a*b*b*dc2*dc2)/(bot*bot);
  4143                asym->SetBinError(i,j,k,error);
  4205    return (s[1] ? s[0]*s[0]/s[1] : 
TMath::Abs(s[0]) );
  4215    return ((
TH1*)
this)->GetPainter()->GetObjectInfo(px,py);
  4316       Error(
"GetQuantiles",
"Only available for 1-d histograms");
  4326    Int_t nq = nprobSum;
  4331       for (i=1;i<nq;i++) {
  4336    for (i = 0; i < nq; i++) {
  4338       while (ibin < nbins-1 && 
fIntegral[ibin+1] == prob[i]) {
  4339          if (
fIntegral[ibin+2] == prob[i]) ibin++;
  4344       if (dint > 0) q[i] += 
GetBinWidth(ibin+1)*(prob[i]-fIntegral[ibin])/dint;
  4347    if (!probSum) 
delete [] prob;
  4376    allcha = sumx = sumx2 = 0;
  4377    for (bin=hxfirst;bin<=hxlast;bin++) {
  4380       if (val > valmax) valmax = val;
  4385    if (allcha == 0) 
return;
  4387    stddev  = sumx2/allcha - mean*mean;
  4390    if (stddev == 0) stddev = binwidx*(hxlast-hxfirst+1)/4;
  4397    Double_t constant = 0.5*(valmax+binwidx*allcha/(sqrtpi*stddev));
  4405    if ((mean < xmin || mean > xmax) && stddev > (xmax-xmin)) {
  4406       mean = 0.5*(xmax+
xmin);
  4407       stddev  = 0.5*(xmax-
xmin);
  4426    Int_t nchanx  = hxlast - hxfirst + 1;
  4447    Int_t nchanx  = hxlast - hxfirst + 1;
  4450    if (nchanx <=1 || npar == 1) {
  4473    const Int_t idim = 20;
  4484    if (m > idim || m > n) 
return;
  4487    for (l = 2; l <= 
m; ++
l) {
  4489       b[m + l*20 - 21] = zero;
  4496    for (k = hxfirst; k <= hxlast; ++k) {
  4501       for (l = 2; l <= 
m; ++
l) {
  4504          da[l-1] += power*yk;
  4506       for (l = 2; l <= 
m; ++
l) {
  4508          b[m + l*20 - 21] += power;
  4511    for (i = 3; i <= 
m; ++i) {
  4512       for (k = i; k <= 
m; ++k) {
  4513          b[k - 1 + (i-1)*20 - 21] = b[k + (i-2)*20 - 21];
  4518    for (i=0; i<
m; ++i) a[i] = da[i];
  4538    xbar  = ybar  = x2bar = xybar = 0;
  4543    for (i = hxfirst; i <= hxlast; ++i) {
  4547          if (yk <= 0) yk = 1
e-9;
  4556    det   = fn*x2bar - xbar*xbar;
  4564    a0 = (x2bar*ybar - xbar*xybar) / det;
  4565    a1 = (fn*xybar - xbar*ybar) / det;
  4576    Int_t a_dim1, a_offset, b_dim1, b_offset;
  4578    Int_t im1, jp1, nm1, nmi;
  4584    b_offset = b_dim1 + 1;
  4587    a_offset = a_dim1 + 1;
  4590    if (idim < n) 
return;
  4593    for (j = 1; j <= 
n; ++j) {
  4594       if (a[j + j*a_dim1] <= 0) { ifail = -1; 
return; }
  4595       a[j + j*a_dim1] = one / a[j + j*a_dim1];
  4596       if (j == n) 
continue;
  4598       for (l = jp1; l <= 
n; ++
l) {
  4599          a[j + l*a_dim1] = a[j + j*a_dim1] * a[l + j*a_dim1];
  4600          s1 = -a[l + (j+1)*a_dim1];
  4601          for (i = 1; i <= j; ++i) { s1 = a[l + i*a_dim1] * a[i + (j+1)*a_dim1] + s1; }
  4602          a[l + (j+1)*a_dim1] = -s1;
  4607    for (l = 1; l <= k; ++
l) {
  4608       b[l*b_dim1 + 1] = a[a_dim1 + 1]*b[l*b_dim1 + 1];
  4611    for (l = 1; l <= k; ++
l) {
  4612       for (i = 2; i <= 
n; ++i) {
  4614          s21 = -b[i + l*b_dim1];
  4615          for (j = 1; j <= im1; ++j) {
  4616             s21 = a[i + j*a_dim1]*b[j + l*b_dim1] + s21;
  4618          b[i + l*b_dim1] = -a[i + i*a_dim1]*s21;
  4621       for (i = 1; i <= nm1; ++i) {
  4623          s22 = -b[nmi + l*b_dim1];
  4624          for (j = 1; j <= i; ++j) {
  4626             s22 = a[nmi + nmjp1*a_dim1]*b[nmjp1 + l*b_dim1] + s22;
  4628          b[nmi + l*b_dim1] = -s22;
  4666    if (binx < 0) binx = 0;
  4667    if (binx > ofx) binx = ofx;
  4682       binx = binglobal%nx;
  4688       binx = binglobal%nx;
  4689       biny = ((binglobal-binx)/nx)%ny;
  4694       binx = binglobal%nx;
  4695       biny = ((binglobal-binx)/nx)%ny;
  4696       binz = ((binglobal-binx)/nx -biny)/ny;
  4713       Error(
"GetRandom",
"Function only valid for 1-d histograms");
  4723       integral = ((
TH1*)
this)->ComputeIntegral(
true);
  4725    if (integral == 0) 
return 0;
  4764    if (bin < 0) bin = 0;
  4765    if (bin >= fNcells) bin = fNcells-1;
  4790       Error(
"GetBinWithContent",
"function is only valid for 1-D histograms");
  4796    if (firstx <= 0) firstx = 1;
  4800    for (
Int_t i=firstx;i<=lastx;i++) {
  4802       if (diff <= 0) {binx = i; 
return diff;}
  4803       if (diff < curmax && diff <= maxdiff) {curmax = diff, binminx=i;}
  4838       return y0 + (x-x0)*((y1-y0)/(x1-x0));
  4847    Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
  4856    Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
  4887    Error(
"IsBinOverflow",
"Invalid axis value");
  4904          return (binx <= 0 || biny <= 0);
  4906          return (binx <= 0 || biny <= 0 || binz <= 0);
  4917    Error(
"IsBinUnderflow",
"Invalid axis value");
  4934       Error(
"LabelsDeflate",
"Invalid axis option %s",ax);
  4945    while ((obj = next())) {
  4947       if (ibin > nbins) nbins = ibin;
  4949    if (nbins < 1) nbins = 1;
  4952    if (nbins==axis->
GetNbins()) 
return;
  4954    TH1 *hold = (
TH1*)IsA()->New();
  4962    if (xmax <= xmin) xmax = xmin +nbins;
  4964    axis->
Set(nbins,xmin,xmax);
  4977    Int_t bin,binx,biny,binz;
  4978    for (bin=0; bin < hold->
fNcells; ++bin) {
  5005    TH1 *hold = (
TH1*)IsA()->New();;
  5013    xmax = xmin + 2*(xmax-
xmin);
  5016    axis->
Set(2*nbins,xmin,xmax);
  5026    Int_t bin,ibin,binx,biny,binz;
  5027    for (ibin =0; ibin < hold->
fNcells; ibin++) {
  5030       bin = 
GetBin(binx,biny,binz);
  5067       Warning(
"LabelsOption",
"Cannot sort. No labels");
  5100    if (sort < 0) 
return;
  5102       Error(
"LabelsOption",
"Sorting by value not implemented for 3-D histograms");
  5108    std::vector<Int_t> 
a(n+2);
  5111    std::vector<Double_t>  cont;
  5112    std::vector<Double_t> errors;
  5114    TIter nextold(labels);
  5116    while ((obj=nextold())) {
  5125          for (i=1;i<=
n;i++) {
  5127             if (!errors.empty()) errors[i-1] = 
GetBinError(i);
  5131          for (i=1;i<=
n;i++) {
  5133             if (!errors.empty()) 
SetBinError(i,errors[a[i-1]]);
  5135          for (i=1;i<=
n;i++) {
  5136             obj = labold->
At(a[i-1]);
  5141          std::vector<Double_t> pcont(n+2);
  5144          cont.resize( (nx+2)*(ny+2));
  5145          if (
fSumw2.
fN) errors.resize( (nx+2)*(ny+2));
  5146          for (i=1;i<=nx;i++) {
  5147             for (j=1;j<=ny;j++) {
  5149                if (!errors.empty()) errors[i+nx*j] = 
GetBinError(i,j);
  5152                pcont[k-1] += cont[i+nx*j];
  5158             obj = labold->
At(a[i]);
  5163             for (i=1;i<=
n;i++) {
  5164                for (j=1;j<=ny;j++) {
  5166                   if (!errors.empty()) 
SetBinError(i,j,errors[a[i-1]+1+nx*j]);
  5172             for (i=1;i<=nx;i++) {
  5173                for (j=1;j<=
n;j++) {
  5175                   if (!errors.empty()) 
SetBinError(i,j,errors[i+nx*(a[j-1]+1)]);
  5184       const UInt_t kUsed = 1<<18;
  5188       for (i=1;i<=
n;i++) {
  5189          const char *label = 
"zzzzzzzzzzzz";
  5190          for (j=1;j<=
n;j++) {
  5191             obj = labold->
At(j-1);
  5193             if (obj->
TestBit(kUsed)) 
continue;
  5195             if (strcmp(label,obj->
GetName()) < 0) 
continue;
  5206       for (i=1;i<=
n;i++) {
  5207          obj = labels->
At(i-1);
  5215          for (i=1;i<=
n;i++) {
  5217             if (!errors.empty()) errors[i] = 
GetBinError(a[i]);
  5219          for (i=1;i<=
n;i++) {
  5227          if (
fSumw2.
fN) errors.resize(nx*ny);
  5228          for (i=0;i<nx;i++) {
  5229             for (j=0;j<ny;j++) {
  5231                if (!errors.empty()) errors[i+nx*j] = 
GetBinError(i,j);
  5235             for (i=1;i<=
n;i++) {
  5236                for (j=0;j<ny;j++) {
  5238                   if (!errors.empty()) 
SetBinError(i,j,errors[a[i]+nx*j]);
  5242             for (i=0;i<nx;i++) {
  5243                for (j=1;j<=
n;j++) {
  5245                   if (!errors.empty()) 
SetBinError(i,j,errors[i+nx*a[j]]);
  5253          cont.resize(nx*ny*nz);
  5254          if (
fSumw2.
fN) errors.resize(nx*ny*nz);
  5255          for (i=0;i<nx;i++) {
  5256             for (j=0;j<ny;j++) {
  5257                for (k=0;k<nz;k++) {
  5259                   if (!errors.empty()) errors[i+nx*(j+ny*k)] = 
GetBinError(i,j,k);
  5265             for (i=1;i<=
n;i++) {
  5266                for (j=0;j<ny;j++) {
  5267                   for (k=0;k<nz;k++) {
  5269                      if (!errors.empty()) 
SetBinError(i,j,k,errors[a[i]+nx*(j+ny*k)]);
  5276             for (i=0;i<nx;i++) {
  5277                for (j=1;j<=
n;j++) {
  5278                   for (k=0;k<nz;k++) {
  5280                      if (!errors.empty()) 
SetBinError(i,j,k,errors[i+nx*(a[j]+ny*k)]);
  5287             for (i=0;i<nx;i++) {
  5288                for (j=0;j<ny;j++) {
  5289                   for (k=1;k<=
n;k++) {
  5291                      if (!errors.empty()) 
SetBinError(i,j,k,errors[i+nx*(j+ny*a[k])]);
  5327    bool isEquidistant = 
true;
  5329    for (
int i = 1; i < axis.
GetNbins(); ++i) {
  5332       isEquidistant &= match;
  5336    return isEquidistant;
  5363    if (width1 == 0 || width2 == 0)
  5394    delta = (xmax - destAxis.
GetXmax())/width1;
  5399    delta = (xmax - anAxis.
GetXmax())/width2;
  5404    delta = (xmax - destAxis.
GetXmax())/width1;
  5409       printf(
"TH1::RecomputeAxisLimits - Impossible\n");
  5489       Error(
"Add",
"Attempt to multiply by a non-existing function");
  5511    for (
Int_t binz = 0; binz < nz; ++binz) {
  5513       for (
Int_t biny = 0; biny < ny; ++biny) {
  5515          for (
Int_t binx = 0; binx < nx; ++binx) {
  5519             Int_t bin = binx + nx * (biny + ny *binz);
  5551       Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
  5560    } 
catch(DifferentNumberOfBins&) {
  5561       Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
  5563    } 
catch(DifferentAxisLimits&) {
  5564       Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
  5565    } 
catch(DifferentBinLimits&) {
  5566       Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
  5567    } 
catch(DifferentLabels&) {
  5568       Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
  5613       Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
  5623    } 
catch(DifferentNumberOfBins&) {
  5624       Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
  5626    } 
catch(DifferentAxisLimits&) {
  5627       Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
  5628    } 
catch(DifferentBinLimits&) {
  5629       Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
  5630    } 
catch(DifferentLabels&) {
  5631       Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
  5732    if ((ngroup <= 0) || (ngroup > nbins)) {
  5733       Error(
"Rebin", 
"Illegal value of ngroup=%d",ngroup);
  5738       Error(
"Rebin", 
"Operation valid on 1-D histograms only");
  5741    if (!newname && xbins) {
  5742       Error(
"Rebin",
"if xbins is specified, newname must be given");
  5746    Int_t newbins = nbins/ngroup;
  5748       Int_t nbg = nbins/ngroup;
  5749       if (nbg*ngroup != nbins) {
  5750          Warning(
"Rebin", 
"ngroup=%d is not an exact divider of nbins=%d.",ngroup,nbins);
  5770       for (bin=0;bin<nbins+2;bin++) oldErrors[bin] = 
GetBinError(bin);
  5775          Warning(
"Rebin",
"underflow entries will not be used when rebinning");
  5776       if (xbins[newbins] > 
fXaxis.
GetXmax() && oldBins[nbins+1] != 0 )
  5777          Warning(
"Rebin",
"overflow entries will not be used when rebinning");
  5783    if ((newname && strlen(newname) > 0) || xbins) {
  5793    bool resetStat = 
false;
  5795    if(!xbins && (newbins*ngroup != nbins)) {
  5820       hnew->
SetBins(newbins,xmin,xmax);
  5843    Int_t oldbin = startbin;
  5845    for (bin = 1;bin<=newbins;bin++) {
  5848       Int_t imax = ngroup;
  5850       for (i=0;i<ngroup;i++) {
  5851          if( (oldbin+i > nbins) ||
  5856          binContent += oldBins[oldbin+i];
  5857          if (oldErrors) binError += oldErrors[oldbin+i]*oldErrors[oldbin+i];
  5867    for (i = 0; i < startbin; ++i)  {
  5868       binContent += oldBins[i];
  5869       if (oldErrors) binError += oldErrors[i]*oldErrors[i];
  5876    for (i = oldbin; i <= nbins+1; ++i)  {
  5877       binContent += oldBins[i];
  5878       if (oldErrors) binError += oldErrors[i]*oldErrors[i];
  5887    if (!resetStat) hnew->
PutStats(stat);
  5889    if (oldErrors) 
delete [] oldErrors;
  5908    if (xmin >= xmax) 
return kFALSE;
  5914    while (point < xmin) {
  5917       xmin = xmin - range;
  5926    while (point >= xmax) {
  5929       xmax = xmax + range;
  5977    TH1 *hold = (
TH1*)IsA()->New();
  5990    if (axis == &
fXaxis) iaxis = 1;
  5991    if (axis == &
fYaxis) iaxis = 2;
  5992    if (axis == &
fZaxis) iaxis = 3;
  5993    bool firstw = 
kTRUE;
  5994    Int_t binx,biny, binz = 0;
  5995    Int_t ix = 0,iy = 0,iz = 0;
  5998    for (
Int_t bin = 0; bin < ncells; ++bin) {
  6012       if (content == 0) 
continue;
  6015             Warning(
"ExtendAxis",
"Histogram %s has underflow or overflow in the axis that is extendable"  6016                     " their content will be lost",
GetName() );
  6067    if (opt.
Contains(
"width")) 
Add(
this, 
this, c1, -1);
  6077    if (ncontours == 0) 
return;
  6079    for (
Int_t i = 0; i < ncontours; ++i) levels[i] *= c1;
  6118    return oldExtendBitMask;
  6164       str1   = str1(isc+1, lns);
  6165       isc    = str1.
Index(
";");
  6168          str2.ReplaceAll(
"#semicolon",10,
";",1);
  6171          str1 = str1(isc+1, lns);
  6172          isc  = str1.
Index(
";");
  6175             str2.ReplaceAll(
"#semicolon",10,
";",1);
  6178             str1 = str1(isc+1, lns);
  6204       ::Error(
"SmoothArray",
"Need at least 3 points for smoothing: n = %d",nn);
  6211    std::vector<double> yy(nn);
  6212    std::vector<double> zz(nn);
  6213    std::vector<double> rr(nn);
  6215    for (
Int_t pass=0;pass<ntimes;pass++) {
  6217       std::copy(xx, xx+nn, zz.begin() );
  6219       for (
int noent = 0; noent < 2; ++noent) { 
  6222          for  (
int kk = 0; kk < 3; kk++)  {
  6223             std::copy(zz.begin(), zz.end(), yy.begin());
  6224             int medianType = (kk != 1)  ?  3 : 5;
  6225             int ifirst      = (kk != 1 ) ?  1 : 2;
  6226             int ilast       = (kk != 1 ) ? nn-1 : nn -2;
  6230             for  ( ii = ifirst; ii < ilast; ii++)  {
  6231                assert(ii - ifirst >= 0);
  6232                for  (
int jj = 0; jj < medianType; jj++)   {
  6233                   hh[jj] = yy[ii - ifirst + jj ];
  6242                hh[2] = 3*zz[1] - 2*zz[2];
  6247                hh[2] = 3*zz[nn - 2] - 2*zz[nn - 3];
  6252                for  (ii = 0; ii < 3; ii++) {
  6257                for  (ii = 0; ii < 3; ii++) {
  6258                   hh[ii] = yy[nn - 3 + ii];
  6265          std::copy ( zz.begin(), zz.end(), yy.begin() );
  6268          for (ii = 2; ii < (nn - 2); ii++) {
  6269             if  (zz[ii - 1] != zz[ii]) 
continue;
  6270             if  (zz[ii] != zz[ii + 1]) 
continue;
  6271             hh[0] = zz[ii - 2] - zz[ii];
  6272             hh[1] = zz[ii + 2] - zz[ii];
  6273             if  (hh[0] * hh[1] <= 0) 
continue;
  6276             yy[ii] = -0.5*zz[ii - 2*jk] + zz[ii]/0.75 + zz[ii + 2*jk] /6.;
  6277             yy[ii + jk] = 0.5*(zz[ii + 2*jk] - zz[ii - 2*jk]) + zz[ii];
  6282          for  (ii = 1; ii < nn - 1; ii++) {
  6283             zz[ii] = 0.25*yy[ii - 1] + 0.5*yy[ii] + 0.25*yy[ii + 1];
  6286          zz[nn - 1] = yy[nn - 1];
  6291             std::copy(zz.begin(), zz.end(), rr.begin());
  6294             for  (ii = 0; ii < nn; ii++)  {
  6295                zz[ii] = xx[ii] - zz[ii];
  6303       for  (ii = 0; ii < nn; ii++) {
  6304          if (xmin < 0) xx[ii] = rr[ii] + zz[ii];
  6306          else  xx[ii] = 
TMath::Max((rr[ii] + zz[ii]),0.0 );
  6322       Error(
"Smooth",
"Smooth only supported for 1-d histograms");
  6327       Error(
"Smooth",
"Smooth only supported for histograms with >= 3 bins. Nbins = %d",nbins);
  6334    Int_t firstbin = 1, lastbin = nbins;
  6341    nbins = lastbin - firstbin + 1;
  6345    for (i=0;i<nbins;i++) {
  6351    for (i=0;i<nbins;i++) {
  6373 void TH1::Streamer(
TBuffer &b)
  6389          while ((obj=next())) {
  6395       TNamed::Streamer(b);
  6396       TAttLine::Streamer(b);
  6397       TAttFill::Streamer(b);
  6398       TAttMarker::Streamer(b);
  6414          Float_t maximum, minimum, norm;
  6457    else if (opt.
Contains(
"range")) all = 1;
  6458    else if (opt.
Contains(
"base"))  all = 2;
  6461    Int_t bin, binx, biny, binz;
  6462    Int_t firstx=0,lastx=0,firsty=0,lasty=0,firstz=0,lastz=0;
  6474       printf(
"          Title = %s\n", 
GetTitle());
  6485       for (binx=firstx;binx<=lastx;binx++) {
  6489          if(
fSumw2.
fN) printf(
" fSumw[%d]=%g, x=%g, error=%g\n",binx,w,x,e);
  6490          else          printf(
" fSumw[%d]=%g, x=%g\n",binx,w,x);
  6494       for (biny=firsty;biny<=lasty;biny++) {
  6496          for (binx=firstx;binx<=lastx;binx++) {
  6501             if(
fSumw2.
fN) printf(
" fSumw[%d][%d]=%g, x=%g, y=%g, error=%g\n",binx,biny,w,x,y,e);
  6502             else          printf(
" fSumw[%d][%d]=%g, x=%g, y=%g\n",binx,biny,w,x,y);
  6507       for (binz=firstz;binz<=lastz;binz++) {
  6509          for (biny=firsty;biny<=lasty;biny++) {
  6511             for (binx=firstx;binx<=lastx;binx++) {
  6512                bin = 
GetBin(binx,biny,binz);
  6516                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);
  6517                else          printf(
" fSumw[%d][%d][%d]=%g, x=%g, y=%g, z=%g\n",binx,biny,binz,w,x,y,z);
  6575    if (opt == 
"ICES") 
return;
  6605    static Int_t nxaxis = 0;
  6606    static Int_t nyaxis = 0;
  6607    static Int_t nzaxis = 0;
  6608    TString sxaxis=
"xAxis",syaxis=
"yAxis",szaxis=
"zAxis";
  6619          if (i != 0) out << 
", ";
  6622       out << 
"}; " << std::endl;
  6635             if (i != 0) out << 
", ";
  6638          out << 
"}; " << std::endl;
  6651             if (i != 0) out << 
", ";
  6654          out << 
"}; " << std::endl;
  6658    out <<
"   "<<std::endl;
  6668    static Int_t hcounter = 0;
  6675       histName += hcounter;
  6678    const char *hname = histName.
Data();
  6679    if (!strlen(hname)) hname = 
"unnamed";
  6683    t.ReplaceAll(
"\\",
"\\\\");
  6684    t.ReplaceAll(
"\"",
"\\\"");
  6685    out << hname << 
" = new " << 
ClassName() << 
"(" << quote
  6686        << hname << quote << 
"," << quote<< t.Data() << quote
  6689       out << 
", "<<sxaxis;
  6696          out << 
", "<<syaxis;
  6704          out << 
", "<<szaxis;
  6709    out << 
");" << std::endl;
  6713    for (bin=0;bin<
fNcells;bin++) {
  6716          out<<
"   "<<hname<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
  6722       for (bin=0;bin<
fNcells;bin++) {
  6725             out<<
"   "<<hname<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
  6742       out<<
"   "<<hname<<
"->SetBarOffset("<<
GetBarOffset()<<
");"<<std::endl;
  6745       out<<
"   "<<hname<<
"->SetBarWidth("<<
GetBarWidth()<<
");"<<std::endl;
  6748       out<<
"   "<<hname<<
"->SetMinimum("<<
fMinimum<<
");"<<std::endl;
  6751       out<<
"   "<<hname<<
"->SetMaximum("<<
fMaximum<<
");"<<std::endl;
  6754       out<<
"   "<<hname<<
"->SetNormFactor("<<
fNormFactor<<
");"<<std::endl;
  6757       out<<
"   "<<hname<<
"->SetEntries("<<
fEntries<<
");"<<std::endl;
  6760       out<<
"   "<<hname<<
"->SetDirectory(0);"<<std::endl;
  6763       out<<
"   "<<hname<<
"->SetStats(0);"<<std::endl;
  6766       out<<
"   "<<hname<<
"->SetOption("<<quote<<
fOption.
Data()<<quote<<
");"<<std::endl;
  6771    if (ncontours > 0) {
  6772       out<<
"   "<<hname<<
"->SetContour("<<ncontours<<
");"<<std::endl;
  6774       for (
Int_t bin=0;bin<ncontours;bin++) {
  6775          if (
gPad->GetLogz()) {
  6780          out<<
"   "<<hname<<
"->SetContourLevel("<<bin<<
","<<zlevel<<
");"<<std::endl;
  6787    static Int_t funcNumber = 0;
  6794          out << 
"   " << fname << 
"->SetParent(" << hname << 
");\n";
  6795          out<<
"   "<<hname<<
"->GetListOfFunctions()->Add("  6796             << fname <<
");"<<std::endl;
  6798          out<<
"   "<<hname<<
"->GetListOfFunctions()->Add(ptstats);"<<std::endl;
  6799          out<<
"   ptstats->SetParent("<<hname<<
");"<<std::endl;
  6801          out<<
"   "<<hname<<
"->GetListOfFunctions()->Add("  6803             <<
","<<quote<<lnk->
GetOption()<<quote<<
");"<<std::endl;
  6818       out<<
"   "<<hname<<
"->Draw("  6819          <<quote<<option<<quote<<
");"<<std::endl;
  6862    while ((obj = next())) {
  6892    if (axis<1 || (axis>3 && axis<11) || axis>13) 
return 0;
  6896    if (stats[0] == 0) 
return 0;
  6898       Int_t ax[3] = {2,4,7};
  6899       return stats[ax[axis-1]]/stats[0];
  6904       return ( neff > 0 ? stddev/
TMath::Sqrt(neff) : 0. );
  6946    if (axis<1 || (axis>3 && axis<11) || axis>13) 
return 0;
  6951    if (stats[0] == 0) 
return 0;
  6952    Int_t ax[3] = {2,4,7};
  6953    Int_t axm = ax[axis%10 - 1];
  6954    x    = stats[axm]/stats[0];
  6955    stddev2 = 
TMath::Abs(stats[axm+1]/stats[0] -x*x);
  6962       return ( neff > 0 ? 
TMath::Sqrt(stddev2/(2*neff) ) : 0. );
  6998    if (axis > 0 && axis <= 3){
  7002       Double_t stddev3 = stddev*stddev*stddev;
  7013             if (firstBinX == 1) firstBinX = 0;
  7017             if (firstBinY == 1) firstBinY = 0;
  7021             if (firstBinZ == 1) firstBinZ = 0;
  7029       for (
Int_t  binx = firstBinX; binx <= lastBinX; binx++) {
  7030          for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
  7031             for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
  7037                sum+=w*(x-mean)*(x-mean)*(x-mean);
  7044    else if (axis > 10 && axis <= 13) {
  7051       Error(
"GetSkewness", 
"illegal value of parameter");
  7067    if (axis > 0 && axis <= 3){
  7071       Double_t stddev4 = stddev*stddev*stddev*stddev;
  7082             if (firstBinX == 1) firstBinX = 0;
  7086             if (firstBinY == 1) firstBinY = 0;
  7090             if (firstBinZ == 1) firstBinZ = 0;
  7098       for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
  7099          for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
  7100             for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
  7106                sum+=w*(x-mean)*(x-mean)*(x-mean)*(x-mean);
  7113    } 
else if (axis > 10 && axis <= 13) {
  7117       return ( neff > 0 ? 
TMath::Sqrt(24./neff ) : 0. );
  7120       Error(
"GetKurtosis", 
"illegal value of parameter");
  7165       for (bin=0;bin<4;bin++) stats[bin] = 0;
  7171          if (firstBinX == 1) firstBinX = 0;
  7174       for (binx = firstBinX; binx <= lastBinX; binx++) {
  7181          stats[1] += err*err;
  7234    Int_t bin,binx,biny,binz;
  7239             bin = 
GetBin(binx,biny,binz);
  7269    return DoIntegral(binx1,binx2,0,-1,0,-1,err,option);
  7296    if (binx1 < 0) binx1 = 0;
  7297    if (binx2 >= nx || binx2 < binx1) binx2 = nx - 1;
  7301       if (biny1 < 0) biny1 = 0;
  7302       if (biny2 >= ny || biny2 < biny1) biny2 = ny - 1;
  7304       biny1 = 0; biny2 = 0;
  7309       if (binz1 < 0) binz1 = 0;
  7310       if (binz2 >= nz || binz2 < binz1) binz2 = nz - 1;
  7312       binz1 = 0; binz2 = 0;
  7325    for (
Int_t binx = binx1; binx <= binx2; ++binx) {
  7327       for (
Int_t biny = biny1; biny <= biny2; ++biny) {
  7329          for (
Int_t binz = binz1; binz <= binz2; ++binz) {
  7382       printf(
" AndersonDarlingTest Prob     = %g, AD TestStatistic  = %g\n",pvalue,advalue);
  7384    if (opt.
Contains(
"T") ) 
return advalue;
  7395       Error(
"AndersonDarlingTest",
"Histograms must be 1-D");
  7495    if (h2 == 0) 
return 0;
  7503       Error(
"KolmogorovTest",
"Histograms must be 1-D\n");
  7509       Error(
"KolmogorovTest",
"Histograms have different number of bins, %d and %d\n",ncx1,ncx2);
  7519          Error(
"KolmogorovTest",
"Histograms are not consistent: they have different bin edges");
  7533    if (opt.
Contains(
"O")) ilast = ncx1 +1;
  7534    for (bin = ifirst; bin <= ilast; bin++) {
  7543       Error(
"KolmogorovTest",
"Histogram1 %s integral is zero\n",h1->
GetName());
  7547       Error(
"KolmogorovTest",
"Histogram2 %s integral is zero\n",h2->
GetName());
  7556       esum1 = sum1 * sum1 / w1;
  7561       esum2 = sum2 * sum2 / w2;
  7565    if (afunc2 && afunc1) {
  7566       Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
  7575    Double_t dfmax =0, rsum1 = 0, rsum2 = 0;
  7577    for (bin=ifirst;bin<=ilast;bin++) {
  7599    if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
  7603       Double_t chi2   = d12*d12/(esum1+esum2);
  7606       if (prob > 0 && prb2 > 0) prob *= prb2*(1-
TMath::Log(prob*prb2));
  7610    const Int_t nEXPT = 1000;
  7611    if (opt.
Contains(
"X") && !(afunc1 || afunc2 ) ) {
  7618          Warning(
"KolmogorovTest", 
"Detected bins with negative weights, these have been ignored and output might be "  7619                                    "skewed. Reduce number of bins for histogram?");
  7628       for (
Int_t i=0; i < nEXPT; i++) {
  7632          if (dSEXPT>dfmax) prb3 += 1.0;
  7641       printf(
" Kolmo Prob  h1 = %s, sum bin content =%g  effective entries =%g\n",h1->
GetName(),sum1,esum1);
  7642       printf(
" Kolmo Prob  h2 = %s, sum bin content =%g  effective entries =%g\n",h2->
GetName(),sum2,esum2);
  7643       printf(
" Kolmo Prob     = %g, Max Dist = %g\n",prob,dfmax);
  7645          printf(
" Kolmo Prob     = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
  7647          printf(
" Kolmo Prob     = %f with %d pseudo-experiments\n",prb3,nEXPT);
  7653    if(opt.
Contains(
"M"))      
return dfmax;
  7654    else if(opt.
Contains(
"X")) 
return prb3;
  7712       if (zlevel <= 0) 
return 0;
  7728    if (buffersize <= 0) {
  7732    if (buffersize < 100) buffersize = 100;
  7759       for (level=0; level<nlevels; level++) 
fContour.
fArray[level] = levels[level];
  7764       if ((zmin == zmax) && (zmin != 0)) {
  7770          if (zmax <= 0) 
return;
  7771          if (zmin <= 0) zmin = 0.001*zmax;
  7774          dz   = (zmax-zmin)/
Double_t(nlevels);
  7776       for (level=0; level<nlevels; level++) {
  7812    Int_t bin, binx, biny, binz;
  7819    Double_t maximum = -FLT_MAX, value;
  7820    for (binz=zfirst;binz<=zlast;binz++) {
  7821       for (biny=yfirst;biny<=ylast;biny++) {
  7822          for (binx=xfirst;binx<=xlast;binx++) {
  7823             bin = 
GetBin(binx,biny,binz);
  7825             if (value > maximum && value < maxval) maximum = value;
  7849    Int_t bin, binx, biny, binz;
  7857    Double_t maximum = -FLT_MAX, value;
  7858    locm = locmax = locmay = locmaz = 0;
  7859    for (binz=zfirst;binz<=zlast;binz++) {
  7860       for (biny=yfirst;biny<=ylast;biny++) {
  7861          for (binx=xfirst;binx<=xlast;binx++) {
  7862             bin = 
GetBin(binx,biny,binz);
  7864             if (value > maximum) {
  7897    Int_t bin, binx, biny, binz;
  7905    for (binz=zfirst;binz<=zlast;binz++) {
  7906       for (biny=yfirst;biny<=ylast;biny++) {
  7907          for (binx=xfirst;binx<=xlast;binx++) {
  7908             bin = 
GetBin(binx,biny,binz);
  7910             if (value < minimum && value > minval) minimum = value;
  7934    Int_t bin, binx, biny, binz;
  7943    locm = locmix = locmiy = locmiz = 0;
  7944    for (binz=zfirst;binz<=zlast;binz++) {
  7945       for (biny=yfirst;biny<=ylast;biny++) {
  7946          for (binx=xfirst;binx<=xlast;binx++) {
  7947             bin = 
GetBin(binx,biny,binz);
  7949             if (value < minimum) {
  7991    Int_t bin, binx, biny, binz;
  8001    for (binz=zfirst;binz<=zlast;binz++) {
  8002       for (biny=yfirst;biny<=ylast;biny++) {
  8003          for (binx=xfirst;binx<=xlast;binx++) {
  8004             bin = 
GetBin(binx,biny,binz);
  8006             if (value < min) min = value;
  8007             if (value > max) max = value;
  8025       Error(
"SetBins",
"Operation only valid for 1-d histograms");
  8052       Error(
"SetBins",
"Operation only valid for 1-d histograms");
  8078       Error(
"SetBins",
"Operation only valid for 2-D histograms");
  8086    fNcells = (nx+2)*(ny+2);
  8106       Error(
"SetBins",
"Operation only valid for 2-D histograms");
  8114    fNcells = (nx+2)*(ny+2);
  8133       Error(
"SetBins",
"Operation only valid for 3-D histograms");
  8142    fNcells = (nx+2)*(ny+2)*(nz+2);
  8163       Error(
"SetBins",
"Operation only valid for 3-D histograms");
  8172    fNcells = (nx+2)*(ny+2)*(nz+2);
  8284          Warning(
"Sumw2",
"Sum of squares of weights structure already created");
  8319    if (bin < 0) bin = 0;
  8320    if (bin >= fNcells) bin = fNcells-1;
  8339    if (bin < 0) bin = 0;
  8340    if (bin >= fNcells) bin = fNcells-1;
  8349       Warning(
"GetBinErrorLow",
"Histogram has negative bin content-force usage to normal errors");
  8354    if (n == 0) 
return 0;
  8369    if (bin < 0) bin = 0;
  8370    if (bin >= fNcells) bin = fNcells-1;
  8379       Warning(
"GetBinErrorUp",
"Histogram has negative bin content-force usage to normal errors");
  8398    Error(
"GetBinCenter",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
  8409    Error(
"GetBinLowEdge",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
  8420    Error(
"GetBinWidth",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
  8447    Error(
"GetLowEdge",
"Invalid method for a %d-d histogram ",
fDimension);
  8462    if (bin < 0 || bin>= 
fSumw2.
fN) 
return;
  8479    if (bin < 0) 
return;
  8480    if (bin >= fNcells-1) {
  8543    return (
TH1*)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticBackground((TH1*)0x%lx,%d,\"%s\")",
  8544                                             (
ULong_t)
this, niter, option));
  8557    return (
Int_t)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticSearch((TH1*)0x%lx,%g,\"%s\",%g)",
  8558                                              (
ULong_t)
this, sigma, option, threshold));
  8576       ::Error(
"TransformHisto",
"Invalid FFT transform class");
  8581       ::Error(
"TransformHisto",
"Only 1d and 2D transform are supported");
  8595          hout = 
new TH1D(name, name,n[0], 0, n[0]);
  8597          hout = 
new TH2D(name, name, n[0], 0, n[0], n[1], 0, n[1]);
  8605          for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
  8606             for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
  8607                ind[0] = binx-1; ind[1] = biny-1;
  8613          for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
  8614             for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
  8615                ind[0] = binx-1; ind[1] = biny-1;
  8624          for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
  8625             for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
  8626                ind[0] = binx-1; ind[1] = biny-1;
  8632          ::Error(
"TransformHisto",
"No complex numbers in the output");
  8639          for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
  8640             for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
  8641                ind[0] = binx-1; ind[1] = biny-1;
  8647          for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
  8648             for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
  8649                ind[0] = binx-1; ind[1] = biny-1;
  8658          for (binx = 1; binx<=hout->
GetNbinsX(); binx++){
  8659             for (biny=1; biny<=hout->
GetNbinsY(); biny++){
  8660                ind[0] = binx-1; ind[1] = biny-1;
  8681          printf(
"Pure real output, no phase");
  8712   std::ostringstream strm;
  8731    if (fgDefaultSumw2) Sumw2();
  8739 : 
TH1(name,title,nbins,xlow,xup)
  8744    if (xlow >= xup) SetBuffer(fgBufferSize);
  8745    if (fgDefaultSumw2) Sumw2();
  8753 : 
TH1(name,title,nbins,xbins)
  8757    if (fgDefaultSumw2) Sumw2();
  8765 : 
TH1(name,title,nbins,xbins)
  8769    if (fgDefaultSumw2) Sumw2();
  8801    if (newval > -128 && newval < 128) {
fArray[bin] = 
Char_t(newval); 
return;}
  8802    if (newval < -127) 
fArray[bin] = -127;
  8803    if (newval >  127) 
fArray[bin] =  127;
  8912    if (fgDefaultSumw2) Sumw2();
  8920 : 
TH1(name,title,nbins,xlow,xup)
  8925    if (xlow >= xup) SetBuffer(fgBufferSize);
  8926    if (fgDefaultSumw2) Sumw2();
  8934 : 
TH1(name,title,nbins,xbins)
  8938    if (fgDefaultSumw2) Sumw2();
  8946 : 
TH1(name,title,nbins,xbins)
  8950    if (fgDefaultSumw2) Sumw2();
  8982    if (newval > -32768 && newval < 32768) {
fArray[bin] = 
Short_t(newval); 
return;}
  8983    if (newval < -32767) 
fArray[bin] = -32767;
  8984    if (newval >  32767) 
fArray[bin] =  32767;
  9093    if (fgDefaultSumw2) Sumw2();
  9101 : 
TH1(name,title,nbins,xlow,xup)
  9106    if (xlow >= xup) SetBuffer(fgBufferSize);
  9107    if (fgDefaultSumw2) Sumw2();
  9115 : 
TH1(name,title,nbins,xbins)
  9119    if (fgDefaultSumw2) Sumw2();
  9127 : 
TH1(name,title,nbins,xbins)
  9131    if (fgDefaultSumw2) Sumw2();
  9163    if (newval > -2147483647 && newval < 2147483647) {
fArray[bin] = 
Int_t(newval); 
return;}
  9164    if (newval < -2147483647) 
fArray[bin] = -2147483647;
  9165    if (newval >  2147483647) 
fArray[bin] =  2147483647;
  9275    if (fgDefaultSumw2) Sumw2();
  9283 : 
TH1(name,title,nbins,xlow,xup)
  9288    if (xlow >= xup) SetBuffer(fgBufferSize);
  9289    if (fgDefaultSumw2) Sumw2();
  9297 : 
TH1(name,title,nbins,xbins)
  9301    if (fgDefaultSumw2) Sumw2();
  9309 : 
TH1(name,title,nbins,xbins)
  9313    if (fgDefaultSumw2) Sumw2();
  9326    for (
Int_t i=0;i<fNcells-2;i++) {
  9327       SetBinContent(i+1,
v(i+ivlow));
  9330    if (fgDefaultSumw2) Sumw2();
  9454    if (fgDefaultSumw2) Sumw2();
  9462 : 
TH1(name,title,nbins,xlow,xup)
  9467    if (xlow >= xup) SetBuffer(fgBufferSize);
  9468    if (fgDefaultSumw2) Sumw2();
  9476 : 
TH1(name,title,nbins,xbins)
  9480    if (fgDefaultSumw2) Sumw2();
  9488 : 
TH1(name,title,nbins,xbins)
  9492    if (fgDefaultSumw2) Sumw2();
  9505    for (
Int_t i=0;i<fNcells-2;i++) {
  9506       SetBinContent(i+1,
v(i+ivlow));
  9509    if (fgDefaultSumw2) Sumw2();
  9627    if(hid >= 0) hname.
Form(
"h%d",hid);
  9628    else         hname.
Form(
"h_%d",hid);
 
static void StatOverflows(Bool_t flag=kTRUE)
if flag=kTRUE, underflows and overflows are used by the Fill functions in the computation of statisti...
Abstract array base class. 
virtual void Browse(TBrowser *b)
Browse the Histogram object. 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out. 
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title Offset is a correction factor with respect to the "s...
virtual const char * GetName() const
Returns name of object. 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array. 
virtual void Print(Option_t *option="") const
Print some global quantities for this histogram. 
virtual void SetNameTitle(const char *name, const char *title)
Change the name and title of this histogram. 
virtual void SetLineWidth(Width_t lwidth)
Set the line width. 
virtual UInt_t GetUniqueID() const
Return the unique object id. 
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z. 
virtual Float_t GetTickLength() const
virtual Int_t GetNcells() const
Double_t fNormFactor
Normalization factor. 
virtual void SetBarOffset(Float_t offset=0.25)
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1. 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1. 
virtual Int_t ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05)
Interface to TSpectrum::Search. 
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
TH1D & operator=(const TH1D &h1)
Operator =. 
virtual Double_t IntegralAndError(Int_t binx1, Int_t binx2, Double_t &err, Option_t *option="") const
Return integral of bin contents in range [binx1,binx2] and its error. 
void SetBarWidth(Float_t barwidth=0.5)
static long int sum(long int i)
virtual void SaveAttributes(std::ostream &out, const char *name, const char *subname)
Save axis attributes as C++ statement(s) on output stream out. 
virtual Double_t GetEffectiveEntries() const
Number of effective entries of the histogram. 
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms. 
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects. 
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram. 
const char * GetBinLabel(Int_t bin) const
Return label for bin. 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message. 
virtual Double_t PoissonD(Double_t mean)
Generates a random number according to a Poisson law. 
Bool_t IsBinUnderflow(Int_t bin, Int_t axis=0) const
Return true if the bin is underflow. 
Double_t Floor(Double_t x)
void Set(Int_t n)
Set size of this array to n chars. 
virtual ~TH1I()
Destructor. 
Int_t GetFirst() const
Return first bin on the axis i.e. 
virtual Int_t AutoP2FindLimits(Double_t min, Double_t max)
Buffer-based estimate of the histogram range using the power of 2 algorithm. 
virtual void SetMaximum(Double_t maximum=-1111)
double Chisquare(const TH1 &h1, TF1 &f1, bool useRange, bool usePL=false)
compute the chi2 value for an histogram given a function (see TH1::Chisquare for the documentation) ...
void UseCurrentStyle()
Copy current attributes from/to current style. 
void Copy(TArrayI &array) const
virtual void LabelsOption(Option_t *option="h", Option_t *axis="X")
Set option(s) to draw axis with labels. 
virtual void SetLimits(Double_t xmin, Double_t xmax)
Short_t fBarWidth
(1000*width) for bar charts or legos 
Bool_t IsBinOverflow(Int_t bin, Int_t axis=0) const
Return true if the bin is overflow. 
static Bool_t fgDefaultSumw2
!flag to call TH1::Sumw2 automatically at histogram creation time 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)=0
Computes distance from point (px,py) to the object. 
TVirtualHistPainter * GetPainter(Option_t *option="")
Return pointer to painter. 
virtual void FitPanel()
Display a panel with all histogram fit options. 
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
virtual TF1 * GetFunction(const char *name) const
Return pointer to function with name. 
virtual Float_t GetLabelOffset() const
virtual Float_t GetBarOffset() const
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin. 
Double_t KolmogorovProb(Double_t z)
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
Bool_t GetStatOverflowsBehaviour() const
TList * fFunctions
->Pointer to list of functions (fits and user) 
virtual Int_t FindLastBinAbove(Double_t threshold=0, Int_t axis=1) const
Find last bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold i...
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters. 
virtual Int_t GetXfirst() const
virtual void SetName(const char *name)
Set the name of the TNamed. 
virtual Color_t GetAxisColor() const
TH1 * GetAsymmetry(TH1 *h2, Double_t c2=1, Double_t dc2=0)
Return an histogram containing the asymmetry of this histogram with h2, where the asymmetry is define...
static Bool_t fgStatOverflows
!flag to use under/overflows in statistics 
virtual TH1 * DrawNormalized(Option_t *option="", Double_t norm=1) const
Draw a normalized copy of this histogram. 
static Bool_t SameLimitsAndNBins(const TAxis &axis1, const TAxis &axis2)
Same limits and bins. 
virtual ~TH1F()
Destructor. 
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels. 
void Build()
Creates histogram basic data structure. 
EStatOverflows fStatOverflows
per object flag to use under/overflows in statistics 
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows. 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin. 
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis. 
virtual void Copy(TObject &hnew) const
Copy this to newth1. 
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0)
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined...
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents. 
void ToUpper()
Change string to upper case. 
virtual void Reset(Option_t *option="")
Reset. 
friend TH1D operator/(const TH1D &h1, const TH1D &h2)
Operator /. 
static bool CheckAxisLimits(const TAxis *a1, const TAxis *a2)
Check that the axis limits of the histograms are the same. 
Buffer base class used for serializing objects. 
friend TH1S operator+(const TH1S &h1, const TH1S &h2)
Operator +. 
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis. 
virtual Int_t GetNbinsZ() const
virtual void SetMinimum(Double_t minimum=-1111)
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder. 
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis. 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Copy(TObject &hnew) const
Copy this to newth1. 
Int_t LoadPlugin()
Load the plugin library for this handler. 
virtual void GetBinXYZ(Int_t binglobal, Int_t &binx, Int_t &biny, Int_t &binz) const
Return binx, biny, binz corresponding to the global bin number globalbin see TH1::GetBin function abo...
Option_t * GetOption() const
double gamma_quantile_c(double z, double alpha, double theta)
Inverse ( ) of the cumulative distribution function of the upper tail of the gamma distribution (gamm...
virtual void Copy(TObject &hnew) const
Copy this to newth1. 
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT. 
1-D histogram with a float per channel (see TH1 documentation)} 
1-D histogram with a short per channel (see TH1 documentation) 
void H1InitExpo()
Compute Initial values of parameters for an exponential. 
Array of floats (32 bits per element). 
static Double_t AutoP2GetPower2(Double_t x, Bool_t next=kTRUE)
Auxilliary function to get the power of 2 next (larger) or previous (smaller) a given x...
virtual void SetTitleFont(Style_t font=62)
Set the title font. 
Short_t Min(Short_t a, Short_t b)
void ToLower()
Change string to lower-case. 
void SetBarOffset(Float_t baroff=0.5)
R__EXTERN TVirtualMutex * gROOTMutex
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker. 
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad. 
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style. 
virtual void Smooth(Int_t ntimes=1, Option_t *option="")
Smooth bin contents of this histogram. 
TArrayD fSumw2
Array of sum of squares of weights. 
user specified contour levels 
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual void Copy(TObject &axis) const
Copy axis structure to another axis. 
void Copy(TArrayC &array) const
virtual Float_t GetLabelSize() const
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram. 
static Bool_t AlmostInteger(Double_t a, Double_t epsilon=0.00000001)
Test if a double is almost an integer. 
virtual void Copy(TObject &hnew) const
Copy this to newth1. 
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral. 
virtual Int_t FindGoodLimits(TH1 *h, Double_t xmin, Double_t xmax)
Compute the best axis limits for the X axis. 
static Bool_t RecomputeAxisLimits(TAxis &destAxis, const TAxis &anAxis)
Finds new limits for the axis for the Merge function. 
TAxis fZaxis
Z axis descriptor. 
virtual 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
Delete a TObjLink object. 
Width_t GetHistLineWidth() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory. 
if object in a list can be deleted 
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin. 
virtual void SetBarWidth(Float_t width=0.5)
virtual void SetLabelFont(Style_t font=62)
Set labels' font. 
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad. 
static TVirtualHistPainter * HistPainter(TH1 *obj)
Static function returning a pointer to the current histogram painter. 
virtual void SetPoint(Int_t ipoint, Double_t re, Double_t im=0)=0
virtual Style_t GetMarkerStyle() const
Return the marker style. 
TDirectory * fDirectory
!Pointer to directory holding this histogram 
static void SetDefaultSumw2(Bool_t sumw2=kTRUE)
When this static function is called with sumw2=kTRUE, all new histograms will automatically activate ...
virtual Style_t GetTitleFont() const
static bool CheckConsistentSubAxes(const TAxis *a1, Int_t firstBin1, Int_t lastBin1, const TAxis *a2, Int_t firstBin2=0, Int_t lastBin2=0)
Check that two sub axis are the same. 
virtual Style_t GetLineStyle() const
Return the line style. 
virtual Int_t GetDimension() const
virtual Double_t Interpolate(Double_t x)
Given a point x, approximates the value via linear interpolation based on the two nearest bin centers...
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero. 
TH1C & operator=(const TH1C &h1)
Operator =. 
virtual void Paint(Option_t *option="")=0
This method must be overridden if a class wants to paint itself. 
virtual const char * ClassName() const
Returns name of class to which the object belongs. 
Fill Area Attributes class. 
static Int_t FitOptionsMake(Option_t *option, Foption_t &Foption)
Decode string choptin and fill fitOption structure. 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
virtual void Eval(TF1 *f1, Option_t *option="")
Evaluate function f1 at the center of bins of this histogram. 
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
static Bool_t GetDefaultSumw2()
Return kTRUE if TH1::Sumw2 must be called when creating new histograms. 
void SetHistFillColor(Color_t color=1)
virtual Bool_t GetTimeDisplay() const
static void SetDefaultBufferSize(Int_t buffersize=1000)
Static function to set the default buffer size for automatic histograms. 
Use Power(2)-based algorithm for autobinning. 
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine. 
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out. 
virtual Double_t Chi2Test(const TH1 *h2, Option_t *option="UU", Double_t *res=0) const
 test for comparing weighted and unweighted histograms 
The TNamed class is the base class for all named ROOT classes. 
virtual ~TH1()
Histogram default destructor. 
THashList * GetLabels() const
friend TH1D operator-(const TH1D &h1, const TH1D &h2)
Operator -. 
Double_t Log10(Double_t x)
virtual void SetContourLevel(Int_t level, Double_t value)
Set value for one contour level. 
#define R__WRITE_LOCKGUARD(mutex)
virtual void GetCenter(Double_t *center) const
Return an array with the center of all bins. 
Abstract interface to a histogram painter. 
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin. 
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color. 
Style_t GetHistFillStyle() const
TString & Append(const char *cs)
virtual void GetLowEdge(Double_t *edge) const
Return an array with the lod edge of all bins. 
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
void H1InitGaus()
Compute Initial values of parameters for a gaussian. 
virtual Size_t GetMarkerSize() const
Return the marker size. 
R__EXTERN TVirtualRWMutex * gCoreMutex
virtual bool UseRWLock()
Set this collection to use a RW lock upon access, making it thread safe. 
virtual void DrawPanel()=0
errors from Poisson interval at 95% CL (~ 2 sigma) 
TString fOption
histogram options 
friend TH1I operator-(const TH1I &h1, const TH1I &h2)
Operator -. 
virtual void SaveMarkerAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1)
Save line attributes as C++ statement(s) on output stream out. 
virtual Int_t * GetN() const =0
Float_t GetBarWidth() const
virtual Bool_t FindNewAxisLimits(const TAxis *axis, const Double_t point, Double_t &newMin, Double_t &newMax)
finds new limits for the axis so that point is within the range and the limits are compatible with th...
virtual void SetContent(const Double_t *content)
Replace bin contents by the contents of array content. 
virtual void AddBinContent(Int_t bin)
Increment bin content by 1. 
friend TH1C operator*(Double_t c1, const TH1C &h1)
Operator *. 
virtual void ResetStats()
Reset the statistics including the number of entries and replace with values calculates from bin cont...
void Set(Int_t n)
Set size of this array to n ints. 
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. 
friend TH1S operator/(const TH1S &h1, const TH1S &h2)
Operator /. 
Using a TBrowser one can browse all ROOT objects. 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event. 
virtual Double_t * GetIntegral()
Return a pointer to the array of bins integral. 
NOTE: Must always be 0 !!! 
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last. 
void Clear(Option_t *option="")
Remove all objects from the list. 
std::string printValue(const TDatime *val)
Print a TDatime at the prompt. 
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
Set limits for parameter ipar. 
friend TH1C operator-(const TH1C &h1, const TH1C &h2)
Operator -. 
void Copy(TArrayF &array) const
friend TH1C operator+(const TH1C &h1, const TH1C &h2)
Operator +. 
void FillData(BinData &dv, const TH1 *hist, TF1 *func=0)
fill the data vector from a TH1. 
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty. 
virtual void FillRandom(const char *fname, Int_t ntimes=5000)
Fill histogram following distribution in function fname. 
void SetHistFillStyle(Style_t styl=0)
Int_t GetLast() const
Return last bin on the axis i.e. 
static void SmoothArray(Int_t NN, Double_t *XX, Int_t ntimes=1)
Smooth array xx, translation of Hbook routine hsmoof.F based on algorithm 353QH twice presented by J...
Class to manage histogram axis. 
virtual Double_t GetKurtosis(Int_t axis=1) const
virtual void Draw(Option_t *option="")
Draw this histogram with options. 
static bool CheckBinLabels(const TAxis *a1, const TAxis *a2)
Check that axis have same labels. 
Array of shorts (16 bits per element). 
virtual Double_t GetPointReal(Int_t ipoint, Bool_t fromInput=kFALSE) const =0
if object ctor succeeded but object should not be used 
TH1 * R__H(Int_t hid)
return pointer to histogram with name hid if id >=0 h_id if id <0 
virtual void SetFillColor(Color_t fcolor)
Set the fill area color. 
A 3-Dim function with parameters. 
virtual Double_t GetBinWithContent(Double_t c, Int_t &binx, Int_t firstx=0, Int_t lastx=0, Double_t maxdiff=0) const
Compute first binx in the range [firstx,lastx] for which diff = abs(bin_content-c) <= maxdiff...
friend TH1I operator+(const TH1I &h1, const TH1I &h2)
Operator +. 
void SetCanExtend(Bool_t canExtend)
1-D histogram with an int per channel (see TH1 documentation)} 
Long_t ExecPlugin(int nargs, const T &... params)
virtual TObject * Remove(TObject *obj)
Remove object from the list. 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)=0
Execute action corresponding to an event at (px,py). 
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
static TH1 * TransformHisto(TVirtualFFT *fft, TH1 *h_output, Option_t *option)
For a given transform (first parameter), fills the histogram (second parameter) with the transform ou...
static TVirtualFFT * FFT(Int_t ndim, Int_t *n, Option_t *option)
Returns a pointer to the FFT of requested size and type. 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname". 
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Collection abstract base class. 
static Int_t fgBufferSize
!default buffer size for automatic histograms 
virtual TH1 * Rebin(Int_t ngroup=2, const char *newname="", const Double_t *xbins=0)
Rebin this histogram. 
virtual Double_t AndersonDarlingTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using the Anderson-Darling ...
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor. 
Double_t fEntries
Number of entries. 
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out. 
virtual Float_t GetTitleOffset() const
virtual void LabelsDeflate(Option_t *axis="X")
Reduce the number of bins for the axis passed in the option to the number of bins having a label...
virtual void DoFillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1)
Internal method to fill histogram content from a vector called directly by TH1::BufferEmpty. 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message. 
char * Form(const char *fmt,...)
virtual void Transform()=0
virtual Double_t Chisquare(TF1 *f1, Option_t *option="") const
Compute and return the chisquare of this histogram with respect to a function The chisquare is comput...
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory. 
static TVirtualFitter * GetFitter()
static: return the current Fitter 
virtual void Copy(TObject &hnew) const
Copy this histogram structure to newth1. 
virtual TH1 * ShowBackground(Int_t niter=20, Option_t *option="same")
This function calculates the background spectrum in this histogram. 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array. 
virtual ~TH1C()
Destructor. 
static void RejectPoint(Bool_t reject=kTRUE)
Static function to set the global flag to reject points the fgRejectPoint global flag is tested by al...
virtual void Copy(TObject &hnew) const
Copy this to newth1. 
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style. 
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates. 
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range. 
virtual Color_t GetTitleColor() const
Double_t * fIntegral
!Integral of bins used by GetRandom 
virtual void SetBinErrorOption(EBinErrorOpt type)
friend TH1F operator*(Double_t c1, const TH1F &h1)
Operator *. 
static bool CheckConsistency(const TH1 *h1, const TH1 *h2)
Check histogram compatibility. 
A 2-Dim function with parameters. 
void H1LeastSquareSeqnd(Int_t n, Double_t *a, Int_t idim, Int_t &ifail, Int_t k, Double_t *b)
Extracted from CERN Program library routine DSEQN. 
TH1()
Histogram default constructor. 
R__EXTERN TRandom * gRandom
1-D histogram with a double per channel (see TH1 documentation)} 
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z. 
static Int_t GetDefaultBufferSize()
Static function return the default buffer size for automatic histograms the parameter fgBufferSize ma...
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
Set color of the line axis and tick marks. 
virtual TObject * FindObject(const char *name) const
Search object named name in the list of functions. 
virtual void Rebuild(Option_t *option="")
Using the current bin info, recompute the arrays for contents and errors. 
virtual Int_t FindFirstBinAbove(Double_t threshold=0, Int_t axis=1) const
Find first bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold ...
if object destructor must call RecursiveRemove() 
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels The size is expressed in per cent of the pad width. 
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size. 
friend TH1I operator/(const TH1I &h1, const TH1I &h2)
Operator /. 
virtual void SetTitleColor(Color_t color=1)
Set color of axis title. 
virtual TObjLink * FirstLink() const
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title The size is expressed in per cent of the pad width. 
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from the list of functions. 
EBinErrorOpt fBinStatErrOpt
option for bin statistical errors 
virtual Double_t RetrieveBinContent(Int_t bin) const
Raw retrieval of bin content on internal data structure see convention for numbering bins in TH1::Get...
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N) 
TVirtualFFT is an interface class for Fast Fourier Transforms. 
virtual Color_t GetLineColor() const
Return the line color. 
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x. 
virtual void SetName(const char *name)
Change the name of this histogram. 
friend TH1I operator*(Double_t c1, const TH1I &h1)
Operator *. 
static TVirtualFFT * SineCosine(Int_t ndim, Int_t *n, Int_t *r2rkind, Option_t *option)
Returns a pointer to a sine or cosine transform of requested size and kind. 
TString & Remove(Ssiz_t pos)
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual Int_t GetSumw2N() const
Double_t fTsumw2
Total Sum of squares of weights. 
Color_t GetHistFillColor() const
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function. 
virtual void GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const =0
Bin contents are average (used by Add) 
virtual Bool_t IsEmpty() const
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram. 
static const double x1[5]
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list. 
class describing the range in the coordinates it supports multiple range in a coordinate. 
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin. 
friend TH1F operator+(const TH1F &h1, const TH1F &h2)
Operator +. 
void SetHistLineStyle(Style_t styl=0)
virtual void SavePrimitiveHelp(std::ostream &out, const char *hname, Option_t *option="")
Helper function for the SavePrimitive functions from TH1 or classes derived from TH1, eg TProfile, TProfile2D. 
Double_t fTsumw
Total Sum of weights. 
Color_t GetHistLineColor() const
friend TH1D operator*(Double_t c1, const TH1D &h1)
Operator *. 
Describe directory structure in memory. 
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
Double_t Median(Long64_t n, const T *a, const Double_t *w=0, Long64_t *work=0)
virtual Color_t GetFillColor() const
Return the fill area color. 
TH1I & operator=(const TH1I &h1)
Operator =. 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static constexpr double s
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
virtual Double_t GetEntries() const
Return the current number of entries. 
friend TH1F operator/(const TH1F &h1, const TH1F &h2)
Operator /. 
#define R__LOCKGUARD(mutex)
void forward(const LAYERDATA &prevLayerData, LAYERDATA &currLayerData)
apply the weights (and functions) in forward direction of the DNN 
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual Float_t GetTitleSize() const
virtual Double_t Chi2TestX(const TH1 *h2, Double_t &chi2, Int_t &ndf, Int_t &igood, Option_t *option="UU", Double_t *res=0) const
The computation routine of the Chisquare test. 
static bool IsEquidistantBinning(const TAxis &axis)
Test if the binning is equidistant. 
Short_t fBarOffset
(1000*offset) for bar charts or legos 
virtual void SetLineStyle(Style_t lstyle)
Set the line style. 
Array of doubles (64 bits per element). 
void FitOptionsMake(EFitObjectType type, const char *option, Foption_t &fitOption)
Decode list of options into fitOption. 
virtual void InitArgs(const Double_t *x, const Double_t *params)
Initialize parameters addresses. 
virtual Bool_t Add(TF1 *h1, Double_t c1=1, Option_t *option="")
Performs the operation: this = this + c1*f1 if errors are defined (see TH1::Sumw2), errors are also recalculated. 
Abstract Base Class for Fitting. 
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
virtual Int_t FindFixBin(Double_t x, Double_t y=0, Double_t z=0) const
Return Global bin number corresponding to x,y,z. 
Mother of all ROOT objects. 
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x. 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array. 
you should not use this method at all Int_t Int_t z
virtual void ClearUnderflowAndOverflow()
Remove all the content from the underflow and overflow bins, without changing the number of entries A...
virtual Bool_t IsInside(const Double_t *x) const
return kTRUE if the point is inside the function range 
TObject * GetObject() const
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Redefines TObject::GetObjectInfo. 
TH1S & operator=(const TH1S &h1)
Operator =. 
virtual Int_t GetNpar() const
Style_t GetHistLineStyle() const
Double_t fMaximum
Maximum value for plotting. 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width. 
virtual void DirectoryAutoAdd(TDirectory *)
Perform the automatic addition of the histogram to the given directory. 
TVirtualHistPainter * fPainter
!pointer to histogram painter 
virtual void Copy(TObject &named) const
Copy this to obj. 
friend TH1C operator/(const TH1C &h1, const TH1C &h2)
Operator /. 
friend TH1S operator*(Double_t c1, const TH1S &h1)
Operator *. 
static Bool_t RejectedPoint()
See TF1::RejectPoint above. 
virtual void DrawPanel()
Display a panel with all histogram drawing options. 
virtual void Add(TObject *obj)
Int_t fBufferSize
fBuffer size 
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range. 
virtual Double_t GetBinErrorSqUnchecked(Int_t bin) const
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function. 
virtual Double_t DoIntegral(Int_t ix1, Int_t ix2, Int_t iy1, Int_t iy2, Int_t iz1, Int_t iz2, Double_t &err, Option_t *opt, Bool_t doerr=kFALSE) const
Internal function compute integral and optionally the error between the limits specified by the bin n...
virtual void FillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1)
Fill this histogram with an array x and weights w. 
Short_t Max(Short_t a, Short_t b)
virtual void SetBinsLength(Int_t=-1)
1-D histogram with a byte per channel (see TH1 documentation) 
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights. 
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object. 
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Double_t GetAt(Int_t i) const
Double_t Ceil(Double_t x)
friend TH1F operator-(const TH1F &h1, const TH1F &h2)
Operator -. 
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Int_t fDimension
!Histogram dimension (1, 2 or 3 dim) 
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
virtual void SetTickLength(Float_t length=0.03)
Set tick mark length The length is expressed in per cent of the pad width. 
virtual Int_t GetXlast() const
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin. 
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer. 
virtual void SetParent(TObject *obj)
void Set(Int_t n)
Set size of this array to n floats. 
virtual ~TH1D()
Destructor. 
virtual void SetEntries(Double_t n)
TAxis fXaxis
X axis descriptor. 
Float_t GetBarOffset() const
virtual TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function. 
virtual void SetParameter(Int_t param, Double_t value)
virtual void AddBinContent(Int_t bin)
Increment bin content by 1. 
virtual void SetTitle(const char *title)
See GetStatOverflows for more information. 
TFitResultPtr FitObject(TH1 *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
fitting function for a TH1 (called from TH1::Fit) 
virtual Int_t GetNdim() const =0
virtual Color_t GetMarkerColor() const
Return the marker color. 
virtual Int_t GetNbinsX() const
Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object. 
virtual Int_t Poisson(Double_t mean)
Generates a random integer N according to a Poisson law. 
virtual Style_t GetFillStyle() const
Return the fill area style. 
Double_t Sqrt(Double_t x)
virtual void AddBinContent(Int_t bin)
Increment bin content by 1. 
Bool_t GetCanvasPreferGL() const
virtual const char * GetName() const
Returns name of object. 
virtual Int_t GetSize() const
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...
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. 
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array. 
virtual Style_t GetLabelFont() const
void Copy(TArrayS &array) const
virtual Long64_t Merge(TCollection *list)
Add all histograms in the collection to this histogram. 
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
double ldexp(double, int)
virtual const char * GetTitle() const
Returns title of object. 
virtual Int_t GetNbinsY() const
virtual Option_t * GetType() const =0
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin. 
virtual Int_t ReadArray(Bool_t *&b)=0
Int_t fNcells
number of bins(1D), cells (2D) +U/Overflows 
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill. 
void AndersonDarling2SamplesTest(Double_t &pvalue, Double_t &testStat) const
T MinElement(Long64_t n, const T *a)
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".