TH1C


class description - source file - inheritance tree

class TH1C : public TH1, public TArrayC


    public:
TH1C TH1C() TH1C TH1C(const char* name, const char* title, Int_t nbinsx, Axis_t xlow, Axis_t xup) TH1C TH1C(const char* name, const char* title, Int_t nbinsx, const Float_t* xbins) TH1C TH1C(const char* name, const char* title, Int_t nbinsx, const Double_t* xbins) TH1C TH1C(const TH1C& h1c) virtual void ~TH1C() virtual void AddBinContent(Int_t bin) virtual void AddBinContent(Int_t bin, Stat_t w) static TClass* Class() virtual void Copy(TObject& hnew) virtual TH1* DrawCopy(Option_t* option) virtual Stat_t GetBinContent(Int_t bin) const virtual Stat_t GetBinContent(Int_t bin, Int_t) const virtual Stat_t GetBinContent(Int_t bin, Int_t, Int_t) const virtual TClass* IsA() const TH1C& operator=(const TH1C& h1) virtual void Reset(Option_t* option) virtual void SetBinContent(Int_t bin, Stat_t content) virtual void SetBinContent(Int_t bin, Int_t, Stat_t content) virtual void SetBinContent(Int_t bin, Int_t, Int_t, Stat_t content) virtual void SetBinsLength(Int_t nx) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members

    private:
protected:
public:

Class Description

