// REBIN !!!!!!!!! // ResetStats() !!!!!!!!!!! // SetBinContent abo Fill(x, w) !!!!!!!!!!!!!!!!!!
In its simplest form, a (1-dimensional) histogram is defined as the collection of the N pairs (1, n1), (2, n2), ..., (N, nN) and it is usually implemented as an array in which the first value of the pair (i, ni) is the index of the element containing the value ni.
- Fix or variable bin size
All histogram types support either fix or variable bin sizes.
- Convention for numbering bins
For all histogram types: nbins, xlow, xup
bin = 0; underflow bin bin = 1; first bin with low-edge xlow INCLUDED bin = nbins; last bin with upper-edge xup EXCLUDED bin = nbins+1; overflow bin
- Histograms with automatic bins
When an histogram is created with an axis lower limit greater or equal to its upper limit, theis automatically called with an argument equal to (default value=1000). may be reset via the static function . The axis limits will be automatically computed when the buffer will be full or when the function is called.
- Filling histograms
An histogram is typically filled with statements like h1->Fill(x), or fill with weight h1->Fill(x, w). The Fill functions compute the bin number corresponding to the given x argument and increment this bin by the given weight. The Fill functions return the bin number for 1-D histograms.
If h->SetBit(TH1::kCanRebin) then, the Fill function will automatically extend the axis range to accomodate the new value specified in the Fill argument. The method used is to double the bin size until the new value fits in the range, merging bins two by two. This automatic binning options is extensively used by the function when histogramming Tree variables with an unknown range. During filling, some statistics parameters are incremented to compute the mean value and Root Mean Square with the maximum precision.has been called before filling, the sum of squares of weights is also stored. One can also increment directly a bin number via or replace the existing content via . By default, the bin number is computed using the current axis ranges. If the automatic binning option has been set via
At any time, a histogram can be re-binned via themethod. It returns a new histogram with the re-binned contents. If bin errors were stored, they are recomputed during the re-binning.
- Associated errors
By default, for each bin, the sum of weights is computed at fill time. One can also call h->GetBinError(bin)to force the storage and computation of the sum of the square of weights per bin. If has been called, the error per bin is computed as the sqrt(sum of squares of weights), otherwise the error is set equal to the sqrt(bin content). To return the error for a given bin number, do
- Histogram errors
ROOT assumes by default that the histogram represents counting of values from stochastically independent measurements (e.g. the outcomes of repeated die throwing), so that it computes the bin fluctuation accordingly to the Poisson distribution: the best estimate of the standard deviation on the observed value ni of entries in bin i is the square root of ni. Note that this is not always correct, frequent examples are
- rate histograms the i-th bin contains the number of events passing cut i and all previous selection criteria. In this case the correct probability distribution is the binomial distribution and the correct standard deviation should be computed by the user (it can also be saved into the histogram itself, for future use). When ni is not too small, the binomial distribution is well approximated by the Poisson distribution, so that the ROOT default is acceptable in most cases (but not for all bins!). The method has the option "B" for binomial division, but the best error estimation in this case is provided by method (which is not as easy to understand ...)
- histograms computed using other histograms, for example by adding or dividing them bin by bin, ROOT assumes that the input histograms have the correct standard deviations and correctly computes the final ones. The user should make sure that the input histograms have correct errors
- histograms that do not represent value counting from stochastically independent random processes for each specific case, the user should take care of computing and saving, via , the correct standard deviations.
- Operations on histograms
Many types of operations are supported on histograms or between histograms
- Addition of an histogram to the current histogram.
- Additions of two histograms with coefficients and storage into the current histogram.
- Multiplications and Divisions are supported in the same way as additions.
- The Add, Divide and Multiply functions also exist to add, divide or multiply an histogram by a function.
If an histogram has associated error bars (myhist.SetBit(TH1::kIsAverage). When adding (see ) average histograms, the histograms are averaged and not summed.has been called), the resulting error bars are also computed assuming independent histograms. In case of divisions, Binomial errors are also supported. One can mark a histogram to be an "average" histogram by setting its bit via
- Normalizing histograms
One can scale an histogram such that the bins integral is equal to the normalization parameter via myhist.Scale(Double_t norm), where norm is the desired normalization divided by the integral of the histogram myhist.Scale(norm/(h->Integral()))