TH1 is the base class of all histogram classes in ROOT.
It provides the common interface for operations such as binning, filling, drawing, which will be detailed below.
ROOT supports the following histogram types:
^{ (*) INT_MAX = 2147483647 is the maximum value for a variable of type int. (**) LLONG_MAX = 9223372036854775807 is the maximum value for a variable of type long64. (***) 2^24 = 16777216 is the maximum integer that can be properly represented by a float32 with 23bit mantissa. (****) 2^53 = 9007199254740992 is the maximum integer that can be properly represented by a double64 with 52bit mantissa. }
The inheritance hierarchy looks as follows:
Histograms are created by invoking one of the constructors, e.g.
Histograms may also be created by:
When a histogram is created, a reference to it is automatically added to the list of inmemory objects for the current file or directory. Then the pointer to this histogram in the current directory can be found by its name, doing:
This default behaviour can be changed by:
When the histogram is deleted, the reference to it is removed from the list of objects in memory. When a file is closed, all histograms in memory associated with this file are automatically deleted.
Axis titles can be specified in the title argument of the constructor. They must be separated by ";":
The histogram title and the axis titles can be any TLatex string, and are persisted if a histogram is written to a file.
Any title can be omitted:
The method SetTitle() has the same syntax:
Alternatively, the title of each axis can be set directly:
For bin labels see binning.
All histogram types support either fix or variable bin sizes. 2D histograms may have fix size bins along X and variable size bins along Y or viceversa. The functions to fill, manipulate, draw or access histograms are identical in both cases.
Each histogram always contains 3 axis objects of type TAxis: fXaxis, fYaxis and fZaxis. To access the axis parameters, use:
See class TAxis for a description of all the access functions. The axis range is always stored internally in double precision.
For all histogram types: nbins, xlow, xup
In case of 2D or 3D histograms, a "global bin" number is defined. For example, assuming a 3D histogram with (binx, biny, binz), the function
returns a global/linearized gbin number. This global gbin is useful to access the bin content/error information independently of the dimension. Note that to access the information other than bin content and errors one should use the TAxis object directly with e.g.:
returns the center along z of bin number 27 (not the global bin) in the 3D histogram h3.
By default, a histogram axis is drawn with its numeric bin labels. One can specify alphanumeric labels instead with:
When using the options 2 or 3 above, the labels are automatically added to the list (THashList) of labels for a given axis. By default, an axis is drawn with the order of bins corresponding to the filling sequence. It is possible to reorder the axis
The reordering can be triggered via the TAxis context menu by selecting the menu item "LabelsOption" or by calling directly TH1::LabelsOption(option, axis) where
When using the option 2 above, new labels are added by doubling the current number of bins in case one label does not exist yet. When the Filling is terminated, it is possible to trim the number of bins to match the number of active labels by calling
This operation is automatic when using TTree::Draw. Once bin labels have been created, they become persistent if the histogram is written to a file or when generating the C++ code via SavePrimitive.
When a histogram is created with an axis lower limit greater or equal to its upper limit, the SetBuffer is automatically called with an argument fBufferSize equal to fgBufferSize (default value=1000). fgBufferSize may be reset via the static function TH1::SetDefaultBufferSize. The axis limits will be automatically computed when the buffer will be full or when the function BufferEmpty is called.
At any time, a histogram can be rebinned via TH1::Rebin. This function returns a new histogram with the rebinned contents. If bin errors were stored, they are recomputed during the rebinning.
A histogram is typically filled with statements like:
or via one of the Fill functions accepting names described above. The Fill functions compute the bin number corresponding to the given x, y or z argument and increment this bin by the given weight. The Fill functions return the bin number for 1D histograms or global bin number for 2D and 3D histograms. If TH1::Sumw2 has been called before filling, the sum of squares of weights is also stored. One can also increment directly a bin number via TH1::AddBinContent or replace the existing content via TH1::SetBinContent. Passing an outofrange bin to TH1::AddBinContent leads to undefined behavior. To access the bin content of a given bin, do:
By default, the bin number is computed using the current axis ranges. If the automatic binning option has been set via
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 TTree::Draw function when histogramming Tree variables with an unknown range. This automatic binning option is supported for 1D, 2D and 3D histograms.
During filling, some statistics parameters are incremented to compute the mean value and Root Mean Square with the maximum precision.
In case of histograms of type TH1C, TH1S, TH2C, TH2S, TH3C, TH3S a check is made that the bin contents do not exceed the maximum positive capacity (127 or 32767). Histograms of all types may have positive or/and negative bin contents.
By default, for each bin, the sum of weights is computed at fill time. One can also call TH1::Sumw2 to force the storage and computation of the sum of the square of weights per bin. If Sumw2 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:
One or more object (typically a TF1*) can be added to the list of functions (fFunctions) associated to each histogram. When TH1::Fit is invoked, the fitted function is added to this list. Given a histogram h, one can retrieve an associated function with:
Many types of operations are supported on histograms or between histograms
If a histogram has associated error bars (TH1::Sumw2 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 kIsAverage via myhist.SetBit(TH1::kIsAverage); When adding (see TH1::Add) average histograms, the histograms are averaged and not summed.
One can:
One can fit these projections via:
TH1::FillRandom can be used to randomly fill a histogram using the contents of an existing TF1 function or another TH1 histogram (for all dimensions). For example, the following two statements create and fill a histogram 10000 times with a default gaussian distribution of mean 0 and sigma 1:
TH1::GetRandom can be used to return a random number distributed according to the contents of a histogram.
Like for any other ROOT object derived from TObject, one can use the Clone() function. This makes an identical copy of the original histogram including all associated errors and functions, e.g.:
One can scale a histogram such that the bins integral is equal to the normalization parameter via TH1::Scale(Double_t norm), where norm is the desired normalization divided by the integral of the histogram.
Histograms are drawn via the THistPainter class. Each histogram has a pointer to its own painter (to be usable in a multithreaded program). Many drawing options are supported. See THistPainter::Paint() for more details.
The same histogram can be drawn with different options in different pads. When a histogram drawn in a pad is deleted, the histogram is automatically removed from the pad or pads where it was drawn. If a histogram is drawn in a pad, then filled again, the new status of the histogram will be automatically shown in the pad next time the pad is updated. One does not need to redraw the histogram. To draw the current version of a histogram in a pad, one can use
This makes a clone (see Clone below) of the histogram. Once the clone is drawn, the original histogram may be modified or deleted without affecting the aspect of the clone.
One can use TH1::SetMaximum() and TH1::SetMinimum() to force a particular value for the maximum or the minimum scale on the plot. (For 1D histograms this means the yaxis, while for 2D histograms these functions affect the zaxis).
TH1::UseCurrentStyle() can be used to change all histogram graphics attributes to correspond to the current selected style. This function must be called for each histogram. In case one reads and draws many histograms from a file, one can force the histograms to inherit automatically the current graphics style by calling before gROOT>ForceStyle().
By default contours are automatically generated at equidistant intervals. A default value of 20 levels is used. This can be modified via TH1::SetContour() or TH1::SetContourLevel(). the contours level info is used by the drawing options "cont", "surf", and "lego".
The histogram classes inherit from the attribute classes: TAttLine, TAttFill, and TAttMarker. See the member functions of these classes for the list of options.
Use the functions of TAxis, such as
Histograms (1D, 2D, 3D and Profiles) can be fitted with a user specified function or a predefined function via TH1::Fit. See TH1::Fit(TF1*, Option_t *, Option_t *, Double_t, Double_t) for the fitting documentation and the possible fitting options
The FitPanel can also be used for fitting an histogram. See the FitPanel documentation.
The following statements create a ROOT file and store a histogram on the file. Because TH1 derives from TNamed, the key identifier on the file is the histogram name:
To read this histogram in another Root session, do:
One can save all histograms in memory to the file by:
IMPORTANT NOTE: The returned values for GetMean and GetStdDev depend on how the histogram statistics are calculated. By default, if no range has been set, the returned values are the (unbinned) ones calculated at fill time. If a range has been set, however, the values are calculated using the bins in range; THIS IS TRUE EVEN IF THE RANGE INCLUDES ALL BINS–use TAxis::SetRange(0, 0) to unset the range. To ensure that the returned values are always those of the binned data stored in the histogram, call TH1::ResetStats. See TH1::GetStats.
Public Types  
enum  { kNoAxis = 0 , kXaxis = (1ULL << ( 0 )) , kYaxis = (1ULL << ( 1 )) , kZaxis = (1ULL << ( 2 )) , kAllAxes = kXaxis  kYaxis  kZaxis } 
Enumeration specifying which axes can be extended. More...  
enum  { kNstat = 13 } 
Size of statistics data (size of array used in GetStats()/ PutStats ) More...  
enum  EBinErrorOpt { kNormal = 0 , kPoisson = 1 , kPoisson2 = 2 } 
Enumeration specifying type of statistics for bin errors. More...  
enum  EStatOverflows { kIgnore = 0 , kConsider = 1 , kNeutral = 2 } 
Enumeration specifying the way to treat statoverflow. More...  
enum  EStatusBits { kNoStats = (1ULL << ( 9 )) , kUserContour = (1ULL << ( 10 )) , kLogX = (1ULL << ( 15 )) , kIsZoomed = (1ULL << ( 16 )) , kNoTitle = (1ULL << ( 17 )) , kIsAverage = (1ULL << ( 18 )) , kIsNotW = (1ULL << ( 19 )) , kAutoBinPTwo = (1ULL << ( 20 )) , kIsHighlight = (1ULL << ( 21 )) } 
TH1 status bits. More...  
Public Types inherited from TObject  
enum  { kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 , kBitMask = 0x00ffffff } 
enum  { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) } 
enum  EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) } 
enum  EStatusBits { kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) , kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 )) } 
Public Member Functions  
~TH1 () override  
Histogram default destructor.  
virtual Bool_t  Add (const TH1 *h, const TH1 *h2, Double_t c1=1, Double_t c2=1) 
Replace contents of this histogram by the addition of h1 and h2.  
virtual Bool_t  Add (const TH1 *h1, Double_t c1=1) 
Performs the operation: this = this + c1*h1 If errors are defined (see TH1::Sumw2), errors are also recalculated.  
virtual Bool_t  Add (TF1 *h1, Double_t c1=1, Option_t *option="") 
Performs the operation: this = this + c1*f1 if errors are defined (see TH1::Sumw2), errors are also recalculated.  
virtual void  AddBinContent (Int_t bin) 
Increment bin content by 1.  
virtual void  AddBinContent (Int_t bin, Double_t w) 
Increment bin content by a weight w.  
virtual Double_t  AndersonDarlingTest (const TH1 *h2, Double_t &advalue) const 
Same function as above but returning also the test statistic value.  
virtual Double_t  AndersonDarlingTest (const TH1 *h2, Option_t *option="") const 
Statistical test of compatibility in shape between this histogram and h2, using the AndersonDarling 2 sample test.  
void  Browse (TBrowser *b) override 
Browse the Histogram object.  
virtual Int_t  BufferEmpty (Int_t action=0) 
Fill histogram with all entries in the buffer.  
virtual Bool_t  CanExtendAllAxes () const 
Returns true if all axes are extendable.  
virtual Double_t  Chi2Test (const TH1 *h2, Option_t *option="UU", Double_t *res=nullptr) const 
\( \chi^{2} \) test for comparing weighted and unweighted histograms.  
virtual Double_t  Chi2TestX (const TH1 *h2, Double_t &chi2, Int_t &ndf, Int_t &igood, Option_t *option="UU", Double_t *res=nullptr) const 
The computation routine of the Chisquare test.  
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 computed by weighting each histogram point by the bin error By default the full range of the histogram is used.  
virtual void  ClearUnderflowAndOverflow () 
Remove all the content from the underflow and overflow bins, without changing the number of entries After calling this method, every undeflow and overflow bins will have content 0.0 The Sumw2 is also cleared, since there is no more content in the bins.  
TObject *  Clone (const char *newname="") const override 
Make a complete copy of the underlying object.  
virtual Double_t  ComputeIntegral (Bool_t onlyPositive=false) 
Compute integral (normalized cumulative sum of bins) w/o under/overflows The result is stored in fIntegral and used by the GetRandom functions.  
void  Copy (TObject &hnew) const override 
Copy this histogram structure to newth1.  
virtual void  DirectoryAutoAdd (TDirectory *) 
Perform the automatic addition of the histogram to the given directory.  
Int_t  DistancetoPrimitive (Int_t px, Int_t py) override 
Compute distance from point px,py to a line.  
virtual Bool_t  Divide (const TH1 *h1) 
Divide this histogram by h1.  
virtual Bool_t  Divide (const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option="") 
Replace contents of this histogram by the division of h1 by h2.  
virtual Bool_t  Divide (TF1 *f1, Double_t c1=1) 
Performs the operation: this = this/(c1*f1) if errors are defined (see TH1::Sumw2), errors are also recalculated.  
void  Draw (Option_t *option="") override 
Draw this histogram with options.  
virtual TH1 *  DrawCopy (Option_t *option="", const char *name_postfix="_copy") const 
Copy this histogram and Draw in the current pad.  
virtual TH1 *  DrawNormalized (Option_t *option="", Double_t norm=1) const 
Draw a normalized copy of this histogram.  
virtual void  DrawPanel () 
Display a panel with all histogram drawing options.  
virtual void  Eval (TF1 *f1, Option_t *option="") 
Evaluate function f1 at the center of bins of this histogram.  
void  ExecuteEvent (Int_t event, Int_t px, Int_t py) override 
Execute action corresponding to one event.  
virtual void  ExtendAxis (Double_t x, TAxis *axis) 
Histogram is resized along axis such that x is in the axis range.  
virtual TH1 *  FFT (TH1 *h_output, Option_t *option) 
This function allows to do discrete Fourier transforms of TH1 and TH2.  
virtual Int_t  Fill (const char *name, Double_t w) 
Increment bin with namex with a weight w.  
virtual Int_t  Fill (Double_t x) 
Increment bin with abscissa X by 1.  
virtual Int_t  Fill (Double_t x, Double_t w) 
Increment bin with abscissa X with a weight w.  
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  FillN (Int_t, const Double_t *, const Double_t *, const Double_t *, Int_t) 
virtual void  FillRandom (const char *fname, Int_t ntimes=5000, TRandom *rng=nullptr) 
Fill histogram following distribution in function fname.  
virtual void  FillRandom (TH1 *h, Int_t ntimes=5000, TRandom *rng=nullptr) 
Fill histogram following distribution in histogram h.  
virtual Int_t  FindBin (Double_t x, Double_t y=0, Double_t z=0) 
Return Global bin number corresponding to x,y,z.  
virtual 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 is found the function returns 1.  
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 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 is found the function returns 1.  
TObject *  FindObject (const char *name) const override 
Search object named name in the list of functions.  
TObject *  FindObject (const TObject *obj) const override 
Search object obj in the list of functions.  
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 TFitResultPtr  Fit (TF1 *f1, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0) 
Fit histogram with the function pointer f1.  
virtual void  FitPanel () 
Display a panel with all histogram fit options.  
TH1 *  GetAsymmetry (TH1 *h2, Double_t c2=1, Double_t dc2=0) 
Return a histogram containing the asymmetry of this histogram with h2, where the asymmetry is defined as:  
virtual Color_t  GetAxisColor (Option_t *axis="X") const 
Return the number of divisions for "axis".  
virtual Float_t  GetBarOffset () const 
virtual Float_t  GetBarWidth () const 
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  GetBinCenter (Int_t bin) const 
Return bin center for 1D histogram.  
virtual Double_t  GetBinContent (Int_t bin) const 
Return content of bin number bin.  
virtual Double_t  GetBinContent (Int_t bin, Int_t) const 
virtual Double_t  GetBinContent (Int_t bin, Int_t, Int_t) const 
virtual Double_t  GetBinError (Int_t bin) const 
Return value of error associated to bin number bin.  
virtual Double_t  GetBinError (Int_t binx, Int_t biny) const 
virtual Double_t  GetBinError (Int_t binx, Int_t biny, Int_t binz) const 
virtual Double_t  GetBinErrorLow (Int_t bin) const 
Return lower error associated to bin number bin.  
virtual EBinErrorOpt  GetBinErrorOption () const 
virtual Double_t  GetBinErrorUp (Int_t bin) const 
Return upper error associated to bin number bin.  
virtual Double_t  GetBinLowEdge (Int_t bin) const 
Return bin lower edge for 1D histogram.  
virtual Double_t  GetBinWidth (Int_t bin) const 
Return bin width for 1D histogram.  
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_contentc) <= maxdiff.  
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 above.  
const Double_t *  GetBuffer () const 
Int_t  GetBufferLength () const 
Int_t  GetBufferSize () const 
virtual Double_t  GetCellContent (Int_t binx, Int_t biny) const 
virtual Double_t  GetCellError (Int_t binx, Int_t biny) const 
virtual void  GetCenter (Double_t *center) const 
Fill array with center of bins for 1D histogram Better to use h1.GetXaxis()>GetCenter(center)  
virtual Int_t  GetContour (Double_t *levels=nullptr) 
Return contour values into array levels if pointer levels is non zero.  
virtual Double_t  GetContourLevel (Int_t level) const 
Return value of contour number level.  
virtual Double_t  GetContourLevelPad (Int_t level) const 
Return the value of contour number "level" in Pad coordinates.  
TH1 *  GetCumulative (Bool_t forward=kTRUE, const char *suffix="_cumulative") const 
Return a pointer to a histogram containing the cumulative content.  
virtual Int_t  GetDimension () const 
TDirectory *  GetDirectory () const 
virtual Double_t  GetEffectiveEntries () const 
Number of effective entries of the histogram.  
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 Double_t *  GetIntegral () 
Return a pointer to the array of bins integral.  
virtual Double_t  GetKurtosis (Int_t axis=1) const 
virtual Color_t  GetLabelColor (Option_t *axis="X") const 
Return the "axis" label color.  
virtual Style_t  GetLabelFont (Option_t *axis="X") const 
Return the "axis" label font.  
virtual Float_t  GetLabelOffset (Option_t *axis="X") const 
Return the "axis" label offset.  
virtual Float_t  GetLabelSize (Option_t *axis="X") const 
Return the "axis" label size.  
TList *  GetListOfFunctions () const 
virtual void  GetLowEdge (Double_t *edge) const 
Fill array with low edge of bins for 1D histogram Better to use h1.GetXaxis()>GetLowEdge(edge)  
virtual 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 by TH1::SetMaximum, in which case it returns that value.  
virtual Int_t  GetMaximumBin () const 
Return location of bin with maximum value in the range.  
virtual Int_t  GetMaximumBin (Int_t &locmax, Int_t &locmay, Int_t &locmaz) const 
Return location of bin with maximum value in the range.  
virtual Double_t  GetMaximumStored () 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  GetMeanError (Int_t axis=1) const 
Return standard error of mean of this histogram along the X axis.  
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 TH1::SetMinimum, in which case it returns that value.  
virtual void  GetMinimumAndMaximum (Double_t &min, Double_t &max) const 
Retrieve the minimum and maximum values in the histogram.  
virtual Int_t  GetMinimumBin () const 
Return location of bin with minimum value in the range.  
virtual Int_t  GetMinimumBin (Int_t &locmix, Int_t &locmiy, Int_t &locmiz) const 
Return location of bin with minimum value in the range.  
virtual Double_t  GetMinimumStored () const 
virtual Int_t  GetNbinsX () const 
virtual Int_t  GetNbinsY () const 
virtual Int_t  GetNbinsZ () const 
virtual Int_t  GetNcells () const 
virtual Int_t  GetNdivisions (Option_t *axis="X") const 
Return the number of divisions for "axis".  
virtual Double_t  GetNormFactor () const 
char *  GetObjectInfo (Int_t px, Int_t py) const override 
Redefines TObject::GetObjectInfo.  
Option_t *  GetOption () const override 
TVirtualHistPainter *  GetPainter (Option_t *option="") 
Return pointer to painter.  
virtual Int_t  GetQuantiles (Int_t nprobSum, Double_t *q, const Double_t *probSum=nullptr) 
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined as.  
virtual Double_t  GetRandom (TRandom *rng=nullptr) const 
Return a random number distributed according the histogram bin contents.  
Double_t  GetRMS (Int_t axis=1) const 
This function returns the Standard Deviation (Sigma) of the distribution not the Root Mean Square (RMS).  
Double_t  GetRMSError (Int_t axis=1) const 
virtual Double_t  GetSkewness (Int_t axis=1) const 
EStatOverflows  GetStatOverflows () const 
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more information.  
virtual void  GetStats (Double_t *stats) const 
fill the array stats from the contents of this histogram The array stats must be correctly dimensioned in the calling program.  
virtual Double_t  GetStdDev (Int_t axis=1) const 
Returns the Standard Deviation (Sigma).  
virtual Double_t  GetStdDevError (Int_t axis=1) const 
Return error of standard deviation estimation for Normal distribution.  
virtual Double_t  GetSumOfWeights () const 
Return the sum of weights excluding under/overflows.  
virtual TArrayD *  GetSumw2 () 
virtual const TArrayD *  GetSumw2 () const 
virtual Int_t  GetSumw2N () const 
virtual Float_t  GetTickLength (Option_t *axis="X") const 
Return the "axis" tick length.  
virtual Style_t  GetTitleFont (Option_t *axis="X") const 
Return the "axis" title font.  
virtual Float_t  GetTitleOffset (Option_t *axis="X") const 
Return the "axis" title offset.  
virtual Float_t  GetTitleSize (Option_t *axis="X") const 
Return the "axis" title size.  
TAxis *  GetXaxis () 
const TAxis *  GetXaxis () const 
TAxis *  GetYaxis () 
const TAxis *  GetYaxis () const 
TAxis *  GetZaxis () 
const TAxis *  GetZaxis () const 
virtual Double_t  Integral (Int_t binx1, Int_t binx2, Option_t *option="") const 
Return integral of bin contents in range [binx1,binx2].  
virtual Double_t  Integral (Option_t *option="") const 
Return integral of bin contents.  
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.  
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.  
virtual Double_t  Interpolate (Double_t x, Double_t y) const 
2d Interpolation. Not yet implemented.  
virtual Double_t  Interpolate (Double_t x, Double_t y, Double_t z) const 
3d Interpolation. Not yet implemented.  
TClass *  IsA () const override 
Bool_t  IsBinOverflow (Int_t bin, Int_t axis=0) const 
Return true if the bin is overflow.  
Bool_t  IsBinUnderflow (Int_t bin, Int_t axis=0) const 
Return true if the bin is underflow.  
virtual Bool_t  IsHighlight () const 
virtual Double_t  KolmogorovTest (const TH1 *h2, Option_t *option="") const 
Statistical test of compatibility in shape between this histogram and h2, using Kolmogorov test.  
virtual void  LabelsDeflate (Option_t *axis="X") 
Reduce the number of bins for the axis passed in the option to the number of bins having a label.  
virtual void  LabelsInflate (Option_t *axis="X") 
Double the number of bins for axis.  
virtual void  LabelsOption (Option_t *option="h", Option_t *axis="X") 
Sort bins with labels or set option(s) to draw axis with labels.  
virtual Long64_t  Merge (TCollection *list) 
Long64_t  Merge (TCollection *list, Option_t *option) 
Add all histograms in the collection to this histogram.  
virtual Bool_t  Multiply (const TH1 *h1) 
Multiply this histogram by h1.  
virtual Bool_t  Multiply (const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option="") 
Replace contents of this histogram by multiplication of h1 by h2.  
virtual Bool_t  Multiply (TF1 *f1, Double_t c1=1) 
Performs the operation:  
void  Paint (Option_t *option="") override 
Control routine to paint any kind of histograms.  
void  Print (Option_t *option="") const override 
Print some global quantities for this histogram.  
virtual void  PutStats (Double_t *stats) 
Replace current statistics with the values in array stats.  
virtual TH1 *  Rebin (Int_t ngroup=2, const char *newname="", const Double_t *xbins=nullptr) 
Rebin this histogram.  
virtual void  RebinAxis (Double_t x, TAxis *axis) 
virtual TH1 *  RebinX (Int_t ngroup=2, const char *newname="") 
virtual void  Rebuild (Option_t *option="") 
Using the current bin info, recompute the arrays for contents and errors.  
void  RecursiveRemove (TObject *obj) override 
Recursively remove object from the list of functions.  
virtual void  Reset (Option_t *option="") 
Reset this histogram: contents, errors, etc.  
virtual void  ResetStats () 
Reset the statistics including the number of entries and replace with values calculated from bin content.  
void  SaveAs (const char *filename="hist", Option_t *option="") const override 
Save the histogram as .csv, .tsv or .txt.  
void  SavePrimitive (std::ostream &out, Option_t *option="") override 
Save primitive as a C++ statement(s) on output stream out.  
virtual void  Scale (Double_t c1=1, Option_t *option="") 
Multiply this histogram by a constant c1.  
virtual void  SetAxisColor (Color_t color=1, Option_t *axis="X") 
Set color to draw the axis line and tick marks.  
virtual void  SetAxisRange (Double_t xmin, Double_t xmax, Option_t *axis="X") 
Set the "axis" range.  
virtual void  SetBarOffset (Float_t offset=0.25) 
Set the bar offset as fraction of the bin width for drawing mode "B".  
virtual void  SetBarWidth (Float_t width=0.5) 
Set the width of bars as fraction of the bin width for drawing mode "B".  
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 than the number of bins and the timedisplay option is set or CanExtendAllAxes(), the number of bins is automatically doubled to accommodate the new bin.  
virtual void  SetBinContent (Int_t bin, Int_t, Double_t content) 
virtual void  SetBinContent (Int_t bin, Int_t, Int_t, Double_t content) 
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 nonempty bin the bin error is set by default to the square root of their content.  
virtual void  SetBinError (Int_t binx, Int_t biny, Double_t error) 
See convention for numbering bins in TH1::GetBin.  
virtual void  SetBinError (Int_t binx, Int_t biny, Int_t binz, Double_t error) 
See convention for numbering bins in TH1::GetBin.  
virtual void  SetBinErrorOption (EBinErrorOpt type) 
virtual void  SetBins (Int_t nx, const Double_t *xBins) 
Redefine x axis parameters with variable bin sizes.  
virtual void  SetBins (Int_t nx, const Double_t *xBins, Int_t ny, const Double_t *yBins) 
Redefine x and y axis parameters with variable bin sizes.  
virtual void  SetBins (Int_t nx, const Double_t *xBins, Int_t ny, const Double_t *yBins, Int_t nz, const Double_t *zBins) 
Redefine x, y and z axis parameters with variable bin sizes.  
virtual void  SetBins (Int_t nx, Double_t xmin, Double_t xmax) 
Redefine x axis parameters.  
virtual void  SetBins (Int_t nx, Double_t xmin, Double_t xmax, Int_t ny, Double_t ymin, Double_t ymax) 
Redefine x and y axis parameters.  
virtual void  SetBins (Int_t nx, Double_t xmin, Double_t xmax, Int_t ny, Double_t ymin, Double_t ymax, Int_t nz, Double_t zmin, Double_t zmax) 
Redefine x, y and z axis parameters.  
virtual void  SetBinsLength (Int_t=1) 
virtual void  SetBuffer (Int_t buffersize, Option_t *option="") 
Set the maximum number of entries to be kept in the buffer.  
virtual UInt_t  SetCanExtend (UInt_t extendBitMask) 
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bit mask specifying which axes are extendable.  
virtual void  SetCellContent (Int_t binx, Int_t biny, Double_t content) 
virtual void  SetCellError (Int_t binx, Int_t biny, Double_t content) 
virtual void  SetContent (const Double_t *content) 
Replace bin contents by the contents of array content.  
virtual void  SetContour (Int_t nlevels, const Double_t *levels=nullptr) 
Set the number and values of contour levels.  
virtual void  SetContourLevel (Int_t level, Double_t value) 
Set value for one contour level.  
virtual void  SetDirectory (TDirectory *dir) 
By default, when a histogram is created, it is added to the list of histogram objects in the current directory in memory.  
virtual void  SetEntries (Double_t n) 
virtual void  SetError (const Double_t *error) 
Replace bin errors by values in array error.  
virtual void  SetHighlight (Bool_t set=kTRUE) 
Set highlight (enable/disable) mode for the histogram by default highlight mode is disable.  
virtual void  SetLabelColor (Color_t color=1, Option_t *axis="X") 
Set axis labels color.  
virtual void  SetLabelFont (Style_t font=62, Option_t *axis="X") 
Set font number used to draw axis labels.  
virtual void  SetLabelOffset (Float_t offset=0.005, Option_t *axis="X") 
Set offset between axis and axis' labels.  
virtual void  SetLabelSize (Float_t size=0.02, Option_t *axis="X") 
Set size of axis' labels.  
virtual void  SetMaximum (Double_t maximum=1111) 
virtual void  SetMinimum (Double_t minimum=1111) 
void  SetName (const char *name) override 
Change the name of this histogram.  
void  SetNameTitle (const char *name, const char *title) override 
Change the name and title of this histogram.  
virtual void  SetNdivisions (Int_t n=510, Option_t *axis="X") 
Set the number of divisions to draw an axis.  
virtual void  SetNormFactor (Double_t factor=1) 
virtual void  SetOption (Option_t *option=" ") 
void  SetStatOverflows (EStatOverflows statOverflows) 
See GetStatOverflows for more information.  
virtual void  SetStats (Bool_t stats=kTRUE) 
Set statistics option on/off.  
virtual void  SetTickLength (Float_t length=0.02, Option_t *axis="X") 
Set the axis' tick marks length.  
void  SetTitle (const char *title) override 
Change/set the title.  
virtual void  SetTitleFont (Style_t font=62, Option_t *axis="X") 
Set the axis' title font.  
virtual void  SetTitleOffset (Float_t offset=1, Option_t *axis="X") 
Specify a parameter offset to control the distance between the axis and the axis' title.  
virtual void  SetTitleSize (Float_t size=0.02, Option_t *axis="X") 
Set the axis' title size.  
virtual void  SetXTitle (const char *title) 
virtual void  SetYTitle (const char *title) 
virtual void  SetZTitle (const char *title) 
virtual TH1 *  ShowBackground (Int_t niter=20, Option_t *option="same") 
This function calculates the background spectrum in this histogram.  
virtual Int_t  ShowPeaks (Double_t sigma=2, Option_t *option="", Double_t threshold=0.05) 
Interface to TSpectrum::Search.  
virtual void  Smooth (Int_t ntimes=1, Option_t *option="") 
Smooth bin contents of this histogram.  
void  Streamer (TBuffer &) override 
Stream a class object.  
void  StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) 
virtual void  Sumw2 (Bool_t flag=kTRUE) 
Create structure to store sum of squares of weights.  
void  UseCurrentStyle () override 
Copy current attributes from/to current style.  
Public Member Functions inherited from TNamed  
TNamed ()  
TNamed (const char *name, const char *title)  
TNamed (const TNamed &named)  
TNamed copy ctor.  
TNamed (const TString &name, const TString &title)  
virtual  ~TNamed () 
TNamed destructor.  
void  Clear (Option_t *option="") override 
Set name and title to empty strings ("").  
TObject *  Clone (const char *newname="") const override 
Make a clone of an object using the Streamer facility.  
Int_t  Compare (const TObject *obj) const override 
Compare two TNamed objects.  
void  Copy (TObject &named) const override 
Copy this to obj.  
virtual void  FillBuffer (char *&buffer) 
Encode TNamed into output buffer.  
const char *  GetName () const override 
Returns name of object.  
const char *  GetTitle () const override 
Returns title of object.  
ULong_t  Hash () const override 
Return hash value for this object.  
TClass *  IsA () const override 
Bool_t  IsSortable () const override 
void  ls (Option_t *option="") const override 
List TNamed name and title.  
TNamed &  operator= (const TNamed &rhs) 
TNamed assignment operator.  
void  Print (Option_t *option="") const override 
Print TNamed name and title.  
virtual Int_t  Sizeof () const 
Return size of the TNamed part of the TObject.  
void  Streamer (TBuffer &) override 
Stream an object of class TObject.  
void  StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) 
Public Member Functions inherited from TObject  
TObject ()  
TObject constructor.  
TObject (const TObject &object)  
TObject copy ctor.  
virtual  ~TObject () 
TObject destructor.  
void  AbstractMethod (const char *method) const 
Use this method to implement an "abstract" method that you don't want to leave purely abstract.  
virtual void  AppendPad (Option_t *option="") 
Append graphics object to current pad.  
ULong_t  CheckedHash () 
Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.  
virtual const char *  ClassName () const 
Returns name of class to which the object belongs.  
virtual void  Delete (Option_t *option="") 
Delete this object.  
virtual void  DrawClass () const 
Draw class inheritance tree of the class to which this object belongs.  
virtual TObject *  DrawClone (Option_t *option="") const 
Draw a clone of this object in the current selected pad with: gROOT>SetSelectedPad(c1) .  
virtual void  Dump () const 
Dump contents of object on stdout.  
virtual void  Error (const char *method, const char *msgfmt,...) const 
Issue error message.  
virtual void  Execute (const char *method, const char *params, Int_t *error=nullptr) 
Execute method on this object with the given parameter string, e.g.  
virtual void  Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr) 
Execute method on this object with parameters stored in the TObjArray.  
virtual void  Fatal (const char *method, const char *msgfmt,...) const 
Issue fatal error message.  
virtual Option_t *  GetDrawOption () const 
Get option used by the graphics system to draw this object.  
virtual const char *  GetIconName () const 
Returns mime type name of object.  
virtual UInt_t  GetUniqueID () const 
Return the unique object id.  
virtual Bool_t  HandleTimer (TTimer *timer) 
Execute action in response of a timer timing out.  
Bool_t  HasInconsistentHash () const 
Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.  
virtual void  Info (const char *method, const char *msgfmt,...) const 
Issue info message.  
virtual Bool_t  InheritsFrom (const char *classname) const 
Returns kTRUE if object inherits from class "classname".  
virtual Bool_t  InheritsFrom (const TClass *cl) const 
Returns kTRUE if object inherits from TClass cl.  
virtual void  Inspect () const 
Dump contents of this object in a graphics canvas.  
void  InvertBit (UInt_t f) 
Bool_t  IsDestructed () const 
IsDestructed.  
virtual Bool_t  IsEqual (const TObject *obj) const 
Default equal comparison (objects are equal if they have the same address in memory).  
virtual Bool_t  IsFolder () const 
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).  
R__ALWAYS_INLINE Bool_t  IsOnHeap () const 
R__ALWAYS_INLINE Bool_t  IsZombie () const 
void  MayNotUse (const char *method) const 
Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).  
virtual Bool_t  Notify () 
This method must be overridden to handle object notification (the base implementation is noop).  
void  Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const 
Use this method to declare a method obsolete.  
void  operator delete (void *ptr) 
Operator delete.  
void  operator delete (void *ptr, void *vp) 
Only called by placement new when throwing an exception.  
void  operator delete[] (void *ptr) 
Operator delete [].  
void  operator delete[] (void *ptr, void *vp) 
Only called by placement new[] when throwing an exception.  
void *  operator new (size_t sz) 
void *  operator new (size_t sz, void *vp) 
void *  operator new[] (size_t sz) 
void *  operator new[] (size_t sz, void *vp) 
TObject &  operator= (const TObject &rhs) 
TObject assignment operator.  
virtual void  Pop () 
Pop on object drawn in a pad to the top of the display list.  
virtual Int_t  Read (const char *name) 
Read contents of object with specified name from the current directory.  
void  ResetBit (UInt_t f) 
void  SetBit (UInt_t f) 
void  SetBit (UInt_t f, Bool_t set) 
Set or unset the user status bits as specified in f.  
virtual void  SetDrawOption (Option_t *option="") 
Set drawing option for object.  
virtual void  SetUniqueID (UInt_t uid) 
Set the unique object id.  
void  StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) 
virtual void  SysError (const char *method, const char *msgfmt,...) const 
Issue system error message.  
R__ALWAYS_INLINE Bool_t  TestBit (UInt_t f) const 
Int_t  TestBits (UInt_t f) const 
virtual void  Warning (const char *method, const char *msgfmt,...) const 
Issue warning message.  
virtual Int_t  Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) 
Write this object to the current directory.  
virtual Int_t  Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const 
Write this object to the current directory.  
Public Member Functions inherited from TAttLine  
TAttLine ()  
AttLine default constructor.  
TAttLine (Color_t lcolor, Style_t lstyle, Width_t lwidth)  
AttLine normal constructor.  
virtual  ~TAttLine () 
AttLine destructor.  
void  Copy (TAttLine &attline) const 
Copy this line attributes to a new TAttLine.  
Int_t  DistancetoLine (Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2) 
Compute distance from point px,py to a line.  
virtual Color_t  GetLineColor () const 
Return the line color.  
virtual Style_t  GetLineStyle () const 
Return the line style.  
virtual Width_t  GetLineWidth () const 
Return the line width.  
virtual void  Modify () 
Change current line attributes if necessary.  
virtual void  ResetAttLine (Option_t *option="") 
Reset this line attributes to default values.  
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  SetLineAttributes () 
Invoke the DialogCanvas Line attributes.  
virtual void  SetLineColor (Color_t lcolor) 
Set the line color.  
virtual void  SetLineColorAlpha (Color_t lcolor, Float_t lalpha) 
Set a transparent line color.  
virtual void  SetLineStyle (Style_t lstyle) 
Set the line style.  
virtual void  SetLineWidth (Width_t lwidth) 
Set the line width.  
void  StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) 
Public Member Functions inherited from TAttFill  
TAttFill ()  
AttFill default constructor.  
TAttFill (Color_t fcolor, Style_t fstyle)  
AttFill normal constructor.  
virtual  ~TAttFill () 
AttFill destructor.  
void  Copy (TAttFill &attfill) const 
Copy this fill attributes to a new TAttFill.  
virtual Color_t  GetFillColor () const 
Return the fill area color.  
virtual Style_t  GetFillStyle () const 
Return the fill area style.  
virtual Bool_t  IsTransparent () const 
virtual void  Modify () 
Change current fill area attributes if necessary.  
virtual void  ResetAttFill (Option_t *option="") 
Reset this fill attributes to default values.  
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 void  SetFillAttributes () 
Invoke the DialogCanvas Fill attributes.  
virtual void  SetFillColor (Color_t fcolor) 
Set the fill area color.  
virtual void  SetFillColorAlpha (Color_t fcolor, Float_t falpha) 
Set a transparent fill color.  
virtual void  SetFillStyle (Style_t fstyle) 
Set the fill area style.  
void  StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) 
Public Member Functions inherited from TAttMarker  
TAttMarker ()  
TAttMarker default constructor.  
TAttMarker (Color_t color, Style_t style, Size_t msize)  
TAttMarker normal constructor.  
virtual  ~TAttMarker () 
TAttMarker destructor.  
void  Copy (TAttMarker &attmarker) const 
Copy this marker attributes to a new TAttMarker.  
virtual Color_t  GetMarkerColor () const 
Return the marker color.  
virtual Size_t  GetMarkerSize () const 
Return the marker size.  
virtual Style_t  GetMarkerStyle () const 
Return the marker style.  
virtual void  Modify () 
Change current marker attributes if necessary.  
virtual void  ResetAttMarker (Option_t *toption="") 
Reset this marker attributes to the default values.  
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 void  SetMarkerAttributes () 
Invoke the DialogCanvas Marker attributes.  
virtual void  SetMarkerColor (Color_t mcolor=1) 
Set the marker color.  
virtual void  SetMarkerColorAlpha (Color_t mcolor, Float_t malpha) 
Set a transparent marker color.  
virtual void  SetMarkerSize (Size_t msize=1) 
Set the marker size.  
virtual void  SetMarkerStyle (Style_t mstyle=1) 
Set the marker style.  
void  StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) 
Static Public Member Functions  
static void  AddDirectory (Bool_t add=kTRUE) 
Sets the flag controlling the automatic add of histograms in memory.  
static Bool_t  AddDirectoryStatus () 
Static function: cannot be inlined on Windows/NT.  
static TClass *  Class () 
static const char *  Class_Name () 
static constexpr Version_t  Class_Version () 
static const char *  DeclFileName () 
static Int_t  FitOptionsMake (Option_t *option, Foption_t &Foption) 
Decode string choptin and fill fitOption structure.  
static Int_t  GetDefaultBufferSize () 
Static function return the default buffer size for automatic histograms the parameter fgBufferSize may be changed via SetDefaultBufferSize.  
static Bool_t  GetDefaultSumw2 () 
Return kTRUE if TH1::Sumw2 must be called when creating new histograms.  
static void  SetDefaultBufferSize (Int_t buffersize=1000) 
Static function to set the default buffer size for automatic histograms.  
static void  SetDefaultSumw2 (Bool_t sumw2=kTRUE) 
When this static function is called with sumw2=kTRUE , all new histograms will automatically activate the storage of the sum of squares of errors, ie TH1::Sumw2 is automatically called.  
static void  SmoothArray (Int_t NN, Double_t *XX, Int_t ntimes=1) 
Smooth array xx, translation of Hbook routine hsmoof.F .  
static void  StatOverflows (Bool_t flag=kTRUE) 
if flag=kTRUE, underflows and overflows are used by the Fill functions in the computation of statistics (mean value, StdDev).  
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 output data, specified in the third parameter If the 2nd parameter h_output is empty, a new histogram (TH1D or TH2D) is created and the user is responsible for deleting it.  
Static Public Member Functions inherited from TNamed  
static TClass *  Class () 
static const char *  Class_Name () 
static constexpr Version_t  Class_Version () 
static const char *  DeclFileName () 
Static Public Member Functions inherited from TObject  
static TClass *  Class () 
static const char *  Class_Name () 
static constexpr Version_t  Class_Version () 
static const char *  DeclFileName () 
static Longptr_t  GetDtorOnly () 
Return destructor only flag.  
static Bool_t  GetObjectStat () 
Get status of object stat flag.  
static void  SetDtorOnly (void *obj) 
Set destructor only flag.  
static void  SetObjectStat (Bool_t stat) 
Turn on/off tracking of objects in the TObjectTable.  
Static Public Member Functions inherited from TAttLine  
static TClass *  Class () 
static const char *  Class_Name () 
static constexpr Version_t  Class_Version () 
static const char *  DeclFileName () 
Static Public Member Functions inherited from TAttFill  
static TClass *  Class () 
static const char *  Class_Name () 
static constexpr Version_t  Class_Version () 
static const char *  DeclFileName () 
Static Public Member Functions inherited from TAttMarker  
static TClass *  Class () 
static const char *  Class_Name () 
static constexpr Version_t  Class_Version () 
static const char *  DeclFileName () 
static Width_t  GetMarkerLineWidth (Style_t style) 
Internal helper function that returns the line width of the given marker style (0 = filled marker)  
static Style_t  GetMarkerStyleBase (Style_t style) 
Internal helper function that returns the corresponding marker style with line width 1 for the given style.  
Protected Member Functions  
TH1 ()  
Histogram default constructor.  
TH1 (const char *name, const char *title, Int_t nbinsx, const Double_t *xbins)  
Constructor for variable bin size histograms using an input array of type double.  
TH1 (const char *name, const char *title, Int_t nbinsx, const Float_t *xbins)  
Constructor for variable bin size histograms using an input array of type float.  
TH1 (const char *name, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup)  
Constructor for fix bin size histograms.  
virtual Int_t  AutoP2FindLimits (Double_t min, Double_t max) 
Bufferbased estimate of the histogram range using the power of 2 algorithm.  
Int_t  AxisChoice (Option_t *axis) const 
Choose an axis according to "axis".  
virtual Int_t  BufferFill (Double_t x, Double_t w) 
accumulate arguments in buffer.  
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 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 number values working for all histograms (1D, 2D and 3D)  
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 the previous ones (see TH1::Merge).  
UInt_t  GetAxisLabelStatus () const 
Internal function used in TH1::Fill to see which axis is full alphanumeric, i.e.  
virtual Double_t  GetBinErrorSqUnchecked (Int_t bin) const 
Bool_t  GetStatOverflowsBehaviour () const 
Bool_t  IsEmpty () const 
Check if a histogram is empty (this is a protected method used mainly by TH1Merger )  
int  LoggedInconsistency (const char *name, const TH1 *h1, const TH1 *h2, bool useMerge=false) const 
virtual Double_t  RetrieveBinContent (Int_t bin) const 
Raw retrieval of bin content on internal data structure see convention for numbering bins in TH1::GetBin.  
virtual void  SavePrimitiveHelp (std::ostream &out, const char *hname, Option_t *option="") 
Helper function for the SavePrimitive functions from TH1 or classes derived from TH1, eg TProfile, TProfile2D.  
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.  
Protected Member Functions inherited from TObject  
virtual void  DoError (int level, const char *location, const char *fmt, va_list va) const 
Interface to ErrorHandler (protected).  
void  MakeZombie () 
Static Protected Member Functions  
static Int_t  AutoP2GetBins (Int_t n) 
Auxiliary function to get the next power of 2 integer value larger then n.  
static Double_t  AutoP2GetPower2 (Double_t x, Bool_t next=kTRUE) 
Auxiliary function to get the power of 2 next (larger) or previous (smaller) a given x.  
static bool  CheckAxisLimits (const TAxis *a1, const TAxis *a2) 
Check that the axis limits of the histograms are the same.  
static bool  CheckBinLabels (const TAxis *a1, const TAxis *a2) 
Check that axis have same labels.  
static bool  CheckBinLimits (const TAxis *a1, const TAxis *a2) 
Check bin limits.  
static int  CheckConsistency (const TH1 *h1, const TH1 *h2) 
Check histogram compatibility.  
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.  
static bool  CheckEqualAxes (const TAxis *a1, const TAxis *a2) 
Check that the axis are the same.  
static Bool_t  RecomputeAxisLimits (TAxis &destAxis, const TAxis &anAxis) 
Finds new limits for the axis for the Merge function.  
static Bool_t  SameLimitsAndNBins (const TAxis &axis1, const TAxis &axis2) 
Same limits and bins.  
Protected Attributes  
Short_t  fBarOffset 
(1000*offset) for bar charts or legos  
Short_t  fBarWidth 
(1000*width) for bar charts or legos  
EBinErrorOpt  fBinStatErrOpt 
Option for bin statistical errors.  
Double_t *  fBuffer 
[fBufferSize] entry buffer  
Int_t  fBufferSize 
fBuffer size  
TArrayD  fContour 
Array to display contour levels.  
Int_t  fDimension 
! Histogram dimension (1, 2 or 3 dim)  
TDirectory *  fDirectory 
! Pointer to directory holding this histogram  
Double_t  fEntries 
Number of entries.  
TList *  fFunctions 
>Pointer to list of functions (fits and user)  
Double_t *  fIntegral 
! Integral of bins used by GetRandom  
Double_t  fMaximum 
Maximum value for plotting.  
Double_t  fMinimum 
Minimum value for plotting.  
Int_t  fNcells 
Number of bins(1D), cells (2D) +U/Overflows.  
Double_t  fNormFactor 
Normalization factor.  
TString  fOption 
Histogram options.  
TVirtualHistPainter *  fPainter 
! Pointer to histogram painter  
EStatOverflows  fStatOverflows 
Per object flag to use under/overflows in statistics.  
TArrayD  fSumw2 
Array of sum of squares of weights.  
Double_t  fTsumw 
Total Sum of weights.  
Double_t  fTsumw2 
Total Sum of squares of weights.  
Double_t  fTsumwx 
Total Sum of weight*X.  
Double_t  fTsumwx2 
Total Sum of weight*X*X.  
TAxis  fXaxis 
X axis descriptor.  
TAxis  fYaxis 
Y axis descriptor.  
TAxis  fZaxis 
Z axis descriptor.  
Protected Attributes inherited from TNamed  
TString  fName 
TString  fTitle 
Protected Attributes inherited from TAttLine  
Color_t  fLineColor 
Line color.  
Style_t  fLineStyle 
Line style.  
Width_t  fLineWidth 
Line width.  
Protected Attributes inherited from TAttFill  
Color_t  fFillColor 
Fill area color.  
Style_t  fFillStyle 
Fill area style.  
Protected Attributes inherited from TAttMarker  
Color_t  fMarkerColor 
Marker color.  
Size_t  fMarkerSize 
Marker size.  
Style_t  fMarkerStyle 
Marker style.  
Static Protected Attributes  
static Bool_t  fgAddDirectory = kTRUE 
! Flag to add histograms to the directory  
static Int_t  fgBufferSize = 1000 
! Default buffer size for automatic histograms  
static Bool_t  fgDefaultSumw2 = kFALSE 
! Flag to call TH1::Sumw2 automatically at histogram creation time  
static Bool_t  fgStatOverflows = kFALSE 
! Flag to use under/overflows in statistics  
Private Member Functions  
TH1 (const TH1 &)=delete  
void  Build () 
Creates histogram basic data structure.  
TH1 &  operator= (const TH1 &)=delete 
Friends  
class  TH1Merger 
Additional Inherited Members  
Protected Types inherited from TObject  
enum  { kOnlyPrepStep = (1ULL << ( 3 )) } 
#include <TH1.h>
anonymous enum 
anonymous enum 
Size of statistics data (size of array used in GetStats()/ PutStats )
Enumerator  