*-*-*-*-*-*-*-*-*-*-*The H I S T O G R A M   Classes*-*-*-*-*-*-*-*-*-*-*-*
*-*                  ===============================
*-*
*-*  ROOT supports the following histogram types:
*-*
*-*   1-D histograms:
*-*      TH1C : histograms with one byte per channel.   Maximum bin content = 255
*-*      TH1S : histograms with one short per channel.  Maximum bin content = 65535
*-*      TH1F : histograms with one float per channel.  Maximum precision 7 digits
*-*      TH1D : histograms with one double per channel. Maximum precision 14 digits
*-*
*-*   2-D histograms:
*-*      TH2C : histograms with one byte per channel.   Maximum bin content = 255
*-*      TH2S : histograms with one short per channel.  Maximum bin content = 65535
*-*      TH2F : histograms with one float per channel.  Maximum precision 7 digits
*-*      TH2D : histograms with one double per channel. Maximum precision 14 digits
*-*
*-*   3-D histograms:
*-*      TH3C : histograms with one byte per channel.   Maximum bin content = 255
*-*      TH3S : histograms with one short per channel.  Maximum bin content = 65535
*-*      TH3F : histograms with one float per channel.  Maximum precision 7 digits
*-*      TH3D : histograms with one double per channel. Maximum precision 14 digits
*-*
*-*   Profile histograms: See classes  TProfile and TProfile2D
*-*   Profile histograms are used to display the mean value of Y and its RMS
*-*   for each bin in X. Profile histograms are in many cases an elegant
*-*   replacement of two-dimensional histograms : the inter-relation of two
*-*   measured quantities X and Y can always be visualized by a two-dimensional
*-*   histogram or scatter-plot; If Y is an unknown (but single-valued)
*-*   approximate function of X, this function is displayed by a profile
*-*   histogram with much better precision than by a scatter-plot.
/*-*
*-*- All histogram classes are derived from the base class TH1
*-*
*-*                             TH1
*-*                              ^
*-*                              |
*-*                              |
*-*                              |
*-*      -----------------------------------------------------
*-*             |                |       |      |      |     |
*-*             |                |      TH1C   TH1S   TH1F  TH1D
*-*             |                |                           |
*-*             |                |                           |
*-*             |               TH2                      TProfile
*-*             |                |
*-*             |                |
*-*             |                -----------------------------
*-*             |                        |      |      |     |
*-*             |                       TH2C   TH2S   TH2F  TH2D
*-*             |                                            |
*-*            TH3                                           |
*-*             |                                        TProfile2D
*-*             |
*-*             ------------------------------
*-*                     |      |      |      |
*-*                    TH3C   TH3S   TH3F   TH3D
*-*
*-*   The TH*C classes also inherit from the array class TArrayC.
*-*   The TH*S classes also inherit from the array class TArrayS.
*-*   The TH*F classes also inherit from the array class TArrayF.
*-*   The TH*D classes also inherit from the array class TArrayD.
*-*
*-*  Creating histograms
*-*  ===================
*-*  Histograms are created by invoking one of the constructors, eg
*-*    TH1F *h1 = new TH1F("h1","h1 title",100,0,4.4);
*-*    TH2F *h2 = new TH2F("h2","h2 title",40,0,4,30,-3,3);
*-*  histograms may also be created by:
*-*    - calling the Clone function, see below
*-*    - making a projection from a 2-D or 3-D histogram, see below
*-*    - reading an histogram from a file
*-*  When an histogram is created, a reference to it is automatically added
*-*  to the list of in-memory objects for the current file or directory.
*-*  This default behaviour can be changed by:
*-*    h->SetDirectory(0);         // for the current histogram h
*-*    TH1::AddDirectory(kFALSE);  // sets a global switch disabling the reference
*-*  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.
*-*
*-*   Fix or variable bin size
*-*   ========================
*-*
*-*  All histogram types support either fix or variable bin sizes.
*-*  2-D histograms may have fix size bins along X and variable size bins
*-*  along Y or vice-versa. The functions to fill, manipulate, draw or access
*-*  histograms are identical in both cases.
*-*  Each histogram always contains 3 objects TAxis: fXaxis, fYaxis and fZaxis
*-*  To access the axis parameters, do:
*-*     TAxis *xaxis = h->GetXaxis(); etc.
*-*     Double_t binCenter = xaxis->GetBinCenter(bin), etc.
*-*  See class TAxis for a description of all the access functions.
*-*  The axis range is always stored internally in double precision.
*-*
*-*   Convention for numbering bins
*-*   =============================
*-*   For all histogram types: nbins, xlow, xup
*-*     bin = 0;       underflow bin
*-*     bin = 1;       first bin with low-edge xlow INCLUDED
*-*     bin = nbins;   last bin with upper-edge xup EXCLUDED
*-*     bin = nbins+1; overflow bin
*-*   In case of 2-D or 3-D histograms, a "global bin" number is defined.
*-*   For example, assuming a 3-D histogram with binx,biny,binz, the function
*-*     Int_t bin = h->GetBin(binx,biny,binz);
*-*   returns a global/linearized bin number. This global bin is useful
*-*   to access the bin information independently of the dimension.
*-*
*-*  Filling histograms
*-*  ==================
*-*  An histogram is typically filled with statements like:
*-*    h1->Fill(x);
*-*    h1->Fill(x,w); //fill with weight
*-*    h2->Fill(x,y)
*-*    h2->Fill(x,y,w)
*-*    h3->Fill(x,y,z)
*-*    h3->Fill(x,y,z,w)
*-*  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 1-D histograms or global
*-*  bin number for 2-D and 3-D 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.
*-*  To access the bin content of a given bin, do:
*-*    Double_t binContent = h->GetBinContent(bin);
*-*
*-*  By default, the bin number is computed using the current axis ranges.
*-*  If the automatic binning option has been set via
*-*         h->SetBit(TH1::kCanRebin);
*-*  then, the Fill Function will automatically extend the axis range to
*-*  accomodate the new value specified in the Fill argument. The method
*-*  used is to double the bin size until the new value fits in the range,
*-*  merging bins two by two. This automatic binning options is extensively
*-*  used by the TTree::Draw function when histogramming Tree variables
*-*  with an unknown range.
*-*  This automatic binning option is supported for 1-d, 2-D and 3-D 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 65535). Histograms of all types may have positive
*-*  or/and negative bin contents.
*-*
*-*  Rebinning
*-*  =========
*-*  At any time, an 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.
*-*
*-*  Associated errors
*-*  =================
*-*  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:
*-*     Double_t error = h->GetBinError(bin);
*-*
*-*  Associated functions
*-*  ====================
*-*  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 an histogram h, one can retrieve an associated function
*-*  with:  TF1 *myfunc = h->GetFunction("myfunc");
*-*
*-*  Operations on histograms
*-*  ========================
*-*
*-*  Many types of operations are supported on histograms or between histograms
*-*  - Addition of an histogram to the current histogram
*-*  - Additions of two histograms with coefficients and storage into the current
*-*    histogram
*-*  - Multiplications and Divisions are supported in the same way as additions.
*-*  - The Add, Divide and Multiply functions also exist to add,divide or multiply
*-*    an histogram by a function.
*-*  If an histogram has associated error bars (TH1::Sumw2 has been called),
*-*  the resulting error bars are also computed assuming independent histograms.
*-*  In case of divisions, Binomial errors are also supported.
*-*
*-*
*-*  Fitting histograms
*-*  ==================
*-*
*-*  Histograms (1-D,2-D,3-D and Profiles) can be fitted with a user
*-*  specified function via TH1::Fit. When an histogram is fitted, the
*-*  resulting function with its parameters is added to the list of functions
*-*  of this histogram. If the histogram is made persistent, the list of
*-*  associated functions is also persistent. Given a pointer (see above)
*-*  to an associated function myfunc, one can retrieve the function/fit
*-*  parameters with calls such as:
*-*    Double_t chi2 = myfunc->GetChisquare();
*-*    Double_t par0 = myfunc->GetParameter(0); //value of 1st parameter
*-*    Double_t err0 = myfunc->GetParError(0);  //error on first parameter
*-*
*-*
*-*  Projections of histograms
*-*  ========================
*-*  One can:
*-*   - make a 1-D projection of a 2-D histogram or Profile
*-*     see functions TH2::ProjectionX,Y, TH2::ProfileX,Y, TProfile::ProjectionX
*-*   - make a 1-D, 2-D or profile out of a 3-D histogram
*-*     see functions TH3::ProjectionZ, TH3::Project3D.
*-*
*-*  One can fit these projections via:
*-*   TH2::FitSlicesX,Y, TH3::FitSlicesZ.
*-*
*-*  Random Numbers and histograms
*-*  =============================
*-*  TH1::FillRandom can be used to randomly fill an 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 an histogram
*-*  10000 times with a default gaussian distribution of mean 0 and sigma 1:
*-*    TH1F h1("h1","histo from a gaussian",100,-3,3);
*-*    h1.FillRandom("gaus",10000);
*-*  TH1::GetRandom can be used to return a random number distributed
*-*                 according the contents of an histogram.
*-*
*-*  Making a copy of an 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, eg:
*-*    TH1F *hnew = (TH1F*)h->Clone();
*-*    hnew->SetName("hnew"); //recommended, otherwise you get 2 histograms
*-*                           //with the same name
*-*
*-*  Normalizing histograms
*-*  ======================
*-*  One can scale an histogram such that the bins integral is equal to
*-*  to the normalization parameter via TH1::Scale(Double_t norm);
*-*
*-*  Drawing histograms
*-*  ==================
*-*  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 an histogram drawn in a pad is deleted, the histogram is
*-*  automatically removed from the pad or pads where it was drawn.
*-*  If an 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 an histogram in a pad, one can use
*-*     h->DrawCopy();
*-*  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.
*-*
*-*  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();
*-*
*-*
*-*  Setting Drawing histogram contour levels (2-D hists only)
*-*  =========================================================
*-*  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".
*-*
*-*  Setting histogram graphics attributes
*-*  =====================================
*-*  The histogram classes inherit from the attribute classes:
*-*    TAttLine, TAttFill, TAttMarker and TAttText.
*-*  See the member functions of these classes for the list of options.
*-*
*-*  Giving titles to the X, Y and Z axis
*-*  =================================
*-*    h->GetXaxis()->SetTitle("X axis title");
*-*    h->GetYaxis()->SetTitle("Y axis title");
*-*  The histogram title and the axis titles can be any TLatex string.
*-*  The titles are part of the persistent histogram.
*-*
*-*  Saving/Reading histograms to/from a Root file
*-*  ================================
*-*  The following statements create a Root file and store an histogram
*-*  on the file. Because TH1 derives from TNamed, the key identifier on
*-*  the file is the histogram name:
*-*     TFile f("histos.root","new");
*-*     TH1F h1("hgaus","histo from a gaussian",100,-3,3);
*-*     h1.FillRandom("gaus",10000);
*-*     h1->Write();
*-*  To Read this histogram in another Root session, do:
*-*     TFile f("histos.root");
*-*     TH1F *h = (TH1F*)f.Get("hgaus");
*-*  One can save all histograms in memory to the file by:
*-*  file->Write();
*-*
*-*  Miscelaneous operations
*-*  =======================
*-*
*-*   TH1::KolmogorovTest: Statistical test of compatibility in shape between
*-*                        two histograms.
*-*   TH1::Smooth smooths the bin contents of a 1-d histogram
*-*   TH1::Integral returns the integral of bin contents in a given bin range
*-*   TH1::GetMean(int axis) returns the mean value along axis
*-*   TH1::GetRMS(int axis)  returns the Root Mean Square along axis
*-*   TH1::GetEntries returns the number of entries
*-*   TH1::Reset() resets the bin contents and errors of an histogram.
*-*

/*

*/

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

