// @(#)root/hist:$Name: v4-04-02f $:$Id: TH4D.h,v 1.31 2005/03/23 12:41:01 brun Exp $ // Author: /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TH4D #define ROOT_TH4D ////////////////////////////////////////////////////////////////////////// // // // TH4D // // // // 4-Dim histogram base class. // // // ////////////////////////////////////////////////////////////////////////// #include "TH3D.h" #include "TH1DEX.h" #include "TObjArray.h" class TH4D : public TH3D { protected: virtual Int_t BufferFill(Axis_t x, Axis_t y, Axis_t z, Axis_t u, Stat_t w); public: TH4D(); TH4D(const char *name,const char *title,Int_t nbinsx,Axis_t xlow,Axis_t xup ,Int_t nbinsy,Axis_t ylow,Axis_t yup ,Int_t nbinsz,Axis_t zlow,Axis_t zup ,Int_t nbinsu,Axis_t ulow,Axis_t uup); TH4D(const char *name,const char *title,Int_t nbinsx,const Double_t *xbins ,Int_t nbinsy,const Double_t *ybins ,Int_t nbinsz,const Double_t *zbins ,Int_t nbinsu,const Double_t *ubins); TH4D(const TH4D&); virtual ~TH4D(); Long64_t BinarySearch(Long64_t n, const Double_t *array, Double_t value); virtual Int_t BufferEmpty(Int_t action=0); virtual void Copy(TObject &hnew) const; virtual Double_t ComputeIntegral(); virtual TH1DEX* CreateExtraDimension(Int_t bin); virtual void DecomposeBin(Long64_t ibin, Int_t &binx, Int_t &biny, Int_t &binz, Int_t &binu); virtual Int_t Fill(Axis_t x, Axis_t y, Axis_t z, Axis_t u); virtual Int_t Fill(Axis_t x, Axis_t y, Axis_t z, Axis_t u, Stat_t w); virtual void FillRandom(TH1 *h, Int_t ntimes=5000); virtual Stat_t GetBinContent(Int_t bin, Int_t extrabin) const; virtual TAxis* GetExtraAxis() const { return fEXAxisTmp->GetXaxis(); } virtual TH1DEX* GetExtraDimensionPtr(Int_t bin) const; virtual Long64_t GetNbins() const; virtual void GetRandom4(Axis_t &x, Axis_t &y, Axis_t &z, Axis_t &u); virtual Stat_t Integral(Option_t *option="") const; virtual Stat_t Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Int_t binz1, Int_t binz2, Int_t binu1, Int_t binu2, Option_t *option="") const; virtual void Reset(Option_t *option=""); virtual void SetBinContent(Int_t bin, Int_t extrabin, Stat_t content); TH4D& operator=(const TH4D &h1); private: TObjArray fExtraDimArray; // array of TH1DEX extra dimensions Long64_t fSumEntries; // number of entries Int_t fNbinsU; // nbins of extra dimension axis Axis_t fMinU; // min edge of extra axis Axis_t fMaxU; // max edge of extra axis Bool_t fIsCopied; // is the hist copied? TH1DEX *fEXAxisTmp; // dummy extra axis ClassDef(TH4D,1) //4-Dim histogram base class }; #endif