kNstat  Size of statistics data (up to TProfile3D) 
enum TH1::EBinErrorOpt 
enum TH1::EStatOverflows 
enum TH1::EStatusBits 
TH1 status bits.

privatedelete 

protected 
Constructor for fix bin size histograms.
Creates the main histogram structure.
[in]  name  name of histogram (avoid blanks) 
[in]  title  histogram title. If title is of the form stringt;stringx;stringy;stringz , the histogram title is set to stringt , the x axis title to stringx , the y axis title to stringy , etc. 
[in]  nbins  number of bins 
[in]  xlow  low edge of first bin 
[in]  xup  upper edge of last bin (not included in last bin) 
Constructor for variable bin size histograms using an input array of type float.
Creates the main histogram structure.
[in]  name  name of histogram (avoid blanks) 
[in]  title  histogram title. If title is of the form stringt;stringx;stringy;stringz the histogram title is set to stringt , the x axis title to stringx , the y axis title to stringy , etc. 
[in]  nbins  number of bins 
[in]  xbins  array of lowedges for each bin. This is an array of type float and size nbins+1 
Constructor for variable bin size histograms using an input array of type double.
[in]  name  name of histogram (avoid blanks) 
[in]  title  histogram title. If title is of the form stringt;stringx;stringy;stringz the histogram title is set to stringt , the x axis title to stringx , the y axis title to stringy , etc. 
[in]  nbins  number of bins 
[in]  xbins  array of lowedges for each bin. This is an array of type double and size nbins+1 
Replace contents of this histogram by the addition of h1 and h2.
this = c1*h1 + c2*h2
if errors are defined (see TH1::Sumw2), errors are also recalculated
Note that if h1 or h2 have Sumw2 set, Sumw2 is automatically called for this if not already set.
Note also that adding histogram with labels is not supported, histogram will be added merging them by bin number independently of the labels. For adding histogram ith labels one should use TH1::Merge
SPECIAL CASE (Average/Efficiency histograms) For histograms representing averages or efficiencies, one should compute the average of the two histograms and not the sum. One can mark a histogram to be an average histogram by setting its bit kIsAverage with myhist.SetBit(TH1::kIsAverage); Note that the two histograms must have their kIsAverage bit set
IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Add
IMPORTANT NOTE2: You should be careful about the statistics of the returned histogram, whose statistics may be binned or unbinned, depending on whether c1 is negative, whether TAxis::kAxisRange is true, and whether TH1::ResetStats has been called on either this or h1. See TH1::GetStats.
ANOTHER SPECIAL CASE : h1 = h2 and c2 < 0 do a scaling this = c1 * h1 / (bin Volume)
The function returns kFALSE if the Add operation failed
Reimplemented in TH2Poly, TProfile, TProfile2D, and TProfile3D.
Performs the operation: this = this + c1*h1
If errors are defined (see TH1::Sumw2), errors are also recalculated.
Note that if h1 has Sumw2 set, Sumw2 is automatically called for this if not already set.
Note also that adding histogram with labels is not supported, histogram will be added merging them by bin number independently of the labels. For adding histogram with labels one should use TH1::Merge
SPECIAL CASE (Average/Efficiency histograms) For histograms representing averages or efficiencies, one should compute the average of the two histograms and not the sum. One can mark a histogram to be an average histogram by setting its bit kIsAverage with myhist.SetBit(TH1::kIsAverage); Note that the two histograms must have their kIsAverage bit set
IMPORTANT NOTE1: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Add
IMPORTANT NOTE2: if h1 has a normalisation factor, the normalisation factor is used , ie this = this + c1*factor*h1 Use the other TH1::Add function if you do not want this feature
IMPORTANT NOTE3: You should be careful about the statistics of the returned histogram, whose statistics may be binned or unbinned, depending on whether c1 is negative, whether TAxis::kAxisRange is true, and whether TH1::ResetStats has been called on either this or h1. See TH1::GetStats.
The function return kFALSE if the Add operation failed
Reimplemented in TH2Poly, TProfile, TProfile2D, and TProfile3D.
Performs the operation: this = this + c1*f1
if errors are defined (see TH1::Sumw2), errors are also recalculated.
By default, the function is computed at the centre of the bin. if option "I" is specified (1d histogram only), the integral of the function in each bin is used instead of the value of the function at the centre of the bin.
Only bins inside the function range are recomputed.
IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Add
The function return kFALSE if the Add operation failed
Reimplemented in TH2Poly, TProfile, TProfile2D, and TProfile3D.

