Logo ROOT   6.14/05
Reference Guide
TAxis.h
Go to the documentation of this file.
1 // @(#)root/hist:$Id$
2 // Author: Rene Brun 12/12/94
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_TAxis
13 #define ROOT_TAxis
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TAxis //
19 // //
20 // Axis class. //
21 // //
22 //////////////////////////////////////////////////////////////////////////
23 
24 #include "TNamed.h"
25 #include "TAttAxis.h"
26 #include "TArrayD.h"
27 
28 class THashList;
29 
30 class TAxis : public TNamed, public TAttAxis {
31 
32 private:
33  Int_t fNbins; //Number of bins
34  Double_t fXmin; //low edge of first bin
35  Double_t fXmax; //upper edge of last bin
36  TArrayD fXbins; //Bin edges array in X
37  Int_t fFirst; //first bin to display
38  Int_t fLast; //last bin to display
39  UShort_t fBits2; //second bit status word
40  Bool_t fTimeDisplay; //on/off displaying time values instead of numerics
41  TString fTimeFormat; //Date&time format, ex: 09/12/99 12:34:00
42  TObject *fParent; //!Object owning this axis
43  THashList *fLabels; //List of labels
44  TList *fModLabs; //List of modified labels
45 
46  // TAxis extra status bits (stored in fBits2)
47  enum {
48  kAlphanumeric = BIT(0), // axis is alphanumeric
49  kCanExtend = BIT(1), // axis can be extended
50  kNotAlpha = BIT(2) // axis is forced to be not alphanumeric
51  };
52 
53  Bool_t HasBinWithoutLabel() const;
54 
55 public:
56  // TAxis status bits
57  enum EStatusBits {
58  kDecimals = BIT(7),
59  kTickPlus = BIT(9),
60  kTickMinus = BIT(10),
61  kAxisRange = BIT(11),
63  kCenterLabels = BIT(14), //bit 13 is used by TObject
65  kPalette = BIT(16),
70  kLabelsUp = BIT(21),
71  kIsInteger = BIT(22),
73  };
74 
75  TAxis();
77  TAxis(Int_t nbins, const Double_t *xbins);
78  TAxis(const TAxis &axis);
79  virtual ~TAxis();
80  TAxis& operator=(const TAxis&);
81 
82  Bool_t CanExtend() const { return (fBits2 & kCanExtend); }
83  Bool_t CanBeAlphanumeric() { return !(fBits2 & kNotAlpha); }
84  Bool_t IsAlphanumeric() { return fBits2 & kAlphanumeric; }
85  void SetAlphanumeric(Bool_t alphanumeric = kTRUE);
86  void SetCanExtend(Bool_t canExtend) { fBits2 = canExtend ? (fBits2 | kCanExtend) : (fBits2 & ~kCanExtend); }
87  void SetNoAlphanumeric(Bool_t noalpha = kTRUE) {
88  fBits2 = noalpha ? (fBits2 | kNotAlpha) : (fBits2 & ~kNotAlpha);
89  if (IsAlphanumeric() ) {
92  }
93  }
94  void CenterLabels(Bool_t center=kTRUE);
95  void CenterTitle(Bool_t center=kTRUE);
96  const char *ChooseTimeFormat(Double_t axislength=0);
97  virtual void Copy(TObject &axis) const;
98  virtual void Delete(Option_t * /*option*/ ="") { }
99  virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
100  virtual TObject *DrawClone(Option_t * /*option*/ ="") const {return 0;}
101  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
102  virtual Int_t FindBin(Double_t x);
103  virtual Int_t FindBin(Double_t x) const { return FindFixBin(x); }
104  virtual Int_t FindBin(const char *label);
105  virtual Int_t FindFixBin(Double_t x) const;
106  virtual Int_t FindFixBin(const char *label) const;
107  virtual Double_t GetBinCenter(Int_t bin) const;
108  virtual Double_t GetBinCenterLog(Int_t bin) const;
109  const char *GetBinLabel(Int_t bin) const;
110  virtual Double_t GetBinLowEdge(Int_t bin) const;
111  virtual Double_t GetBinUpEdge(Int_t bin) const;
112  virtual Double_t GetBinWidth(Int_t bin) const;
113  virtual void GetCenter(Double_t *center) const;
116  Bool_t GetDecimals() const { return TestBit(kDecimals); }
117  THashList *GetLabels() const { return fLabels; }
118  TList *GetModifiedLabels() const { return fModLabs; }
119  virtual void GetLowEdge(Double_t *edge) const;
121  Int_t GetNbins() const { return fNbins; }
123  virtual TObject *GetParent() const {return fParent;}
125  virtual const char *GetTicks() const;
126  virtual Bool_t GetTimeDisplay() const {return fTimeDisplay;}
127  virtual const char *GetTimeFormat() const {return fTimeFormat.Data();}
128  virtual const char *GetTimeFormatOnly() const;
129  const char *GetTitle() const {return fTitle.Data();}
130  const TArrayD *GetXbins() const {return &fXbins;}
131  Int_t GetFirst() const;
132  Int_t GetLast() const;
133  Double_t GetXmin() const {return fXmin;}
134  Double_t GetXmax() const {return fXmax;}
135  virtual void ImportAttributes(const TAxis *axis);
137  // true if axis has variable bin sizes, false otherwise
138  return (fXbins.GetSize() != 0);
139  }
140  virtual void LabelsOption(Option_t *option="h"); // *MENU*
141  void RotateTitle(Bool_t rotate=kTRUE); // *TOGGLE* *GETTER=GetRotateTitle
142  virtual void SaveAttributes(std::ostream &out, const char *name, const char *subname);
143  virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax);
144  virtual void Set(Int_t nbins, const Float_t *xbins);
145  virtual void Set(Int_t nbins, const Double_t *xbins);
146  virtual void SetBinLabel(Int_t bin, const char *label);
147  void SetDecimals(Bool_t dot = kTRUE); // *TOGGLE* *GETTER=GetDecimals
148  virtual void SetDefaults();
149  virtual void SetDrawOption(Option_t * /*option*/ ="") { }
150  void ChangeLabel(Int_t labNum=0, Double_t labAngle = -1.,
151  Double_t labSize = -1., Int_t labAlign = -1,
152  Int_t labColor = -1 , Int_t labFont = -1,
153  TString labText = ""); // *MENU*
154  virtual void SetLimits(Double_t xmin, Double_t xmax) { /* set axis limits */ fXmin = xmin; fXmax = xmax; } // *MENU*
155  void SetMoreLogLabels(Bool_t more=kTRUE); // *TOGGLE* *GETTER=GetMoreLogLabels
156  void SetNoExponent(Bool_t noExponent=kTRUE); // *TOGGLE* *GETTER=GetNoExponent
157  virtual void SetParent(TObject *obj) {fParent = obj;}
158  virtual void SetRange(Int_t first=0, Int_t last=0); // *MENU*
159  virtual void SetRangeUser(Double_t ufirst, Double_t ulast); // *MENU*
160  virtual void SetTicks(Option_t *option="+"); // *MENU*
161  virtual void SetTimeDisplay(Int_t value) {fTimeDisplay = (value != 0);} // *TOGGLE*
162  virtual void SetTimeFormat(const char *format=""); // *MENU*
163  virtual void SetTimeOffset(Double_t toffset, Option_t *option="local");
164  virtual void UnZoom(); // *MENU*
165  virtual void ZoomOut(Double_t factor=0, Double_t offset=0); // *MENU*
166 
167  ClassDef(TAxis,10) //Axis class
168 };
169 
170 ////////////////////////////////////////////////////////////////////////////////
171 /// Center axis labels. If center = kTRUE axis labels will be centered
172 /// (hori axes only) on the bin center default is to center on the primary tick marks
173 /// This option does not make sense if there are more bins than tick marks
174 
175 inline void TAxis::CenterLabels(Bool_t center)
176 {
177  SetBit(kCenterLabels, center);
178 }
179 
180 ////////////////////////////////////////////////////////////////////////////////
181 /// Center axis title. If center = kTRUE axis title will be centered
182 /// default is right adjusted
183 
184 inline void TAxis::CenterTitle(Bool_t center)
185 {
186  SetBit(kCenterTitle, center);
187 }
188 
189 ////////////////////////////////////////////////////////////////////////////////
190 /// Rotate title by 180 degrees. By default the title is drawn right adjusted.
191 /// If rotate is TRUE, the title is left adjusted at the end of the axis and rotated by 180 degrees
192 
193 inline void TAxis::RotateTitle(Bool_t rotate)
194 {
195  SetBit(kRotateTitle, rotate);
196 }
197 
198 ////////////////////////////////////////////////////////////////////////////////
199 /// Sets the decimals flag
200 /// By default, blank characters are stripped, and then the label is correctly aligned.
201 /// If the dot is the last character of the string, it is also stripped, unless this option is specified.
202 
203 inline void TAxis::SetDecimals(Bool_t dot) {
204  SetBit(kDecimals, dot);
205 }
206 
207 ////////////////////////////////////////////////////////////////////////////////
208 /// Set the kMoreLogLabels bit flag
209 /// When this option is selected more labels are drawn when in log scale and there is a small number
210 /// of decades (<3).
211 /// The flag (in fBits) is passed to the drawing function TGaxis::PaintAxis
212 
214 {
215  SetBit(kMoreLogLabels, more);
216 }
217 
218 ////////////////////////////////////////////////////////////////////////////////
219 /// Set the NoExponent flag
220 /// By default, an exponent of the form 10^N is used when the label value are either all very small or very large.
221 /// The flag (in fBits) is passed to the drawing function TGaxis::PaintAxis
222 
223 inline void TAxis::SetNoExponent(Bool_t noExponent)
224 {
225  SetBit(kNoExponent, noExponent);
226 }
227 
228 
229 #endif
230 
TString fTitle
Definition: TNamed.h:33
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to an axis.
Definition: TAxis.cxx:251
virtual Double_t GetBinCenterLog(Int_t bin) const
Return center of bin in log With a log-equidistant binning for a bin with low and up edges...
Definition: TAxis.cxx:487
virtual void SaveAttributes(std::ostream &out, const char *name, const char *subname)
Save axis attributes as C++ statement(s) on output stream out.
Definition: TAxis.cxx:647
Int_t fFirst
Definition: TAxis.h:37
float xmin
Definition: THbookFile.cxx:93
const char * GetBinLabel(Int_t bin) const
Return label for bin.
Definition: TAxis.cxx:426
Int_t GetFirst() const
Return first bin on the axis i.e.
Definition: TAxis.cxx:444
virtual void SetLimits(Double_t xmin, Double_t xmax)
Definition: TAxis.h:154
virtual void SetTimeFormat(const char *format="")
Change the format used for time plotting.
Definition: TAxis.cxx:1002
float Float_t
Definition: RtypesCore.h:53
const char Option_t
Definition: RtypesCore.h:62
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Definition: TAxis.cxx:504
Bool_t GetCenterLabels() const
Definition: TAxis.h:114
unsigned short UShort_t
Definition: RtypesCore.h:36
#define BIT(n)
Definition: Rtypes.h:78
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
Definition: TAxis.cxx:267
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:172
UShort_t fBits2
Definition: TAxis.h:39
Basic string class.
Definition: TString.h:131
virtual void SetTimeOffset(Double_t toffset, Option_t *option="local")
Change the time offset If option = "gmt", set display mode to GMT.
Definition: TAxis.cxx:1028
Bool_t HasBinWithoutLabel() const
this helper function checks if there is a bin without a label if all bins have labels, the axis can / will become alphanumeric
Definition: TAxis.cxx:583
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual TObject * GetParent() const
Definition: TAxis.h:123
virtual void Copy(TObject &axis) const
Copy axis structure to another axis.
Definition: TAxis.cxx:208
void CenterTitle(Bool_t center=kTRUE)
Center axis title.
Definition: TAxis.h:184
Manages histogram axis attributes.
Definition: TAttAxis.h:18
Bool_t CanExtend() const
Definition: TAxis.h:82
void SetNoAlphanumeric(Bool_t noalpha=kTRUE)
Definition: TAxis.h:87
Bool_t GetDecimals() const
Definition: TAxis.h:116
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:694
TAxis()
Default constructor.
Definition: TAxis.cxx:47
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Definition: TAxis.cxx:514
Bool_t GetMoreLogLabels() const
Definition: TAxis.h:120
Double_t fXmax
Definition: TAxis.h:35
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
Definition: TAxis.cxx:928
Double_t GetXmin() const
Definition: TAxis.h:133
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:320
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:34
virtual Bool_t GetTimeDisplay() const
Definition: TAxis.h:126
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
THashList * GetLabels() const
Definition: TAxis.h:117
virtual void SetDrawOption(Option_t *="")
Set drawing option for object.
Definition: TAxis.h:149
virtual void GetCenter(Double_t *center) const
Return an array with the center of all bins.
Definition: TAxis.cxx:539
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
Definition: TAxis.cxx:464
Bool_t IsAlphanumeric()
Definition: TAxis.h:84
virtual void LabelsOption(Option_t *option="h")
Set option(s) to draw axis with labels option can be:
Definition: TAxis.cxx:599
virtual void GetLowEdge(Double_t *edge) const
Return an array with the lod edge of all bins.
Definition: TAxis.cxx:548
TList * GetModifiedLabels() const
Definition: TAxis.h:118
virtual const char * GetTimeFormat() const
Definition: TAxis.h:127
virtual void SetTimeDisplay(Int_t value)
Definition: TAxis.h:161
Bool_t GetRotateTitle() const
Definition: TAxis.h:124
virtual void SetDefaults()
Set axis default values (from TStyle)
Definition: TAxis.cxx:789
A doubly linked list.
Definition: TList.h:44
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
Definition: TAxis.cxx:617
TList * fModLabs
Definition: TAxis.h:44
virtual const char * GetTicks() const
Return the ticks option (see SetTicks)
Definition: TAxis.cxx:572
void ChangeLabel(Int_t labNum=0, Double_t labAngle=-1., Double_t labSize=-1., Int_t labAlign=-1, Int_t labColor=-1, Int_t labFont=-1, TString labText="")
Define new text attributes for the label number "labNum".
Definition: TAxis.cxx:859
void CenterLabels(Bool_t center=kTRUE)
Center axis labels.
Definition: TAxis.h:175
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
Definition: TAxis.cxx:903
TString fTimeFormat
Definition: TAxis.h:41
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
Definition: TAxis.cxx:124
Int_t GetLast() const
Return last bin on the axis i.e.
Definition: TAxis.cxx:455
const char * GetTitle() const
Returns title of object.
Definition: TAxis.h:129
Class to manage histogram axis.
Definition: TAxis.h:30
Int_t GetSize() const
Definition: TArray.h:47
virtual ~TAxis()
Destructor.
Definition: TAxis.cxx:86
void SetCanExtend(Bool_t canExtend)
Definition: TAxis.h:86
virtual void UnZoom()
Reset first & last bin to the full range.
Definition: TAxis.cxx:1114
Bool_t fTimeDisplay
Definition: TAxis.h:40
float xmax
Definition: THbookFile.cxx:93
const Bool_t kFALSE
Definition: RtypesCore.h:88
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
Definition: TAxis.cxx:279
Bool_t CanBeAlphanumeric()
Definition: TAxis.h:83
void SetNoExponent(Bool_t noExponent=kTRUE)
Set the NoExponent flag By default, an exponent of the form 10^N is used when the label value are eit...
Definition: TAxis.h:223
double Double_t
Definition: RtypesCore.h:55
Bool_t GetCenterTitle() const
Definition: TAxis.h:115
EStatusBits
Definition: TObject.h:57
virtual void Delete(Option_t *="")
Delete this object.
Definition: TAxis.h:98
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
Definition: TAxis.cxx:809
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
Definition: TAxis.cxx:557
virtual void SetTicks(Option_t *option="+")
Set ticks orientation.
Definition: TAxis.cxx:954
void SetDecimals(Bool_t dot=kTRUE)
Sets the decimals flag By default, blank characters are stripped, and then the label is correctly ali...
Definition: TAxis.h:203
Array of doubles (64 bits per element).
Definition: TArrayD.h:27
Bool_t IsVariableBinSize() const
Definition: TAxis.h:136
Mother of all ROOT objects.
Definition: TObject.h:37
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Definition: TAxis.cxx:405
Int_t fNbins
Definition: TAxis.h:33
void SetAlphanumeric(Bool_t alphanumeric=kTRUE)
Set axis alphanumeric.
Definition: TAxis.cxx:765
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
Definition: TAxis.cxx:526
void RotateTitle(Bool_t rotate=kTRUE)
Rotate title by 180 degrees.
Definition: TAxis.h:193
void SetMoreLogLabels(Bool_t more=kTRUE)
Set the kMoreLogLabels bit flag When this option is selected more labels are drawn when in log scale ...
Definition: TAxis.h:213
Bool_t GetNoExponent() const
Definition: TAxis.h:122
TAxis & operator=(const TAxis &)
Assignment operator.
Definition: TAxis.cxx:111
TArrayD fXbins
Definition: TAxis.h:36
virtual Int_t FindBin(Double_t x) const
Definition: TAxis.h:103
virtual void SetParent(TObject *obj)
Definition: TAxis.h:157
virtual TObject * DrawClone(Option_t *="") const
Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad...
Definition: TAxis.h:100
Definition: first.py:1
Int_t GetNbins() const
Definition: TAxis.h:121
TObject * fParent
Definition: TAxis.h:42
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
Definition: TAxis.cxx:717
const Bool_t kTRUE
Definition: RtypesCore.h:87
Double_t fXmin
Definition: TAxis.h:34
Double_t GetXmax() const
Definition: TAxis.h:134
Int_t fLast
Definition: TAxis.h:38
char name[80]
Definition: TGX11.cxx:109
virtual void ZoomOut(Double_t factor=0, Double_t offset=0)
Zoom out by a factor of &#39;factor&#39; (default =2) uses previous zoom factor by default Keep center define...
Definition: TAxis.cxx:1186
const TArrayD * GetXbins() const
Definition: TAxis.h:130
THashList * fLabels
Object owning this axis.
Definition: TAxis.h:43
const char * Data() const
Definition: TString.h:364