Logo ROOT  
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
28class THashList;
29
30class TAxis : public TNamed, public TAttAxis {
31
32private:
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
54
55public:
56 /// TAxis status bits
63 kCenterLabels = BIT(14), ///< Bit 13 is used by TObject
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); }
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/// (horizontal 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
175inline 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
184inline 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
193inline 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
203inline 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
223inline void TAxis::SetNoExponent(Bool_t noExponent)
224{
225 SetBit(kNoExponent, noExponent);
226}
227
228
229#endif
unsigned short UShort_t
Definition: RtypesCore.h:40
int Int_t
Definition: RtypesCore.h:45
const Bool_t kFALSE
Definition: RtypesCore.h:101
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
float Float_t
Definition: RtypesCore.h:57
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:325
#define BIT(n)
Definition: Rtypes.h:85
char name[80]
Definition: TGX11.cxx:110
float xmin
Definition: THbookFile.cxx:95
float xmax
Definition: THbookFile.cxx:95
Array of doubles (64 bits per element).
Definition: TArrayD.h:27
Int_t GetSize() const
Definition: TArray.h:47
Manages histogram axis attributes.
Definition: TAttAxis.h:18
Class to manage histogram axis.
Definition: TAxis.h:30
virtual void GetCenter(Double_t *center) const
Return an array with the center of all bins.
Definition: TAxis.cxx:553
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:1046
virtual void LabelsOption(Option_t *option="h")
Set option(s) to draw axis with labels option can be:
Definition: TAxis.cxx:613
virtual void SetDefaults()
Set axis default values (from TStyle)
Definition: TAxis.cxx:803
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
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
Definition: TAxis.cxx:823
Int_t fLast
Last bin to display.
Definition: TAxis.h:38
void CenterLabels(Bool_t center=kTRUE)
Center axis labels.
Definition: TAxis.h:175
virtual Bool_t GetTimeDisplay() const
Definition: TAxis.h:126
Bool_t IsAlphanumeric() const
Definition: TAxis.h:84
Bool_t GetRotateTitle() const
Definition: TAxis.h:124
Bool_t IsVariableBinSize() const
Definition: TAxis.h:136
virtual void ZoomOut(Double_t factor=0, Double_t offset=0)
Zoom out by a factor of 'factor' (default =2) uses previous zoom factor by default Keep center define...
Definition: TAxis.cxx:1207
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
Definition: TAxis.cxx:478
TObject * fParent
! Object owning this axis
Definition: TAxis.h:42
Double_t fXmax
Upper edge of last bin.
Definition: TAxis.h:35
void SetNoAlphanumeric(Bool_t noalpha=kTRUE)
Definition: TAxis.h:87
Bool_t GetCenterTitle() const
Definition: TAxis.h:115
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 CanExtend() const
Definition: TAxis.h:82
TArrayD fXbins
Bin edges array in X.
Definition: TAxis.h:36
virtual void SetParent(TObject *obj)
Definition: TAxis.h:157
TAxis()
Default constructor.
Definition: TAxis.cxx:49
virtual void UnZoom()
Reset first & last bin to the full range.
Definition: TAxis.cxx:1132
THashList * fLabels
List of labels.
Definition: TAxis.h:43
const TArrayD * GetXbins() const
Definition: TAxis.h:130
Bool_t GetMoreLogLabels() const
Definition: TAxis.h:120
void SetCanExtend(Bool_t canExtend)
Definition: TAxis.h:86
virtual void SetDrawOption(Option_t *="")
Set drawing option for object.
Definition: TAxis.h:149
Double_t GetXmax() const
Definition: TAxis.h:134
virtual void SetTicks(Option_t *option="+")
Set ticks orientation.
Definition: TAxis.cxx:972
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:661
@ kTickMinus
Definition: TAxis.h:60
@ kLabelsUp
Definition: TAxis.h:70
@ kCenterTitle
Definition: TAxis.h:62
@ kRotateTitle
Definition: TAxis.h:64
@ kNoExponent
Definition: TAxis.h:66
@ kIsInteger
Definition: TAxis.h:71
@ kMoreLogLabels
Definition: TAxis.h:72
@ kTickPlus
Definition: TAxis.h:59
@ kLabelsDown
Definition: TAxis.h:69
@ kPalette
Definition: TAxis.h:65
@ kLabelsHori
Definition: TAxis.h:67
@ kAxisRange
Definition: TAxis.h:61
@ kDecimals
Definition: TAxis.h:58
@ kCenterLabels
Bit 13 is used by TObject.
Definition: TAxis.h:63
@ kLabelsVert
Definition: TAxis.h:68
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
Definition: TAxis.cxx:281
Bool_t fTimeDisplay
On/off displaying time values instead of numerics.
Definition: TAxis.h:40
Bool_t GetNoExponent() const
Definition: TAxis.h:122
TList * fModLabs
List of modified labels.
Definition: TAxis.h:44
const char * GetBinLabel(Int_t bin) const
Return label for bin.
Definition: TAxis.cxx:440
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
Definition: TAxis.cxx:293
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Definition: TAxis.cxx:518
Int_t fNbins
Number of bins.
Definition: TAxis.h:33
@ kAlphanumeric
Axis is alphanumeric.
Definition: TAxis.h:48
@ kNotAlpha
Axis is forced to be not alphanumeric.
Definition: TAxis.h:50
@ kCanExtend
Axis can be extended.
Definition: TAxis.h:49
virtual void SetTimeDisplay(Int_t value)
Definition: TAxis.h:161
Double_t fXmin
Low edge of first bin.
Definition: TAxis.h:34
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
Definition: TAxis.cxx:731
Bool_t HasBinWithoutLabel() const
This helper function checks if there is a bin without a label if all bins have labels,...
Definition: TAxis.cxx:597
void RotateTitle(Bool_t rotate=kTRUE)
Rotate title by 180 degrees.
Definition: TAxis.h:193
void CenterTitle(Bool_t center=kTRUE)
Center axis title.
Definition: TAxis.h:184
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Definition: TAxis.cxx:419
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:126
virtual void Copy(TObject &axis) const
Copy axis structure to another axis.
Definition: TAxis.cxx:210
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
Bool_t GetDecimals() const
Definition: TAxis.h:116
Int_t GetLast() const
Return last bin on the axis i.e.
Definition: TAxis.cxx:469
virtual void SetLimits(Double_t xmin, Double_t xmax)
Definition: TAxis.h:154
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
Definition: TAxis.cxx:631
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
Definition: TAxis.cxx:571
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:501
void SetAlphanumeric(Bool_t alphanumeric=kTRUE)
Set axis alphanumeric.
Definition: TAxis.cxx:779
Double_t GetXmin() const
Definition: TAxis.h:133
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to an axis.
Definition: TAxis.cxx:265
TAxis & operator=(const TAxis &)
Assignment operator.
Definition: TAxis.cxx:113
TList * GetModifiedLabels() const
Definition: TAxis.h:118
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
Int_t GetNbins() const
Definition: TAxis.h:121
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates, that is,...
Definition: TAxis.cxx:946
virtual Int_t FindBin(Double_t x) const
Definition: TAxis.h:103
virtual const char * GetTimeFormat() const
Definition: TAxis.h:127
virtual void GetLowEdge(Double_t *edge) const
Return an array with the low edge of all bins.
Definition: TAxis.cxx:562
Bool_t GetCenterLabels() const
Definition: TAxis.h:114
const char * GetTitle() const
Returns title of object.
Definition: TAxis.h:129
virtual void SetTimeFormat(const char *format="")
Change the format used for time plotting.
Definition: TAxis.cxx:1020
virtual ~TAxis()
Destructor.
Definition: TAxis.cxx:88
Bool_t CanBeAlphanumeric()
Definition: TAxis.h:83
TString fTimeFormat
Date&time format, ex: 09/12/99 12:34:00.
Definition: TAxis.h:41
virtual TObject * GetParent() const
Definition: TAxis.h:123
virtual void Delete(Option_t *="")
Delete this object.
Definition: TAxis.h:98
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
Definition: TAxis.cxx:920
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
Definition: TAxis.cxx:540
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Definition: TAxis.cxx:528
Int_t GetFirst() const
Return first bin on the axis i.e.
Definition: TAxis.cxx:458
virtual const char * GetTicks() const
Return the ticks option (see SetTicks)
Definition: TAxis.cxx:586
UShort_t fBits2
Second bit status word.
Definition: TAxis.h:39
Int_t fFirst
First bin to display.
Definition: TAxis.h:37
THashList * GetLabels() const
Definition: TAxis.h:117
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:873
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:34
A doubly linked list.
Definition: TList.h:44
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
TString fTitle
Definition: TNamed.h:33
Mother of all ROOT objects.
Definition: TObject.h:37
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:187
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:696
EStatusBits
Definition: TObject.h:57
Basic string class.
Definition: TString.h:136
const char * Data() const
Definition: TString.h:369
Double_t x[n]
Definition: legend1.C:17
Definition: first.py:1
const double xbins[xbins_n]