virtual 
Sets the flag controlling the automatic add of histograms in memory.
By default (fAddDirectory = kTRUE), histograms are automatically added to the list of objects in memory. Note that one histogram can be removed from its support directory by calling h>SetDirectory(nullptr) or h>SetDirectory(dir) to add it to the list of objects in the directory dir.
NOTE that this is a static function. To call it, use; TH1::AddDirectory

static 
Statistical test of compatibility in shape between this histogram and h2, using the AndersonDarling 2 sample test.
The AD 2 sample test formula are derived from the paper F.W Scholz, M.A. Stephens "kSample AndersonDarling Test".
The test is implemented in root in the ROOT::Math::GoFTest class It is the same formula ( (6) in the paper), and also shown in this preprint
Binned data are considered as unbinned data with identical observation happening in the bin center.
[in]  h2  Pointer to 1D histogram 
[in]  option  is a character string to specify options

Bufferbased estimate of the histogram range using the power of 2 algorithm.
Used by the autobin power of 2 algorithm.
Works on arguments (min and max from fBuffer) and internal inputs: fXmin, fXmax, NBinsX (from fXaxis), ... Result save internally in fXaxis.
Return 1 if internal inputs are inconsistent, 0 otherwise.

overridevirtual 
Fill histogram with all entries in the buffer.
Reimplemented in TH2, TH3, TProfile, TProfile2D, and TProfile3D.
accumulate arguments in buffer.
When buffer is full, empty the buffer
fBuffer[0]
= number of entries in bufferfBuffer[1]
= w of first entryfBuffer[2]
= x of first entry Reimplemented in TH2, TH3, TProfile, TProfile2D, and TProfile3D.

