540class DifferentDimension: 
public std::exception {};
 
  541class DifferentNumberOfBins: 
public std::exception {};
 
  542class DifferentAxisLimits: 
public std::exception {};
 
  543class DifferentBinLimits: 
public std::exception {};
 
  544class DifferentLabels: 
public std::exception {};
 
  644   if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
 
  666   if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
 
  688   if (nbins <= 0) {
Warning(
"TH1",
"nbins is <=0 - set to nbins = 1"); nbins = 1; }
 
  716   Draw(
b ? 
b->GetDrawOption() : 
"");
 
  781      Error(
"Add",
"Attempt to add a non-existing function");
 
  801   for (
Int_t i = 0; i < 10; ++i) 
s1[i] = 0;
 
  807   Int_t bin, binx, biny, binz;
 
  812   for (binz = 0; binz < ncellsz; ++binz) {
 
  814      for (biny = 0; biny < ncellsy; ++biny) {
 
  816         for (binx = 0; binx < ncellsx; ++binx) {
 
  820            bin = binx + ncellsx * (biny + ncellsy * binz);
 
  866      Error(
"Add",
"Attempt to add a non-existing histogram");
 
  877   } 
catch(DifferentNumberOfBins&) {
 
  879         Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
 
  881         Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 =  %d",
GetNbinsX(), 
h1->
GetNbinsX());
 
  884   } 
catch(DifferentAxisLimits&) {
 
  886         Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
 
  888         Warning(
"Add",
"Attempt to add histograms with different axis limits");
 
  889   } 
catch(DifferentBinLimits&) {
 
  891         Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
 
  893         Warning(
"Add",
"Attempt to add histograms with different bin limits");
 
  894   } 
catch(DifferentLabels&) {
 
  897         Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
 
  899         Info(
"Warning",
"Attempt to add histograms with different labels");
 
  904      l.Add(
const_cast<TH1*
>(
h1));
 
  947         if (e1sq) w1 = 1. / e1sq;
 
  952               double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
 
  956         if (e2sq) w2 = 1. / e2sq;
 
  961               double sf = (
s1[0] != 0) ? 
s1[1]/
s1[0] : 1;
 
  966         double y =  (w1*y1 + w2*y2)/(w1 + w2);
 
  969            double err2 =  1./(w1 + w2);
 
  970            if (err2 < 1.E-200) err2 = 0;  
 
  986         if (i == 1) 
s1[i] += 
c1*
c1*s2[i];
 
  987         else        s1[i] += 
c1*s2[i];
 
 1028      Error(
"Add",
"Attempt to add a non-existing histogram");
 
 1036   if (
h1 == h2 && 
c2 < 0) {
c2 = 0; normWidth = 
kTRUE;}
 
 1045      } 
catch(DifferentNumberOfBins&) {
 
 1047            Info(
"Add",
"Attempt to add histograms with different number of bins - trying to use TH1::Merge");
 
 1049            Error(
"Add",
"Attempt to add histograms with different number of bins : nbins h1 = %d , nbins h2 =  %d",
GetNbinsX(), 
h1->
GetNbinsX());
 
 1052      } 
catch(DifferentAxisLimits&) {
 
 1054            Info(
"Add",
"Attempt to add histograms with different axis limits - trying to use TH1::Merge");
 
 1056            Warning(
"Add",
"Attempt to add histograms with different axis limits");
 
 1057      } 
catch(DifferentBinLimits&) {
 
 1059            Info(
"Add",
"Attempt to add histograms with different bin limits - trying to use TH1::Merge");
 
 1061            Warning(
"Add",
"Attempt to add histograms with different bin limits");
 
 1062      } 
catch(DifferentLabels&) {
 
 1065            Info(
"Add",
"Attempt to add histograms with different labels - trying to use TH1::Merge");
 
 1067            Info(
"Warning",
"Attempt to add histograms with different labels");
 
 1073         l.Add(
const_cast<TH1*
>(
h1));
 
 1074         l.Add(
const_cast<TH1*
>(h2));
 
 1096   Bool_t resetStats = (
c1*
c2 < 0) || normWidth;
 
 1103         if (i == 1) s3[i] = 
c1*
c1*
s1[i] + 
c2*
c2*s2[i];
 
 1105         else        s3[i] = 
c1*
s1[i] + 
c2*s2[i];
 
 1121      Int_t bin, binx, biny, binz;
 
 1122      for (binz = 0; binz < nbinsz; ++binz) {
 
 1124         for (biny = 0; biny < nbinsy; ++biny) {
 
 1126            for (binx = 0; binx < nbinsx; ++binx) {
 
 1128               bin = 
GetBin(binx, biny, binz);
 
 1149         if (e1sq) w1 = 1./ e1sq;
 
 1153               double sf = (
s1[0] != 0) ? 
s1[1]/
s1[0] : 1;
 
 1157         if (e2sq) w2 = 1./ e2sq;
 
 1161               double sf = (s2[0] != 0) ? s2[1]/s2[0] : 1;
 
 1166         double y =  (w1*y1 + w2*y2)/(w1 + w2);
 
 1169            double err2 =  1./(w1 + w2);
 
 1170            if (err2 < 1.E-200) err2 = 0;  
 
 1244   return ((next && 
x > 0.) || (!next && 
x <= 0.)) ? 
std::ldexp(std::copysign(1., f2), nn)
 
 1299   Double_t rr = (xhma - xhmi) / (xma - xmi);
 
 1309   Int_t nbup = (xhma - xma) / bw;
 
 1312   if (nbup != nbside) {
 
 1314      xhma -= bw * (nbup - nbside);
 
 1315      nb -= (nbup - nbside);
 
 1319   Int_t nblw = (xmi - xhmi) / bw;
 
 1322   if (nblw != nbside) {
 
 1324      xhmi += bw * (nblw - nbside);
 
 1325      nb -= (nblw - nbside);
 
 1355   if (nbentries == 0) {
 
 1365   if (nbentries < 0 && action == 0) 
return 0;    
 
 1368   if (nbentries < 0) {
 
 1369      nbentries  = -nbentries;
 
 1381      for (
Int_t i=1;i<nbentries;i++) {
 
 1391                       "incosistency found by power-of-2 autobin algorithm: fallback to standard method");
 
 1409   DoFillN(nbentries,&buffer[2],&buffer[1],2);
 
 1443   if (nbentries < 0) {
 
 1446      nbentries  = -nbentries;
 
 1478      if ( h2Array->
fN != fN ) {
 
 1479         throw DifferentBinLimits();
 
 1483         for ( 
int i = 0; i < fN; ++i ) {
 
 1488               throw DifferentBinLimits();
 
 1509      throw DifferentLabels();
 
 1514      throw DifferentLabels();
 
 1517   for (
int i = 1; i <= a1->
GetNbins(); ++i) {
 
 1520      if (label1 != label2) {
 
 1521         throw DifferentLabels();
 
 1539      throw DifferentAxisLimits();
 
 1552      ::Info(
"CheckEqualAxes",
"Axes have different number of bins : nbin1 = %d nbin2 = %d",a1->
GetNbins(),a2->
GetNbins() );
 
 1557   } 
catch (DifferentAxisLimits&) {
 
 1558      ::Info(
"CheckEqualAxes",
"Axes have different limits");
 
 1563   } 
catch (DifferentBinLimits&) {
 
 1564      ::Info(
"CheckEqualAxes",
"Axes have different bin limits");
 
 1571   } 
catch (DifferentLabels&) {
 
 1572      ::Info(
"CheckEqualAxes",
"Axes have different labels");
 
 1587   Int_t nbins1   = lastBin1-firstBin1 + 1;
 
 1595   if (firstBin2 <  lastBin2) {
 
 1597      nbins2   = lastBin1-firstBin1 + 1;
 
 1602   if (nbins1 != nbins2 ) {
 
 1603      ::Info(
"CheckConsistentSubAxes",
"Axes have different number of bins");
 
 1611      ::Info(
"CheckConsistentSubAxes",
"Axes have different limits");
 
 1623   if (
h1 == h2) 
return true;
 
 1626      throw DifferentDimension();
 
 1638       (dim > 1 && nbinsy != h2->
GetNbinsY())  ||
 
 1639       (dim > 2 && nbinsz != h2->
GetNbinsZ()) ) {
 
 1640      throw DifferentNumberOfBins();
 
 1955   Int_t ndf = 0, igood = 0;
 
 1963      printf(
"Chi2 = %f, Prob = %g, NDF = %d, igood = %d\n", chi2,prob,ndf,igood);
 
 1966      if (ndf == 0) 
return 0;
 
 2014   Int_t i_start, i_end;
 
 2015   Int_t j_start, j_end;
 
 2016   Int_t k_start, k_end;
 
 2045      Error(
"Chi2TestX",
"Histograms have different dimensions.");
 
 2050   if (nbinx1 != nbinx2) {
 
 2051      Error(
"Chi2TestX",
"different number of x channels");
 
 2053   if (nbiny1 != nbiny2) {
 
 2054      Error(
"Chi2TestX",
"different number of y channels");
 
 2056   if (nbinz1 != nbinz2) {
 
 2057      Error(
"Chi2TestX",
"different number of z channels");
 
 2061   i_start = j_start = k_start = 1;
 
 2092   ndf = (i_end - i_start + 1) * (j_end - j_start + 1) * (k_end - k_start + 1) - 1;
 
 2099   if (scaledHistogram && !comparisonUU) {
 
 2100      Info(
"Chi2TestX", 
"NORM option should be used together with UU option. It is ignored");
 
 2107   Double_t effEntries1 = (
s[1] ? 
s[0] * 
s[0] / 
s[1] : 0.0);
 
 2111   Double_t effEntries2 = (
s[1] ? 
s[0] * 
s[0] / 
s[1] : 0.0);
 
 2113   if (!comparisonUU && !comparisonUW && !comparisonWW ) {
 
 2115      if (
TMath::Abs(sumBinContent1 - effEntries1) < 1) {
 
 2116         if ( 
TMath::Abs(sumBinContent2 - effEntries2) < 1) comparisonUU = 
true;
 
 2117         else comparisonUW = 
true;
 
 2119      else comparisonWW = 
true;
 
 2123      if (
TMath::Abs(sumBinContent1 - effEntries1) >= 1) {
 
 2124         Warning(
"Chi2TestX",
"First histogram is not unweighted and option UW has been requested");
 
 2127   if ( (!scaledHistogram && comparisonUU)   ) {
 
 2128      if ( ( 
TMath::Abs(sumBinContent1 - effEntries1) >= 1) || (
TMath::Abs(sumBinContent2 - effEntries2) >= 1) ) {
 
 2129         Warning(
"Chi2TestX",
"Both histograms are not unweighted and option UU has been requested");
 
 2135   if (comparisonUU && scaledHistogram) {
 
 2136      for (
Int_t i = i_start; i <= i_end; ++i) {
 
 2137         for (
Int_t j = j_start; j <= j_end; ++j) {
 
 2138            for (
Int_t k = k_start; k <= k_end; ++k) {
 
 2147               if (e1sq > 0.0) cnt1 = 
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5); 
 
 2150               if (e2sq > 0.0) cnt2 = 
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5); 
 
 2161      if (sumw1 <= 0.0 || sumw2 <= 0.0) {
 
 2162         Error(
"Chi2TestX", 
"Cannot use option NORM when one histogram has all zero errors");
 
 2167      for (
Int_t i = i_start; i <= i_end; ++i) {
 
 2168         for (
Int_t j = j_start; j <= j_end; ++j) {
 
 2169            for (
Int_t k = k_start; k <= k_end; ++k) {
 
 2183   if (sum1 == 0.0 || sum2 == 0.0) {
 
 2184      Error(
"Chi2TestX",
"one histogram is empty");
 
 2188   if ( comparisonWW  && ( sumw1 <= 0.0 && sumw2 <= 0.0 ) ){
 
 2189      Error(
"Chi2TestX",
"Hist1 and Hist2 have both all zero errors\n");
 
 2199      for (
Int_t i = i_start; i <= i_end; ++i) {
 
 2200         for (
Int_t j = j_start; j <= j_end; ++j) {
 
 2201            for (
Int_t k = k_start; k <= k_end; ++k) {
 
 2208               if (scaledHistogram) {
 
 2213                  if (e1sq > 0) cnt1 = 
TMath::Floor(cnt1 * cnt1 / e1sq + 0.5); 
 
 2216                  if (e2sq > 0) cnt2 = 
TMath::Floor(cnt2 * cnt2 / e2sq + 0.5); 
 
 2220               if (
Int_t(cnt1) == 0 && 
Int_t(cnt2) == 0) --ndf;  
 
 2227                  if (res) res[i - i_start] = (cnt1 - nexp1) / 
TMath::Sqrt(nexp1);
 
 2236                  Double_t delta = sum2 * cnt1 - sum1 * cnt2;
 
 2237                  chi2 += delta * delta / cntsum;
 
 2242      chi2 /= sum1 * sum2;
 
 2247         Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
 
 2251         Info(
"Chi2TestX",
"There is a bin in h2 with less than 1 event.\n");
 
 2262   if ( comparisonUW ) {
 
 2263      for (
Int_t i = i_start; i <= i_end; ++i) {
 
 2264         for (
Int_t j = j_start; j <= j_end; ++j) {
 
 2265            for (
Int_t k = k_start; k <= k_end; ++k) {
 
 2274               if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
 
 2280               if (cnt2 * cnt2 == 0 && e2sq == 0) {
 
 2284                     e2sq = sumw2 / sum2;
 
 2289                     Error(
"Chi2TestX",
"Hist2 has in bin (%d,%d,%d) zero content and zero errors\n", i, j, k);
 
 2295               if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10) 
n++;
 
 2297               Double_t var1 = sum2 * cnt2 - sum1 * e2sq;
 
 2298               Double_t var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
 
 2303               while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
 
 2306                  var1 = sum2 * cnt2 - sum1 * e2sq;
 
 2307                  var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
 
 2311               while (var1 + var2 == 0) {
 
 2314                  var1 = sum2 * cnt2 - sum1 * e2sq;
 
 2315                  var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
 
 2316                  while (var1 * var1 + cnt1 == 0 || var1 + var2 == 0) {
 
 2319                     var1 = sum2 * cnt2 - sum1 * e2sq;
 
 2320                     var2 = var1 * var1 + 4. * sum2 * sum2 * cnt1 * e2sq;
 
 2325               Double_t probb = (var1 + var2) / (2. * sum2 * sum2);
 
 2333               chi2 += delta1 * delta1 / nexp1;
 
 2336                  chi2 += delta2 * delta2 / e2sq;
 
 2341                     Double_t temp1 = sum2 * e2sq / var2;
 
 2342                     Double_t temp2 = 1.0 + (sum1 * e2sq - sum2 * cnt2) / var2;
 
 2343                     temp2 = temp1 * temp1 * sum1 * probb * (1.0 - probb) + temp2 * temp2 * e2sq / 4.0;
 
 2356         Info(
"Chi2TestX",
"There is a bin in h1 with less than 1 event.\n");
 
 2360         Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
 
 2370      for (
Int_t i = i_start; i <= i_end; ++i) {
 
 2371         for (
Int_t j = j_start; j <= j_end; ++j) {
 
 2372            for (
Int_t k = k_start; k <= k_end; ++k) {
 
 2382                if (cnt1 * cnt1 == 0 && cnt2 * cnt2 == 0) {
 
 2387                if (e1sq == 0 && e2sq == 0) {
 
 2389                  Error(
"Chi2TestX",
"h1 and h2 both have bin %d,%d,%d with all zero errors\n", i,j,k);
 
 2394               Double_t delta = sum2 * cnt1 - sum1 * cnt2;
 
 2395               chi2 += delta * delta / 
sigma;
 
 2398                  Double_t temp = cnt1 * sum1 * e2sq + cnt2 * sum2 * e1sq;
 
 2411                  res[i - i_start] = z;
 
 2414               if (e1sq > 0 && cnt1 * cnt1 / e1sq < 10) 
m++;
 
 2415               if (e2sq > 0 && cnt2 * cnt2 / e2sq < 10) 
n++;
 
 2421         Info(
"Chi2TestX",
"There is a bin in h1 with less than 10 effective events.\n");
 
 2425         Info(
"Chi2TestX",
"There is a bin in h2 with less than 10 effective events.\n");
 
 2442      Error(
"Chisquare",
"Function pointer is Null - return -1");
 
 2488   Int_t nbins  = nbinsx * nbinsy * nbinsz;
 
 2493   for (
Int_t binz=1; binz <= nbinsz; ++binz) {
 
 2494      for (
Int_t biny=1; biny <= nbinsy; ++biny) {
 
 2495         for (
Int_t binx=1; binx <= nbinsx; ++binx) {
 
 2498            if (onlyPositive && 
y < 0) {
 
 2499                 Error(
"ComputeIntegral",
"Bin content is negative - return a NaN value");
 
 2510      Error(
"ComputeIntegral", 
"Integral = zero"); 
return 0;
 
 2553   hintegrated->
Reset();
 
 2556      for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
 
 2557    for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
 
 2558       for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
 
 2559          const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
 
 2567      for (
Int_t binz = nbinsz; binz >= 1; --binz) {
 
 2568    for (
Int_t biny = nbinsy; biny >= 1; --biny) {
 
 2569       for (
Int_t binx = nbinsx; binx >= 1; --binx) {
 
 2570          const Int_t bin = hintegrated->
GetBin(binx, biny, binz);
 
 2596      ((
TH1&)obj).fDirectory->Remove(&obj);
 
 2597      ((
TH1&)obj).fDirectory = 0;
 
 2611      delete []  ((
TH1&)obj).fBuffer;
 
 2612      ((
TH1&)obj).fBuffer = 0;
 
 2618      ((
TH1&)obj).fBuffer    = buf;
 
 2644   ((
TH1&)obj).fXaxis.SetParent(&obj);
 
 2645   ((
TH1&)obj).fYaxis.SetParent(&obj);
 
 2646   ((
TH1&)obj).fZaxis.SetParent(&obj);
 
 2656      ((
TH1&)obj).fFunctions->UseRWLock();
 
 2669   TH1* obj = (
TH1*)IsA()->GetNew()(0);
 
 2684         oldparent = oldstats->GetParent();
 
 2685         oldstats->SetParent(
nullptr);
 
 2691         oldstats->SetParent(oldparent);
 
 2703   if(newname && strlen(newname) ) {
 
 2758      Error(
"Divide",
"Attempt to divide by a non-existing function");
 
 2776   Int_t bin, binx, biny, binz;
 
 2781   for (binz = 0; binz < nz; ++binz) {
 
 2783      for (biny = 0; biny < ny; ++biny) {
 
 2785         for (binx = 0; binx < nx; ++binx) {
 
 2789            bin = binx + nx * (biny + ny * binz);
 
 2826      Error(
"Divide", 
"Input histogram passed does not exist (NULL).");
 
 2835   } 
catch(DifferentNumberOfBins&) {
 
 2836      Error(
"Divide",
"Cannot divide histograms with different number of bins");
 
 2838   } 
catch(DifferentAxisLimits&) {
 
 2839      Warning(
"Divide",
"Dividing histograms with different axis limits");
 
 2840   } 
catch(DifferentBinLimits&) {
 
 2841      Warning(
"Divide",
"Dividing histograms with different bin limits");
 
 2842   } 
catch(DifferentLabels&) {
 
 2843      Warning(
"Divide",
"Dividing histograms with different labels");
 
 2898      Error(
"Divide", 
"At least one of the input histograms passed does not exist (NULL).");
 
 2908   } 
catch(DifferentNumberOfBins&) {
 
 2909      Error(
"Divide",
"Cannot divide histograms with different number of bins");
 
 2911   } 
catch(DifferentAxisLimits&) {
 
 2912      Warning(
"Divide",
"Dividing histograms with different axis limits");
 
 2913   } 
catch(DifferentBinLimits&) {
 
 2914      Warning(
"Divide",
"Dividing histograms with different bin limits");
 
 2915   }  
catch(DifferentLabels&) {
 
 2916      Warning(
"Divide",
"Dividing histograms with different labels");
 
 2921      Error(
"Divide",
"Coefficient of dividing histogram cannot be zero");
 
 2958            fSumw2.
fArray[i] = c1sq * c2sq * (e1sq * b2sq + e2sq * b1sq) / (c2sq * c2sq * b2sq * b2sq);
 
 3011         if (index>indb && index<indk) index = -1;
 
 3017      if (!
gPad->IsEditable()) 
gROOT->MakeDefCanvas();
 
 3019         if (
gPad->GetX1() == 0   && 
gPad->GetX2() == 1 &&
 
 3020             gPad->GetY1() == 0   && 
gPad->GetY2() == 1 &&
 
 3021             gPad->GetListOfPrimitives()->GetSize()==0) opt2.
Remove(index,4);
 
 3028      gPad->IncrementPaletteColor(1, opt1);
 
 3030      if (index>=0) opt2.
Remove(index,4);
 
 3056   if (
gPad) 
gPad->IncrementPaletteColor(1, opt);
 
 3081      Error(
"DrawNormalized",
"Sum of weights is null. Cannot normalize histogram: %s",
GetName());
 
 3093      if (opt.
IsNull() || opt == 
"SAME") opt += 
"HIST";
 
 3128   Int_t range, stat, add;
 
 3148   for (
Int_t binz = 1; binz <= nbinsz; ++binz) {
 
 3150      for (
Int_t biny = 1; biny <= nbinsy; ++biny) {
 
 3152         for (
Int_t binx = 1; binx <= nbinsx; ++binx) {
 
 3252   for (
Int_t binx = 1; binx<=ndim[0]; binx++) {
 
 3253      for (
Int_t biny=1; biny<=ndim[1]; biny++) {
 
 3254         for (
Int_t binz=1; binz<=ndim[2]; binz++) {
 
 3284   if (bin <0) 
return -1;
 
 3317   if (bin <0) 
return -1;
 
 3350   if (bin <0) 
return -1;
 
 3386      for (i=0;i<ntimes;i+=stride) {
 
 3392      if (i < ntimes && 
fBuffer==0) {
 
 3393         auto weights = w ? &w[i] : 
nullptr;
 
 3394         DoFillN((ntimes-i)/stride,&
x[i],weights,stride);
 
 3414   for (i=0;i<ntimes;i+=stride) {
 
 3416      if (bin <0) 
continue;
 
 3421      if (bin == 0 || bin > nbins) {
 
 3449   Int_t bin, binx, ibin, loop;
 
 3453   if (!
f1) { 
Error(
"FillRandom", 
"Unknown function: %s",fname); 
return; }
 
 3463      Info(
"FillRandom",
"Using function axis and range [%g,%g]",
xmin, 
xmax);
 
 3473   for (binx=1;binx<=nbinsx;binx++) {
 
 3475      integral[binx] = integral[binx-1] + fint;
 
 3479   if (integral[nbinsx] == 0 ) {
 
 3481      Error(
"FillRandom", 
"Integral = zero"); 
return;
 
 3483   for (bin=1;bin<=nbinsx;bin++)  integral[bin] /= integral[nbinsx];
 
 3486   for (loop=0;loop<ntimes;loop++) {
 
 3492             +xAxis->
GetBinWidth(ibin+
first)*(r1-integral[ibin])/(integral[ibin+1] - integral[ibin]);
 
 3516   if (!
h) { 
Error(
"FillRandom", 
"Null histogram"); 
return; }
 
 3518      Error(
"FillRandom", 
"Histograms with different dimensions"); 
return;
 
 3521      Error(
"FillRandom", 
"Histograms contains negative bins, does not represent probabilities");
 
 3530   if (ntimes > 10*nbins) {
 
 3534         if (sumw == 0) 
return;
 
 3537            Double_t mean = 
h->RetrieveBinContent(bin)*ntimes/sumw;
 
 3548         if (sumgen < ntimes) {
 
 3550            for (i = 
Int_t(sumgen+0.5); i < ntimes; ++i)
 
 3556         else if (sumgen > ntimes) {
 
 3558            i =  
Int_t(sumgen+0.5);
 
 3559            while( i > ntimes) {
 
 3574      catch(std::exception&) {}  
 
 3578   if (
h->ComputeIntegral() ==0) 
return;
 
 3581   for (loop=0;loop<ntimes;loop++) {
 
 3607      return  binx + nx*biny;
 
 3615      return  binx + nx*(biny +ny*binz);
 
 3640      return  binx + nx*biny;
 
 3648      return  binx + nx*(biny +ny*binz);
 
 3666      Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
 
 3680      for (
Int_t binx = firstBin; binx <= lastBin; binx++) {
 
 3681         for (
Int_t biny = 1; biny <= nbinsy; biny++) {
 
 3682            for (
Int_t binz = 1; binz <= nbinsz; binz++) {
 
 3688   else if (axis == 2) {
 
 3692      for (
Int_t biny = firstBin; biny <= lastBin; biny++) {
 
 3693         for (
Int_t binx = 1; binx <= nbinsx; binx++) {
 
 3694            for (
Int_t binz = 1; binz <= nbinsz; binz++) {
 
 3700   else if (axis == 3) {
 
 3704      for (
Int_t binz = firstBin; binz <= lastBin; binz++) {
 
 3705         for (
Int_t binx = 1; binx <= nbinsx; binx++) {
 
 3706            for (
Int_t biny = 1; biny <= nbinsy; biny++) {
 
 3730      Warning(
"FindFirstBinAbove",
"Invalid axis number : %d, axis x assumed\n",axis);
 
 3744      for (
Int_t binx = lastBin; binx >= firstBin; binx--) {
 
 3745         for (
Int_t biny = 1; biny <= nbinsy; biny++) {
 
 3746            for (
Int_t binz = 1; binz <= nbinsz; binz++) {
 
 3752   else if (axis == 2) {
 
 3756      for (
Int_t biny = lastBin; biny >= firstBin; biny--) {
 
 3757         for (
Int_t binx = 1; binx <= nbinsx; binx++) {
 
 3758            for (
Int_t binz = 1; binz <= nbinsz; binz++) {
 
 3764   else if (axis == 3) {
 
 3768      for (
Int_t binz = lastBin; binz >= firstBin; binz--) {
 
 3769         for (
Int_t binx = 1; binx <= nbinsx; binx++) {
 
 3770            for (
Int_t biny = 1; biny <= nbinsy; biny++) {
 
 3813   linear= (
char*)strstr(fname, 
"++");
 
 3817         TF1 f1(fname, fname, xxmin, xxmax);
 
 3818         return Fit(&
f1,option,goption,xxmin,xxmax);
 
 3821         TF2 f2(fname, fname);
 
 3822         return Fit(&f2,option,goption,xxmin,xxmax);
 
 3825         TF3 f3(fname, fname);
 
 3826         return Fit(&f3,option,goption,xxmin,xxmax);
 
 3831      if (!
f1) { 
Printf(
"Unknown function: %s",fname); 
return -1; }
 
 3832      return Fit(
f1,option,goption,xxmin,xxmax);
 
 4160      gROOT->MakeDefCanvas();
 
 4163      Error(
"FitPanel", 
"Unable to create a default canvas");
 
 4170   if (handler && handler->
LoadPlugin() != -1) {
 
 4172         Error(
"FitPanel", 
"Unable to create the FitPanel");
 
 4175         Error(
"FitPanel", 
"Unable to find the FitPanel plug-in");
 
 4232   asym->
Divide(top,bottom);
 
 4246         for(
Int_t k=1; k<= zmax; k++){
 
 4336      Info(
"SetHighlight", 
"Supported only 1-D or 2-D histograms");
 
 4341      Info(
"SetHighlight", 
"Need to draw histogram first");
 
 4355   return ((
TH1*)
this)->GetPainter()->GetObjectInfo(px,py);
 
 4456      Error(
"GetQuantiles",
"Only available for 1-d histograms");
 
 4466   Int_t nq = nprobSum;
 
 4471      for (i=1;i<nq;i++) {
 
 4476   for (i = 0; i < nq; i++) {
 
 4478      while (ibin < nbins-1 && 
fIntegral[ibin+1] == prob[i]) {
 
 4479         if (
fIntegral[ibin+2] == prob[i]) ibin++;
 
 4487   if (!probSum) 
delete [] prob;
 
 4505   Double_t allcha, sumx, sumx2, 
x, val, stddev, mean;
 
 4516   allcha = sumx = sumx2 = 0;
 
 4517   for (bin=hxfirst;bin<=hxlast;bin++) {
 
 4520      if (val > valmax) valmax = val;
 
 4525   if (allcha == 0) 
return;
 
 4527   stddev  = sumx2/allcha - mean*mean;
 
 4530   if (stddev == 0) stddev = binwidx*(hxlast-hxfirst+1)/4;
 
 4537   Double_t constant = 0.5*(valmax+binwidx*allcha/(sqrtpi*stddev));
 
 4545   if ((mean < xmin || mean > 
xmax) && stddev > (
xmax-
xmin)) {
 
 4566   Int_t nchanx  = hxlast - hxfirst + 1;
 
 4587   Int_t nchanx  = hxlast - hxfirst + 1;
 
 4590   if (nchanx <=1 || npar == 1) {
 
 4613   const Int_t idim = 20;
 
 4624   if (
m > idim || 
m > 
n) 
return;
 
 4627   for (
l = 2; 
l <= 
m; ++
l) {
 
 4629      b[
m + 
l*20 - 21] = zero;
 
 4636   for (k = hxfirst; k <= hxlast; ++k) {
 
 4641      for (
l = 2; 
l <= 
m; ++
l) {
 
 4644         da[
l-1] += power*yk;
 
 4646      for (
l = 2; 
l <= 
m; ++
l) {
 
 4648         b[
m + 
l*20 - 21] += power;
 
 4651   for (i = 3; i <= 
m; ++i) {
 
 4652      for (k = i; k <= 
m; ++k) {
 
 4653         b[k - 1 + (i-1)*20 - 21] = 
b[k + (i-2)*20 - 21];
 
 4658   for (i=0; i<
m; ++i) 
a[i] = da[i];
 
 4678   xbar  = ybar  = x2bar = xybar = 0;
 
 4683   for (i = hxfirst; i <= hxlast; ++i) {
 
 4687         if (yk <= 0) yk = 1
e-9;
 
 4696   det   = fn*x2bar - xbar*xbar;
 
 4704   a0 = (x2bar*ybar - xbar*xybar) / det;
 
 4705   a1 = (fn*xybar - xbar*ybar) / det;
 
 4716   Int_t a_dim1, a_offset, b_dim1, b_offset;
 
 4718   Int_t im1, jp1, nm1, nmi;
 
 4724   b_offset = b_dim1 + 1;
 
 4727   a_offset = a_dim1 + 1;
 
 4730   if (idim < 
n) 
return;
 
 4733   for (j = 1; j <= 
n; ++j) {
 
 4734      if (
a[j + j*a_dim1] <= 0) { ifail = -1; 
return; }
 
 4735      a[j + j*a_dim1] = one / 
a[j + j*a_dim1];
 
 4736      if (j == 
n) 
continue;
 
 4738      for (
l = jp1; 
l <= 
n; ++
l) {
 
 4739         a[j + 
l*a_dim1] = 
a[j + j*a_dim1] * 
a[
l + j*a_dim1];
 
 4740         s1 = -
a[
l + (j+1)*a_dim1];
 
 4741         for (i = 1; i <= j; ++i) { 
s1 = 
a[
l + i*a_dim1] * 
a[i + (j+1)*a_dim1] + 
s1; }
 
 4742         a[
l + (j+1)*a_dim1] = -
s1;
 
 4747   for (
l = 1; 
l <= k; ++
l) {
 
 4748      b[
l*b_dim1 + 1] = 
a[a_dim1 + 1]*
b[
l*b_dim1 + 1];
 
 4751   for (
l = 1; 
l <= k; ++
l) {
 
 4752      for (i = 2; i <= 
n; ++i) {
 
 4754         s21 = -
b[i + 
l*b_dim1];
 
 4755         for (j = 1; j <= im1; ++j) {
 
 4756            s21 = 
a[i + j*a_dim1]*
b[j + 
l*b_dim1] + s21;
 
 4758         b[i + 
l*b_dim1] = -
a[i + i*a_dim1]*s21;
 
 4761      for (i = 1; i <= nm1; ++i) {
 
 4763         s22 = -
b[nmi + 
l*b_dim1];
 
 4764         for (j = 1; j <= i; ++j) {
 
 4766            s22 = 
a[nmi + nmjp1*a_dim1]*
b[nmjp1 + 
l*b_dim1] + s22;
 
 4768         b[nmi + 
l*b_dim1] = -s22;
 
 4806   if (binx < 0) binx = 0;
 
 4807   if (binx > ofx) binx = ofx;
 
 4822      binx = binglobal%nx;
 
 4828      binx = binglobal%nx;
 
 4829      biny = ((binglobal-binx)/nx)%ny;
 
 4834      binx = binglobal%nx;
 
 4835      biny = ((binglobal-binx)/nx)%ny;
 
 4836      binz = ((binglobal-binx)/nx -biny)/ny;
 
 4853      Error(
"GetRandom",
"Function only valid for 1-d histograms");
 
 4863      integral = ((
TH1*)
this)->ComputeIntegral(
true);
 
 4865   if (integral == 0) 
return 0;
 
 4904   if (bin < 0) bin = 0;
 
 4930      Error(
"GetBinWithContent",
"function is only valid for 1-D histograms");
 
 4936   if (firstx <= 0) firstx = 1;
 
 4940   for (
Int_t i=firstx;i<=lastx;i++) {
 
 4942      if (diff <= 0) {binx = i; 
return diff;}
 
 4943      if (diff < curmax && diff <= maxdiff) {curmax = diff, binminx=i;}
 
 4978      return y0 + (
x-x0)*((y1-y0)/(
x1-x0));
 
 4987   Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
 
 4996   Error(
"Interpolate",
"This function must be called with 1 argument for a TH1");
 
 5024   Int_t binx, biny, binz;
 
 5046   Error(
"IsBinOverflow",
"Invalid axis value");
 
 5056   Int_t binx, biny, binz;
 
 5063         return (binx <= 0 || biny <= 0);
 
 5065         return (binx <= 0 || biny <= 0 || binz <= 0);
 
 5076   Error(
"IsBinUnderflow",
"Invalid axis value");
 
 5093      Error(
"LabelsDeflate",
"Invalid axis option %s",ax);
 
 5104   while ((obj = next())) {
 
 5106      if (ibin > nbins) nbins = ibin;
 
 5108   if (nbins < 1) nbins = 1;
 
 5111   if (nbins==axis->
GetNbins()) 
return;
 
 5113   TH1 *hold = (
TH1*)IsA()->New();
 
 5136   Int_t bin,binx,biny,binz;
 
 5137   for (bin=0; bin < hold->
fNcells; ++bin) {
 
 5164   TH1 *hold = (
TH1*)IsA()->New();;
 
 5185   Int_t bin,ibin,binx,biny,binz;
 
 5186   for (ibin =0; ibin < hold->
fNcells; ibin++) {
 
 5189      bin = 
GetBin(binx,biny,binz);
 
 5226      Warning(
"LabelsOption",
"Cannot sort. No labels");
 
 5259   if (sort < 0) 
return;
 
 5261      Error(
"LabelsOption",
"Sorting by value not implemented for 3-D histograms");
 
 5267   std::vector<Int_t> 
a(
n+2);
 
 5270   std::vector<Double_t>  cont;
 
 5271   std::vector<Double_t> errors;
 
 5273   TIter nextold(labels);
 
 5275   while ((obj=nextold())) {
 
 5284         for (i=1;i<=
n;i++) {
 
 5286            if (!errors.empty()) errors[i-1] = 
GetBinError(i);
 
 5290         for (i=1;i<=
n;i++) {
 
 5294         for (i=1;i<=
n;i++) {
 
 5295            obj = labold->
At(
a[i-1]);
 
 5300         std::vector<Double_t> pcont(
n+2);
 
 5303         cont.resize( (nx+2)*(ny+2));
 
 5304         if (
fSumw2.
fN) errors.resize( (nx+2)*(ny+2));
 
 5305         for (i=1;i<=nx;i++) {
 
 5306            for (j=1;j<=ny;j++) {
 
 5308               if (!errors.empty()) errors[i+nx*j] = 
GetBinError(i,j);
 
 5311               pcont[k-1] += cont[i+nx*j];
 
 5317            obj = labold->
At(
a[i]);
 
 5322            for (i=1;i<=
n;i++) {
 
 5323               for (j=1;j<=ny;j++) {
 
 5325                  if (!errors.empty()) 
SetBinError(i,j,errors[
a[i-1]+1+nx*j]);
 
 5331            for (i=1;i<=nx;i++) {
 
 5332               for (j=1;j<=
n;j++) {
 
 5334                  if (!errors.empty()) 
SetBinError(i,j,errors[i+nx*(
a[j-1]+1)]);
 
 5343      const UInt_t kUsed = 1<<18;
 
 5347      for (i=1;i<=
n;i++) {
 
 5348         const char *label = 
"zzzzzzzzzzzz";
 
 5349         for (j=1;j<=
n;j++) {
 
 5350            obj = labold->
At(j-1);
 
 5352            if (obj->
TestBit(kUsed)) 
continue;
 
 5354            if (strcmp(label,obj->
GetName()) < 0) 
continue;
 
 5365      for (i=1;i<=
n;i++) {
 
 5366         obj = labels->
At(i-1);
 
 5374         for (i=1;i<=
n;i++) {
 
 5378         for (i=1;i<=
n;i++) {
 
 5386         if (
fSumw2.
fN) errors.resize(nx*ny);
 
 5387         for (i=0;i<nx;i++) {
 
 5388            for (j=0;j<ny;j++) {
 
 5390               if (!errors.empty()) errors[i+nx*j] = 
GetBinError(i,j);
 
 5394            for (i=1;i<=
n;i++) {
 
 5395               for (j=0;j<ny;j++) {
 
 5397                  if (!errors.empty()) 
SetBinError(i,j,errors[
a[i]+nx*j]);
 
 5401            for (i=0;i<nx;i++) {
 
 5402               for (j=1;j<=
n;j++) {
 
 5404                  if (!errors.empty()) 
SetBinError(i,j,errors[i+nx*
a[j]]);
 
 5412         cont.resize(nx*ny*nz);
 
 5413         if (
fSumw2.
fN) errors.resize(nx*ny*nz);
 
 5414         for (i=0;i<nx;i++) {
 
 5415            for (j=0;j<ny;j++) {
 
 5416               for (k=0;k<nz;k++) {
 
 5418                  if (!errors.empty()) errors[i+nx*(j+ny*k)] = 
GetBinError(i,j,k);
 
 5424            for (i=1;i<=
n;i++) {
 
 5425               for (j=0;j<ny;j++) {
 
 5426                  for (k=0;k<nz;k++) {
 
 5428                     if (!errors.empty()) 
SetBinError(i,j,k,errors[
a[i]+nx*(j+ny*k)]);
 
 5435            for (i=0;i<nx;i++) {
 
 5436               for (j=1;j<=
n;j++) {
 
 5437                  for (k=0;k<nz;k++) {
 
 5439                     if (!errors.empty()) 
SetBinError(i,j,k,errors[i+nx*(
a[j]+ny*k)]);
 
 5446            for (i=0;i<nx;i++) {
 
 5447               for (j=0;j<ny;j++) {
 
 5448                  for (k=1;k<=
n;k++) {
 
 5450                     if (!errors.empty()) 
SetBinError(i,j,k,errors[i+nx*(j+ny*
a[k])]);
 
 5486   bool isEquidistant = 
true;
 
 5488   for (
int i = 1; i < axis.
GetNbins(); ++i) {
 
 5491      isEquidistant &= match;
 
 5495   return isEquidistant;
 
 5521   if (width1 == 0 || width2 == 0)
 
 5567      printf(
"TH1::RecomputeAxisLimits - Impossible\n");
 
 5655      Error(
"Multiply",
"Attempt to multiply by a non-existing function");
 
 5677   for (
Int_t binz = 0; binz < nz; ++binz) {
 
 5679      for (
Int_t biny = 0; biny < ny; ++biny) {
 
 5681         for (
Int_t binx = 0; binx < nx; ++binx) {
 
 5685            Int_t bin = binx + nx * (biny + ny *binz);
 
 5717      Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
 
 5726   } 
catch(DifferentNumberOfBins&) {
 
 5727      Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
 
 5729   } 
catch(DifferentAxisLimits&) {
 
 5730      Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
 
 5731   } 
catch(DifferentBinLimits&) {
 
 5732      Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
 
 5733   } 
catch(DifferentLabels&) {
 
 5734      Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
 
 5779      Error(
"Multiply",
"Attempt to multiply by a non-existing histogram");
 
 5789   } 
catch(DifferentNumberOfBins&) {
 
 5790      Error(
"Multiply",
"Attempt to multiply histograms with different number of bins");
 
 5792   } 
catch(DifferentAxisLimits&) {
 
 5793      Warning(
"Multiply",
"Attempt to multiply histograms with different axis limits");
 
 5794   } 
catch(DifferentBinLimits&) {
 
 5795      Warning(
"Multiply",
"Attempt to multiply histograms with different bin limits");
 
 5796   } 
catch(DifferentLabels&) {
 
 5797      Warning(
"Multiply",
"Attempt to multiply histograms with different labels");
 
 5899   if ((ngroup <= 0) || (ngroup > nbins)) {
 
 5900      Error(
"Rebin", 
"Illegal value of ngroup=%d",ngroup);
 
 5905      Error(
"Rebin", 
"Operation valid on 1-D histograms only");
 
 5908   if (!newname && xbins) {
 
 5909      Error(
"Rebin",
"if xbins is specified, newname must be given");
 
 5913   Int_t newbins = nbins/ngroup;
 
 5915      Int_t nbg = nbins/ngroup;
 
 5916      if (nbg*ngroup != nbins) {
 
 5917         Warning(
"Rebin", 
"ngroup=%d is not an exact divider of nbins=%d.",ngroup,nbins);
 
 5937      for (bin=0;bin<nbins+2;bin++) oldErrors[bin] = 
GetBinError(bin);
 
 5942         Warning(
"Rebin",
"underflow entries will not be used when rebinning");
 
 5943      if (xbins[newbins] > 
fXaxis.
GetXmax() && oldBins[nbins+1] != 0 )
 
 5944         Warning(
"Rebin",
"overflow entries will not be used when rebinning");
 
 5950   if ((newname && strlen(newname) > 0) || xbins) {
 
 5960   bool resetStat = 
false;
 
 5962   if(!xbins && (newbins*ngroup != nbins)) {
 
 6010   Int_t oldbin = startbin;
 
 6012   for (bin = 1;bin<=newbins;bin++) {
 
 6015      Int_t imax = ngroup;
 
 6023         Warning(
"Rebin",
"Bin edge %d of rebinned histogram does not match any bin edges of the old histogram. Result can be inconsistent",bin);
 
 6025      for (i=0;i<ngroup;i++) {
 
 6026         if( (oldbin+i > nbins) ||
 
 6031         binContent += oldBins[oldbin+i];
 
 6032         if (oldErrors) binError += oldErrors[oldbin+i]*oldErrors[oldbin+i];
 
 6042   for (i = 0; i < startbin; ++i)  {
 
 6043      binContent += oldBins[i];
 
 6044      if (oldErrors) binError += oldErrors[i]*oldErrors[i];
 
 6051   for (i = oldbin; i <= nbins+1; ++i)  {
 
 6052      binContent += oldBins[i];
 
 6053      if (oldErrors) binError += oldErrors[i]*oldErrors[i];
 
 6062   if (!resetStat) hnew->
PutStats(stat);
 
 6064   if (oldErrors) 
delete [] oldErrors;
 
 6089   while (point < 
xmin) {
 
 6101   while (point >= 
xmax) {
 
 6152   TH1 *hold = (
TH1*)IsA()->New();
 
 6165   if (axis == &
fXaxis) iaxis = 1;
 
 6166   if (axis == &
fYaxis) iaxis = 2;
 
 6167   if (axis == &
fZaxis) iaxis = 3;
 
 6168   bool firstw = 
kTRUE;
 
 6169   Int_t binx,biny, binz = 0;
 
 6170   Int_t ix = 0,iy = 0,iz = 0;
 
 6173   for (
Int_t bin = 0; bin < ncells; ++bin) {
 
 6187      if (content == 0) 
continue;
 
 6190            Warning(
"ExtendAxis",
"Histogram %s has underflow or overflow in the axis that is extendable" 
 6191                    " their content will be lost",
GetName() );
 
 6251         if (i == 1)   
s[i] = 
c1*
c1*
s[i];
 
 6252         else          s[i] = 
c1*
s[i];
 
 6260   if (ncontours == 0) 
return;
 
 6262   for (
Int_t i = 0; i < ncontours; ++i) levels[i] *= 
c1;
 
 6301   return oldExtendBitMask;
 
 6347      str1   = str1(isc+1, lns);
 
 6348      isc    = str1.
Index(
";");
 
 6351         str2.ReplaceAll(
"#semicolon",10,
";",1);
 
 6354         str1 = str1(isc+1, lns);
 
 6355         isc  = str1.
Index(
";");
 
 6358            str2.ReplaceAll(
"#semicolon",10,
";",1);
 
 6361            str1 = str1(isc+1, lns);
 
 6387      ::Error(
"SmoothArray",
"Need at least 3 points for smoothing: n = %d",nn);
 
 6394   std::vector<double> yy(nn);
 
 6395   std::vector<double> zz(nn);
 
 6396   std::vector<double> rr(nn);
 
 6398   for (
Int_t pass=0;pass<ntimes;pass++) {
 
 6400      std::copy(xx, xx+nn, zz.begin() );
 
 6402      for (
int noent = 0; noent < 2; ++noent) { 
 
 6405         for  (
int kk = 0; kk < 3; kk++)  {
 
 6406            std::copy(zz.begin(), zz.end(), yy.begin());
 
 6407            int medianType = (kk != 1)  ?  3 : 5;
 
 6408            int ifirst      = (kk != 1 ) ?  1 : 2;
 
 6409            int ilast       = (kk != 1 ) ? nn-1 : nn -2;
 
 6413            for  ( ii = ifirst; ii < ilast; ii++)  {
 
 6414               assert(ii - ifirst >= 0);
 
 6415               for  (
int jj = 0; jj < medianType; jj++)   {
 
 6416                  hh[jj] = yy[ii - ifirst + jj ];
 
 6425               hh[2] = 3*zz[1] - 2*zz[2];
 
 6430               hh[2] = 3*zz[nn - 2] - 2*zz[nn - 3];
 
 6435               for  (ii = 0; ii < 3; ii++) {
 
 6440               for  (ii = 0; ii < 3; ii++) {
 
 6441                  hh[ii] = yy[nn - 3 + ii];
 
 6448         std::copy ( zz.begin(), zz.end(), yy.begin() );
 
 6451         for (ii = 2; ii < (nn - 2); ii++) {
 
 6452            if  (zz[ii - 1] != zz[ii]) 
continue;
 
 6453            if  (zz[ii] != zz[ii + 1]) 
continue;
 
 6454            hh[0] = zz[ii - 2] - zz[ii];
 
 6455            hh[1] = zz[ii + 2] - zz[ii];
 
 6456            if  (hh[0] * hh[1] <= 0) 
continue;
 
 6459            yy[ii] = -0.5*zz[ii - 2*jk] + zz[ii]/0.75 + zz[ii + 2*jk] /6.;
 
 6460            yy[ii + jk] = 0.5*(zz[ii + 2*jk] - zz[ii - 2*jk]) + zz[ii];
 
 6465         for  (ii = 1; ii < nn - 1; ii++) {
 
 6466            zz[ii] = 0.25*yy[ii - 1] + 0.5*yy[ii] + 0.25*yy[ii + 1];
 
 6469         zz[nn - 1] = yy[nn - 1];
 
 6474            std::copy(zz.begin(), zz.end(), rr.begin());
 
 6477            for  (ii = 0; ii < nn; ii++)  {
 
 6478               zz[ii] = xx[ii] - zz[ii];
 
 6486      for  (ii = 0; ii < nn; ii++) {
 
 6487         if (
xmin < 0) xx[ii] = rr[ii] + zz[ii];
 
 6489         else  xx[ii] = 
TMath::Max((rr[ii] + zz[ii]),0.0 );
 
 6505      Error(
"Smooth",
"Smooth only supported for 1-d histograms");
 
 6510      Error(
"Smooth",
"Smooth only supported for histograms with >= 3 bins. Nbins = %d",nbins);
 
 6517   Int_t firstbin = 1, lastbin = nbins;
 
 6524   nbins = lastbin - firstbin + 1;
 
 6528   for (i=0;i<nbins;i++) {
 
 6534   for (i=0;i<nbins;i++) {
 
 6558   if (
b.IsReading()) {
 
 6560      Version_t R__v = 
b.ReadVersion(&R__s, &R__c);
 
 6564         b.ReadClassBuffer(
TH1::Class(), 
this, R__v, R__s, R__c);
 
 6572         while ((obj=next())) {
 
 6578      TNamed::Streamer(
b);
 
 6579      TAttLine::Streamer(
b);
 
 6580      TAttFill::Streamer(
b);
 
 6581      TAttMarker::Streamer(
b);
 
 6597         Float_t maximum, minimum, norm;
 
 6602         Int_t n = 
b.ReadArray(contour);
 
 6616      b.CheckByteCount(R__s, R__c, TH1::IsA());
 
 6640   else if (opt.
Contains(
"range")) all = 1;
 
 6641   else if (opt.
Contains(
"base"))  all = 2;
 
 6644   Int_t bin, binx, biny, binz;
 
 6645   Int_t firstx=0,lastx=0,firsty=0,lasty=0,firstz=0,lastz=0;
 
 6657      printf(
"          Title = %s\n", 
GetTitle());
 
 6668      for (binx=firstx;binx<=lastx;binx++) {
 
 6672         if(
fSumw2.
fN) printf(
" fSumw[%d]=%g, x=%g, error=%g\n",binx,w,
x,
e);
 
 6673         else          printf(
" fSumw[%d]=%g, x=%g\n",binx,w,
x);
 
 6677      for (biny=firsty;biny<=lasty;biny++) {
 
 6679         for (binx=firstx;binx<=lastx;binx++) {
 
 6684            if(
fSumw2.
fN) printf(
" fSumw[%d][%d]=%g, x=%g, y=%g, error=%g\n",binx,biny,w,
x,
y,
e);
 
 6685            else          printf(
" fSumw[%d][%d]=%g, x=%g, y=%g\n",binx,biny,w,
x,
y);
 
 6690      for (binz=firstz;binz<=lastz;binz++) {
 
 6692         for (biny=firsty;biny<=lasty;biny++) {
 
 6694            for (binx=firstx;binx<=lastx;binx++) {
 
 6695               bin = 
GetBin(binx,biny,binz);
 
 6699               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);
 
 6700               else          printf(
" fSumw[%d][%d][%d]=%g, x=%g, y=%g, z=%g\n",binx,biny,binz,w,
x,
y,z);
 
 6758   if (opt == 
"ICES") 
return;
 
 6788   static Int_t nxaxis = 0;
 
 6789   static Int_t nyaxis = 0;
 
 6790   static Int_t nzaxis = 0;
 
 6791   TString sxaxis=
"xAxis",syaxis=
"yAxis",szaxis=
"zAxis";
 
 6802         if (i != 0) out << 
", ";
 
 6805      out << 
"}; " << std::endl;
 
 6818            if (i != 0) out << 
", ";
 
 6821         out << 
"}; " << std::endl;
 
 6834            if (i != 0) out << 
", ";
 
 6837         out << 
"}; " << std::endl;
 
 6841   out <<
"   "<<std::endl;
 
 6851   static Int_t hcounter = 0;
 
 6858      histName += hcounter;
 
 6861   const char *hname = histName.
Data();
 
 6862   if (!strlen(hname)) hname = 
"unnamed";
 
 6868   out << hname << 
" = new " << 
ClassName() << 
"(" << quote
 
 6869       << hname << quote << 
"," << quote<< t.
Data() << quote
 
 6872      out << 
", "<<sxaxis;
 
 6879         out << 
", "<<syaxis;
 
 6887         out << 
", "<<szaxis;
 
 6892   out << 
");" << std::endl;
 
 6896   for (bin=0;bin<
fNcells;bin++) {
 
 6899         out<<
"   "<<hname<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
 
 6905      for (bin=0;bin<
fNcells;bin++) {
 
 6908            out<<
"   "<<hname<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
 
 6925      out<<
"   "<<hname<<
"->SetBarOffset("<<
GetBarOffset()<<
");"<<std::endl;
 
 6928      out<<
"   "<<hname<<
"->SetBarWidth("<<
GetBarWidth()<<
");"<<std::endl;
 
 6931      out<<
"   "<<hname<<
"->SetMinimum("<<
fMinimum<<
");"<<std::endl;
 
 6934      out<<
"   "<<hname<<
"->SetMaximum("<<
fMaximum<<
");"<<std::endl;
 
 6937      out<<
"   "<<hname<<
"->SetNormFactor("<<
fNormFactor<<
");"<<std::endl;
 
 6940      out<<
"   "<<hname<<
"->SetEntries("<<
fEntries<<
");"<<std::endl;
 
 6943      out<<
"   "<<hname<<
"->SetDirectory(0);"<<std::endl;
 
 6946      out<<
"   "<<hname<<
"->SetStats(0);"<<std::endl;
 
 6949      out<<
"   "<<hname<<
"->SetOption("<<quote<<
fOption.
Data()<<quote<<
");"<<std::endl;
 
 6954   if (ncontours > 0) {
 
 6955      out<<
"   "<<hname<<
"->SetContour("<<ncontours<<
");"<<std::endl;
 
 6957      for (
Int_t bin=0;bin<ncontours;bin++) {
 
 6958         if (
gPad->GetLogz()) {
 
 6963         out<<
"   "<<hname<<
"->SetContourLevel("<<bin<<
","<<zlevel<<
");"<<std::endl;
 
 6970   static Int_t funcNumber = 0;
 
 6977         out << 
"   " << fname << 
"->SetParent(" << hname << 
");\n";
 
 6978         out<<
"   "<<hname<<
"->GetListOfFunctions()->Add(" 
 6979            << fname <<
");"<<std::endl;
 
 6981         out<<
"   "<<hname<<
"->GetListOfFunctions()->Add(ptstats);"<<std::endl;
 
 6982         out<<
"   ptstats->SetParent("<<hname<<
");"<<std::endl;
 
 6984         out<<
"   "<<hname<<
"->GetListOfFunctions()->Add(" 
 6985            <<
"pmarker ,"<<quote<<lnk->
GetOption()<<quote<<
");"<<std::endl;
 
 6987         out<<
"   "<<hname<<
"->GetListOfFunctions()->Add(" 
 6989            <<
","<<quote<<lnk->
GetOption()<<quote<<
");"<<std::endl;
 
 7004      out<<
"   "<<hname<<
"->Draw(" 
 7005         <<quote<<option<<quote<<
");"<<std::endl;
 
 7048   while ((obj = next())) {
 
 7078   if (axis<1 || (axis>3 && axis<11) || axis>13) 
return 0;
 
 7082   if (stats[0] == 0) 
return 0;
 
 7084      Int_t ax[3] = {2,4,7};
 
 7085      return stats[ax[axis-1]]/stats[0];
 
 7090      return ( neff > 0 ? stddev/
TMath::Sqrt(neff) : 0. );
 
 7132   if (axis<1 || (axis>3 && axis<11) || axis>13) 
return 0;
 
 7137   if (stats[0] == 0) 
return 0;
 
 7138   Int_t ax[3] = {2,4,7};
 
 7139   Int_t axm = ax[axis%10 - 1];
 
 7140   x    = stats[axm]/stats[0];
 
 7142   stddev2 = 
TMath::Max( stats[axm+1]/stats[0] -
x*
x, 0.0 );
 
 7149      return ( neff > 0 ? 
TMath::Sqrt(stddev2/(2*neff) ) : 0. );
 
 7185   if (axis > 0 && axis <= 3){
 
 7189      Double_t stddev3 = stddev*stddev*stddev;
 
 7200            if (firstBinX == 1) firstBinX = 0;
 
 7204            if (firstBinY == 1) firstBinY = 0;
 
 7208            if (firstBinZ == 1) firstBinZ = 0;
 
 7216      for (
Int_t  binx = firstBinX; binx <= lastBinX; binx++) {
 
 7217         for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
 
 7218            for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
 
 7224               sum+=w*(
x-mean)*(
x-mean)*(
x-mean);
 
 7231   else if (axis > 10 && axis <= 13) {
 
 7238      Error(
"GetSkewness", 
"illegal value of parameter");
 
 7254   if (axis > 0 && axis <= 3){
 
 7258      Double_t stddev4 = stddev*stddev*stddev*stddev;
 
 7269            if (firstBinX == 1) firstBinX = 0;
 
 7273            if (firstBinY == 1) firstBinY = 0;
 
 7277            if (firstBinZ == 1) firstBinZ = 0;
 
 7285      for (
Int_t binx = firstBinX; binx <= lastBinX; binx++) {
 
 7286         for (
Int_t biny = firstBinY; biny <= lastBinY; biny++) {
 
 7287            for (
Int_t binz = firstBinZ; binz <= lastBinZ; binz++) {
 
 7293               sum+=w*(
x-mean)*(
x-mean)*(
x-mean)*(
x-mean);
 
 7300   } 
else if (axis > 10 && axis <= 13) {
 
 7304      return ( neff > 0 ? 
TMath::Sqrt(24./neff ) : 0. );
 
 7307      Error(
"GetKurtosis", 
"illegal value of parameter");
 
 7348      for (bin=0;bin<4;bin++) stats[bin] = 0;
 
 7354         if (firstBinX == 1) firstBinX = 0;
 
 7357      for (binx = firstBinX; binx <= lastBinX; binx++) {
 
 7364         stats[1] += err*err;
 
 7420   Int_t bin,binx,biny,binz;
 
 7425            bin = 
GetBin(binx,biny,binz);
 
 7455   return DoIntegral(binx1,binx2,0,-1,0,-1,err,option);
 
 7482   if (binx1 < 0) binx1 = 0;
 
 7483   if (binx2 >= nx || binx2 < binx1) binx2 = nx - 1;
 
 7487      if (biny1 < 0) biny1 = 0;
 
 7488      if (biny2 >= ny || biny2 < biny1) biny2 = ny - 1;
 
 7490      biny1 = 0; biny2 = 0;
 
 7495      if (binz1 < 0) binz1 = 0;
 
 7496      if (binz2 >= nz || binz2 < binz1) binz2 = nz - 1;
 
 7498      binz1 = 0; binz2 = 0;
 
 7511   for (
Int_t binx = binx1; binx <= binx2; ++binx) {
 
 7513      for (
Int_t biny = biny1; biny <= biny2; ++biny) {
 
 7515         for (
Int_t binz = binz1; binz <= binz2; ++binz) {
 
 7568      printf(
" AndersonDarlingTest Prob     = %g, AD TestStatistic  = %g\n",pvalue,advalue);
 
 7570   if (opt.
Contains(
"T") ) 
return advalue;
 
 7581      Error(
"AndersonDarlingTest",
"Histograms must be 1-D");
 
 7681   if (h2 == 0) 
return 0;
 
 7689      Error(
"KolmogorovTest",
"Histograms must be 1-D\n");
 
 7695      Error(
"KolmogorovTest",
"Histograms have different number of bins, %d and %d\n",ncx1,ncx2);
 
 7705         Error(
"KolmogorovTest",
"Histograms are not consistent: they have different bin edges");
 
 7719   if (opt.
Contains(
"O")) ilast = ncx1 +1;
 
 7720   for (bin = ifirst; bin <= ilast; bin++) {
 
 7729      Error(
"KolmogorovTest",
"Histogram1 %s integral is zero\n",
h1->
GetName());
 
 7733      Error(
"KolmogorovTest",
"Histogram2 %s integral is zero\n",h2->
GetName());
 
 7742      esum1 = sum1 * sum1 / w1;
 
 7747      esum2 = sum2 * sum2 / w2;
 
 7751   if (afunc2 && afunc1) {
 
 7752      Error(
"KolmogorovTest",
"Errors are zero for both histograms\n");
 
 7761   Double_t dfmax =0, rsum1 = 0, rsum2 = 0;
 
 7763   for (bin=ifirst;bin<=ilast;bin++) {
 
 7770   Double_t z, prb1=0, prb2=0, prb3=0;
 
 7785   if (opt.
Contains(
"N") && !(afunc1 || afunc2 ) ) {
 
 7789      Double_t chi2   = d12*d12/(esum1+esum2);
 
 7792      if (prob > 0 && prb2 > 0) prob *= prb2*(1-
TMath::Log(prob*prb2));
 
 7796   const Int_t nEXPT = 1000;
 
 7797   if (opt.
Contains(
"X") && !(afunc1 || afunc2 ) ) {
 
 7806         Warning(
"KolmogorovTest", 
"Detected bins with negative weights, these have been ignored and output might be " 
 7807                                   "skewed. Reduce number of bins for histogram?");
 
 7816      for (
Int_t i=0; i < nEXPT; i++) {
 
 7822         if (dSEXPT>dfmax) prb3 += 1.0;
 
 7832      printf(
" Kolmo Prob  h1 = %s, sum bin content =%g  effective entries =%g\n",
h1->
GetName(),sum1,esum1);
 
 7833      printf(
" Kolmo Prob  h2 = %s, sum bin content =%g  effective entries =%g\n",h2->
GetName(),sum2,esum2);
 
 7834      printf(
" Kolmo Prob     = %g, Max Dist = %g\n",prob,dfmax);
 
 7836         printf(
" Kolmo Prob     = %f for shape alone, =%f for normalisation alone\n",prb1,prb2);
 
 7838         printf(
" Kolmo Prob     = %f with %d pseudo-experiments\n",prb3,nEXPT);
 
 7844   if(opt.
Contains(
"M"))      
return dfmax;
 
 7845   else if(opt.
Contains(
"X")) 
return prb3;
 
 7896   if (level <0 || level >= 
fContour.
fN) 
return 0;
 
 7903      if (zlevel <= 0) 
return 0;
 
 7919   if (buffersize <= 0) {
 
 7923   if (buffersize < 100) buffersize = 100;
 
 7950      for (level=0; level<nlevels; level++) 
fContour.
fArray[level] = levels[level];
 
 7955      if ((zmin == zmax) && (zmin != 0)) {
 
 7961         if (zmax <= 0) 
return;
 
 7962         if (zmin <= 0) zmin = 0.001*zmax;
 
 7965         dz   = (zmax-zmin)/
Double_t(nlevels);
 
 7967      for (level=0; level<nlevels; level++) {
 
 7978   if (level < 0 || level >= 
fContour.
fN) 
return;
 
 8003   Int_t bin, binx, biny, binz;
 
 8010   Double_t maximum = -FLT_MAX, value;
 
 8011   for (binz=zfirst;binz<=zlast;binz++) {
 
 8012      for (biny=yfirst;biny<=ylast;biny++) {
 
 8013         for (binx=xfirst;binx<=xlast;binx++) {
 
 8014            bin = 
GetBin(binx,biny,binz);
 
 8016            if (value > maximum && value < maxval) maximum = value;
 
 8028   Int_t locmax, locmay, locmaz;
 
 8040   Int_t bin, binx, biny, binz;
 
 8048   Double_t maximum = -FLT_MAX, value;
 
 8049   locm = locmax = locmay = locmaz = 0;
 
 8050   for (binz=zfirst;binz<=zlast;binz++) {
 
 8051      for (biny=yfirst;biny<=ylast;biny++) {
 
 8052         for (binx=xfirst;binx<=xlast;binx++) {
 
 8053            bin = 
GetBin(binx,biny,binz);
 
 8055            if (value > maximum) {
 
 8088   Int_t bin, binx, biny, binz;
 
 8096   for (binz=zfirst;binz<=zlast;binz++) {
 
 8097      for (biny=yfirst;biny<=ylast;biny++) {
 
 8098         for (binx=xfirst;binx<=xlast;binx++) {
 
 8099            bin = 
GetBin(binx,biny,binz);
 
 8101            if (value < minimum && value > minval) minimum = value;
 
 8113   Int_t locmix, locmiy, locmiz;
 
 8125   Int_t bin, binx, biny, binz;
 
 8134   locm = locmix = locmiy = locmiz = 0;
 
 8135   for (binz=zfirst;binz<=zlast;binz++) {
 
 8136      for (biny=yfirst;biny<=ylast;biny++) {
 
 8137         for (binx=xfirst;binx<=xlast;binx++) {
 
 8138            bin = 
GetBin(binx,biny,binz);
 
 8140            if (value < minimum) {
 
 8182   Int_t bin, binx, biny, binz;
 
 8192   for (binz=zfirst;binz<=zlast;binz++) {
 
 8193      for (biny=yfirst;biny<=ylast;biny++) {
 
 8194         for (binx=xfirst;binx<=xlast;binx++) {
 
 8195            bin = 
GetBin(binx,biny,binz);
 
 8197            if (value < min) min = value;
 
 8198            if (value > max) max = value;
 
 8216      Error(
"SetBins",
"Operation only valid for 1-d histograms");
 
 8243      Error(
"SetBins",
"Operation only valid for 1-d histograms");
 
 8269      Error(
"SetBins",
"Operation only valid for 2-D histograms");
 
 8297      Error(
"SetBins",
"Operation only valid for 2-D histograms");
 
 8324      Error(
"SetBins",
"Operation only valid for 3-D histograms");
 
 8333   fNcells = (nx+2)*(ny+2)*(nz+2);
 
 8354      Error(
"SetBins",
"Operation only valid for 3-D histograms");
 
 8363   fNcells = (nx+2)*(ny+2)*(nz+2);
 
 8476         Warning(
"Sumw2",
"Sum of squares of weights structure already created");
 
 8511   if (bin < 0) bin = 0;
 
 8531   if (bin < 0) bin = 0;
 
 8541      Warning(
"GetBinErrorLow",
"Histogram has negative bin content-force usage to normal errors");
 
 8546   if (
n == 0) 
return 0;
 
 8561   if (bin < 0) bin = 0;
 
 8571      Warning(
"GetBinErrorUp",
"Histogram has negative bin content-force usage to normal errors");
 
 8590   Error(
"GetBinCenter",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
 
 8601   Error(
"GetBinLowEdge",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
 
 8612   Error(
"GetBinWidth",
"Invalid method for a %d-d histogram - return a NaN",
fDimension);
 
 8639   Error(
"GetLowEdge",
"Invalid method for a %d-d histogram ",
fDimension);
 
 8654   if (bin < 0 || bin>= 
fNcells) 
return;
 
 8672   if (bin < 0) 
return;
 
 8736   return (
TH1*)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticBackground((TH1*)0x%lx,%d,\"%s\")",
 
 8737                                            (
ULong_t)
this, niter, option));
 
 8750   return (
Int_t)
gROOT->ProcessLineFast(
Form(
"TSpectrum::StaticSearch((TH1*)0x%lx,%g,\"%s\",%g)",
 
 8768   if (!fft ||  !fft->
GetN() ) {
 
 8769      ::Error(
"TransformHisto",
"Invalid FFT transform class");
 
 8774      ::Error(
"TransformHisto",
"Only 1d and 2D transform are supported");
 
 8796      if (
type.Contains(
"2C") || 
type.Contains(
"2HC")) {
 
 8798         for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
 
 8799            for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
 
 8800               ind[0] = binx-1; ind[1] = biny-1;
 
 8806         for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
 
 8807            for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
 
 8808               ind[0] = binx-1; ind[1] = biny-1;
 
 8815      if (
type.Contains(
"2C") || 
type.Contains(
"2HC")) {
 
 8817         for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
 
 8818            for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
 
 8819               ind[0] = binx-1; ind[1] = biny-1;
 
 8825         ::Error(
"TransformHisto",
"No complex numbers in the output");
 
 8830      if (
type.Contains(
"2C") || 
type.Contains(
"2HC")) {
 
 8832         for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
 
 8833            for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
 
 8834               ind[0] = binx-1; ind[1] = biny-1;
 
 8840         for (binx = 1; binx<=hout->
GetNbinsX(); binx++) {
 
 8841            for (biny=1; biny<=hout->
GetNbinsY(); biny++) {
 
 8842               ind[0] = binx-1; ind[1] = biny-1;
 
 8849      if (
type.Contains(
"2C") || 
type.Contains(
"2HC")){
 
 8851         for (binx = 1; binx<=hout->
GetNbinsX(); binx++){
 
 8852            for (biny=1; biny<=hout->
GetNbinsY(); biny++){
 
 8853               ind[0] = binx-1; ind[1] = biny-1;
 
 8874         printf(
"Pure real output, no phase");
 
 8904std::string cling::printValue(
TH1 *val) {
 
 8905  std::ostringstream strm;
 
 8906  strm << cling::printValue((
TObject*)val) << 
" NbinsX: " << val->
GetNbinsX();
 
 8932: 
TH1(
name,title,nbins,xlow,xup)
 
 8994   if (newval > -128 && newval < 128) {
fArray[bin] = 
Char_t(newval); 
return;}
 
 8995   if (newval < -127) 
fArray[bin] = -127;
 
 8996   if (newval >  127) 
fArray[bin] =  127;
 
 9113: 
TH1(
name,title,nbins,xlow,xup)
 
 9175   if (newval > -32768 && newval < 32768) {
fArray[bin] = 
Short_t(newval); 
return;}
 
 9176   if (newval < -32767) 
fArray[bin] = -32767;
 
 9177   if (newval >  32767) 
fArray[bin] =  32767;
 
 9294: 
TH1(
name,title,nbins,xlow,xup)
 
 9356   if (newval > -2147483647 && newval < 2147483647) {
fArray[bin] = 
Int_t(newval); 
return;}
 
 9357   if (newval < -2147483647) 
fArray[bin] = -2147483647;
 
 9358   if (newval >  2147483647) 
fArray[bin] =  2147483647;
 
 9476: 
TH1(
name,title,nbins,xlow,xup)
 
 9514: 
TH1(
"TVectorF",
"",
v.GetNrows(),0,
v.GetNrows())
 
 9518   Int_t ivlow  = 
v.GetLwb();
 
 9655: 
TH1(
name,title,nbins,xlow,xup)
 
 9693: 
TH1(
"TVectorD",
"",
v.GetNrows(),0,
v.GetNrows())
 
 9697   Int_t ivlow  = 
v.GetLwb();
 
 9820   if(hid >= 0) hname.
Form(
"h%d",hid);
 
 9821   else         hname.
Form(
"h_%d",hid);
 
static const double x1[5]
 
include TDocParser_001 C image html pict1_TDocParser_001 png width
 
static bool IsEquidistantBinning(const TAxis &axis)
Test if the binning is equidistant.
 
void H1LeastSquareLinearFit(Int_t ndata, Double_t &a0, Double_t &a1, Int_t &ifail)
Least square linear fit without weights.
 
void H1InitGaus()
Compute Initial values of parameters for a gaussian.
 
void H1InitExpo()
Compute Initial values of parameters for an exponential.
 
TH1C operator+(const TH1C &h1, const TH1C &h2)
Operator +.
 
TH1C operator-(const TH1C &h1, const TH1C &h2)
Operator -.
 
TH1C operator/(const TH1C &h1, const TH1C &h2)
Operator /.
 
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.
 
static Bool_t AlmostEqual(Double_t a, Double_t b, Double_t epsilon=0.00000001)
Test if two double are almost equal.
 
static Bool_t AlmostInteger(Double_t a, Double_t epsilon=0.00000001)
Test if a double is almost an integer.
 
TH1 * R__H(Int_t hid)
return pointer to histogram with name hid if id >=0 h_id if id <0
 
TH1C operator*(Double_t c1, const TH1C &h1)
Operator *.
 
void H1LeastSquareFit(Int_t n, Int_t m, Double_t *a)
Least squares lpolynomial fitting without weights.
 
void H1InitPolynom()
Compute Initial values of parameters for a polynom.
 
double ldexp(double, int)
 
R__EXTERN TVirtualMutex * gROOTMutex
 
R__EXTERN TRandom * gRandom
 
char * Form(const char *fmt,...)
 
void Printf(const char *fmt,...)
 
R__EXTERN TStyle * gStyle
 
#define R__LOCKGUARD(mutex)
 
#define R__WRITE_LOCKGUARD(mutex)
 
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
 
class describing the range in the coordinates it supports multiple range in a coordinate.
 
void AndersonDarling2SamplesTest(Double_t &pvalue, Double_t &testStat) const
 
Array of chars or bytes (8 bits per element).
 
void Set(Int_t n)
Set size of this array to n chars.
 
void Copy(TArrayC &array) const
 
Array of doubles (64 bits per element).
 
Double_t GetAt(Int_t i) const
 
void Copy(TArrayD &array) const
 
void Set(Int_t n)
Set size of this array to n doubles.
 
const Double_t * GetArray() const
 
Array of floats (32 bits per element).
 
void Copy(TArrayF &array) const
 
void Set(Int_t n)
Set size of this array to n floats.
 
Array of integers (32 bits per element).
 
void Set(Int_t n)
Set size of this array to n ints.
 
void Copy(TArrayI &array) const
 
Array of shorts (16 bits per element).
 
void Set(Int_t n)
Set size of this array to n shorts.
 
void Copy(TArrayS &array) const
 
Abstract array base class.
 
virtual Color_t GetTitleColor() const
 
virtual Color_t GetLabelColor() const
 
virtual Int_t GetNdivisions() const
 
virtual Color_t GetAxisColor() const
 
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
 
virtual Style_t GetTitleFont() const
 
virtual Float_t GetLabelOffset() const
 
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
Set color of the line axis and tick marks.
 
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels.
 
virtual Style_t GetLabelFont() const
 
virtual void SetTitleFont(Style_t font=62)
Set the title font.
 
virtual void SetLabelOffset(Float_t offset=0.005)
Set distance between the axis and the labels.
 
virtual void SetLabelFont(Style_t font=62)
Set labels' font.
 
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title.
 
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
 
virtual Float_t GetTitleSize() const
 
virtual Float_t GetLabelSize() const
 
virtual Float_t GetTickLength() const
 
virtual void ResetAttAxis(Option_t *option="")
Reset axis attributes.
 
virtual Float_t GetTitleOffset() const
 
virtual void SetTickLength(Float_t length=0.03)
Set tick mark length.
 
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis.
 
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels.
 
Fill Area Attributes class.
 
virtual Color_t GetFillColor() const
Return the fill area color.
 
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
 
virtual Style_t GetFillStyle() const
Return the fill area style.
 
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
 
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
 
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 Color_t GetLineColor() const
Return the line color.
 
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
 
virtual Width_t GetLineWidth() const
Return the line width.
 
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
 
virtual void SetLineColor(Color_t lcolor)
Set the line color.
 
virtual Style_t GetLineStyle() const
Return the line style.
 
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 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 Style_t GetMarkerStyle() const
Return the marker style.
 
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
 
virtual Color_t GetMarkerColor() const
Return the marker color.
 
virtual Size_t GetMarkerSize() const
Return the marker size.
 
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
 
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker.
 
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
 
Class to manage histogram axis.
 
virtual void GetCenter(Double_t *center) const
Return an array with the center of all bins.
 
virtual Bool_t GetTimeDisplay() const
 
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
 
virtual void SetParent(TObject *obj)
 
const TArrayD * GetXbins() const
 
void SetCanExtend(Bool_t canExtend)
 
virtual void SaveAttributes(std::ostream &out, const char *name, const char *subname)
Save axis attributes as C++ statement(s) on output stream out.
 
const char * GetBinLabel(Int_t bin) const
Return label for bin.
 
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
 
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
 
virtual void SetTimeDisplay(Int_t value)
 
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
 
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
 
virtual void Copy(TObject &axis) const
Copy axis structure to another axis.
 
Int_t GetLast() const
Return last bin on the axis i.e.
 
virtual void SetLimits(Double_t xmin, Double_t xmax)
 
virtual void GetLowEdge(Double_t *edge) const
Return an array with the low edge of all bins.
 
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
 
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
 
Int_t GetFirst() const
Return first bin on the axis i.e.
 
THashList * GetLabels() const
 
Using a TBrowser one can browse all ROOT objects.
 
Buffer base class used for serializing objects.
 
Collection abstract base class.
 
virtual bool UseRWLock()
Set this collection to use a RW lock upon access, making it thread safe.
 
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
 
virtual Bool_t IsEmpty() const
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
Describe directory structure in memory.
 
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
 
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
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 TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function.
 
virtual Int_t GetNpar() const
 
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral.
 
virtual Double_t EvalPar(const Double_t *x, const Double_t *params=0)
Evaluate function with given coordinates and parameters.
 
virtual void InitArgs(const Double_t *x, const Double_t *params)
Initialize parameters addresses.
 
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
 
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
Set limits for parameter ipar.
 
static Bool_t RejectedPoint()
See TF1::RejectPoint above.
 
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 SetParameter(Int_t param, Double_t value)
 
virtual Bool_t IsInside(const Double_t *x) const
return kTRUE if the point is inside the function range
 
A 2-Dim function with parameters.
 
A 3-Dim function with parameters.
 
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
 
1-D histogram with a byte per channel (see TH1 documentation)
 
TH1C & operator=(const TH1C &h1)
Operator =.
 
virtual void Copy(TObject &hnew) const
Copy this to newth1.
 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
 
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
 
virtual ~TH1C()
Destructor.
 
virtual void Reset(Option_t *option="")
Reset.
 
1-D histogram with a double per channel (see TH1 documentation)}
 
virtual void Copy(TObject &hnew) const
Copy this to newth1.
 
virtual ~TH1D()
Destructor.
 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
 
TH1D & operator=(const TH1D &h1)
Operator =.
 
1-D histogram with a float per channel (see TH1 documentation)}
 
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 ~TH1F()
Destructor.
 
TH1F & operator=(const TH1F &h1)
Operator =.
 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
 
virtual void Copy(TObject &hnew) const
Copy this to newth1.
 
1-D histogram with an int per channel (see TH1 documentation)}
 
virtual void Copy(TObject &hnew) const
Copy this to newth1.
 
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
 
virtual ~TH1I()
Destructor.
 
TH1I & operator=(const TH1I &h1)
Operator =.
 
1-D histogram with a short per channel (see TH1 documentation)
 
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
 
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
 
virtual ~TH1S()
Destructor.
 
TH1S & operator=(const TH1S &h1)
Operator =.
 
virtual void Copy(TObject &hnew) const
Copy this to newth1.
 
virtual void SetError(const Double_t *error)
Replace bin errors by values in array error.
 
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 void FitPanel()
Display a panel with all histogram fit options.
 
Double_t * fBuffer
[fBufferSize] entry buffer
 
virtual Int_t AutoP2FindLimits(Double_t min, Double_t max)
Buffer-based estimate of the histogram range using the power of 2 algorithm.
 
@ kNoAxis
NOTE: Must always be 0 !!!
 
virtual Double_t GetEffectiveEntries() const
Number of effective entries of the histogram.
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
 
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
 
virtual void Smooth(Int_t ntimes=1, Option_t *option="")
Smooth bin contents of this histogram.
 
virtual void Print(Option_t *option="") const
Print some global quantities for this histogram.
 
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
 
virtual void Rebuild(Option_t *option="")
Using the current bin info, recompute the arrays for contents and errors.
 
static Bool_t fgStatOverflows
!flag to use under/overflows in statistics
 
virtual Int_t FindLastBinAbove(Double_t threshold=0, Int_t axis=1, Int_t firstBin=1, Int_t lastBin=-1) const
Find last bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold i...
 
virtual Bool_t Multiply(TF1 *f1, Double_t c1=1)
Performs the operation:
 
virtual void Browse(TBrowser *b)
Browse the Histogram object.
 
Int_t fNcells
number of bins(1D), cells (2D) +U/Overflows
 
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 void FillRandom(const char *fname, Int_t ntimes=5000)
Fill histogram following distribution in function fname.
 
Double_t fTsumw
Total Sum of weights.
 
virtual Float_t GetBarWidth() const
 
Double_t fTsumw2
Total Sum of squares of weights.
 
static void StatOverflows(Bool_t flag=kTRUE)
if flag=kTRUE, underflows and overflows are used by the Fill functions in the computation of statisti...
 
virtual Float_t GetBarOffset() const
 
virtual ~TH1()
Histogram default destructor.
 
TList * fFunctions
->Pointer to list of functions (fits and user)
 
static Bool_t fgAddDirectory
!flag to add histograms to the directory
 
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...
 
static Int_t GetDefaultBufferSize()
Static function return the default buffer size for automatic histograms the parameter fgBufferSize ma...
 
virtual Double_t DoIntegral(Int_t ix1, Int_t ix2, Int_t iy1, Int_t iy2, Int_t iz1, Int_t iz2, Double_t &err, Option_t *opt, Bool_t doerr=kFALSE) const
Internal function compute integral and optionally the error between the limits specified by the bin n...
 
Double_t fTsumwx2
Total Sum of weight*X*X.
 
virtual Double_t GetStdDev(Int_t axis=1) const
Returns the Standard Deviation (Sigma).
 
TH1()
Histogram default constructor.
 
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...
 
virtual void LabelsOption(Option_t *option="h", Option_t *axis="X")
Set option(s) to draw axis with labels.
 
virtual Int_t GetNbinsY() const
 
Short_t fBarOffset
(1000*offset) for bar charts or legos
 
static bool CheckBinLimits(const TAxis *a1, const TAxis *a2)
Check bin limits.
 
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
 
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
 
static Int_t FitOptionsMake(Option_t *option, Foption_t &Foption)
Decode string choptin and fill fitOption structure.
 
virtual Int_t GetNbinsZ() const
 
virtual Double_t GetNormFactor() const
 
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
 
virtual Double_t GetSkewness(Int_t axis=1) const
 
virtual void ClearUnderflowAndOverflow()
Remove all the content from the underflow and overflow bins, without changing the number of entries A...
 
virtual Double_t GetContourLevelPad(Int_t level) const
Return the value of contour number "level" in Pad coordinates.
 
virtual TH1 * DrawNormalized(Option_t *option="", Double_t norm=1) const
Draw a normalized copy of this histogram.
 
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.
 
virtual Int_t GetDimension() const
 
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
 
@ kIsAverage
Bin contents are average (used by Add)
 
@ kUserContour
user specified contour levels
 
@ kNoStats
don't draw stats box
 
@ kAutoBinPTwo
Use Power(2)-based algorithm for autobinning.
 
@ kIsNotW
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
 
@ kIsHighlight
bit set if histo is highlight
 
virtual Double_t GetRandom() const
Return a random number distributed according the histogram bin contents.
 
virtual void SetContourLevel(Int_t level, Double_t value)
Set value for one contour level.
 
virtual Bool_t CanExtendAllAxes() const
Returns true if all axes are extendable.
 
TDirectory * fDirectory
!Pointer to directory holding this histogram
 
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
 
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
 
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...
 
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...
 
void UseCurrentStyle()
Copy current attributes from/to current style.
 
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 Int_t GetNcells() const
 
virtual Int_t ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05)
Interface to TSpectrum::Search.
 
static Bool_t RecomputeAxisLimits(TAxis &destAxis, const TAxis &anAxis)
Finds new limits for the axis for the Merge function.
 
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
 
TVirtualHistPainter * GetPainter(Option_t *option="")
Return pointer to painter.
 
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
 
static Bool_t GetDefaultSumw2()
Return kTRUE if TH1::Sumw2 must be called when creating new histograms.
 
virtual Int_t FindFirstBinAbove(Double_t threshold=0, Int_t axis=1, Int_t firstBin=1, Int_t lastBin=-1) const
Find first bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold ...
 
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
 
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
 
virtual 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...
 
virtual Int_t GetNbinsX() const
 
virtual void SetMaximum(Double_t maximum=-1111)
 
virtual TH1 * FFT(TH1 *h_output, Option_t *option)
This function allows to do discrete Fourier transforms of TH1 and TH2.
 
virtual void LabelsInflate(Option_t *axis="X")
Double the number of bins for axis.
 
virtual TH1 * ShowBackground(Int_t niter=20, Option_t *option="same")
This function calculates the background spectrum in this histogram.
 
virtual Double_t Chi2Test(const TH1 *h2, Option_t *option="UU", Double_t *res=0) const
test for comparing weighted and unweighted histograms
 
static Bool_t SameLimitsAndNBins(const TAxis &axis1, const TAxis &axis2)
Same limits and bins.
 
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),...
 
Double_t fMaximum
Maximum value for plotting.
 
Int_t fBufferSize
fBuffer size
 
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from the list of functions.
 
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 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.
 
Int_t fDimension
!Histogram dimension (1, 2 or 3 dim)
 
virtual void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
 
EBinErrorOpt fBinStatErrOpt
option for bin statistical errors
 
static Int_t fgBufferSize
!default buffer size for automatic histograms
 
virtual void SetBinsLength(Int_t=-1)
 
Double_t fNormFactor
Normalization factor.
 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
 
virtual TObject * FindObject(const char *name) const
Search object named name in the list of functions.
 
TArrayD fContour
Array to display contour levels.
 
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
 
virtual void SetContent(const Double_t *content)
Replace bin contents by the contents of array content.
 
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,...
 
Short_t fBarWidth
(1000*width) for bar charts or legos
 
virtual void SetContour(Int_t nlevels, const Double_t *levels=0)
Set the number and values of contour levels.
 
virtual Double_t GetBinErrorSqUnchecked(Int_t bin) const
 
Int_t AxisChoice(Option_t *axis) const
Choose an axis according to "axis".
 
virtual void SetMinimum(Double_t minimum=-1111)
 
Bool_t IsBinUnderflow(Int_t bin, Int_t axis=0) const
Return true if the bin is underflow.
 
static bool CheckBinLabels(const TAxis *a1, const TAxis *a2)
Check that axis have same labels.
 
virtual Double_t Interpolate(Double_t x) const
Given a point x, approximates the value via linear interpolation based on the two nearest bin centers...
 
static void SetDefaultSumw2(Bool_t sumw2=kTRUE)
When this static function is called with sumw2=kTRUE, all new histograms will automatically activate ...
 
Bool_t IsBinOverflow(Int_t bin, Int_t axis=0) const
Return true if the bin is overflow.
 
Double_t * fIntegral
!Integral of bins used by GetRandom
 
Double_t fMinimum
Minimum value for plotting.
 
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
 
virtual void SetBarWidth(Float_t width=0.5)
 
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
 
virtual void DirectoryAutoAdd(TDirectory *)
Perform the automatic addition of the histogram to the given directory.
 
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 Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
 
void Build()
Creates histogram basic data structure.
 
virtual Double_t GetEntries() const
Return the current number of entries.
 
virtual TF1 * GetFunction(const char *name) const
Return pointer to function with name.
 
virtual Int_t BufferFill(Double_t x, Double_t w)
accumulate arguments in buffer.
 
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.
 
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
 
TList * GetListOfFunctions() const
 
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
 
virtual void Copy(TObject &hnew) const
Copy this histogram structure to newth1.
 
Bool_t IsEmpty() const
Check if an histogram is empty (this a protected method used mainly by TH1Merger )
 
virtual Double_t GetMeanError(Int_t axis=1) const
Return standard error of mean of this histogram along the X axis.
 
virtual void Draw(Option_t *option="")
Draw this histogram with options.
 
virtual void SetBarOffset(Float_t offset=0.25)
 
virtual Double_t AndersonDarlingTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using the Anderson-Darling ...
 
virtual void ResetStats()
Reset the statistics including the number of entries and replace with values calculates from bin cont...
 
static void SetDefaultBufferSize(Int_t buffersize=1000)
Static function to set the default buffer size for automatic histograms.
 
virtual void SetBinErrorOption(EBinErrorOpt type)
 
virtual void SetBuffer(Int_t buffersize, Option_t *option="")
Set the maximum number of entries to be kept in the buffer.
 
virtual void DrawPanel()
Display a panel with all histogram drawing options.
 
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 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 GetMinimumAndMaximum(Double_t &min, Double_t &max) const
Retrieve the minimum and maximum values in the histogram.
 
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
 
static Int_t AutoP2GetBins(Int_t n)
Auxilliary function to get the next power of 2 integer value larger then n.
 
Double_t fEntries
Number of entries.
 
virtual Long64_t Merge(TCollection *list)
 
virtual void SetName(const char *name)
Change the name of this histogram.
 
virtual Double_t * GetIntegral()
Return a pointer to the array of bins integral.
 
TAxis fZaxis
Z axis descriptor.
 
EStatOverflows fStatOverflows
per object flag to use under/overflows in statistics
 
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.
 
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...
 
static bool CheckEqualAxes(const TAxis *a1, const TAxis *a2)
Check that the axis are the same.
 
@ kPoisson2
errors from Poisson interval at 95% CL (~ 2 sigma)
 
@ kNormal
errors with Normal (Wald) approximation: errorUp=errorLow= sqrt(N)
 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
 
TAxis fXaxis
X axis descriptor.
 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
 
virtual Bool_t IsHighlight() const
 
virtual void ExtendAxis(Double_t x, TAxis *axis)
Histogram is resized along axis such that x is in the axis range.
 
virtual void SetNameTitle(const char *name, const char *title)
Change the name and title of this histogram.
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
 
static bool CheckConsistency(const TH1 *h1, const TH1 *h2)
Check histogram compatibility.
 
TArrayD fSumw2
Array of sum of squares of weights.
 
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...
 
virtual Double_t GetContourLevel(Int_t level) const
Return value of contour number level.
 
virtual void SetHighlight(Bool_t set=kTRUE)
Set highlight (enable/disable) mode for the histogram by default highlight mode is disable.
 
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
 
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
 
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms.
 
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
 
virtual Int_t GetSumw2N() const
 
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
 
Bool_t GetStatOverflowsBehaviour() const
 
virtual Double_t GetStdDevError(Int_t axis=1) const
Return error of standard deviation estimation for Normal distribution.
 
virtual Bool_t Divide(TF1 *f1, Double_t c1=1)
Performs the operation: this = this/(c1*f1) if errors are defined (see TH1::Sumw2),...
 
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...
 
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.
 
TAxis fYaxis
Y axis descriptor.
 
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 Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
 
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.
 
virtual void GetCenter(Double_t *center) const
Fill array with center of bins for 1D histogram Better to use h1.GetXaxis().GetCenter(center)
 
TVirtualHistPainter * fPainter
!pointer to histogram painter
 
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
 
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.
 
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Redefines TObject::GetObjectInfo.
 
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
 
virtual void SetEntries(Double_t n)
 
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...
 
static bool CheckAxisLimits(const TAxis *a1, const TAxis *a2)
Check that the axis limits of the histograms are the same.
 
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
 
static Bool_t fgDefaultSumw2
!flag to call TH1::Sumw2 automatically at histogram creation time
 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a line.
 
Double_t fTsumwx
Total Sum of weight*X.
 
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 Double_t ComputeIntegral(Bool_t onlyPositive=false)
Compute integral (cumulative sum of bins) The result stored in fIntegral is used by the GetRandom fun...
 
TString fOption
histogram options
 
virtual Int_t GetContour(Double_t *levels=0)
Return contour values into array levels if pointer levels is non zero.
 
virtual void Eval(TF1 *f1, Option_t *option="")
Evaluate function f1 at the center of bins of this histogram.
 
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
 
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
 
virtual TH1 * Rebin(Int_t ngroup=2, const char *newname="", const Double_t *xbins=0)
Rebin this histogram.
 
virtual Double_t GetKurtosis(Int_t axis=1) const
 
2-D histogram with a double per channel (see TH1 documentation)}
 
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder.
 
virtual Int_t FindGoodLimits(TH1 *h, Double_t xmin, Double_t xmax)
Compute the best axis limits for the X axis.
 
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
 
void Clear(Option_t *option="")
Remove all objects from the list.
 
virtual void Add(TObject *obj)
 
virtual TObject * Remove(TObject *obj)
Remove object from the list.
 
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
 
virtual TObjLink * FirstLink() const
 
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
 
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
 
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
 
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void Copy(TObject &named) const
Copy this to obj.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
virtual const char * GetTitle() const
Returns title of object.
 
virtual const char * GetName() const
Returns name of object.
 
TObject * GetObject() const
 
Option_t * GetOption() const
 
Mother of all ROOT objects.
 
void AbstractMethod(const char *method) const
Use this method to implement an "abstract" method that you don't want to leave purely abstract.
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual UInt_t GetUniqueID() const
Return the unique object id.
 
@ kNotDeleted
object has not been deleted
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
 
@ kCanDelete
if object in a list can be deleted
 
@ kInvalidObject
if object ctor succeeded but object should not be used
 
@ kMustCleanup
if object destructor must call RecursiveRemove()
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
Long_t ExecPlugin(int nargs, const T &... params)
 
Int_t LoadPlugin()
Load the plugin library for this handler.
 
virtual Int_t Poisson(Double_t mean)
Generates a random integer N according to a Poisson law.
 
virtual Double_t PoissonD(Double_t mean)
Generates a random number according to a Poisson law.
 
virtual Double_t Rndm()
Machine independent random number generator.
 
void ToLower()
Change string to lower-case.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
void ToUpper()
Change string to upper case.
 
TString & Remove(Ssiz_t pos)
 
TString & Append(const char *cs)
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
 
void SetHistFillColor(Color_t color=1)
 
Color_t GetHistLineColor() const
 
Float_t GetBarOffset() const
 
void SetHistLineStyle(Style_t styl=0)
 
Style_t GetHistFillStyle() const
 
Color_t GetHistFillColor() const
 
Float_t GetBarWidth() const
 
Bool_t GetCanvasPreferGL() const
 
void SetHistLineColor(Color_t color=1)
 
void SetBarOffset(Float_t baroff=0.5)
 
Style_t GetHistLineStyle() const
 
void SetBarWidth(Float_t barwidth=0.5)
 
void SetHistFillStyle(Style_t styl=0)
 
Width_t GetHistLineWidth() const
 
void SetHistLineWidth(Width_t width=1)
 
TVirtualFFT is an interface class for Fast Fourier Transforms.
 
static TVirtualFFT * FFT(Int_t ndim, Int_t *n, Option_t *option)
Returns a pointer to the FFT of requested size and type.
 
virtual Int_t GetNdim() const =0
 
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.
 
virtual Option_t * GetType() const =0
 
virtual void Transform()=0
 
virtual void GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const =0
 
virtual Int_t * GetN() const =0
 
virtual Double_t GetPointReal(Int_t ipoint, Bool_t fromInput=kFALSE) const =0
 
virtual void SetPoint(Int_t ipoint, Double_t re, Double_t im=0)=0
 
Abstract Base Class for Fitting.
 
virtual Int_t GetXlast() const
 
virtual TObject * GetObjectFit() const
 
virtual Int_t GetXfirst() const
 
static TVirtualFitter * GetFitter()
static: return the current Fitter
 
virtual TObject * GetUserFunc() const
 
Abstract interface to a histogram painter.
 
virtual void DrawPanel()=0
 
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)=0
Execute action corresponding to an event at (px,py).
 
virtual void Paint(Option_t *option="")=0
This method must be overridden if a class wants to paint itself.
 
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)=0
Computes distance from point (px,py) to the object.
 
virtual void SetHighlight()=0
 
static TVirtualHistPainter * HistPainter(TH1 *obj)
Static function returning a pointer to the current histogram painter.
 
virtual void SetParent(TObject *)=0
 
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...
 
double gamma_quantile(double z, double alpha, double theta)
Inverse ( ) of the cumulative distribution function of the lower tail of the gamma distribution (gamm...
 
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)
 
void FitOptionsMake(EFitObjectType type, const char *option, Foption_t &fitOption)
Decode list of options into fitOption.
 
void FillData(BinData &dv, const TH1 *hist, TF1 *func=0)
fill the data vector from a TH1.
 
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)
 
R__EXTERN TVirtualRWMutex * gCoreMutex
 
static constexpr double s
 
void forward(const LAYERDATA &prevLayerData, LAYERDATA &currLayerData)
apply the weights (and functions) in forward direction of the DNN
 
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
 
Short_t Max(Short_t a, Short_t b)
 
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...
 
Double_t QuietNaN()
Returns a quiet NaN as defined by IEEE 754
 
Double_t Floor(Double_t x)
 
Double_t Ceil(Double_t x)
 
T MinElement(Long64_t n, const T *a)
Return minimum of array a of length n.
 
constexpr Double_t E()
Base of natural log:
 
Double_t Sqrt(Double_t x)
 
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
 
Short_t Min(Short_t a, Short_t b)
 
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
 
Bool_t AreEqualAbs(Double_t af, Double_t bf, Double_t epsilon)
 
Double_t KolmogorovProb(Double_t z)
Calculates the Kolmogorov distribution function,.
 
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
 
Double_t Median(Long64_t n, const T *a, const Double_t *w=0, Long64_t *work=0)
Return the median of the array a where each entry i has weight w[i] .
 
Long64_t BinarySearch(Long64_t n, const T *array, T value)
 
Double_t Log10(Double_t x)
 
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.
 
static long int sum(long int i)