00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TH1
00013 #define ROOT_TH1
00014
00015
00016
00017
00018
00019
00020
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;
00081 TAxis fXaxis;
00082 TAxis fYaxis;
00083 TAxis fZaxis;
00084 Short_t fBarOffset;
00085 Short_t fBarWidth;
00086 Double_t fEntries;
00087 Double_t fTsumw;
00088 Double_t fTsumw2;
00089 Double_t fTsumwx;
00090 Double_t fTsumwx2;
00091 Double_t fMaximum;
00092 Double_t fMinimum;
00093 Double_t fNormFactor;
00094 TArrayD fContour;
00095 TArrayD fSumw2;
00096 TString fOption;
00097 TList *fFunctions;
00098 Int_t fBufferSize;
00099 Double_t *fBuffer;
00100 TDirectory *fDirectory;
00101 Int_t fDimension;
00102 Double_t *fIntegral;
00103 TVirtualHistPainter *fPainter;
00104 static Int_t fgBufferSize;
00105 static Bool_t fgAddDirectory;
00106 static Bool_t fgStatOverflows;
00107 static Bool_t fgDefaultSumw2;
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&);
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
00137 enum {
00138 kNoStats = BIT(9),
00139 kUserContour = BIT(10),
00140 kCanRebin = BIT(11),
00141 kLogX = BIT(15),
00142 kIsZoomed = BIT(16),
00143 kNoTitle = BIT(17),
00144 kIsAverage = BIT(18)
00145 };
00146
00147
00148
00149
00150
00151
00152 enum {
00153 kNstat = 13
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);
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="");
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();
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);
00198 virtual TFitResultPtr Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Double_t xmin=0, Double_t xmax=0);
00199 virtual void FitPanel();
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="");
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);
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) { }
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);
00343 virtual void SetMinimum(Double_t minimum=-1111);
00344 virtual void SetName(const char *name);
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);
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");
00359 virtual Int_t ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05);
00360 virtual void Smooth(Int_t ntimes=1, Option_t *option="");
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)
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)
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)
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)
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)
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)
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