private 

virtual 

virtual 
\( \chi^{2} \) test for comparing weighted and unweighted histograms.
Compares the histograms' adjusted (normalized) residuals. Function: Returns pvalue. Other return values are specified by the 3rd parameter
[in]  h2  the second histogram 
[in]  option 

[in]  res  not empty  computes normalized residuals and returns them in this array 
The current implementation is based on the papers \( \chi^{2} \) test for comparison of weighted and unweighted histograms" in Proceedings of PHYSTAT05 and "Comparison weighted and unweighted histograms", arXiv:physics/0605123 by N.Gagunashvili. This function has been implemented by Daniel Haertl in August 2006.
A frequently used technique in data analysis is the comparison of histograms. First suggested by Pearson [1] the \( \chi^{2} \) test of homogeneity is used widely for comparing usual (unweighted) histograms. This paper describes the implementation modified \( \chi^{2} \) tests for comparison of weighted and unweighted histograms and two weighted histograms [2] as well as usual Pearson's \( \chi^{2} \) test for comparison two usual (unweighted) histograms.
Comparison of two histograms expect hypotheses that two histograms represent identical distributions. To make a decision pvalue should be calculated. The hypotheses of identity is rejected if the pvalue is lower then some significance level. Traditionally significance levels 0.1, 0.05 and 0.01 are used. The comparison procedure should include an analysis of the residuals which is often helpful in identifying the bins of histograms responsible for a significant overall \( \chi^{2} \) value. Residuals are the difference between bin contents and expected bin contents. Most convenient for analysis are the normalized residuals. If hypotheses of identity are valid then normalized residuals are approximately independent and identically distributed random variables having N(0,1) distribution. Analysis of residuals expect test of above mentioned properties of residuals. Notice that indirectly the analysis of residuals increase the power of \( \chi^{2} \) test.
\( \chi^{2} \) test for comparison two (unweighted) histograms: Let us consider two histograms with the same binning and the number of bins equal to r. Let us denote the number of events in the ith bin in the first histogram as ni and as mi in the second one. The total number of events in the first histogram is equal to:
\[ N = \sum_{i=1}^{r} n_{i} \]
and
\[ M = \sum_{i=1}^{r} m_{i} \]
in the second histogram. The hypothesis of identity (homogeneity) [3] is that the two histograms represent random values with identical distributions. It is equivalent that there exist r constants p1,...,pr, such that
\[ \sum_{i=1}^{r} p_{i}=1 \]
and the probability of belonging to the ith bin for some measured value in both experiments is equal to pi. The number of events in the ith bin is a random variable with a distribution approximated by a Poisson probability distribution
\[ \frac{e^{Np_{i}}(Np_{i})^{n_{i}}}{n_{i}!} \]
for the first histogram and with distribution
\[ \frac{e^{Mp_{i}}(Mp_{i})^{m_{i}}}{m_{i}!} \]
for the second histogram. If the hypothesis of homogeneity is valid, then the maximum likelihood estimator of pi, i=1,...,r, is
\[ \hat{p}_{i}= \frac{n_{i}+m_{i}}{N+M} \]
and then
\[ X^{2} = \sum_{i=1}^{r}\frac{(n_{i}N\hat{p}_{i})^{2}}{N\hat{p}_{i}} + \sum_{i=1}^{r}\frac{(m_{i}M\hat{p}_{i})^{2}}{M\hat{p}_{i}} =\frac{1}{MN} \sum_{i=1}^{r}\frac{(Mn_{i}Nm_{i})^{2}}{n_{i}+m_{i}} \]
has approximately a \( \chi^{2}_{(r1)} \) distribution [3]. The comparison procedure can include an analysis of the residuals which is often helpful in identifying the bins of histograms responsible for a significant overall \( \chi^{2} \) value. Most convenient for analysis are the adjusted (normalized) residuals [4]
\[ r_{i} = \frac{n_{i}N\hat{p}_{i}}{\sqrt{N\hat{p}_{i}}\sqrt{(1N/(N+M))(1(n_{i}+m_{i})/(N+M))}} \]
If hypotheses of homogeneity are valid then residuals ri are approximately independent and identically distributed random variables having N(0,1) distribution. The application of the \( \chi^{2} \) test has restrictions related to the value of the expected frequencies Npi, Mpi, i=1,...,r. A conservative rule formulated in [5] is that all the expectations must be 1 or greater for both histograms. In practical cases when expected frequencies are not known the estimated expected frequencies \( M\hat{p}_{i}, N\hat{p}_{i}, i=1,...,r \) can be used.
A simple modification of the ideas described above can be used for the comparison of the usual (unweighted) and weighted histograms. Let us denote the number of events in the ith bin in the unweighted histogram as ni and the common weight of events in the ith bin of the weighted histogram as wi. The total number of events in the unweighted histogram is equal to
\[ N = \sum_{i=1}^{r} n_{i} \]
and the total weight of events in the weighted histogram is equal to
\[ W = \sum_{i=1}^{r} w_{i} \]
Let us formulate the hypothesis of identity of an unweighted histogram to a weighted histogram so that there exist r constants p1,...,pr, such that
\[ \sum_{i=1}^{r} p_{i} = 1 \]
for the unweighted histogram. The weight wi is a random variable with a distribution approximated by the normal probability distribution \( N(Wp_{i},\sigma_{i}^{2}) \) where \( \sigma_{i}^{2} \) is the variance of the weight wi. If we replace the variance \( \sigma_{i}^{2} \) with estimate \( s_{i}^{2} \) (sum of squares of weights of events in the ith bin) and the hypothesis of identity is valid, then the maximum likelihood estimator of pi,i=1,...,r, is
\[ \hat{p}_{i} = \frac{Ww_{i}Ns_{i}^{2}+\sqrt{(Ww_{i}Ns_{i}^{2})^{2}+4W^{2}s_{i}^{2}n_{i}}}{2W^{2}} \]
We may then use the test statistic
\[ X^{2} = \sum_{i=1}^{r} \frac{(n_{i}N\hat{p}_{i})^{2}}{N\hat{p}_{i}} + \sum_{i=1}^{r} \frac{(w_{i}W\hat{p}_{i})^{2}}{s_{i}^{2}} \]
and it has approximately a \( \sigma^{2}_{(r1)} \) distribution [2]. This test, as well as the original one [3], has a restriction on the expected frequencies. The expected frequencies recommended for the weighted histogram is more than 25. The value of the minimal expected frequency can be decreased down to 10 for the case when the weights of the events are close to constant. In the case of a weighted histogram if the number of events is unknown, then we can apply this recommendation for the equivalent number of events as
\[ n_{i}^{equiv} = \frac{ w_{i}^{2} }{ s_{i}^{2} } \]
The minimal expected frequency for an unweighted histogram must be 1. Notice that any usual (unweighted) histogram can be considered as a weighted histogram with events that have constant weights equal to 1. The variance \( z_{i}^{2} \) of the difference between the weight wi and the estimated expectation value of the weight is approximately equal to:
\[ z_{i}^{2} = Var(w_{i}W\hat{p}_{i}) = N\hat{p}_{i}(1N\hat{p}_{i})\left(\frac{Ws_{i}^{2}}{\sqrt{(Ns_{i}^{2}w_{i}W)^{2}+4W^{2}s_{i}^{2}n_{i}}}\right)^{2}+\frac{s_{i}^{2}}{4}\left(1+\frac{Ns_{i}^{2}w_{i}W}{\sqrt{(Ns_{i}^{2}w_{i}W)^{2}+4W^{2}s_{i}^{2}n_{i}}}\right)^{2} \]
The residuals
\[ r_{i} = \frac{w_{i}W\hat{p}_{i}}{z_{i}} \]
have approximately a normal distribution with mean equal to 0 and standard deviation equal to 1.
Let us denote the common weight of events of the ith bin in the first histogram as w1i and as w2i in the second one. The total weight of events in the first histogram is equal to
\[ W_{1} = \sum_{i=1}^{r} w_{1i} \]
and
\[ W_{2} = \sum_{i=1}^{r} w_{2i} \]
in the second histogram. Let us formulate the hypothesis of identity of weighted histograms so that there exist r constants p1,...,pr, such that
\[ \sum_{i=1}^{r} p_{i} = 1 \]
and also expectation value of weight w1i equal to W1pi and expectation value of weight w2i equal to W2pi. Weights in both the histograms are random variables with distributions which can be approximated by a normal probability distribution \( N(W_{1}p_{i},\sigma_{1i}^{2}) \) for the first histogram and by a distribution \( N(W_{2}p_{i},\sigma_{2i}^{2}) \) for the second. Here \( \sigma_{1i}^{2} \) and \( \sigma_{2i}^{2} \) are the variances of w1i and w2i with estimators \( s_{1i}^{2} \) and \( s_{2i}^{2} \) respectively. If the hypothesis of identity is valid, then the maximum likelihood and Least Square Method estimator of pi,i=1,...,r, is
\[ \hat{p}_{i} = \frac{w_{1i}W_{1}/s_{1i}^{2}+w_{2i}W_{2} /s_{2i}^{2}}{W_{1}^{2}/s_{1i}^{2}+W_{2}^{2}/s_{2i}^{2}} \]
We may then use the test statistic
\[ X^{2} = \sum_{i=1}^{r} \frac{(w_{1i}W_{1}\hat{p}_{i})^{2}}{s_{1i}^{2}} + \sum_{i=1}^{r} \frac{(w_{2i}W_{2}\hat{p}_{i})^{2}}{s_{2i}^{2}} = \sum_{i=1}^{r} \frac{(W_{1}w_{2i}W_{2}w_{1i})^{2}}{W_{1}^{2}s_{2i}^{2}+W_{2}^{2}s_{1i}^{2}} \]
and it has approximately a \( \chi^{2}_{(r1)} \) distribution [2]. The normalized or studentised residuals [6]
\[ r_{i} = \frac{w_{1i}W_{1}\hat{p}_{i}}{s_{1i}\sqrt{1  \frac{1}{(1+W_{2}^{2}s_{1i}^{2}/W_{1}^{2}s_{2i}^{2})}}} \]
have approximately a normal distribution with mean equal to 0 and standard deviation 1. A recommended minimal expected frequency is equal to 10 for the proposed test.
The method described herein is now illustrated with an example. We take a distribution
\[ \phi(x) = \frac{2}{(x10)^{2}+1} + \frac{1}{(x14)^{2}+1} (1) \]
defined on the interval [4,16]. Events distributed according to the formula (1) are simulated to create the unweighted histogram. Uniformly distributed events are simulated for the weighted histogram with weights calculated by formula (1). Each histogram has the same number of bins: 20. Fig.1 shows the result of comparison of the unweighted histogram with 200 events (minimal expected frequency equal to one) and the weighted histogram with 500 events (minimal expected frequency equal to 25)
///
Fig 1. An example of comparison of the unweighted histogram with 200 events and the weighted histogram with 500 events:
The value of the test statistic \( \chi^{2} \) is equal to 21.09 with pvalue equal to 0.33, therefore the hypothesis of identity of the two histograms can be accepted for 0.05 significant level. The behavior of the normalized residuals plot (see Fig. 1c) and the normal QQ plot (see Fig. 1d) of residuals are regular and we cannot identify the outliers or bins with a big influence on \( \chi^{2} \).
The second example presents the same two histograms but 17 events was added to content of bin number 15 in unweighted histogram. Fig.2 shows the result of comparison of the unweighted histogram with 217 events (minimal expected frequency equal to one) and the weighted histogram with 500 events (minimal expected frequency equal to 25)
///
Fig 2. An example of comparison of the unweighted histogram with 217 events and the weighted histogram with 500 events:
The value of the test statistic \( \chi^{2} \) is equal to 32.33 with pvalue equal to 0.029, therefore the hypothesis of identity of the two histograms is rejected for 0.05 significant level. The behavior of the normalized residuals plot (see Fig. 2c) and the normal QQ plot (see Fig. 2d) of residuals are not regular and we can identify the outlier or bin with a big influence on \( \chi^{2} \).

