Logo ROOT   6.10/00
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TH2Poly.h
Go to the documentation of this file.
1 // @(#)root/hist:$Id$
2 // Author: Olivier Couet, Deniz Gunceler
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TH2Poly
13 #define ROOT_TH2Poly
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TH2Poly //
18 // //
19 // 2-Dim histogram with polygon bins //
20 // //
21 //////////////////////////////////////////////////////////////////////////
22 
23 #include "TH2.h"
24 
25 class TH2PolyBin: public TObject{
26 
27 public:
28  TH2PolyBin();
29  TH2PolyBin(TObject *poly, Int_t bin_number);
30  virtual ~TH2PolyBin();
31 
32  void ClearContent(){fContent = 0;}
33  void Fill(Double_t w) {fContent = fContent+w; SetChanged(true);}
34  Double_t GetArea();
35  Double_t GetContent() const{return fContent;}
36  Bool_t GetChanged() const{return fChanged;}
37  Int_t GetBinNumber() const {return fNumber;}
38  TObject *GetPolygon() const {return fPoly;}
39  Double_t GetXMax();
40  Double_t GetXMin();
41  Double_t GetYMax();
42  Double_t GetYMin();
44  void SetChanged(Bool_t flag){fChanged = flag;}
45  void SetContent(Double_t content){fContent = content; SetChanged(true);}
46 
47 protected:
48  Bool_t fChanged; //For the 3D Painter
49  Int_t fNumber; //Bin number of the bin in TH2Poly
50  TObject *fPoly; //Object holding the polygon definition
51  Double_t fArea; //Bin area
52  Double_t fContent; //Bin content
53  Double_t fXmin; //X minimum value
54  Double_t fYmin; //Y minimum value
55  Double_t fXmax; //X maximum value
56  Double_t fYmax; //Y maximum value
57 
58  ClassDef(TH2PolyBin,1) //2-Dim polygon bins
59 };
60 
61 class TList;
62 class TGraph;
63 class TMultiGraph;
64 class TPad;
65 
66 class TH2Poly : public TH2 {
67 
68 public:
69  TH2Poly();
70  TH2Poly(const char *name,const char *title, Double_t xlow, Double_t xup, Double_t ylow, Double_t yup);
71  TH2Poly(const char *name,const char *title, Int_t nX, Double_t xlow, Double_t xup, Int_t nY, Double_t ylow, Double_t yup);
72  virtual ~TH2Poly();
73 
74  virtual TH2PolyBin *CreateBin(TObject *poly);
75  virtual Int_t AddBin(TObject *poly);
76  Int_t AddBin(Int_t n, const Double_t *x, const Double_t *y);
78  virtual Bool_t Add(const TH1 *h1, Double_t c1);
79  virtual Bool_t Add(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1);
80  virtual Bool_t Add(TF1 *h1, Double_t c1=1, Option_t *option="");
81  void ClearBinContents(); // Clears the content of all bins
82  TObject *Clone(const char* newname = "") const;
83  void ChangePartition(Int_t n, Int_t m); // Sets the number of partition cells to another value
84  virtual Int_t Fill(Double_t x,Double_t y);
85  virtual Int_t Fill(Double_t x,Double_t y, Double_t w);
86  virtual Int_t Fill(const char* name, Double_t w);
87  void FillN(Int_t ntimes, const Double_t* x, const Double_t* y, const Double_t* w, Int_t stride = 1);
88  Int_t Fill(Double_t){return -1;} //MayNotUse
89  Int_t Fill(Double_t , const char *, Double_t){return -1;} //MayNotUse
90  Int_t Fill(const char *, Double_t , Double_t ){return -1;} //MayNotUse
91  Int_t Fill(const char *, const char *, Double_t ){return -1;} //MayNotUse
92  void FillN(Int_t, const Double_t*, const Double_t*, Int_t){return;} //MayNotUse
94  TList *GetBins(){return fBins;} // Returns the TList of all bins in the histogram
95  virtual Double_t GetBinContent(Int_t bin) const;
96  virtual Double_t GetBinContent(Int_t, Int_t) const {return 0;} //MayNotUse
97  virtual Double_t GetBinContent(Int_t, Int_t, Int_t) const {return 0;} //MayNotUse
99  virtual Double_t GetBinError(Int_t bin) const;
100  virtual Double_t GetBinError(Int_t , Int_t) const {return 0;} //MayNotUse
101  virtual Double_t GetBinError(Int_t , Int_t , Int_t) const {return 0;} //MayNotUse
102  const char *GetBinName(Int_t bin) const;
103  const char *GetBinTitle(Int_t bin) const;
104  Bool_t GetFloat(){return fFloat;}
105  Double_t GetMaximum() const;
106  Double_t GetMaximum(Double_t maxval) const;
107  Double_t GetMinimum() const;
108  Double_t GetMinimum(Double_t minval) const;
111  void Honeycomb(Double_t xstart, Double_t ystart, Double_t a, Int_t k, Int_t s); // Bins the histogram using a honeycomb structure
112  Double_t Integral(Option_t* option = "") const;
113  Double_t Integral(Int_t, Int_t, const Option_t*) const{return 0;} //MayNotUse
114  Double_t Integral(Int_t, Int_t, Int_t, Int_t, const Option_t*) const{return 0;} //MayNotUse
115  Double_t Integral(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, const Option_t*) const{return 0;} //MayNotUse
117  virtual void Reset(Option_t *option);
118  virtual void Scale(Double_t c1 = 1, Option_t* option = "");
119  void SavePrimitive(std::ostream& out, Option_t* option = "");
120  void SetBinContent(Int_t bin, Double_t content);
121  void SetBinContent(Int_t, Int_t, Double_t){return;} //MayNotUse
122  void SetBinContent(Int_t, Int_t, Int_t, Double_t){return;} //MayNotUse
124  void SetFloat(Bool_t flag = true);
125  void SetNewBinAdded(Bool_t flag){fNewBinAdded = flag;}
127  virtual void GetStats(Double_t *stats) const;
128 
129 
130 protected:
131  enum {
132  kNOverflow = 9 // number of overflows bins
133  };
134  TList *fBins; //List of bins. The list owns the contained objects
135  Double_t fOverflow[kNOverflow]; //Overflow bins
136  Int_t fCellX; //Number of partition cells in the x-direction of the histogram
137  Int_t fCellY; //Number of partition cells in the y-direction of the histogram
138  Int_t fNCells; //Number of partition cells: fCellX*fCellY
139  TList *fCells; //[fNCells] The array of TLists that store the bins that intersect with each cell. List do not own the contained objects
140  Double_t fStepX, fStepY; //Dimensions of a partition cell
141  Bool_t *fIsEmpty; //[fNCells] The array that returns true if the cell at the given coordinate is empty
142  Bool_t *fCompletelyInside; //[fNCells] The array that returns true if the cell at the given coordinate is completely inside a bin
143  Bool_t fFloat; //When set to kTRUE, allows the histogram to expand if a bin outside the limits is added.
144  Bool_t fNewBinAdded; //!For the 3D Painter
145  Bool_t fBinContentChanged; //!For the 3D Painter
146 
147  void AddBinToPartition(TH2PolyBin *bin); // Adds the input bin into the partition matrix
148  void Initialize(Double_t xlow, Double_t xup, Double_t ylow, Double_t yup, Int_t n, Int_t m);
149  Bool_t IsIntersecting(TH2PolyBin *bin, Double_t xclipl, Double_t xclipr, Double_t yclipb, Double_t yclipt);
150  Bool_t IsIntersectingPolygon(Int_t bn, Double_t *x, Double_t *y, Double_t xclipl, Double_t xclipr, Double_t yclipb, Double_t yclipt);
151  // needed by TH1 - no need to have a separate implementation , but internal ibin=0 is first bin.
152  virtual Double_t RetrieveBinContent(Int_t bin) const {
153  return (bin>=kNOverflow) ? GetBinContent(bin-kNOverflow+1) : GetBinContent(-bin-1);
154  }
155  virtual void UpdateBinContent(Int_t bin, Double_t content) {
156  return (bin>=kNOverflow) ? SetBinContent(bin-kNOverflow+1,content) : SetBinContent(-bin-1,content);
157  }
158 
159  ClassDef(TH2Poly,1) //2-Dim histogram with polygon bins
160  };
161 
162 #endif
Double_t Integral(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, const Option_t *) const
Definition: TH2Poly.h:115
Bool_t fBinContentChanged
For the 3D Painter.
Definition: TH2Poly.h:145
Int_t FindBin(Double_t x, Double_t y, Double_t z=0)
Returns the bin number of the bin at the given coordinate.
Definition: TH2Poly.cxx:561
virtual Double_t GetBinContent(Int_t bin) const
Returns the content of the input bin For the overflow/underflow/sea bins: ~~~ {.cpp}.
Definition: TH2Poly.cxx:761
long long Long64_t
Definition: RtypesCore.h:69
Bool_t * fCompletelyInside
Definition: TH2Poly.h:142
const char Option_t
Definition: RtypesCore.h:62
Double_t fStepX
Definition: TH2Poly.h:140
virtual Double_t GetBinError(Int_t bin) const
Returns the value of error associated to bin number bin.
Definition: TH2Poly.cxx:774
Bool_t IsInsideBin(Int_t binnr, Double_t x, Double_t y)
Return "true" if the point (x,y) is inside the bin of binnr.
Definition: TH2Poly.cxx:1270
TCanvas * c1
Definition: legend1.C:2
void ChangePartition(Int_t n, Int_t m)
Changes the number of partition cells in the histogram.
Definition: TH2Poly.cxx:456
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
Definition: TH2Poly.cxx:1233
Long64_t Merge(TCollection *)
Merge TH2Polys Given the special nature of the TH2Poly, the merge is implemented in terms of subseque...
Definition: TH2Poly.cxx:1159
void SetChanged(Bool_t flag)
Definition: TH2Poly.h:44
Int_t GetNumberOfBins() const
Definition: TH2Poly.h:110
A TMultiGraph is a collection of TGraph (or derived) objects.
Definition: TMultiGraph.h:35
void Initialize(Double_t xlow, Double_t xup, Double_t ylow, Double_t yup, Int_t n, Int_t m)
Initializes the TH2Poly object. This method is called by the constructor.
Definition: TH2Poly.cxx:954
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TArc * a
Definition: textangle.C:12
virtual Bool_t Add(const TH1 *h1, Double_t c1)
Performs the operation: this = this + c1*h1.
Definition: TH2Poly.cxx:282
Double_t fXmax
Definition: TH2Poly.h:55
const char * GetBinName(Int_t bin) const
Returns the bin name.
Definition: TH2Poly.cxx:790
void SetBinContentChanged(Bool_t flag)
Definition: TH2Poly.h:123
TObject * Clone(const char *newname="") const
Make a complete copy of the underlying object.
Definition: TH2Poly.cxx:495
Helper class to represent a bin in the TH2Poly histogram.
Definition: TH2Poly.h:25
Bool_t GetNewBinAdded() const
Definition: TH2Poly.h:109
void AddBinToPartition(TH2PolyBin *bin)
For the 3D Painter.
Definition: TH2Poly.cxx:384
Bool_t GetChanged() const
Definition: TH2Poly.h:36
Bool_t * fIsEmpty
Definition: TH2Poly.h:141
Int_t fCellX
Definition: TH2Poly.h:136
virtual Double_t GetBinError(Int_t, Int_t) const
Definition: TH2Poly.h:100
Double_t GetMaximum() const
Returns the maximum value of the histogram.
Definition: TH2Poly.cxx:810
static const double x2[5]
TList * fCells
Definition: TH2Poly.h:139
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:297
Int_t Fill(Double_t, const char *, Double_t)
Increment cell defined by x,namey by a weight w.
Definition: TH2Poly.h:89
virtual Int_t AddBin(TObject *poly)
Adds a new bin to the histogram.
Definition: TH2Poly.cxx:214
Bool_t IsIntersecting(TH2PolyBin *bin, Double_t xclipl, Double_t xclipr, Double_t yclipb, Double_t yclipt)
Returns kTRUE if the input bin is intersecting with the input rectangle (xclipl, xclipr, yclipb, yclipt)
Definition: TH2Poly.cxx:1004
virtual Double_t GetBinContent(Int_t, Int_t) const
Definition: TH2Poly.h:96
virtual ~TH2Poly()
Destructor.
Definition: TH2Poly.cxx:178
Double_t GetXMax()
Returns the maximum value for the x coordinates of the bin.
Definition: TH2Poly.cxx:1365
Double_t GetYMin()
Returns the minimum value for the y coordinates of the bin.
Definition: TH2Poly.cxx:1473
void SetBinContent(Int_t, Int_t, Int_t, Double_t)
Definition: TH2Poly.h:122
Double_t GetYMax()
Returns the maximum value for the y coordinates of the bin.
Definition: TH2Poly.cxx:1437
TH1F * h1
Definition: legend1.C:5
void SetContent(Double_t content)
Definition: TH2Poly.h:45
TObject * fPoly
Definition: TH2Poly.h:50
void SetBinContent(Int_t, Int_t, Double_t)
Definition: TH2Poly.h:121
Bool_t fFloat
Definition: TH2Poly.h:143
A doubly linked list.
Definition: TList.h:43
Bool_t GetBinContentChanged() const
Definition: TH2Poly.h:98
Int_t fNumber
Definition: TH2Poly.h:49
virtual Double_t RetrieveBinContent(Int_t bin) const
Raw retrieval of bin content on internal data structure see convention for numbering bins in TH1::Get...
Definition: TH2Poly.h:152
virtual TH2PolyBin * CreateBin(TObject *poly)
Create appropriate histogram bin.
Definition: TH2Poly.cxx:194
virtual Double_t GetBinError(Int_t, Int_t, Int_t) const
Definition: TH2Poly.h:101
TList * GetBins()
Definition: TH2Poly.h:94
Int_t fCellY
Definition: TH2Poly.h:137
Service class for 2-Dim histogram classes.
Definition: TH2.h:30
void SetBinContent(Int_t bin, Double_t content)
Sets the contents of the input bin to the input content Negative values between -1 and -9 are for the...
Definition: TH2Poly.cxx:1247
virtual ~TH2PolyBin()
Destructor.
Definition: TH2Poly.cxx:1327
virtual Double_t GetBinContent(Int_t, Int_t, Int_t) const
Definition: TH2Poly.h:97
Collection abstract base class.
Definition: TCollection.h:42
The most important graphics class in the ROOT system.
Definition: TPad.h:29
TMarker * m
Definition: textangle.C:8
Double_t fArea
Definition: TH2Poly.h:51
const char * GetBinTitle(Int_t bin) const
Returns the bin title.
Definition: TH2Poly.cxx:800
Double_t Integral(Int_t, Int_t, const Option_t *) const
Definition: TH2Poly.h:113
Bool_t GetFloat()
Definition: TH2Poly.h:104
Int_t fNCells
Definition: TH2Poly.h:138
void SetFloat(Bool_t flag=true)
When set to kTRUE, allows the histogram to expand if a bin outside the limits is added.
Definition: TH2Poly.cxx:1262
TObject * GetPolygon() const
Definition: TH2Poly.h:38
Double_t GetContent() const
Definition: TH2Poly.h:35
TList * fBins
Definition: TH2Poly.h:134
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...
Definition: TH2Poly.h:155
Int_t Fill(const char *, Double_t, Double_t)
Increment cell defined by namex,y by a weight w.
Definition: TH2Poly.h:90
return c2
Definition: legend2.C:14
static const double x1[5]
virtual void GetStats(Double_t *stats) const
Fill the array stats from the contents of this histogram The array stats must be correctly dimensionn...
Definition: TH2Poly.cxx:1276
double Double_t
Definition: RtypesCore.h:55
Double_t fXmin
Definition: TH2Poly.h:53
Double_t Integral(Option_t *option="") const
Returns the integral of bin contents.
Definition: TH2Poly.cxx:725
Double_t y[n]
Definition: legend1.C:17
Bool_t fNewBinAdded
Definition: TH2Poly.h:144
Double_t fYmin
Definition: TH2Poly.h:54
The TH1 histogram class.
Definition: TH1.h:56
void Honeycomb(Double_t xstart, Double_t ystart, Double_t a, Int_t k, Int_t s)
Bins the histogram using a honeycomb structure.
Definition: TH2Poly.cxx:906
void ClearContent()
Definition: TH2Poly.h:32
void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
Definition: TH2Poly.cxx:1173
void ClearBinContents()
Clears the contents of all bins in the histogram.
Definition: TH2Poly.cxx:507
Mother of all ROOT objects.
Definition: TObject.h:37
you should not use this method at all Int_t Int_t z
Definition: TRolke.cxx:630
void FillN(Int_t, const Double_t *, const Double_t *, Int_t)
Fill this histogram with an array x and weights w.
Definition: TH2Poly.h:92
Double_t Integral(Int_t, Int_t, Int_t, Int_t, const Option_t *) const
Definition: TH2Poly.h:114
Double_t fOverflow[kNOverflow]
Definition: TH2Poly.h:135
virtual void Reset(Option_t *option)
Reset this histogram: contents, errors, etc.
Definition: TH2Poly.cxx:531
1-Dim function class
Definition: TF1.h:150
A Graph is a graphics object made of two arrays X and Y with npoints each.
Definition: TGraph.h:41
Double_t GetArea()
Returns the area of the bin.
Definition: TH2Poly.cxx:1335
Int_t GetBinNumber() const
Definition: TH2Poly.h:37
Double_t fStepY
Definition: TH2Poly.h:140
void Fill(Double_t w)
Definition: TH2Poly.h:33
Int_t Fill(const char *, const char *, Double_t)
Increment cell defined by namex,namey by a weight w.
Definition: TH2Poly.h:91
Bool_t IsInside(Double_t x, Double_t y) const
Return "true" if the point (x,y) is inside the bin.
Definition: TH2Poly.cxx:1509
Double_t GetMinimum() const
Returns the minimum value of the histogram.
Definition: TH2Poly.cxx:858
Int_t Fill(Double_t)
Invalid Fill method.
Definition: TH2Poly.h:88
Double_t GetXMin()
Returns the minimum value for the x coordinates of the bin.
Definition: TH2Poly.cxx:1401
Double_t fContent
Definition: TH2Poly.h:52
Bool_t IsIntersectingPolygon(Int_t bn, Double_t *x, Double_t *y, Double_t xclipl, Double_t xclipr, Double_t yclipb, Double_t yclipt)
Returns kTRUE if the input polygon (bn, x, y) is intersecting with the input rectangle (xclipl...
Definition: TH2Poly.cxx:1045
Double_t fYmax
Definition: TH2Poly.h:56
Bool_t fChanged
Definition: TH2Poly.h:48
const Int_t n
Definition: legend1.C:16
void FillN(Int_t ntimes, const Double_t *x, const Double_t *y, const Double_t *w, Int_t stride=1)
Fills a 2-D histogram with an array of values and weights.
Definition: TH2Poly.cxx:711
char name[80]
Definition: TGX11.cxx:109
virtual Int_t Fill(Double_t x, Double_t y)
Increment the bin containing (x,y) by 1.
Definition: TH2Poly.cxx:604
TH2Poly()
Default Constructor. No boundaries specified.
Definition: TH2Poly.cxx:141
2D Histogram with Polygonal Bins
Definition: TH2Poly.h:66
void SetNewBinAdded(Bool_t flag)
Definition: TH2Poly.h:125
TH2PolyBin()
Default constructor.
Definition: TH2Poly.cxx:1295
Int_t fNcells
number of bins(1D), cells (2D) +U/Overflows
Definition: TH1.h:79