TH1C(): TH1(), TArrayC()

TH1C(const char *name,const char *title,Int_t nbins,Axis_t xlow,Axis_t xup) : TH1(name,title,nbins,xlow,xup), TArrayC(nbins+2)
    Create a 1-Dim histogram with fix bins of type char (one byte per channel)
    ==========================================================================
                    (see TH1::TH1 for explanation of parameters)


TH1C(const char *name,const char *title,Int_t nbins,const Float_t *xbins) : TH1(name,title,nbins,xbins), TArrayC(nbins+2)
    Create a 1-Dim histogram with variable bins of type char (one byte per channel)
    ==========================================================================
                    (see TH1::TH1 for explanation of parameters)


TH1C(const char *name,const char *title,Int_t nbins,const Double_t *xbins) : TH1(name,title,nbins,xbins), TArrayC(nbins+2)
    Create a 1-Dim histogram with variable bins of type char (one byte per channel)
    ==========================================================================
                    (see TH1::TH1 for explanation of parameters)


~TH1C()

TH1C(const TH1C &h1c)

void AddBinContent(Int_t bin)
*-*-*-*-*-*-*-*-*-*Increment bin content by 1*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*                ==========================

void AddBinContent(Int_t bin, Stat_t w)
*-*-*-*-*-*-*-*-*-*Increment bin content by w*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*                ==========================

void Copy(TObject &newth1)

TH1* DrawCopy(Option_t *option)

Stat_t GetBinContent(Int_t bin) const

void Reset(Option_t *option)



Inline Functions


             Stat_t GetBinContent(Int_t bin, Int_t) const
             Stat_t GetBinContent(Int_t bin, Int_t, Int_t) const
               void SetBinContent(Int_t bin, Stat_t content)
               void SetBinContent(Int_t bin, Int_t, Stat_t content)
               void SetBinContent(Int_t bin, Int_t, Int_t, Stat_t content)
               void SetBinsLength(Int_t nx)
              TH1C& operator=(const TH1C& h1)
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
               void StreamerNVirtual(TBuffer& b)


Author: Rene Brun 26/12/94
Last update: root/hist:$Name: $:$Id: TH1.cxx,v 1.57 2001/07/19 17:12:25 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.