virtual 
The computation routine of the Chisquare test.
For the method description, see Chi2Test() function.
[in]  h2  the second histogram 
[in]  option 

[out]  igood  test output

[out]  chi2  chisquare of the test 
[out]  ndf  number of degrees of freedom (important, when both histograms have the same empty bins) 
[out]  res  normalized residuals for further analysis 
Compute and return the chisquare of this histogram with respect to a function The chisquare is computed by weighting each histogram point by the bin error By default the full range of the histogram is used.
Use option "R" for restricting the chisquare calculation to the given range of the function Use option "L" for using the chisquare based on the poisson likelihood (BakerCousins Chisquare) Use option "P" for using the Pearson chisquare based on the expected bin errors

static 

inlinestaticconstexpr 

virtual 

overridevirtual 
Compute integral (normalized cumulative sum of bins) w/o under/overflows The result is stored in fIntegral and used by the GetRandom functions.
This function is automatically called by GetRandom when the fIntegral array does not exist or when the number of entries in the histogram has changed since the previous call to GetRandom. The resulting integral is normalized to 1. If the routine is called with the onlyPositive flag set an error will be produced in case of negative bin content and a NaN value returned
Reimplemented in TH2Poly.

overridevirtual 
Copy this histogram structure to newth1.
Note that this function does not copy the list of associated functions. Use TObject::Clone to make a full copy of a histogram.
Note also that the histogram it will be created in gDirectory (if AddDirectoryStatus()=true) or will not be added to any directory if AddDirectoryStatus()=false independently of the current directory stored in the original histogram
Reimplemented from TObject.
Reimplemented in TH1C, TH1S, TH1I, TH1L, TH1F, TH1D, TH2, TH2C, TH2S, TH2I, TH2L, TH2F, TH2D, TH3, TH3C, TH3S, TH3I, TH3L, TH3F, TH3D, TProfile, TProfile2D, TProfile3D, TH2Poly, and TH1K.

inlinestatic 

virtual 
Compute distance from point px,py to a line.
Compute the closest distance of approach from point px,py to elements of a histogram. The distance is computed in pixels units.
Currently, this simple model computes the distance from the mouse to the histogram contour only.
Reimplemented from TObject.
Divide this histogram by h1.
this = this/h1
if errors are defined (see TH1::Sumw2), errors are also recalculated. Note that if h1 has Sumw2 set, Sumw2 is automatically called for this if not already set. The resulting errors are calculated assuming uncorrelated histograms. See the other TH1::Divide that gives the possibility to optionally compute binomial errors.
IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Scale
The function return kFALSE if the divide operation failed
Reimplemented in TProfile, TProfile2D, and TProfile3D.

virtual 
Replace contents of this histogram by the division of h1 by h2.
this = c1*h1/(c2*h2)
If errors are defined (see TH1::Sumw2), errors are also recalculated Note that if h1 or h2 have Sumw2 set, Sumw2 is automatically called for this if not already set. The resulting errors are calculated assuming uncorrelated histograms. However, if option ="B" is specified, Binomial errors are computed. In this case c1 and c2 do not make real sense and they are ignored.
IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Divide
Please note also that in the binomial case errors are calculated using standard binomial statistics, which means when b1 = b2, the error is zero. If you prefer to have efficiency errors not going to zero when the efficiency is 1, you must use the function TGraphAsymmErrors::BayesDivide, which will return an asymmetric and nonzero lower error for the case b1=b2.
The function return kFALSE if the divide operation failed
Reimplemented in TProfile, TProfile2D, and TProfile3D.
Performs the operation: this = this/(c1*f1)
if errors are defined (see TH1::Sumw2), errors are also recalculated.
Only bins inside the function range are recomputed. IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Divide
The function return kFALSE if the divide operation failed
Reimplemented in TH2Poly, TProfile, TProfile2D, and TProfile3D.

protectedvirtual 
Internal method to fill histogram content from a vector called directly by TH1::BufferEmpty.

overridevirtual 
Draw this histogram with options.
Histograms are drawn via the THistPainter class. Each histogram has a pointer to its own painter (to be usable in a multithreaded program). The same histogram can be drawn with different options in different pads. When a histogram drawn in a pad is deleted, the histogram is automatically removed from the pad or pads where it was drawn. If a histogram is drawn in a pad, then filled again, the new status of the histogram will be automatically shown in the pad next time the pad is updated. One does not need to redraw the histogram. To draw the current version of a histogram in a pad, one can use h>DrawCopy();
This makes a clone of the histogram. Once the clone is drawn, the original histogram may be modified or deleted without affecting the aspect of the clone. By default, TH1::Draw clears the current pad.
One can use TH1::SetMaximum and TH1::SetMinimum to force a particular value for the maximum or the minimum scale on the plot.
TH1::UseCurrentStyle can be used to change all histogram graphics attributes to correspond to the current selected style. This function must be called for each histogram. In case one reads and draws many histograms from a file, one can force the histograms to inherit automatically the current graphics style by calling before gROOT>ForceStyle();
See the THistPainter class for a description of all the drawing options.
Reimplemented from TObject.
Copy this histogram and Draw in the current pad.
Once the histogram is drawn into the pad, any further modification using graphics input will be made on the copy of the histogram, and not to the original object. By default a postfix "_copy" is added to the histogram name. Pass an empty postfix in case you want to draw a histogram with the same name
See Draw for the list of options
Draw a normalized copy of this histogram.
A clone of this histogram is normalized to norm and drawn with option. A pointer to the normalized histogram is returned. The contents of the histogram copy are scaled such that the new sum of weights (excluding under and overflow) is equal to norm. Note that the returned normalized histogram is not added to the list of histograms in the current directory in memory. It is the user's responsibility to delete this histogram. The kCanDelete bit is set for the returned object. If a pad containing this copy is cleared, the histogram will be automatically deleted.
See Draw for the list of options

virtual 
Evaluate function f1 at the center of bins of this histogram.
Execute action corresponding to one event.
This member function is called when a histogram is clicked with the locator
If Left button clicked on the bin top value, then the content of this bin is modified according to the new position of the mouse when it is released.
Reimplemented from TObject.
Histogram is resized along axis such that x is in the axis range.
The new axis limits are recomputed by doubling iteratively the current axis range until the specified value x is within the limits. The algorithm makes a copy of the histogram, then loops on all bins of the old histogram to fill the extended histogram. Takes into account errors (Sumw2) if any. The algorithm works for 1d, 2D and 3D histograms. The axis must be extendable before invoking this function. Ex:
Reimplemented in TProfile, TProfile2D, and TProfile3D.
This function allows to do discrete Fourier transforms of TH1 and TH2.
Available transform types and flags are described below.
To extract more information about the transform, use the function TVirtualFFT::GetCurrentTransform() to get a pointer to the current transform object.
[out]  h_output  histogram for the output. If a null pointer is passed, a new histogram is created and returned, otherwise, the provided histogram is used and should be big enough 
[in]  option  option parameters consists of 3 parts:

Examples of valid options: "Mag R2C M" "Re R2R_11" "Im R2C ES" "PH R2HC EX"
Reimplemented in TH2Poly.
Increment bin with namex with a weight w.
if x is less than the lowedge of the first bin, the Underflow bin is incremented if x is equal to or greater than the upper edge of last bin, the Overflow bin is incremented
If the weight is not equal to 1, the storage of the sum of squares of weights is automatically triggered and the sum of the squares of weights is incremented by \( w^2 \) in the bin corresponding to x.
The function returns the corresponding bin number which has its content incremented by w.
Reimplemented in TH2, TH3, TProfile2D, TProfile3D, TH1K, TH2Poly, TProfile2Poly, and TProfile.
Increment bin with abscissa X by 1.
if x is less than the lowedge of the first bin, the Underflow bin is incremented if x is equal to or greater than the upper edge of last bin, the Overflow bin is incremented
If the storage of the sum of squares of weights has been triggered, via the function Sumw2, then the sum of the squares of weights is incremented by 1 in the bin corresponding to x.
The function returns the corresponding bin number which has its content incremented by 1
Reimplemented in TH1K, TH2, TH2Poly, TH3, TProfile, TProfile2D, TProfile2Poly, and TProfile3D.
Increment bin with abscissa X with a weight w.
if x is less than the lowedge of the first bin, the Underflow bin is incremented if x is equal to or greater than the upper edge of last bin, the Overflow bin is incremented
If the weight is not equal to 1, the storage of the sum of squares of weights is automatically triggered and the sum of the squares of weights is incremented by \( w^2 \) in the bin corresponding to x.
The function returns the corresponding bin number which has its content incremented by w
Reimplemented in TH1K, TH2, TH2Poly, TProfile, TProfile2D, TProfile2Poly, TH3, TProfile2D, and TProfile3D.
Fill this histogram with an array x and weights w.
[in]  ntimes  number of entries in arrays x and w (array size must be ntimes*stride) 
[in]  x  array of values to be histogrammed 
[in]  w  array of weighs 
[in]  stride  step size through arrays x and w 
If the weight is not equal to 1, the storage of the sum of squares of weights is automatically triggered and the sum of the squares of weights is incremented by \( w^2 \) in the bin corresponding to x. if w is NULL each entry is assumed a weight=1
Fill histogram following distribution in function fname.
fname  : Function name used for filling the histogram 
ntimes  : number of times the histogram is filled 
rng  : (optional) Random number generator used to sample 
The distribution contained in the function fname (TF1) is integrated over the channel contents for the bin range of this histogram. It is normalized to 1.
Getting one random number implies:
One can also call TF1::GetRandom to get a random variate from a function.
Fill histogram following distribution in histogram h.
h  : Histogram pointer used for sampling random number 
ntimes  : number of times the histogram is filled 
rng  : (optional) Random number generator used for sampling 
The distribution contained in the histogram h (TH1) is integrated over the channel contents for the bin range of this histogram. It is normalized to 1.
Getting one random number implies:
SPECIAL CASE when the target histogram has the same binning as the source. in this case we simply use a poisson distribution where the mean value per bin = bincontent/integral.
Return Global bin number corresponding to x,y,z.
2D and 3D histograms are represented with a one dimensional structure. This has the advantage that all existing functions, such as GetBinContent, GetBinError, GetBinFunction work for all dimensions. This function tries to extend the axis if the given point belongs to an under/overflow bin AND if CanExtendAllAxes() is true.
See also TH1::GetBin, TAxis::FindBin and TAxis::FindFixBin
Reimplemented in TH2Poly.

