Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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;
29class TAxisModLab;
30
31class TAxis : public TNamed, public TAttAxis {
32
33private:
34 Int_t fNbins; ///< Number of bins
35 Double_t fXmin; ///< Low edge of first bin
36 Double_t fXmax; ///< Upper edge of last bin
37 TArrayD fXbins; ///< Bin edges array in X
38 Int_t fFirst; ///< First bin to display
39 Int_t fLast; ///< Last bin to display
40 UShort_t fBits2; ///< Second bit status word
41 Bool_t fTimeDisplay; ///< On/off displaying time values instead of numerics
42 TString fTimeFormat; ///< Date&time format, ex: 09/12/99 12:34:00
43 TObject *fParent; ///<! Object owning this axis
44 THashList *fLabels; ///< List of labels
45 TList *fModLabs; ///< List of modified labels
46
47 /// TAxis extra status bits (stored in fBits2)
48 enum {
49 kAlphanumeric = BIT(0), ///< Axis is alphanumeric
50 kCanExtend = BIT(1), ///< Axis can be extended
51 kNotAlpha = BIT(2) ///< Axis is forced to be not alphanumeric
52 };
53
55
56
57 TAxisModLab *FindModLab(Int_t num, Double_t v = 0., Double_t eps = 0.) const;
58
59public:
60 /// TAxis status bits
67 kCenterLabels = BIT(14), ///< Bit 13 is used by TObject
77 };
78
79 TAxis();
81 TAxis(Int_t nbins, const Double_t *xbins);
82 TAxis(const TAxis &axis);
83 ~TAxis() override;
84 TAxis& operator=(const TAxis&);
85
86 Bool_t CanExtend() const { return (fBits2 & kCanExtend); }
89 void SetAlphanumeric(Bool_t alphanumeric = kTRUE);
90 void SetCanExtend(Bool_t canExtend) { fBits2 = canExtend ? (fBits2 | kCanExtend) : (fBits2 & ~kCanExtend); }
91 void SetNoAlphanumeric(Bool_t noalpha = kTRUE) {
92 fBits2 = noalpha ? (fBits2 | kNotAlpha) : (fBits2 & ~kNotAlpha);
93 if (IsAlphanumeric() ) {
96 }
97 }
98 void CenterLabels(Bool_t center=kTRUE);
99 void CenterTitle(Bool_t center=kTRUE);
100 const char *ChooseTimeFormat(Double_t axislength=0);
101 void Copy(TObject &axis) const override;
102 void Delete(Option_t * /*option*/ ="") override { }
103 Int_t DistancetoPrimitive(Int_t px, Int_t py) override;
104 TObject *DrawClone(Option_t * /*option*/ ="") const override {return nullptr;}
105 void ExecuteEvent(Int_t event, Int_t px, Int_t py) override;
106 virtual Int_t FindBin(Double_t x);
107 virtual Int_t FindBin(Double_t x) const { return FindFixBin(x); }
108 virtual Int_t FindBin(const char *label);
109 virtual Int_t FindFixBin(Double_t x) const;
110 virtual Int_t FindFixBin(const char *label) const;
111 virtual Double_t GetBinCenter(Int_t bin) const;
112 virtual Double_t GetBinCenterLog(Int_t bin) const;
113 const char *GetBinLabel(Int_t bin) const;
114 virtual Double_t GetBinLowEdge(Int_t bin) const;
115 virtual Double_t GetBinUpEdge(Int_t bin) const;
116 virtual Double_t GetBinWidth(Int_t bin) const;
117 virtual void GetCenter(Double_t *center) const;
120 Bool_t GetDecimals() const { return TestBit(kDecimals); }
121 THashList *GetLabels() const { return fLabels; }
122 TList *GetModifiedLabels() const { return fModLabs; }
123 virtual void GetLowEdge(Double_t *edge) const;
125 Int_t GetNbins() const { return fNbins; }
126 Int_t GetNlabels() const;
128 virtual TObject *GetParent() const {return fParent;}
130 virtual const char *GetTicks() const;
131 virtual Bool_t GetTimeDisplay() const {return fTimeDisplay;}
132 virtual const char *GetTimeFormat() const {return fTimeFormat.Data();}
133 virtual const char *GetTimeFormatOnly() const;
135 const char *GetTitle() const override {return fTitle.Data();}
136 const TArrayD *GetXbins() const {return &fXbins;}
137 Int_t GetFirst() const;
138 Int_t GetLast() const;
139 Double_t GetXmin() const {return fXmin;}
140 Double_t GetXmax() const {return fXmax;}
141 virtual void ImportAttributes(const TAxis *axis);
143 // true if axis has variable bin sizes, false otherwise
144 return (fXbins.GetSize() != 0);
145 }
146 virtual void LabelsOption(Option_t *option="h"); // *MENU*
147 void RotateTitle(Bool_t rotate=kTRUE); // *TOGGLE* *GETTER=GetRotateTitle
148 void SaveAttributes(std::ostream &out, const char *name, const char *subname) override;
149 virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax);
150 virtual void Set(Int_t nbins, const Float_t *xbins);
151 virtual void Set(Int_t nbins, const Double_t *xbins);
152 virtual void SetBinLabel(Int_t bin, const char *label);
153 void SetDecimals(Bool_t dot = kTRUE); // *TOGGLE* *GETTER=GetDecimals
154 virtual void SetDefaults();
155 void SetDrawOption(Option_t * /*option*/ ="") override { }
156 void ChangeLabel(Int_t labNum=0, Double_t labAngle = -1.,
157 Double_t labSize = -1., Int_t labAlign = -1,
158 Int_t labColor = -1 , Int_t labFont = -1,
159 const TString &labText = ""); // *MENU*
160 void ChangeLabelByValue(Double_t labValue, Double_t labAngle = -1.,
161 Double_t labSize = -1., Int_t labAlign = -1,
162 Int_t labColor = -1 , Int_t labFont = -1,
163 const TString &labText = ""); // *MENU*
164 virtual void SetLimits(Double_t xmin, Double_t xmax) { /* set axis limits */ fXmin = xmin; fXmax = xmax; } // *MENU*
165 void SetMoreLogLabels(Bool_t more=kTRUE); // *TOGGLE* *GETTER=GetMoreLogLabels
166 void SetNoExponent(Bool_t noExponent=kTRUE); // *TOGGLE* *GETTER=GetNoExponent
167 virtual void SetParent(TObject *obj) {fParent = obj;}
168 virtual void SetRange(Int_t first=0, Int_t last=0); // *MENU*
169 virtual void SetRangeUser(Double_t ufirst, Double_t ulast); // *MENU*
170 virtual void SetTicks(Option_t *option="+"); // *MENU*
171 virtual void SetTimeDisplay(Int_t value) {fTimeDisplay = (value != 0);} // *TOGGLE*
172 virtual void SetTimeFormat(const char *format=""); // *MENU*
173 virtual void SetTimeOffset(Double_t toffset, Option_t *option="local");
174 virtual void UnZoom(); // *MENU*
175 virtual void ZoomOut(Double_t factor=0, Double_t offset=0); // *MENU*
176
177 ClassDefOverride(TAxis,10) //Axis class
178};
179
180////////////////////////////////////////////////////////////////////////////////
181/// Center axis labels. If center = kTRUE axis labels will be centered
182/// (horizontal axes only) on the bin center. Default is to center on the primary tick marks
183/// This option does not make sense if there are more bins than tick marks
184
185inline void TAxis::CenterLabels(Bool_t center)
186{
187 SetBit(kCenterLabels, center);
188}
189
190////////////////////////////////////////////////////////////////////////////////
191/// Center axis title. If center = kTRUE axis title will be centered
192/// default is right adjusted
193
194inline void TAxis::CenterTitle(Bool_t center)
195{
196 SetBit(kCenterTitle, center);
197}
198
199////////////////////////////////////////////////////////////////////////////////
200/// Rotate title by 180 degrees. By default the title is drawn right adjusted.
201/// If rotate is TRUE, the title is left adjusted at the end of the axis and rotated by 180 degrees
202
203inline void TAxis::RotateTitle(Bool_t rotate)
204{
205 SetBit(kRotateTitle, rotate);
206}
207
208////////////////////////////////////////////////////////////////////////////////
209/// Sets the decimals flag
210/// By default, blank characters are stripped, and then the label is correctly aligned.
211/// If the dot is the last character of the string, it is also stripped, unless this option is specified.
212
213inline void TAxis::SetDecimals(Bool_t dot) {
214 SetBit(kDecimals, dot);
215}
216
217////////////////////////////////////////////////////////////////////////////////
218/// Set the kMoreLogLabels bit flag
219/// When this option is selected more labels are drawn when in log scale and there is a small number
220/// of decades (<3).
221/// The flag (in fBits) is passed to the drawing function TGaxis::PaintAxis
222
224{
225 SetBit(kMoreLogLabels, more);
226}
227
228////////////////////////////////////////////////////////////////////////////////
229/// Set the NoExponent flag
230/// By default, an exponent of the form 10^N is used when the label value are either all very small or very large.
231/// The flag (in fBits) is passed to the drawing function TGaxis::PaintAxis
232
233inline void TAxis::SetNoExponent(Bool_t noExponent)
234{
235 SetBit(kNoExponent, noExponent);
236}
237
238
239#endif
bool Bool_t
Definition RtypesCore.h:63
unsigned short UShort_t
Definition RtypesCore.h:40
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
double Double_t
Definition RtypesCore.h:59
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
const char Option_t
Definition RtypesCore.h:66
#define BIT(n)
Definition Rtypes.h:90
#define ClassDefOverride(name, id)
Definition Rtypes.h:346
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
char name[80]
Definition TGX11.cxx:110
float xmin
float xmax
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
TAxis helper class used to store the modified labels.
Definition TAxisModLab.h:21
Class to manage histogram axis.
Definition TAxis.h:31
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:1183
virtual void LabelsOption(Option_t *option="h")
Set option(s) to draw axis with labels option can be:
Definition TAxis.cxx:662
virtual void SetDefaults()
Set axis default values (from TStyle)
Definition TAxis.cxx:866
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:213
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
Definition TAxis.cxx:886
void Delete(Option_t *="") override
Delete this object.
Definition TAxis.h:102
Int_t fLast
Last bin to display.
Definition TAxis.h:39
void CenterLabels(Bool_t center=kTRUE)
Center axis labels.
Definition TAxis.h:185
virtual Bool_t GetTimeDisplay() const
Definition TAxis.h:131
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, const TString &labText="")
Define new text attributes for the label number "labNum".
Definition TAxis.cxx:961
Bool_t IsAlphanumeric() const
Definition TAxis.h:88
Bool_t GetRotateTitle() const
Definition TAxis.h:129
Bool_t IsVariableBinSize() const
Definition TAxis.h:142
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:1344
const char * GetTitle() const override
Returns title of object.
Definition TAxis.h:135
Int_t GetNlabels() const
Return the number of axis labels.
Definition TAxis.cxx:581
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:43
Double_t fXmax
Upper edge of last bin.
Definition TAxis.h:36
void SetNoAlphanumeric(Bool_t noalpha=kTRUE)
Definition TAxis.h:91
Bool_t GetCenterTitle() const
Definition TAxis.h:119
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to an axis.
Definition TAxis.cxx:265
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:223
Bool_t CanExtend() const
Definition TAxis.h:86
TArrayD fXbins
Bin edges array in X.
Definition TAxis.h:37
virtual void SetParent(TObject *obj)
Definition TAxis.h:167
TAxis()
Default constructor.
Definition TAxis.cxx:50
TObject * DrawClone(Option_t *="") const override
Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1).
Definition TAxis.h:104
UInt_t GetTimeOffset()
Return the time offset in GMT.
Definition TAxis.cxx:614
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
Definition TAxis.cxx:281
virtual void UnZoom()
Reset first & last bin to the full range.
Definition TAxis.cxx:1269
THashList * fLabels
List of labels.
Definition TAxis.h:44
const TArrayD * GetXbins() const
Definition TAxis.h:136
Bool_t GetMoreLogLabels() const
Definition TAxis.h:124
void SetCanExtend(Bool_t canExtend)
Definition TAxis.h:90
void Copy(TObject &axis) const override
Copy axis structure to another axis.
Definition TAxis.cxx:216
Double_t GetXmax() const
Definition TAxis.h:140
virtual void SetTicks(Option_t *option="+")
Set ticks orientation.
Definition TAxis.cxx:1109
EStatusBits
TAxis status bits.
Definition TAxis.h:61
@ kTickMinus
Definition TAxis.h:64
@ kLabelsUp
Definition TAxis.h:74
@ kCenterTitle
Definition TAxis.h:66
@ kRotateTitle
Definition TAxis.h:68
@ kNoExponent
Definition TAxis.h:70
@ kIsInteger
Definition TAxis.h:75
@ kMoreLogLabels
Definition TAxis.h:76
@ kTickPlus
Definition TAxis.h:63
@ kLabelsDown
Definition TAxis.h:73
@ kPalette
Definition TAxis.h:69
@ kLabelsHori
Definition TAxis.h:71
@ kAxisRange
Definition TAxis.h:65
@ kDecimals
Definition TAxis.h:62
@ kCenterLabels
Bit 13 is used by TObject.
Definition TAxis.h:67
@ kLabelsVert
Definition TAxis.h:72
Bool_t fTimeDisplay
On/off displaying time values instead of numerics.
Definition TAxis.h:41
Bool_t GetNoExponent() const
Definition TAxis.h:127
TList * fModLabs
List of modified labels.
Definition TAxis.h:45
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:34
@ kAlphanumeric
Axis is alphanumeric.
Definition TAxis.h:49
@ kNotAlpha
Axis is forced to be not alphanumeric.
Definition TAxis.h:51
@ kCanExtend
Axis can be extended.
Definition TAxis.h:50
virtual void SetTimeDisplay(Int_t value)
Definition TAxis.h:171
Double_t fXmin
Low edge of first bin.
Definition TAxis.h:35
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
Definition TAxis.cxx:794
Bool_t HasBinWithoutLabel() const
This helper function checks if there is a bin without a label if all bins have labels,...
Definition TAxis.cxx:646
void RotateTitle(Bool_t rotate=kTRUE)
Rotate title by 180 degrees.
Definition TAxis.h:203
TAxisModLab * FindModLab(Int_t num, Double_t v=0., Double_t eps=0.) const
Search for axis modifier by index or value.
Definition TAxis.cxx:922
void CenterTitle(Bool_t center=kTRUE)
Center axis title.
Definition TAxis.h:194
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:132
void SetDrawOption(Option_t *="") override
Set drawing option for object.
Definition TAxis.h:155
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:233
void SaveAttributes(std::ostream &out, const char *name, const char *subname) override
Save axis attributes as C++ statement(s) on output stream out.
Definition TAxis.cxx:710
Bool_t GetDecimals() const
Definition TAxis.h:120
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:164
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
Definition TAxis.cxx:680
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
Definition TAxis.cxx:599
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:842
Double_t GetXmin() const
Definition TAxis.h:139
TAxis & operator=(const TAxis &)
Assignment operator.
Definition TAxis.cxx:118
~TAxis() override
Destructor.
Definition TAxis.cxx:89
TList * GetModifiedLabels() const
Definition TAxis.h:122
Int_t GetNbins() const
Definition TAxis.h:125
void ChangeLabelByValue(Double_t labValue, Double_t labAngle=-1., Double_t labSize=-1., Int_t labAlign=-1, Int_t labColor=-1, Int_t labFont=-1, const TString &labText="")
Define new text attributes for the label value "labValue".
Definition TAxis.cxx:1009
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:1080
virtual Int_t FindBin(Double_t x) const
Definition TAxis.h:107
virtual const char * GetTimeFormat() const
Definition TAxis.h:132
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:118
virtual void SetTimeFormat(const char *format="")
Change the format used for time plotting.
Definition TAxis.cxx:1157
Bool_t CanBeAlphanumeric()
Definition TAxis.h:87
TString fTimeFormat
Date&time format, ex: 09/12/99 12:34:00.
Definition TAxis.h:42
virtual TObject * GetParent() const
Definition TAxis.h:128
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
Definition TAxis.cxx:1052
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:634
UShort_t fBits2
Second bit status word.
Definition TAxis.h:40
Int_t fFirst
First bin to display.
Definition TAxis.h:38
THashList * GetLabels() const
Definition TAxis.h:121
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:38
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:41
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition TObject.h:199
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition TObject.cxx:798
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376
Double_t x[n]
Definition legend1.C:17