TH1.h

Go to the documentation of this file.
00001 // @(#)root/hist:$Id: TH1.h 35227 2010-09-10 14:29:14Z moneta $
00002 // Author: Rene Brun   26/12/94
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TH1
00013 #define ROOT_TH1
00014 
00015 
00016 //////////////////////////////////////////////////////////////////////////
00017 //                                                                      //
00018 // TH1                                                                  //
00019 //                                                                      //
00020 // 1-Dim histogram base class.                                          //
00021 //                                                                      //
00022 //////////////////////////////////////////////////////////////////////////
00023 
00024 #ifndef ROOT_TAxis
00025 #include "TAxis.h"
00026 #endif
00027 
00028 #ifndef ROOT_TAttLine
00029 #include "TAttLine.h"
00030 #endif
00031 
00032 #ifndef ROOT_TAttFill
00033 #include "TAttFill.h"
00034 #endif
00035 
00036 #ifndef ROOT_TAttMarker
00037 #include "TAttMarker.h"
00038 #endif
00039 
00040 #ifndef ROOT_TArrayC
00041 #include "TArrayC.h"
00042 #endif
00043 #ifndef ROOT_TArrayS
00044 #include "TArrayS.h"
00045 #endif
00046 #ifndef ROOT_TArrayI
00047 #include "TArrayI.h"
00048 #endif
00049 #ifndef ROOT_TArrayF
00050 #include "TArrayF.h"
00051 #endif
00052 #ifndef ROOT_TArrayD
00053 #include "TArrayD.h"
00054 #endif
00055 #include "Foption.h"
00056 
00057 #ifndef ROOT_TVectorFfwd
00058 #include "TVectorFfwd.h"
00059 #endif
00060 #ifndef ROOT_TVectorDfwd
00061 #include "TVectorDfwd.h"
00062 #endif
00063 
00064 #include <float.h>
00065 
00066 class TF1;
00067 class TH1D;
00068 class TBrowser;
00069 class TDirectory;
00070 class TList;
00071 class TCollection;
00072 class TVirtualFFT;
00073 class TVirtualHistPainter;
00074 
00075 #include "TFitResultPtr.h"
00076 
00077 class TH1 : public TNamed, public TAttLine, public TAttFill, public TAttMarker {
00078 
00079 protected:
00080     Int_t         fNcells;          //number of bins(1D), cells (2D) +U/Overflows
00081     TAxis         fXaxis;           //X axis descriptor
00082     TAxis         fYaxis;           //Y axis descriptor
00083     TAxis         fZaxis;           //Z axis descriptor
00084     Short_t       fBarOffset;       //(1000*offset) for bar charts or legos
00085     Short_t       fBarWidth;        //(1000*width) for bar charts or legos
00086     Double_t      fEntries;         //Number of entries
00087     Double_t      fTsumw;           //Total Sum of weights
00088     Double_t      fTsumw2;          //Total Sum of squares of weights
00089     Double_t      fTsumwx;          //Total Sum of weight*X
00090     Double_t      fTsumwx2;         //Total Sum of weight*X*X
00091     Double_t      fMaximum;         //Maximum value for plotting
00092     Double_t      fMinimum;         //Minimum value for plotting
00093     Double_t      fNormFactor;      //Normalization factor
00094     TArrayD       fContour;         //Array to display contour levels
00095     TArrayD       fSumw2;           //Array of sum of squares of weights
00096     TString       fOption;          //histogram options
00097     TList        *fFunctions;       //->Pointer to list of functions (fits and user)
00098     Int_t         fBufferSize;      //fBuffer size
00099     Double_t     *fBuffer;          //[fBufferSize] entry buffer
00100     TDirectory   *fDirectory;       //!Pointer to directory holding this histogram
00101     Int_t         fDimension;       //!Histogram dimension (1, 2 or 3 dim)
00102     Double_t     *fIntegral;        //!Integral of bins used by GetRandom
00103     TVirtualHistPainter *fPainter;  //!pointer to histogram painter
00104     static Int_t  fgBufferSize;     //!default buffer size for automatic histograms
00105     static Bool_t fgAddDirectory;   //!flag to add histograms to the directory
00106     static Bool_t fgStatOverflows;  //!flag to use under/overflows in statistics
00107     static Bool_t fgDefaultSumw2;   //!flag to call TH1::Sumw2 automatically at histogram creation time
00108 
00109 public:
00110    static Int_t FitOptionsMake(Option_t *option, Foption_t &Foption);
00111 
00112 private:
00113    Int_t   AxisChoice(Option_t *axis) const;
00114    void    Build();
00115 
00116    TH1& operator=(const TH1&); // Not implemented
00117 
00118    static bool CheckConsistency(const TH1* h1, const TH1* h2);
00119 
00120 protected:
00121    TH1();
00122    TH1(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup);
00123    TH1(const char *name,const char *title,Int_t nbinsx,const Float_t *xbins);
00124    TH1(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins);
00125    virtual void     Copy(TObject &hnew) const;
00126    virtual Int_t    BufferFill(Double_t x, Double_t w);
00127    virtual Bool_t   FindNewAxisLimits(const TAxis* axis, const Double_t point, Double_t& newMin, Double_t &newMax);
00128    virtual void     SavePrimitiveHelp(ostream &out, const char *hname, Option_t *option = "");
00129    static Bool_t    RecomputeAxisLimits(TAxis& destAxis, const TAxis& anAxis);
00130    static Bool_t    SameLimitsAndNBins(const TAxis& axis1, const TAxis& axis2);
00131 
00132    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, 
00133                                Option_t * opt, Bool_t doerr = kFALSE) const;
00134 
00135 public:
00136    // TH1 status bits
00137    enum {
00138       kNoStats     = BIT(9),  // don't draw stats box
00139       kUserContour = BIT(10), // user specified contour levels
00140       kCanRebin    = BIT(11), // can rebin axis
00141       kLogX        = BIT(15), // X-axis in log scale
00142       kIsZoomed    = BIT(16), // bit set when zooming on Y axis
00143       kNoTitle     = BIT(17), // don't draw the histogram title
00144       kIsAverage   = BIT(18)  // Bin contents are average (used by Add)
00145    };
00146    // size of statistics data (size of  array used in GetStats()/ PutStats ) 
00147    // s[0]  = sumw       s[1]  = sumw2
00148    // s[2]  = sumwx      s[3]  = sumwx2                     
00149    // s[4]  = sumwy      s[5]  = sumwy2   s[6]  = sumwxy
00150    // s[7]  = sumwz      s[8]  = sumwz2   s[9]  = sumwxz   s[10]  = sumwyz  
00151    // s[11] = sumwt      s[12] = sumwt2                 (11 and 12 used only by TProfile3D)
00152    enum { 
00153       kNstat       = 13  // size of statistics data (up to TProfile3D)
00154    };
00155 
00156    TH1(const TH1&);
00157    virtual ~TH1();
00158 
00159    virtual void     Add(TF1 *h1, Double_t c1=1, Option_t *option="");
00160    virtual void     Add(const TH1 *h1, Double_t c1=1);
00161    virtual void     Add(const TH1 *h, const TH1 *h2, Double_t c1=1, Double_t c2=1); // *MENU*
00162    virtual void     AddBinContent(Int_t bin);
00163    virtual void     AddBinContent(Int_t bin, Double_t w);
00164    static  void     AddDirectory(Bool_t add=kTRUE);
00165    static  Bool_t   AddDirectoryStatus();
00166    virtual void     Browse(TBrowser *b);
00167    virtual Double_t Chi2Test(const TH1* h2, Option_t *option = "UU", Double_t *res = 0) const;
00168    virtual Double_t Chi2TestX(const TH1* h2, Double_t &chi2, Int_t &ndf, Int_t &igood,Option_t *option = "UU",  Double_t *res = 0) const;
00169 
00170    virtual Double_t ComputeIntegral();
00171    virtual void     DirectoryAutoAdd(TDirectory *);
00172    virtual Int_t    DistancetoPrimitive(Int_t px, Int_t py);
00173    virtual void     Divide(TF1 *f1, Double_t c1=1);
00174    virtual void     Divide(const TH1 *h1);
00175    virtual void     Divide(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option=""); // *MENU*
00176    virtual void     Draw(Option_t *option="");
00177    virtual TH1     *DrawCopy(Option_t *option="") const;
00178    virtual TH1     *DrawNormalized(Option_t *option="", Double_t norm=1) const;
00179    virtual void     DrawPanel(); // *MENU*
00180    virtual Int_t    BufferEmpty(Int_t action=0);
00181    virtual void     Eval(TF1 *f1, Option_t *option="");
00182    virtual void     ExecuteEvent(Int_t event, Int_t px, Int_t py);
00183    virtual TH1     *FFT(TH1* h_output, Option_t *option);
00184    virtual Int_t    Fill(Double_t x);
00185    virtual Int_t    Fill(Double_t x, Double_t w);
00186    virtual Int_t    Fill(const char *name, Double_t w);
00187    virtual void     FillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1);
00188    virtual void     FillN(Int_t, const Double_t *, const Double_t *, const Double_t *, Int_t) {;}
00189    virtual void     FillRandom(const char *fname, Int_t ntimes=5000);
00190    virtual void     FillRandom(TH1 *h, Int_t ntimes=5000);
00191    virtual Int_t    FindBin(Double_t x, Double_t y=0, Double_t z=0);
00192    virtual Int_t    FindFixBin(Double_t x, Double_t y=0, Double_t z=0) const;
00193    virtual Int_t    FindFirstBinAbove(Double_t threshold=0, Int_t axis=1) const;
00194    virtual Int_t    FindLastBinAbove (Double_t threshold=0, Int_t axis=1) const;
00195    virtual TObject *FindObject(const char *name) const;
00196    virtual TObject *FindObject(const TObject *obj) const;
00197    virtual TFitResultPtr    Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Double_t xmin=0, Double_t xmax=0); // *MENU*
00198    virtual TFitResultPtr    Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Double_t xmin=0, Double_t xmax=0);
00199    virtual void     FitPanel(); // *MENU*
00200    TH1             *GetAsymmetry(TH1* h2, Double_t c2=1, Double_t dc2=0);
00201    Int_t            GetBufferLength() const {return fBuffer ? (Int_t)fBuffer[0] : 0;}
00202    Int_t            GetBufferSize  () const {return fBufferSize;}
00203    const   Double_t *GetBuffer() const {return fBuffer;}
00204    static  Int_t    GetDefaultBufferSize();
00205    virtual Double_t *GetIntegral();
00206 
00207    TList           *GetListOfFunctions() const { return fFunctions; }
00208 
00209    virtual Int_t    GetNdivisions(Option_t *axis="X") const;
00210    virtual Color_t  GetAxisColor(Option_t *axis="X") const;
00211    virtual Color_t  GetLabelColor(Option_t *axis="X") const;
00212    virtual Style_t  GetLabelFont(Option_t *axis="X") const;
00213    virtual Float_t  GetLabelOffset(Option_t *axis="X") const;
00214    virtual Float_t  GetLabelSize(Option_t *axis="X") const;
00215    virtual Style_t  GetTitleFont(Option_t *axis="X") const;
00216    virtual Float_t  GetTitleOffset(Option_t *axis="X") const;
00217    virtual Float_t  GetTitleSize(Option_t *axis="X") const;
00218    virtual Float_t  GetTickLength(Option_t *axis="X") const;
00219    virtual Float_t  GetBarOffset() const {return Float_t(0.001*Float_t(fBarOffset));}
00220    virtual Float_t  GetBarWidth() const  {return Float_t(0.001*Float_t(fBarWidth));}
00221    virtual Int_t    GetContour(Double_t *levels=0);
00222    virtual Double_t GetContourLevel(Int_t level) const;
00223    virtual Double_t GetContourLevelPad(Int_t level) const;
00224 
00225    virtual Int_t    GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const;
00226    virtual void     GetBinXYZ(Int_t binglobal, Int_t &binx, Int_t &biny, Int_t &binz) const;
00227    virtual Double_t GetBinCenter(Int_t bin) const {return fXaxis.GetBinCenter(bin);}
00228    virtual Double_t GetBinContent(Int_t bin) const;
00229    virtual Double_t GetBinContent(Int_t binx, Int_t biny) const;
00230    virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t binz) const;
00231    virtual Double_t GetBinError(Int_t bin) const;
00232    virtual Double_t GetBinError(Int_t binx, Int_t biny) const;
00233    virtual Double_t GetBinError(Int_t binx, Int_t biny, Int_t binz) const;
00234    virtual Double_t GetBinLowEdge(Int_t bin) const {return fXaxis.GetBinLowEdge(bin);}
00235    virtual Double_t GetBinWidth(Int_t bin) const {return fXaxis.GetBinWidth(bin);}
00236    virtual Double_t GetBinWithContent(Double_t c, Int_t &binx, Int_t firstx=0, Int_t lastx=0,Double_t maxdiff=0) const;
00237    virtual Double_t GetCellContent(Int_t binx, Int_t biny) const;
00238    virtual Double_t GetCellError(Int_t binx, Int_t biny) const;
00239    virtual void     GetCenter(Double_t *center) const {fXaxis.GetCenter(center);}
00240    static  Bool_t   GetDefaultSumw2();
00241    TDirectory      *GetDirectory() const {return fDirectory;}
00242    virtual Double_t GetEntries() const;
00243    virtual Double_t GetEffectiveEntries() const;
00244    virtual TF1     *GetFunction(const char *name) const;
00245    virtual Int_t    GetDimension() const { return fDimension; }
00246    virtual Double_t GetKurtosis(Int_t axis=1) const;
00247    virtual void     GetLowEdge(Double_t *edge) const {fXaxis.GetLowEdge(edge);}
00248    virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const;
00249    virtual Int_t    GetMaximumBin() const;
00250    virtual Int_t    GetMaximumBin(Int_t &locmax, Int_t &locmay, Int_t &locmaz) const;
00251    virtual Double_t GetMaximumStored() const {return fMaximum;}
00252    virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const;
00253    virtual Int_t    GetMinimumBin() const;
00254    virtual Int_t    GetMinimumBin(Int_t &locmix, Int_t &locmiy, Int_t &locmiz) const;
00255    virtual Double_t GetMinimumStored() const {return fMinimum;}
00256    virtual Double_t GetMean(Int_t axis=1) const;
00257    virtual Double_t GetMeanError(Int_t axis=1) const;
00258    virtual Int_t    GetNbinsX() const {return fXaxis.GetNbins();}
00259    virtual Int_t    GetNbinsY() const {return fYaxis.GetNbins();}
00260    virtual Int_t    GetNbinsZ() const {return fZaxis.GetNbins();}
00261    virtual Double_t GetNormFactor() const {return fNormFactor;}
00262    virtual char    *GetObjectInfo(Int_t px, Int_t py) const;
00263    Option_t        *GetOption() const {return fOption.Data();}
00264 
00265    TVirtualHistPainter *GetPainter(Option_t *option="");
00266 
00267    virtual Int_t    GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0);
00268    virtual Double_t GetRandom() const;
00269    virtual void     GetStats(Double_t *stats) const;
00270    virtual Double_t GetSumOfWeights() const;
00271    virtual TArrayD *GetSumw2() {return &fSumw2;}
00272    virtual const TArrayD *GetSumw2() const {return &fSumw2;}
00273    virtual Int_t    GetSumw2N() const {return fSumw2.fN;}
00274    virtual Double_t GetRMS(Int_t axis=1) const;
00275    virtual Double_t GetRMSError(Int_t axis=1) const;
00276    virtual Double_t GetSkewness(Int_t axis=1) const;
00277            TAxis   *GetXaxis() const;
00278            TAxis   *GetYaxis() const;
00279            TAxis   *GetZaxis() const;
00280    virtual Double_t Integral(Option_t *option="") const;
00281    virtual Double_t Integral(Int_t binx1, Int_t binx2, Option_t *option="") const;
00282    virtual Double_t IntegralAndError(Int_t binx1, Int_t binx2, Double_t & err, Option_t *option="") const;
00283    virtual Double_t Interpolate(Double_t x);
00284    virtual Double_t Interpolate(Double_t x, Double_t y);
00285    virtual Double_t Interpolate(Double_t x, Double_t y, Double_t z);
00286            Bool_t   IsBinOverflow(Int_t bin) const;
00287            Bool_t   IsBinUnderflow(Int_t bin) const;
00288    virtual Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const;
00289    virtual void     LabelsDeflate(Option_t *axis="X");
00290    virtual void     LabelsInflate(Option_t *axis="X");
00291    virtual void     LabelsOption(Option_t *option="h", Option_t *axis="X");
00292    virtual Long64_t Merge(TCollection *list);
00293    virtual void     Multiply(TF1 *h1, Double_t c1=1);
00294    virtual void     Multiply(const TH1 *h1);
00295    virtual void     Multiply(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option=""); // *MENU*
00296    virtual void     Paint(Option_t *option="");
00297    virtual void     Print(Option_t *option="") const;
00298    virtual void     PutStats(Double_t *stats);
00299    virtual TH1     *Rebin(Int_t ngroup=2, const char*newname="", const Double_t *xbins=0);  // *MENU*
00300    virtual void     RebinAxis(Double_t x, TAxis *axis);
00301    virtual void     Rebuild(Option_t *option="");
00302    virtual void     RecursiveRemove(TObject *obj);
00303    virtual void     Reset(Option_t *option="");
00304    virtual void     ResetStats();
00305    virtual void     SavePrimitive(ostream &out, Option_t *option = "");
00306    virtual void     Scale(Double_t c1=1, Option_t *option="");
00307    virtual void     SetAxisColor(Color_t color=1, Option_t *axis="X");
00308    virtual void     SetAxisRange(Double_t xmin, Double_t xmax, Option_t *axis="X");
00309    virtual void     SetBarOffset(Float_t offset=0.25) {fBarOffset = Short_t(1000*offset);}
00310    virtual void     SetBarWidth(Float_t width=0.5) {fBarWidth = Short_t(1000*width);}
00311    virtual void     SetBinContent(Int_t bin, Double_t content);
00312    virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content);
00313    virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t binz, Double_t content);
00314    virtual void     SetBinError(Int_t bin, Double_t error);
00315    virtual void     SetBinError(Int_t binx, Int_t biny, Double_t error);
00316    virtual void     SetBinError(Int_t binx, Int_t biny, Int_t binz, Double_t error);
00317    virtual void     SetBins(Int_t nx, Double_t xmin, Double_t xmax);
00318    virtual void     SetBins(Int_t nx, const Double_t *xBins);
00319    virtual void     SetBins(Int_t nx, Double_t xmin, Double_t xmax, Int_t ny, Double_t ymin, Double_t ymax);
00320    virtual void     SetBins(Int_t nx, const Double_t *xBins, Int_t ny, const Double_t *yBins);
00321    virtual void     SetBins(Int_t nx, Double_t xmin, Double_t xmax, Int_t ny, Double_t ymin, Double_t ymax,
00322                             Int_t nz, Double_t zmin, Double_t zmax);
00323    virtual void     SetBins(Int_t nx, const Double_t *xBins, Int_t ny, const Double_t * yBins, Int_t nz,
00324                             const Double_t *zBins);
00325    virtual void     SetBinsLength(Int_t = -1) { } //redefined in derived classes
00326    virtual void     SetBuffer(Int_t buffersize, Option_t *option="");
00327    virtual void     SetCellContent(Int_t binx, Int_t biny, Double_t content);
00328    virtual void     SetCellError(Int_t binx, Int_t biny, Double_t content);
00329    virtual void     SetContent(const Double_t *content);
00330    virtual void     SetContour(Int_t nlevels, const Double_t *levels=0);
00331    virtual void     SetContourLevel(Int_t level, Double_t value);
00332    static  void     SetDefaultBufferSize(Int_t buffersize=1000);
00333    static  void     SetDefaultSumw2(Bool_t sumw2=kTRUE);
00334    virtual void     SetDirectory(TDirectory *dir);
00335    virtual void     SetEntries(Double_t n) {fEntries = n;};
00336    virtual void     SetError(const Double_t *error);
00337    virtual void     SetLabelColor(Color_t color=1, Option_t *axis="X");
00338    virtual void     SetLabelFont(Style_t font=62, Option_t *axis="X");
00339    virtual void     SetLabelOffset(Float_t offset=0.005, Option_t *axis="X");
00340    virtual void     SetLabelSize(Float_t size=0.02, Option_t *axis="X");
00341 
00342    virtual void     SetMaximum(Double_t maximum=-1111); // *MENU*
00343    virtual void     SetMinimum(Double_t minimum=-1111); // *MENU*
00344    virtual void     SetName(const char *name); // *MENU*
00345    virtual void     SetNameTitle(const char *name, const char *title);
00346    virtual void     SetNdivisions(Int_t n=510, Option_t *axis="X");
00347    virtual void     SetNormFactor(Double_t factor=1) {fNormFactor = factor;}
00348    virtual void     SetStats(Bool_t stats=kTRUE);
00349    virtual void     SetOption(Option_t *option=" ") {fOption = option;}
00350    virtual void     SetTickLength(Float_t length=0.02, Option_t *axis="X");
00351    virtual void     SetTitleFont(Style_t font=62, Option_t *axis="X");
00352    virtual void     SetTitleOffset(Float_t offset=1, Option_t *axis="X");
00353    virtual void     SetTitleSize(Float_t size=0.02, Option_t *axis="X");
00354    virtual void     SetTitle(const char *title);  // *MENU*
00355    virtual void     SetXTitle(const char *title) {fXaxis.SetTitle(title);}
00356    virtual void     SetYTitle(const char *title) {fYaxis.SetTitle(title);}
00357    virtual void     SetZTitle(const char *title) {fZaxis.SetTitle(title);}
00358    virtual TH1     *ShowBackground(Int_t niter=20, Option_t *option="same"); // *MENU*
00359    virtual Int_t    ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05); // *MENU*
00360    virtual void     Smooth(Int_t ntimes=1, Option_t *option=""); // *MENU*
00361    static  void     SmoothArray(Int_t NN, Double_t *XX, Int_t ntimes=1);
00362    static  void     StatOverflows(Bool_t flag=kTRUE);
00363    virtual void     Sumw2();
00364    void             UseCurrentStyle();
00365    static  TH1     *TransformHisto(TVirtualFFT *fft, TH1* h_output,  Option_t *option);
00366 
00367    ClassDef(TH1,6)  //1-Dim histogram base class
00368 };
00369 
00370 //________________________________________________________________________
00371 
00372 class TH1C : public TH1, public TArrayC {
00373 
00374 public:
00375    TH1C();
00376    TH1C(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup);
00377    TH1C(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins);
00378    TH1C(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins);
00379    TH1C(const TH1C &h1c);
00380    virtual ~TH1C();
00381 
00382    virtual void     AddBinContent(Int_t bin);
00383    virtual void     AddBinContent(Int_t bin, Double_t w);
00384    virtual void     Copy(TObject &hnew) const;
00385    virtual TH1     *DrawCopy(Option_t *option="") const;
00386    virtual Double_t GetBinContent(Int_t bin) const;
00387    virtual Double_t GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00388    virtual Double_t GetBinContent(Int_t bin, Int_t, Int_t) const {return GetBinContent(bin);}
00389    virtual void     Reset(Option_t *option="");
00390    virtual void     SetBinContent(Int_t bin, Double_t content);
00391    virtual void     SetBinContent(Int_t bin, Int_t, Double_t content) {SetBinContent(bin,content);}
00392    virtual void     SetBinContent(Int_t bin, Int_t, Int_t, Double_t content) {SetBinContent(bin,content);}
00393    virtual void     SetBinsLength(Int_t n=-1);
00394            TH1C&    operator=(const TH1C &h1);
00395    friend  TH1C     operator*(Double_t c1, const TH1C &h1);
00396    friend  TH1C     operator*(const TH1C &h1, Double_t c1);
00397    friend  TH1C     operator+(const TH1C &h1, const TH1C &h2);
00398    friend  TH1C     operator-(const TH1C &h1, const TH1C &h2);
00399    friend  TH1C     operator*(const TH1C &h1, const TH1C &h2);
00400    friend  TH1C     operator/(const TH1C &h1, const TH1C &h2);
00401 
00402    ClassDef(TH1C,1)  //1-Dim histograms (one char per channel)
00403 };
00404 
00405 TH1C operator*(Double_t c1, const TH1C &h1);
00406 inline
00407 TH1C operator*(const TH1C &h1, Double_t c1) {return operator*(c1,h1);}
00408 TH1C operator+(const TH1C &h1, const TH1C &h2);
00409 TH1C operator-(const TH1C &h1, const TH1C &h2);
00410 TH1C operator*(const TH1C &h1, const TH1C &h2);
00411 TH1C operator/(const TH1C &h1, const TH1C &h2);
00412 
00413 //________________________________________________________________________
00414 
00415 class TH1S : public TH1, public TArrayS {
00416 
00417 public:
00418    TH1S();
00419    TH1S(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup);
00420    TH1S(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins);
00421    TH1S(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins);
00422    TH1S(const TH1S &h1s);
00423    virtual ~TH1S();
00424 
00425    virtual void     AddBinContent(Int_t bin);
00426    virtual void     AddBinContent(Int_t bin, Double_t w);
00427    virtual void     Copy(TObject &hnew) const;
00428    virtual TH1     *DrawCopy(Option_t *option="") const;
00429    virtual Double_t GetBinContent(Int_t bin) const;
00430    virtual Double_t GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00431    virtual Double_t GetBinContent(Int_t bin, Int_t, Int_t) const {return GetBinContent(bin);}
00432    virtual void     Reset(Option_t *option="");
00433    virtual void     SetBinContent(Int_t bin, Double_t content);
00434    virtual void     SetBinContent(Int_t bin, Int_t, Double_t content) {SetBinContent(bin,content);}
00435    virtual void     SetBinContent(Int_t bin, Int_t, Int_t, Double_t content) {SetBinContent(bin,content);}
00436    virtual void     SetBinsLength(Int_t n=-1);
00437            TH1S&    operator=(const TH1S &h1);
00438    friend  TH1S     operator*(Double_t c1, const TH1S &h1);
00439    friend  TH1S     operator*(const TH1S &h1, Double_t c1);
00440    friend  TH1S     operator+(const TH1S &h1, const TH1S &h2);
00441    friend  TH1S     operator-(const TH1S &h1, const TH1S &h2);
00442    friend  TH1S     operator*(const TH1S &h1, const TH1S &h2);
00443    friend  TH1S     operator/(const TH1S &h1, const TH1S &h2);
00444 
00445    ClassDef(TH1S,1)  //1-Dim histograms (one short per channel)
00446 };
00447 
00448 TH1S operator*(Double_t c1, const TH1S &h1);
00449 inline
00450 TH1S operator*(const TH1S &h1, Double_t c1) {return operator*(c1,h1);}
00451 TH1S operator+(const TH1S &h1, const TH1S &h2);
00452 TH1S operator-(const TH1S &h1, const TH1S &h2);
00453 TH1S operator*(const TH1S &h1, const TH1S &h2);
00454 TH1S operator/(const TH1S &h1, const TH1S &h2);
00455 
00456 //________________________________________________________________________
00457 
00458 class TH1I: public TH1, public TArrayI {
00459 
00460 public:
00461    TH1I();
00462    TH1I(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup);
00463    TH1I(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins);
00464    TH1I(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins);
00465    TH1I(const TH1I &h1i);
00466    virtual ~TH1I();
00467 
00468    virtual void     AddBinContent(Int_t bin);
00469    virtual void     AddBinContent(Int_t bin, Double_t w);
00470    virtual void     Copy(TObject &hnew) const;
00471    virtual TH1     *DrawCopy(Option_t *option="") const;
00472    virtual Double_t GetBinContent(Int_t bin) const;
00473    virtual Double_t GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00474    virtual Double_t GetBinContent(Int_t bin, Int_t, Int_t) const {return GetBinContent(bin);}
00475    virtual void     Reset(Option_t *option="");
00476    virtual void     SetBinContent(Int_t bin, Double_t content);
00477    virtual void     SetBinContent(Int_t bin, Int_t, Double_t content) {SetBinContent(bin,content);}
00478    virtual void     SetBinContent(Int_t bin, Int_t, Int_t, Double_t content) {SetBinContent(bin,content);}
00479    virtual void     SetBinsLength(Int_t n=-1);
00480            TH1I&    operator=(const TH1I &h1);
00481    friend  TH1I     operator*(Double_t c1, const TH1I &h1);
00482    friend  TH1I     operator*(const TH1I &h1, Double_t c1);
00483    friend  TH1I     operator+(const TH1I &h1, const TH1I &h2);
00484    friend  TH1I     operator-(const TH1I &h1, const TH1I &h2);
00485    friend  TH1I     operator*(const TH1I &h1, const TH1I &h2);
00486    friend  TH1I     operator/(const TH1I &h1, const TH1I &h2);
00487 
00488    ClassDef(TH1I,1)  //1-Dim histograms (one 32 bits integer per channel)
00489 };
00490 
00491 TH1I operator*(Double_t c1, const TH1I &h1);
00492 inline
00493 TH1I operator*(const TH1I &h1, Double_t c1) {return operator*(c1,h1);}
00494 TH1I operator+(const TH1I &h1, const TH1I &h2);
00495 TH1I operator-(const TH1I &h1, const TH1I &h2);
00496 TH1I operator*(const TH1I &h1, const TH1I &h2);
00497 TH1I operator/(const TH1I &h1, const TH1I &h2);
00498 
00499 //________________________________________________________________________
00500 
00501 class TH1F : public TH1, public TArrayF {
00502 
00503 public:
00504    TH1F();
00505    TH1F(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup);
00506    TH1F(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins);
00507    TH1F(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins);
00508    TH1F(const TVectorF &v);
00509    TH1F(const TH1F &h1f);
00510    virtual ~TH1F();
00511 
00512    virtual void     AddBinContent(Int_t bin) {++fArray[bin];}
00513    virtual void     AddBinContent(Int_t bin, Double_t w)
00514                                  {fArray[bin] += Float_t (w);}
00515    virtual void     Copy(TObject &hnew) const;
00516    virtual TH1     *DrawCopy(Option_t *option="") const;
00517    virtual Double_t GetBinContent(Int_t bin) const;
00518    virtual Double_t GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00519    virtual Double_t GetBinContent(Int_t bin, Int_t, Int_t) const {return GetBinContent(bin);}
00520    virtual void     Reset(Option_t *option="");
00521    virtual void     SetBinContent(Int_t bin, Double_t content);
00522    virtual void     SetBinContent(Int_t bin, Int_t, Double_t content) {SetBinContent(bin,content);}
00523    virtual void     SetBinContent(Int_t bin, Int_t, Int_t, Double_t content) {SetBinContent(bin,content);}
00524    virtual void     SetBinsLength(Int_t n=-1);
00525            TH1F&    operator=(const TH1F &h1);
00526    friend  TH1F     operator*(Double_t c1, const TH1F &h1);
00527    friend  TH1F     operator*(const TH1F &h1, Double_t c1);
00528    friend  TH1F     operator+(const TH1F &h1, const TH1F &h2);
00529    friend  TH1F     operator-(const TH1F &h1, const TH1F &h2);
00530    friend  TH1F     operator*(const TH1F &h1, const TH1F &h2);
00531    friend  TH1F     operator/(const TH1F &h1, const TH1F &h2);
00532 
00533    ClassDef(TH1F,1)  //1-Dim histograms (one float per channel)
00534 };
00535 
00536 TH1F operator*(Double_t c1, const TH1F &h1);
00537 inline
00538 TH1F operator*(const TH1F &h1, Double_t c1) {return operator*(c1,h1);}
00539 TH1F operator+(const TH1F &h1, const TH1F &h2);
00540 TH1F operator-(const TH1F &h1, const TH1F &h2);
00541 TH1F operator*(const TH1F &h1, const TH1F &h2);
00542 TH1F operator/(const TH1F &h1, const TH1F &h2);
00543 
00544 //________________________________________________________________________
00545 
00546 class TH1D : public TH1, public TArrayD {
00547 
00548 public:
00549    TH1D();
00550    TH1D(const char *name,const char *title,Int_t nbinsx,Double_t xlow,Double_t xup);
00551    TH1D(const char *name,const char *title,Int_t nbinsx,const Float_t  *xbins);
00552    TH1D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins);
00553    TH1D(const TVectorD &v);
00554    TH1D(const TH1D &h1d);
00555    virtual ~TH1D();
00556 
00557    virtual void     AddBinContent(Int_t bin) {++fArray[bin];}
00558    virtual void     AddBinContent(Int_t bin, Double_t w)
00559                                  {fArray[bin] += Double_t (w);}
00560    virtual void     Copy(TObject &hnew) const;
00561    virtual TH1     *DrawCopy(Option_t *option="") const;
00562    virtual Double_t GetBinContent(Int_t bin) const;
00563    virtual Double_t GetBinContent(Int_t bin, Int_t) const {return GetBinContent(bin);}
00564    virtual Double_t GetBinContent(Int_t bin, Int_t, Int_t) const {return GetBinContent(bin);}
00565    virtual void     Reset(Option_t *option="");
00566    virtual void     SetBinContent(Int_t bin, Double_t content);
00567    virtual void     SetBinContent(Int_t bin, Int_t, Double_t content) {SetBinContent(bin,content);}
00568    virtual void     SetBinContent(Int_t bin, Int_t, Int_t, Double_t content) {SetBinContent(bin,content);}
00569    virtual void     SetBinsLength(Int_t n=-1);
00570            TH1D&    operator=(const TH1D &h1);
00571    friend  TH1D     operator*(Double_t c1, const TH1D &h1);
00572    friend  TH1D     operator*(const TH1D &h1, Double_t c1);
00573    friend  TH1D     operator+(const TH1D &h1, const TH1D &h2);
00574    friend  TH1D     operator-(const TH1D &h1, const TH1D &h2);
00575    friend  TH1D     operator*(const TH1D &h1, const TH1D &h2);
00576    friend  TH1D     operator/(const TH1D &h1, const TH1D &h2);
00577 
00578    ClassDef(TH1D,1)  //1-Dim histograms (one double per channel)
00579 };
00580 
00581 TH1D operator*(Double_t c1, const TH1D &h1);
00582 inline
00583 TH1D operator*(const TH1D &h1, Double_t c1) {return operator*(c1,h1);}
00584 TH1D operator+(const TH1D &h1, const TH1D &h2);
00585 TH1D operator-(const TH1D &h1, const TH1D &h2);
00586 TH1D operator*(const TH1D &h1, const TH1D &h2);
00587 TH1D operator/(const TH1D &h1, const TH1D &h2);
00588 
00589    extern TH1 *R__H(Int_t hid);
00590    extern TH1 *R__H(const char *hname);
00591 
00592 #endif

Generated on Tue Jul 5 14:22:51 2011 for ROOT_528-00b_version by  doxygen 1.5.1