virtual 
Find first bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold is found the function returns 1.
The search will occur between the specified first and last bin. Specifying the value of the last bin to search to less than zero will search until the last defined bin.
Return Global bin number corresponding to x,y,z.
2D and 3D histograms are represented with a one dimensional structure. This has the advantage that all existing functions, such as GetBinContent, GetBinError, GetBinFunction work for all dimensions. This function DOES NOT try to extend the axis if the given point belongs to an under/overflow bin.
See also TH1::GetBin, TAxis::FindBin and TAxis::FindFixBin

virtual 
Find last bin with content > threshold for axis (1=x, 2=y, 3=z) if no bins with content > threshold is found the function returns 1.
The search will occur between the specified first and last bin. Specifying the value of the last bin to search to less than zero will search until the last defined bin.

protectedvirtual 
finds new limits for the axis so that point is within the range and the limits are compatible with the previous ones (see TH1::Merge).
new limits are put into newMin and newMax variables. axis  axis whose limits are to be recomputed point  point that should fit within the new axis limits newMin  new minimum will be stored here newMax  new maximum will be stored here. false if failed (e.g. if the initial axis limits are wrong or the new range is more than \( 2^{64} \) times the old one).

overridevirtual 

virtual 
Fit histogram with function fname.
fname is the name of a function available in the global ROOT list of functions gROOT>GetListOfFunctions
The list include any TF1 object created by the user plus some predefined functions which are automatically created by ROOT the first time a predefined function is requested from gROOT
(i.e. when calling gROOT>GetFunction(const char *name)
). These predefined functions are:
gaus, gausn
where gausn is the normalized Gaussianlandau, landaun
expo
pol1,...9, chebyshev1,...9
.For printing the list of all available functions do:
TF1::InitStandardFunctions(); // not needed if `gROOT>GetFunction` is called before gROOT>GetListOfFunctions()>ls()
fname
can also be a formula that is accepted by the linear fitter containing the special operator ++
, representing linear components separated by ++
sign, for example x++sin(x)
for fitting [0]*x+[1]*sin(x)
This function finds a pointer to the TF1 object with name fname
and calls TH1::Fit(TF1 *, Option_t *, Option_t *,
Double_t, Double_t). See there for the fitting options and the details about fitting histograms

virtual 
Fit histogram with the function pointer f1.
[in]  f1  pointer to the function object 
[in]  option  string defining the fit options (see table below). 
[in]  goption  specify a list of graphics options. See TH1::Draw for a complete list of these options. 
[in]  xxmin  lower fitting range 
[in]  xxmax  upper fitting range 
Here is the full list of fit options that can be given in the parameter option
. Several options can be used together by concatanating the strings without the need of any delimiters.
option  description 

"L"  Uses a log likelihood method (default is chisquare method). To be used when the histogram represents counts. 
"WL"  Weighted log likelihood method. To be used when the histogram has been filled with weights different than 1. This is needed for getting correct parameter uncertainties for weighted fits. 
"P"  Uses Pearson chisquare method. Uses expected errors instead of the observed one (default case). The expected error is instead estimated from the squareroot of the bin function value. 
"MULTI"  Uses Loglikelihood method based on multinomial distribution. In this case the function must be normalized and one fits only the function shape. 
"W"  Fit using the chisquare method and ignoring the bin uncertainties and skip empty bins. 
"WW"  Fit using the chisquare method and ignoring the bin uncertainties and include the empty bins. 
"I"  Uses the integral of function in the bin instead of the default bin center value. 
"F"  Uses the default minimizer (e.g. Minuit) when fitting a linear function (e.g. polN) instead of the linear fitter. 
"U"  Uses a user specified objective function (e.g. user providedlikelihood function) defined using TVirtualFitter::SetFCN 
"E"  Performs a better parameter errors estimation using the Minos technique for all fit parameters. 
"M"  Uses the IMPROVE algorithm (available only in TMinuit). This algorithm attempts improve the found local minimum by searching for a better one. 
"S"  The full result of the fit is returned in the TFitResultPtr . This is needed to get the covariance matrix of the fit. See TFitResult and the base class ROOT::Math::FitResult . 
"Q"  Quiet mode (minimum printing) 
"V"  Verbose mode (default is between Q and V) 
"+"  Adds this new fitted function to the list of fitted functions. By default, the previous function is deleted and only the last one is kept. 
"N"  Does not store the graphics function, does not draw the histogram with the function after fitting. 
"0"  Does not draw the histogram and the fitted function after fitting, but in contrast to option "N", it stores the fitted function in the histogram list of functions. 
"R"  Fit using a fitting range specified in the function range with TF1::SetRange . 
"B"  Use this option when you want to fix or set limits on one or more parameters and the fitting function is a predefined one (e.g gaus, expo,..), otherwise in case of predefined functions, some default initial values and limits will be used. 
"C"  In case of linear fitting, do no calculate the chisquare (saves CPU time). 
"G"  Uses the gradient implemented in TF1::GradientPar for the minimization. This allows to use Automatic Differentiation when it is supported by the provided TF1 function. 
"WIDTH"  Scales the histogran bin content by the bin width (useful for variable bins histograms) 
"SERIAL"  Runs in serial mode. By defult if ROOT is built with MT support and MT is enables, the fit is perfomed in multithread  "E" Perform better Errors estimation using Minos technique 
"MULTITHREAD"  Forces usage of multithread execution whenever possible 
The default fitting of an histogram (when no option is given) is perfomed as following:
polN
, chenbyshev
or formula expressions combined using operator ++
) a linear minimization is used.The Fit is perfomed using the default Minimizer, defined in the ROOT::Math::MinimizerOptions
class. It is possible to change the default minimizer and its configuration parameters by calling these static functions before fitting (before calling TH1::Fit
):
ROOT::Math::MinimizerOptions::SetDefaultMinimizer(minimizerName, minimizerAgorithm)
for changing the minmizer and/or the corresponding algorithm. For example ROOT::Math::MinimizerOptions::SetDefaultMinimizer("GSLMultiMin","BFGS");
will set the usage of the BFGS algorithm of the GSL multidimensional minimization The current defaults are ("Minuit","Migrad"). See the documentation of the ROOT::Math::MinimizerOptions
for the available minimizers in ROOT and their corresponding algorithms.ROOT::Math::MinimizerOptions::SetDefaultTolerance
for setting a different tolerance value for the minimization.ROOT::Math::MinimizerOptions::SetDefaultMaxFunctionCalls
for setting the maximum number of function calls.ROOT::Math::MinimizerOptions::SetDefaultPrintLevel
for changing the minimizer print level from level=0 (minimal printing) to level=3 maximum printingOther options are possible depending on the Minimizer used, see the corresponding documentation. The default minimizer can be also set in the resource file in etc/system.rootrc. For example
By default a chisquare (leastsquare) fit is performed on the histogram. The socalled modified leastsquare method is used where the residual for each bin is computed using as error the observed value (the bin error) returned by TH1::GetBinError
\[ Chi2 = \sum_{i}{ \left(\frac{y(i)  f(x(i)  p )}{e(i)} \right)^2 } \]
where y(i)
is the bin content for each bin i
, x(i)
is the bin center and e(i)
is the bin error (sqrt(y(i)
for an unweighted histogram). Bins with zero errors are excluded from the fit. See also later the note on the treatment of empty bins. When using option "I" the residual is computed not using the function value at the bin center, f(x(i)p)
, but the integral of the function in the bin, Integral{ f(xp)dx }, divided by the bin volume. When using option P
(Pearson chi2), the expected error computed as e(i) = sqrt(f(x(i)p))
is used. In this case empty bins are considered in the fit. Both chisquare methods should not be used when the bin content represent counts, especially in case of low bin statistics, because they could return a biased result.
When using option "L" a likelihood fit is used instead of the default chisquare fit. The likelihood is built assuming a Poisson probability density function for each bin. The negative loglikelihood to be minimized is
\[ NLL =  \sum_{i}{ \log {\mathrm P} ( y(i)  f(x(i)  p ) ) } \]
where P(yf)
is the Poisson distribution of observing a count y(i)
in the bin when the expected count is f(x(i)p)
. The exact likelihood used is the Poisson likelihood described in this paper: S. Baker and R. D. Cousins, “Clarification of the use of chisquare and likelihood functions in fits to histograms,” Nucl. Instrum. Meth. 221 (1984) 437.
\[ NLL = \sum_{i}{( f(x(i)  p ) + y(i)\log(y(i)/ f(x(i)  p ))  y(i)) } \]
By using this formulation, 2*NLL
can be interpreted as the chisquare resulting from the fit.
This method should be always used when the bin content represents counts (i.e. errors are sqrt(N) ). The likelihood method has the advantage of treating correctly bins with low statistics. In case of high statistics/bin the distribution of the bin content becomes a normal distribution and the likelihood and the chi2 fit give the same result.
The likelihood method, although a bit slower, it is therefore the recommended method, when the histogram represent counts (Poisson statistics), where the chisquare methods may give incorrect results, especially in case of low statistics. In case of a weighted histogram, it is possible to perform also a likelihood fit by using the option "WL". Note a weighted histogram is a histogram which has been filled with weights and it has the information on the sum of the weight square for each bin ( TH1::Sumw2() has been called). The bin error for a weighted histogram is the square root of the sum of the weight square.
The function returns a TFitResultPtr which can hold a pointer to a TFitResult object. By default the TFitResultPtr contains only the status of the fit which is return by an automatic conversion of the TFitResultPtr to an integer. One can write in this case directly:
If the option "S" is instead used, TFitResultPtr behaves as a smart pointer to the TFitResult object. This is useful for retrieving the full result information from the fit, such as the covariance matrix, as shown in this example code:
The fit parameters, error and chisquare (but not covariance matrix) can be retrieved also directly from the fitted function that is passed to this call. Given a pointer to an associated fitted function myfunc
, one can retrieve the function/fit parameters with calls such as:
One or more object ( can be added to the list of functions (fFunctions) associated to each histogram. When TH1::Fit is invoked, the fitted function is added to the histogram list of functions (fFunctions). If the histogram is made persistent, the list of associated functions is also persistent. Given a histogram h, one can retrieve an associated function with:
or by quering directly the list obtained by calling TH1::GetListOfFunctions
.
The status of the fit is obtained converting the TFitResultPtr to an integer independently if the fit option "S" is used or not:
status = 0
: the fit has been performed successfully (i.e no error occurred).status < 0
: there is an error not connected with the minimization procedure, for example when a wrong function is used.status > 0
: return status from Minimizer, depends on used Minimizer. For example for TMinuit and Minuit2 we have:status = migradStatus + 10*minosStatus + 100*hesseStatus + 1000*improveStatus
. TMinuit returns 0 (for migrad, minos, hesse or improve) in case of success and 4 in case of error (see the documentation of TMinuit::mnexcm). For example, for an error only in Minos but not in Migrad a fitStatus of 40 will be returned. Minuit2 returns 0 in case of success and different values in migrad,minos or hesse depending on the error. See in this case the documentation of Minuit2Minimizer::Minimize for the migrad return status, Minuit2Minimizer::GetMinosError for the minos return status and Minuit2Minimizer::Hesse for the hesse return status. If other minimizers are used see their specific documentation for the status code returned. For example in the case of Fumili, see TFumili::Minimize.In order to fit in a subrange of the histogram you have two options:
xxmin
) and upper (xxmax
) values for the fitting range;The fitting range is also limited by the histogram range defined using TAxis::SetRange or TAxis::SetRangeUser. Therefore the fitting range is the smallest range between the histogram one and the one defined by one of the two previous options described above.
Parameters must be initialized before invoking the Fit function. The setting of the parameter initial values is automatic for the predefined functions such as poln, expo, gaus, landau. One can however disable this automatic computation by using the option "B". Note that if a predefined function is defined with an argument, eg, gaus(0), expo(1), you must specify the initial values for the parameters. You can specify boundary limits for some or all parameters via
if parmin >= parmax
, the parameter is fixed Note that you are not forced to fix the limits for all parameters. For example, if you fit a function with 6 parameters, you can do:
With this setup, parameters 0>2 can vary freely Parameter 3 has boundaries [10,4] with initial value 8 Parameter 4 is fixed to 0 Parameter 5 is fixed to 100. When the lower limit and upper limit are equal, the parameter is fixed. However to fix a parameter to 0, one must call the FixParameter function.
The statistics box can display the result of the fit. You can change the statistics box to display the fit parameters with the TStyle::SetOptFit(mode) method. This mode has four digits. mode = pcev (default = 0111)
v = 1; print name/values of parameters e = 1; print errors (if e=1, v must be 1) c = 1; print Chisquare/Number of degrees of freedom p = 1; print Probability
For example: gStyle>SetOptFit(1011); prints the fit probability, parameter names/values, and errors. You can change the position of the statistics box with these lines (where g is a pointer to the TGraph):
TPaveStats *st = (TPaveStats*)g>GetListOfFunctions()>FindObject("stats"); st>SetX1NDC(newx1); //new x start position st>SetX2NDC(newx2); //new x end position
It is possible to fit a TH2 with a TF1 or a TH3 with a TF2. In this case the chisquare is computed from the squared error distance between the function values and the bin centers weighted by the bin content. For correct error scaling, the obtained parameter error are corrected as in the case when the option "W" is used.
By default when fitting a chi square function is used for fitting. When option "L" is used a Poisson likelihood function is used. Using option "MULTI" a multinomial likelihood fit is used. Thes functions are defined in the header Fit/Chi2Func.h or Fit/PoissonLikelihoodFCN and they are implemented using the routines FitUtil::EvaluateChi2 or FitUtil::EvaluatePoissonLogL in the file math/mathcore/src/FitUtil.cxx. It is possible to specify a user defined fitting function, using option "U" and calling the following functions:
where MyFittingFunction is of type:
Empty bins, which have the content equal to zero AND error equal to zero, are excluded by default from the chisquare fit, but they are considered in the likelihood fit. since they affect the likelihood if the function value in these bins is not negligible. Note that if the histogram is having bins with zero content and non zeroerrors they are considered as any other bins in the fit. Instead bins with zero error and nonzero content are by default excluded in the chisquared fit. In general, one should not fit a histogram with nonempty bins and zero errors.
If the bin errors are not known, one should use the fit option "W", which gives a weight=1 for each bin (it is an unweighted leastsquare fit). When using option "WW" the empty bins will be also considered in the chisquare fit with an error of 1. Note that in this fitting case (option "W" or "WW") the resulting fitted parameter errors are corrected by the obtained chi2 value using this scaling expression: errorp *= sqrt(chisquare/(ndf1))
as it is done when fitting a TGraph with no point errors.
You can use TF1::RejectPoint inside your fitting function to exclude some points within a certain range from the fit. See the tutorial fit/fitExclude.C
.
When selecting the option "0", the fitted function is added to the list of functions of the histogram, but it is not drawn when the histogram is drawn. You can undo this behaviour resetting its corresponding bit in the TF1 object as following:

virtual 
Return a histogram containing the asymmetry of this histogram with h2, where the asymmetry is defined as:
works for 1D, 2D, etc. histograms c2 is an optional argument that gives a relative weight between the two histograms, and dc2 is the error on this weight. This is useful, for example, when forming an asymmetry between two histograms from 2 different data sets that need to be normalized to each other in some way. The function calculates the errors assuming Poisson statistics on h1 and h2 (that is, dh = sqrt(h)).
example: assuming 'h1' and 'h2' are already filled
then 'h3' is created and filled with the asymmetry between 'h1' and 'h2'; h1 and h2 are left intact.
Note that it is the user's responsibility to manage the created histogram. The name of the returned histogram will be Asymmetry_nameOfh1nameOfh2
code proposed by Jason Seely (seely.nosp@m.@mit.nosp@m..edu) and adapted by R.Brun
clone the histograms so top and bottom will have the correct dimensions: Sumw2 just makes sure the errors will be computed properly when we form sums and ratios below.

protected 
Return Global bin number corresponding to binx,y,z.
2D and 3D histograms are represented with a one dimensional structure. This has the advantage that all existing functions, such as GetBinContent, GetBinError, GetBinFunction work for all dimensions.
In case of a TH1x, returns binx directly. see TH1::GetBinXYZ for the inverse transformation.
Convention for numbering bins
For all histogram types: nbins, xlow, xup
In case of 2D or 3D histograms, a "global bin" number is defined. For example, assuming a 3D histogram with binx,biny,binz, the function
returns a global/linearized bin number. This global bin is useful to access the bin information independently of the dimension.
Return content of bin number bin.
Implemented in TH1C,S,F,D
Convention for numbering bins
For all histogram types: nbins, xlow, xup
In case of 2D or 3D histograms, a "global bin" number is defined. For example, assuming a 3D histogram with binx,biny,binz, the function
returns a global/linearized bin number. This global bin is useful to access the bin information independently of the dimension.
Reimplemented in TH2, TH3, TH1K, TH2Poly, TProfile, TProfile2D, TProfile2Poly, TProfile2Poly, and TProfile3D.
Reimplemented in TH2, TH3, TH1K, TProfile, TH2, TProfile2D, TH2Poly, TProfile2Poly, and TProfile3D.
Reimplemented in TH2, TH3, TH1K, TProfile, TH3, TProfile3D, TH2, TProfile2D, TH2Poly, and TProfile2Poly.
Return value of error associated to bin number bin.
if the sum of squares of weights has been defined (via Sumw2), this function returns the sqrt(sum of w2). otherwise it returns the sqrt(contents) for this bin.
Reimplemented in TH1K, TH2Poly, TProfile, TProfile2D, TProfile2Poly, TProfile2Poly, and TProfile3D.
Reimplemented in TH1K, TProfile, TProfile2D, TH2Poly, TProfile2Poly, and TProfile3D.
Reimplemented in TH1K, TProfile, TProfile3D, TProfile2D, TH2Poly, and TProfile2Poly.

inlinevirtual 
Reimplemented in TProfile, TProfile2D, and TProfile3D.

virtual 
Compute first binx in the range [firstx,lastx] for which diff = abs(bin_contentc) <= maxdiff.
In case several bins in the specified range with diff=0 are found the first bin found is returned in binx. In case several bins in the specified range satisfy diff <=maxdiff the bin with the smallest difference is returned in binx. In all cases the function returns the smallest difference.
NOTE1: if firstx <= 0, firstx is set to bin 1 if (lastx < firstx then firstx is set to the number of bins ie if firstx=0 and lastx=0 (default) the search is on all bins.
NOTE2: if maxdiff=0 (default), the first bin with content=c is returned.
Return binx, biny, binz corresponding to the global bin number globalbin see TH1::GetBin function above.

virtual 
Return a pointer to a histogram containing the cumulative content.
The cumulative can be computed both in the forward (default) or backward direction; the name of the new histogram is constructed from the name of this histogram with the suffix "suffix" appended provided by the user. If not provided a default suffix="_cumulative" is used.
The cumulative distribution is formed by filling each bin of the resulting histogram with the sum of that bin and all previous (forward == kTRUE) or following (forward = kFALSE) bins.
Note: while cumulative distributions make sense in one dimension, you may not be getting what you expect in more than 1D because the concept of a cumulative distribution is much trickier to define; make sure you understand the order of summation before you use this method with histograms of dimension >= 2.
Note 2: By default the cumulative is computed from bin 1 to Nbins If an axis range is set, values between the minimum and maximum of the range are set. Setting an axis range can also be used for including underflow and overflow in the cumulative (e.g. by setting h>GetXaxis()>SetRange(0, h>GetNbinsX()+1); )

static 

static 
Return kTRUE if TH1::Sumw2 must be called when creating new histograms.
see TH1::SetDefaultSumw2.

inline 

virtual 
Number of effective entries of the histogram.
\[ neff = \frac{(\sum Weights )^2}{(\sum Weight^2 )} \]
In case of an unweighted histogram this number is equivalent to the number of entries of the histogram. For a weighted histogram, this number corresponds to the hypothetical number of unweighted entries a histogram would need to have the same statistical power as this weighted histogram. Note: The underflow/overflow are included if one has set the TH1::StatOverFlows flag and if the statistics has been computed at filling time. If a range is set in the histogram the number is computed from the given range.

virtual 

virtual 

virtual 
Return a pointer to the array of bins integral.
if the pointer fIntegral is null, TH1::ComputeIntegral is called The array dimension is the number of bins in the histograms including underflow and overflow (fNCells) the last value integral[fNCells] is set to the number of entries of the histogram
Note, that since third and fourth moment are not calculated at the fill time, kurtosis and its standard error are computed bin by bin
IMPORTANT NOTE: The returned value depends on how the histogram statistics are calculated. See TH1::GetMean and TH1::GetStdDev.

virtual 
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden by TH1::SetMaximum, in which case it returns that value.
This happens, for example, when the histogram is drawn and the y or z axis limits are changed
To get the maximum value of bins in the histogram regardless of whether the value has been overridden (using TH1::SetMaximum), use
TH1::GetMaximumBin can be used to get the location of the maximum value.
Reimplemented in TH2Poly.

virtual 
Return location of bin with maximum value in the range.
TH1::GetMaximum can be used to get the maximum value.

inlinevirtual 
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
For axis = 11, 12, 13 returns the standard error of the mean value of the histogram along X, Y or Z axis
Note that the mean value/StdDev is computed using the bins in the currently defined range (see TAxis::SetRange). By default the range includes all bins from 1 to nbins included, excluding underflows and overflows. To force the underflows and overflows in the computation, one must call the static function TH1::StatOverflows(kTRUE) before filling the histogram.
IMPORTANT NOTE: The returned value depends on how the histogram statistics are calculated. By default, if no range has been set, the returned mean is the (unbinned) one calculated at fill time. If a range has been set, however, the mean is calculated using the bins in range, as described above; THIS IS TRUE EVEN IF THE RANGE INCLUDES ALL BINS–use TAxis::SetRange(0, 0) to unset the range. To ensure that the returned mean (and all other statistics) is always that of the binned data stored in the histogram, call TH1::ResetStats. See TH1::GetStats.
Return mean value of this histogram along the X axis.
Return standard error of mean of this histogram along the X axis.
Note that the mean value/StdDev is computed using the bins in the currently defined range (see TAxis::SetRange). By default the range includes all bins from 1 to nbins included, excluding underflows and overflows. To force the underflows and overflows in the computation, one must call the static function TH1::StatOverflows(kTRUE) before filling the histogram.
Also note, that although the definition of standard error doesn't include the assumption of normality, many uses of this feature implicitly assume it.
IMPORTANT NOTE: The returned value depends on how the histogram statistics are calculated. By default, if no range has been set, the returned value is the (unbinned) one calculated at fill time. If a range has been set, however, the value is calculated using the bins in range, as described above; THIS IS TRUE EVEN IF THE RANGE INCLUDES ALL BINS–use TAxis::SetRange(0, 0) to unset the range. To ensure that the returned value (and all other statistics) is always that of the binned data stored in the histogram, call TH1::ResetStats. See TH1::GetStats.
Return minimum value larger than minval of bins in the range, unless the value has been overridden by TH1::SetMinimum, in which case it returns that value.
This happens, for example, when the histogram is drawn and the y or z axis limits are changed
To get the minimum value of bins in the histogram regardless of whether the value has been overridden (using TH1::SetMinimum), use
TH1::GetMinimumBin can be used to get the location of the minimum value.
Reimplemented in TH2Poly.
Retrieve the minimum and maximum values in the histogram.
This will not return a cached value and will always search the histogram for the min and max values. The user can condition whether or not to call this with the GetMinimumStored() and GetMaximumStored() methods. If the cache is empty, then the value will be 1111. Users can then use the SetMinimum() or SetMaximum() methods to cache the results. For example, the following recipe will make efficient use of this method and the cached minimum and maximum values.
min  reference to variable that will hold found minimum value 
max  reference to variable that will hold found maximum value 

virtual 

inlinevirtual 
Redefines TObject::GetObjectInfo.
Displays the histogram info (bin number, contents, integral up to bin corresponding to cursor position px,py
Reimplemented from TObject.

inlineoverridevirtual 
TVirtualHistPainter * TH1::GetPainter  (  Option_t *  option = ""  ) 

virtual 
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined as.
For instance the median x_0.5 of a distribution is defined as that value of the random variable for which the distribution function equals 0.5:
code from Eddy Offermann, Renaissance
[in]  nprobSum  maximum size of array q and size of array probSum (if given) 
[in]  probSum  array of positions where quantiles will be computed.

[out]  q  array q filled with nq quantiles 
Note that the Integral of the histogram is automatically recomputed if the number of entries is different of the number of entries when the integral was computed last time. In case you do not use the Fill functions to fill your histogram, but SetBinContent, you must call TH1::ComputeIntegral before calling this function.
Getting quantiles q from two histograms and storing results in a TGraph, a socalled QQplot
Example:
Return a random number distributed according the histogram bin contents.
This function checks if the bins integral exists. If not, the integral is evaluated, normalized to one.
rng  (optional) Random number generator pointer used (default is gRandom) 
The integral is automatically recomputed if the number of entries is not the same then when the integral was computed. NB Only valid for 1d histograms. Use GetRandom2 or 3 otherwise. If the histogram has a bin with negative content a NaN is returned
This function returns the Standard Deviation (Sigma) of the distribution not the Root Mean Square (RMS).
The name "RMS" is been often used as a synonym for the Standard Deviation and it was introduced many years ago (Hbook/PAW times). We keep the name GetRMS for continuity as an alias to GetStdDev. GetStdDev() should be used instead.
Note, that since third and fourth moment are not calculated at the fill time, skewness and its standard error are computed bin by bin
IMPORTANT NOTE: The returned value depends on how the histogram statistics are calculated. See TH1::GetMean and TH1::GetStdDev.

inline 

inlineprotected 

virtual 
fill the array stats from the contents of this histogram The array stats must be correctly dimensioned in the calling program.
If no axissubrange is specified (via TAxis::SetRange), the array stats is simply a copy of the statistics quantities computed at filling time. If a subrange is specified, the function recomputes these quantities from the bin contents in the current axis range.
IMPORTANT NOTE: This means that the returned statistics are contextdependent. If TAxis::kAxisRange, the returned statistics are dependent on the binning; otherwise, they are a copy of the histogram statistics computed at fill time, which are unbinned by default (calling TH1::ResetStats forces them to use binned statistics). You can reset TAxis::kAxisRange using TAxis::SetRange(0, 0).
Note that the mean value/StdDev is computed using the bins in the currently defined range (see TAxis::SetRange). By default the range includes all bins from 1 to nbins included, excluding underflows and overflows. To force the underflows and overflows in the computation, one must call the static function TH1::StatOverflows(kTRUE) before filling the histogram.
Reimplemented in TH2, TH2Poly, TH3, TProfile, TProfile2D, TProfile2Poly, and TProfile3D.
Returns the Standard Deviation (Sigma).
The Sigma estimate is computed as
\[ \sqrt{\frac{1}{N}(\sum(x_ix_{mean})^2)} \]
For axis = 1,2 or 3 returns the Sigma value of the histogram along X, Y or Z axis For axis = 11, 12 or 13 returns the error of StdDev estimation along X, Y or Z axis for Normal distribution
Note that the mean value/sigma is computed using the bins in the currently defined range (see TAxis::SetRange). By default the range includes all bins from 1 to nbins included, excluding underflows and overflows. To force the underflows and overflows in the computation, one must call the static function TH1::StatOverflows(kTRUE) before filling the histogram.
IMPORTANT NOTE: The returned value depends on how the histogram statistics are calculated. By default, if no range has been set, the returned standard deviation is the (unbinned) one calculated at fill time. If a range has been set, however, the standard deviation is calculated using the bins in range, as described above; THIS IS TRUE EVEN IF THE RANGE INCLUDES ALL BINS–use TAxis::SetRange(0, 0) to unset the range. To ensure that the returned standard deviation (and all other statistics) is always that of the binned data stored in the histogram, call TH1::ResetStats. See TH1::GetStats.
Return error of standard deviation estimation for Normal distribution.
Note that the mean value/StdDev is computed using the bins in the currently defined range (see TAxis::SetRange). By default the range includes all bins from 1 to nbins included, excluding underflows and overflows. To force the underflows and overflows in the computation, one must call the static function TH1::StatOverflows(kTRUE) before filling the histogram.
Value returned is standard deviation of sample standard deviation. Note that it is an approximated value which is valid only in the case that the original data distribution is Normal. The correct one would require the 4th momentum value, which cannot be accurately estimated from a histogram since the xinformation for all entries is not kept.
IMPORTANT NOTE: The returned value depends on how the histogram statistics are calculated. By default, if no range has been set, the returned value is the (unbinned) one calculated at fill time. If a range has been set, however, the value is calculated using the bins in range, as described above; THIS IS TRUE EVEN IF THE RANGE INCLUDES ALL BINS–use TAxis::SetRange(0, 0) to unset the range. To ensure that the returned value (and all other statistics) is always that of the binned data stored in the histogram, call TH1::ResetStats. See TH1::GetStats.

virtual 
Return integral of bin contents.
Only bins in the bins range are considered.
By default the integral is computed as the sum of bin contents in the range. if option "width" is specified, the integral is the sum of the bin contents multiplied by the bin width in x.

virtual 
Return integral of bin contents in range [binx1,binx2] and its error.
By default the integral is computed as the sum of bin contents in the range. if option "width" is specified, the integral is the sum of the bin contents multiplied by the bin width in x. the error is computed using error propagation from the bin errors assuming that all the bins are uncorrelated

inlineoverridevirtual 

protected 
Statistical test of compatibility in shape between this histogram and h2, using Kolmogorov test.
Note that the KolmogorovTest (KS) test should in theory be used only for unbinned data and not for binned data as in the case of the histogram (see NOTE 3 below). So, before using this method blindly, read the NOTE 3.
Default: Ignore under and overflow bins in comparison
[in]  h2  histogram 
[in]  option  is a character string to specify options

The returned function value is the probability of test (much less than one means NOT compatible)
Code adapted by Rene Brun from original HBOOK routine HDIFF
NOTE1 A good description of the Kolmogorov test can be seen at: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm
NOTE2 see also alternative function TH1::Chi2Test The Kolmogorov test is assumed to give better results than Chi2Test in case of histograms with low statistics.
NOTE3 (Jan Conrad, Fred James) "The returned value PROB is calculated such that it will be uniformly distributed between zero and one for compatible histograms, provided the data are not binned (or the number of bins is very large compared with the number of events). Users who have access to unbinned data and wish exact confidence levels should therefore not put their data into histograms, but should call directly TMath::KolmogorovTest. On the other hand, since TH1 is a convenient way of collecting data and saving space, this function has been provided. However, the values of PROB for binned data will be shifted slightly higher than expected, depending on the effects of the binning. For example, when comparing two uniform distributions of 500 events in 100 bins, the values of PROB, instead of being exactly uniformly distributed between zero and one, have a mean value of about 0.56. We can apply a useful rule: As long as the bin width is small compared with any significant physical effect (for example the experimental resolution) then the binning cannot have an important effect. Therefore, we believe that for all practical purposes, the probability value PROB is calculated correctly provided the user is aware that: 1. The value of PROB should not be expected to have exactly the correct distribution for binned data. 2. The user is responsible for seeing to it that the bin widths are small compared with any physical phenomena of interest. 3. The effect of binning (if any) is always to make the value of PROB slightly too big. That is, setting an acceptance criterion of (PROB>0.05 will assure that at most 5% of truly compatible histograms are rejected, and usually somewhat less."
Note also that for GoF test of unbinned data ROOT provides also the class ROOT::Math::GoFTest. The class has also method for doing one sample tests (i.e. comparing the data with a given distribution).

virtual 
Reduce the number of bins for the axis passed in the option to the number of bins having a label.
The method will remove only the extra bins existing after the last "labeled" bin. Note that if there are "unlabeled" bins present between "labeled" bins they will not be removed
Reimplemented in TProfile, TProfile2D, and TProfile3D.

virtual 
Double the number of bins for axis.
Refill histogram. This function is called by TAxis::FindBin(const char *label)
Reimplemented in TProfile, TProfile2D, and TProfile3D.
Sort bins with labels or set option(s) to draw axis with labels.
[in]  option 

In case not all bins have labels sorting will work only in the case the first n
consecutive bins have all labels and sorting will be performed on those label bins.
[in]  ax  axis 
Reimplemented in TProfile, TProfile2D, and TProfile3D.

inlinevirtual 
Reimplemented in TH2Poly, TProfile2Poly, TProfile, TProfile2D, and TProfile3D.
Long64_t TH1::Merge  (  TCollection *  li, 
Option_t *  opt  
) 
Add all histograms in the collection to this histogram.
This function computes the min/max for the x axis, compute a new number of bins, if necessary, add bin contents, errors and statistics. If all histograms have bin labels, bins with identical labels will be merged, no matter what their order is. If overflows are present and limits are different the function will fail. The function returns the total number of entries in the result histogram if the merge is successful, 1 otherwise.
Possible option: NOL : the merger will ignore the labels and merge the histograms bin by bin using bin center values to match bins NOCHECK: the histogram will not perform a check for duplicate labels in case of axes with labels. The check (enabled by default) slows down the merging
IMPORTANT remark. The axis x may have different number of bins and different limits, BUT the largest bin width must be a multiple of the smallest bin width and the upper limit must also be a multiple of the bin width. Example:
Multiply this histogram by h1.
this = this*h1
If errors of this are available (TH1::Sumw2), errors are recalculated. Note that if h1 has Sumw2 set, Sumw2 is automatically called for this if not already set.
IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Multiply
The function return kFALSE if the Multiply operation failed
Reimplemented in TProfile, TProfile2D, and TProfile3D.

virtual 
Replace contents of this histogram by multiplication of h1 by h2.
this = (c1*h1)*(c2*h2)
If errors of this are available (TH1::Sumw2), errors are recalculated. Note that if h1 or h2 have Sumw2 set, Sumw2 is automatically called for this if not already set.
IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Multiply
The function return kFALSE if the Multiply operation failed
Reimplemented in TProfile, TProfile2D, and TProfile3D.
Performs the operation:
this = this*c1*f1
If errors are defined (see TH1::Sumw2), errors are also recalculated.
Only bins inside the function range are recomputed. IMPORTANT NOTE: If you intend to use the errors of this histogram later you should call Sumw2 before making this operation. This is particularly important if you fit the histogram after TH1::Multiply
The function return kFALSE if the Multiply operation failed
Reimplemented in TH2Poly, TProfile, TProfile2D, and TProfile3D.

overridevirtual 
Control routine to paint any kind of histograms.
This function is automatically called by TCanvas::Update. (see TH1::Draw for the list of options)
Reimplemented from TObject.

overridevirtual 
Print some global quantities for this histogram.
[in]  option 

Reimplemented from TObject.

virtual 
Replace current statistics with the values in array stats.
Reimplemented in TH2, TH3, TProfile, TProfile2D, and TProfile3D.

virtual 
Rebin this histogram.
If newname is blank (default), the current histogram is modified and a pointer to it is returned.
If newname is not blank, the current histogram is not modified, and a new histogram is returned which is a Clone of the current histogram with its name set to newname.
The parameter ngroup indicates how many bins of this have to be merged into one bin of the result.
If the original histogram has errors stored (via Sumw2), the resulting histograms has new errors correctly calculated.
examples: if h1 is an existing TH1F histogram with 100 bins
NOTE: If ngroup is not an exact divider of the number of bins, the top limit of the rebinned histogram is reduced to the upper edge of the last bin that can make a complete group. The remaining bins are added to the overflow bin. Statistics will be recomputed from the new bin contents.
A new histogram is created (you should specify newname). The parameter ngroup is the number of variable size bins in the created histogram. The array xbins must contain ngroup+1 elements that represent the lowedges of the bins. If the original histogram has errors stored (via Sumw2), the resulting histograms has new errors correctly calculated.
NOTE: The bin edges specified in xbins should correspond to bin edges in the original histogram. If a bin edge in the new histogram is in the middle of a bin in the original histogram, all entries in the split bin in the original histogram will be transfered to the lower of the two possible bins in the new histogram. This is probably not what you want. A warning message is emitted in this case
examples: if h1 is an existing TH1F histogram with 100 bins
Reimplemented in TH2, TH3, and TProfile2D.

virtual 

overridevirtual 

virtual 
Reset this histogram: contents, errors, etc.
[in]  option 

Reimplemented in TH2Poly, TH1C, TH1S, TH1I, TH1L, TH1F, TH1D, TH1K, TH2, TH2C, TH2S, TH2I, TH2L, TH2F, TH2D, TH3, TH3C, TH3S, TH3I, TH3L, TH3F, TH3D, TProfile, TProfile2D, TProfile2Poly, and TProfile3D.

virtual 
Reset the statistics including the number of entries and replace with values calculated from bin content.
The number of entries is set to the total bin content or (in case of weighted histogram) to number of effective entries
Note that, by default, before calling this function, statistics are those computed at fill time, which are unbinned. See TH1::GetStats.

overridevirtual 
Save the histogram as .csv, .tsv or .txt.
In case of any other extension, fall back to TObject::SaveAs, which saves as a .C macro (but with the file name extension specified by the user)
The Under/Overflow bins are also exported (as first and last lines) The fist 2 columns are the lower and upper edges of the bins Column 3 contains the bin contents The last column contains the error in y. If errors are not present, the column is left empty
The result can be immediately imported into Excel, gnuplot, Python or whatever, without the needing to install pyroot, etc.
filename  the name of the file where to store the histogram 
option  some tuning options 
The file extension defines the delimiter used:
.csv
: comma.tsv
: tab.txt
: spaceIf option = "title" a title line is generated. If the yaxis has a title, this title is displayed as column 3 name, otherwise, it shows "BinContent"
Reimplemented from TObject.

overridevirtual 
Save primitive as a C++ statement(s) on output stream out.
Reimplemented from TObject.
Reimplemented in TH1K, TH2Poly, TProfile, TProfile2D, and TProfile3D.

protectedvirtual 
Multiply this histogram by a constant c1.
this = c1*this
Note that both contents and errors (if any) are scaled. This function uses the services of TH1::Add
IMPORTANT NOTE: Sumw2() is called automatically when scaling. If you are not interested in the histogram statistics you can call Sumw2(kFALSE) or use the option "nosw2"
One can scale a histogram such that the bins integral is equal to the normalization parameter via TH1::Scale(Double_t norm), where norm is the desired normalization divided by the integral of the histogram.
If option contains "width" the bin contents and errors are divided by the bin width.
Reimplemented in TH2Poly, TProfile, TProfile2D, and TProfile3D.

inlinevirtual 
Set the bar offset as fraction of the bin width for drawing mode "B".
This shifts bars to the right on the x axis, and helps to draw bars next to each other.

inlinevirtual 
Set the width of bars as fraction of the bin width for drawing mode "B".
This allows for making bars narrower than the bin width. With SetBarOffset(), this helps to draw multiple bars next to each other.
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater than the number of bins and the timedisplay option is set or CanExtendAllAxes(), the number of bins is automatically doubled to accommodate the new bin.
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the nonempty bin the bin error is set by default to the square root of their content.
Note that in case the user sets after calling SetBinError explicitly a new bin content (e.g. using SetBinContent) he needs then to provide also the corresponding bin error (using SetBinError) since the bin error will not be recalculated after setting the content and a default error = 0 will be used for those bins.
See convention for numbering bins in TH1::GetBin
Reimplemented in TH2Poly.
See convention for numbering bins in TH1::GetBin.
Reimplemented in TH2Poly.
See convention for numbering bins in TH1::GetBin.
Reimplemented in TH2Poly.

inlinevirtual 
Redefine x axis parameters with variable bin sizes.
The X axis parameters are modified. The bins content array is resized if errors (Sumw2) the errors array is resized The previous bin contents are lost To change only the axis limits, see TAxis::SetRange xBins is supposed to be of length nx+1
Reimplemented in TProfile, TProfile2D, and TProfile3D.
Redefine x and y axis parameters with variable bin sizes.
The X and Y axis parameters are modified. The bins content array is resized if errors (Sumw2) the errors array is resized The previous bin contents are lost To change only the axis limits, see TAxis::SetRange xBins is supposed to be of length nx+1, yBins is supposed to be of length ny+1
Reimplemented in TProfile2D, TProfile, and TProfile3D.

virtual 
Redefine x, y and z axis parameters with variable bin sizes.
The X, Y and Z axis parameters are modified. The bins content array is resized if errors (Sumw2) the errors array is resized The previous bin contents are lost To change only the axis limits, see TAxis::SetRange xBins is supposed to be of length nx+1, yBins is supposed to be of length ny+1, zBins is supposed to be of length nz+1
Reimplemented in TProfile3D, TProfile, and TProfile2D.
Redefine x axis parameters.
The X axis parameters are modified. The bins content array is resized if errors (Sumw2) the errors array is resized The previous bin contents are lost To change only the axis limits, see TAxis::SetRange
Reimplemented in TProfile, TProfile2D, and TProfile3D.

virtual 
Redefine x and y axis parameters.
The X and Y axis parameters are modified. The bins content array is resized if errors (Sumw2) the errors array is resized The previous bin contents are lost To change only the axis limits, see TAxis::SetRange
Reimplemented in TProfile2D, TProfile, and TProfile3D.

virtual 
Redefine x, y and z axis parameters.
The X, Y and Z axis parameters are modified. The bins content array is resized if errors (Sumw2) the errors array is resized The previous bin contents are lost To change only the axis limits, see TAxis::SetRange
Reimplemented in TProfile3D, TProfile, and TProfile2D.

inlinevirtual 
Set the maximum number of entries to be kept in the buffer.
Reimplemented in TProfile3D, TProfile, and TProfile2D.

virtual 

static 
When this static function is called with sumw2=kTRUE
, all new histograms will automatically activate the storage of the sum of squares of errors, ie TH1::Sumw2 is automatically called.

virtual 
By default, when a histogram is created, it is added to the list of histogram objects in the current directory in memory.
Remove reference to this histogram from current directory and add reference to new directory dir. dir can be 0 in which case the histogram does not belong to any directory.
Note that the directory is not a real property of the histogram and it will not be copied when the histogram is copied or cloned. If the user wants to have the copied (cloned) histogram in the same directory, he needs to set again the directory using SetDirectory to the copied histograms

virtual 
Set font number used to draw axis labels.
font : Text font code = 10*fontnumber + precision Font numbers must be between 1 and 14 precision = 1 fast hardware fonts (steps in the size) precision = 2 scalable and rotatable hardware fonts
The default font number is 62. axis specifies which axis ("x","y","z"), default = "x" if axis="xyz" set all 3 axes

inlinevirtual 

inlinevirtual 

overridevirtual 

overridevirtual 
Set the number of divisions to draw an axis.
ndiv : Number of divisions.
n = N1 + 100*N2 + 10000*N3 N1=number of primary divisions. N2=number of secondary divisions. N3=number of 3rd divisions. e.g.: nndi=0 > no tick marks. nndi=2 > 2 divisions, one tick mark in the middle of the axis.
axis specifies which axis ("x","y","z"), default = "x" if axis="xyz" set all 3 axes

inlinevirtual 

inlinevirtual 

inline 

overridevirtual 
Change/set the title.
If title is in the form stringt;stringx;stringy;stringz
the histogram title is set to stringt
, the x axis title to stringx
, the y axis title to stringy
, and the z axis title to stringz
.
To insert the character ;
in one of the titles, one should use #;
or #semicolon
.
Reimplemented from TNamed.
Specify a parameter offset to control the distance between the axis and the axis' title.
axis specifies which axis ("x","y","z"), default = "x" if axis="xyz" set all 3 axes

inlinevirtual 

inlinevirtual 

inlinevirtual 
This function calculates the background spectrum in this histogram.
The background is returned as a histogram.
[in]  niter  number of iterations (default value = 2) Increasing niter make the result smoother and lower. 
[in]  option  may contain one of the following options

NOTE that the background is only evaluated in the current range of this histogram. i.e., if this has a bin range (set via h>GetXaxis()>SetRange(binmin, binmax), the returned histogram will be created with the same number of bins as this input histogram, but only bins from binmin to binmax will be filled with the estimated background.
Reimplemented in TH2.

virtual 
Interface to TSpectrum::Search.
The function finds peaks in this histogram where the width is > sigma and the peak maximum greater than threshold*maximum bin content of this. For more details see TSpectrum::Search. Note the difference in the default value for option compared to TSpectrum::Search option="" by default (instead of "goff").
Reimplemented in TH2.
Smooth bin contents of this histogram.
if option contains "R" smoothing is applied only to the bins defined in the X axis range (default is to smooth all bins) Bin contents are replaced by their smooth values. Errors (if any) are not modified. the smoothing procedure is repeated ntimes (default=1)
Reimplemented in TH2.
Smooth array xx, translation of Hbook routine hsmoof.F
.
Based on algorithm 353QH twice presented by J. Friedman in Proc. of the 1974 CERN School of Computing, Norway, 1124 August, 1974. See also Section 4.2 in J. Friedman, Data Analysis Techniques for High Energy Physics.

overridevirtual 

inline 
Create structure to store sum of squares of weights.
if histogram is already filled, the sum of squares of weights is filled with the existing bin contents
The error per bin will be computed as sqrt(sum of squares of weight) for each bin.
This function is automatically called when the histogram is created if the static function TH1::SetDefaultSumw2 has been called before. If flag = false the structure containing the sum of the square of weights is rest and it will be empty, but it is not deleted (i.e. GetSumw2()>fN = 0)
Reimplemented in TProfile, TProfile2D, and TProfile3D.

static 
For a given transform (first parameter), fills the histogram (second parameter) with the transform output data, specified in the third parameter If the 2nd parameter h_output is empty, a new histogram (TH1D or TH2D) is created and the user is responsible for deleting it.
Available options:

overridevirtual 

protected 

protected 

protected 

protected 

protected 

protected 

protected 

staticprotected 
! Flag to call TH1::Sumw2 automatically at histogram creation time

protected 

protected 

protected 

protected 

protected 

protected 