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;
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 ~TAxis() override;
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 void Copy(TObject &axis) const override;
98 void Delete(Option_t * /*option*/ ="") override { }
99 Int_t DistancetoPrimitive(Int_t px, Int_t py) override;
100 TObject *DrawClone(Option_t * /*option*/ ="") const override {return nullptr;}
101 void ExecuteEvent(Int_t event, Int_t px, Int_t py) override;
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; }
122 Int_t GetNlabels() const;
124 virtual TObject *GetParent() const {return fParent;}
126 virtual const char *GetTicks() const;
127 virtual Bool_t GetTimeDisplay() const {return fTimeDisplay;}
128 virtual const char *GetTimeFormat() const {return fTimeFormat.Data();}
129 virtual const char *GetTimeFormatOnly() const;
130 const char *GetTitle() const override {return fTitle.Data();}
131 const TArrayD *GetXbins() const {return &fXbins;}
132 Int_t GetFirst() const;
133 Int_t GetLast() const;
134 Double_t GetXmin() const {return fXmin;}
135 Double_t GetXmax() const {return fXmax;}
136 virtual void ImportAttributes(const TAxis *axis);
138 // true if axis has variable bin sizes, false otherwise
139 return (fXbins.GetSize() != 0);
140 }
141 virtual void LabelsOption(Option_t *option="h"); // *MENU*
142 void RotateTitle(Bool_t rotate=kTRUE); // *TOGGLE* *GETTER=GetRotateTitle
143 void SaveAttributes(std::ostream &out, const char *name, const char *subname) override;
144 virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax);
145 virtual void Set(Int_t nbins, const Float_t *xbins);
146 virtual void Set(Int_t nbins, const Double_t *xbins);
147 virtual void SetBinLabel(Int_t bin, const char *label);
148 void SetDecimals(Bool_t dot = kTRUE); // *TOGGLE* *GETTER=GetDecimals
149 virtual void SetDefaults();
150 void SetDrawOption(Option_t * /*option*/ ="") override { }
151 void ChangeLabel(Int_t labNum=0, Double_t labAngle = -1.,
152 Double_t labSize = -1., Int_t labAlign = -1,
153 Int_t labColor = -1 , Int_t labFont = -1,
154 TString labText = ""); // *MENU*
155 virtual void SetLimits(Double_t xmin, Double_t xmax) { /* set axis limits */ fXmin = xmin; fXmax = xmax; } // *MENU*
156 void SetMoreLogLabels(Bool_t more=kTRUE); // *TOGGLE* *GETTER=GetMoreLogLabels
157 void SetNoExponent(Bool_t noExponent=kTRUE); // *TOGGLE* *GETTER=GetNoExponent
158 virtual void SetParent(TObject *obj) {fParent = obj;}
159 virtual void SetRange(Int_t first=0, Int_t last=0); // *MENU*
160 virtual void SetRangeUser(Double_t ufirst, Double_t ulast); // *MENU*
161 virtual void SetTicks(Option_t *option="+"); // *MENU*
162 virtual void SetTimeDisplay(Int_t value) {fTimeDisplay = (value != 0);} // *TOGGLE*
163 virtual void SetTimeFormat(const char *format=""); // *MENU*
164 virtual void SetTimeOffset(Double_t toffset, Option_t *option="local");
165 virtual void UnZoom(); // *MENU*
166 virtual void ZoomOut(Double_t factor=0, Double_t offset=0); // *MENU*
167
168 ClassDefOverride(TAxis,10) //Axis class
169};
170
171////////////////////////////////////////////////////////////////////////////////
172/// Center axis labels. If center = kTRUE axis labels will be centered
173/// (horizontal axes only) on the bin center. Default is to center on the primary tick marks
174/// This option does not make sense if there are more bins than tick marks
175
176inline void TAxis::CenterLabels(Bool_t center)
177{
178 SetBit(kCenterLabels, center);
179}
180
181////////////////////////////////////////////////////////////////////////////////
182/// Center axis title. If center = kTRUE axis title will be centered
183/// default is right adjusted
184
185inline void TAxis::CenterTitle(Bool_t center)
186{
187 SetBit(kCenterTitle, center);
188}
189
190////////////////////////////////////////////////////////////////////////////////
191/// Rotate title by 180 degrees. By default the title is drawn right adjusted.
192/// If rotate is TRUE, the title is left adjusted at the end of the axis and rotated by 180 degrees
193
194inline void TAxis::RotateTitle(Bool_t rotate)
195{
196 SetBit(kRotateTitle, rotate);
197}
198
199////////////////////////////////////////////////////////////////////////////////
200/// Sets the decimals flag
201/// By default, blank characters are stripped, and then the label is correctly aligned.
202/// If the dot is the last character of the string, it is also stripped, unless this option is specified.
203
204inline void TAxis::SetDecimals(Bool_t dot) {
205 SetBit(kDecimals, dot);
206}
207
208////////////////////////////////////////////////////////////////////////////////
209/// Set the kMoreLogLabels bit flag
210/// When this option is selected more labels are drawn when in log scale and there is a small number
211/// of decades (<3).
212/// The flag (in fBits) is passed to the drawing function TGaxis::PaintAxis
213
215{
216 SetBit(kMoreLogLabels, more);
217}
218
219////////////////////////////////////////////////////////////////////////////////
220/// Set the NoExponent flag
221/// By default, an exponent of the form 10^N is used when the label value are either all very small or very large.
222/// The flag (in fBits) is passed to the drawing function TGaxis::PaintAxis
223
224inline void TAxis::SetNoExponent(Bool_t noExponent)
225{
226 SetBit(kNoExponent, noExponent);
227}
228
229
230#endif
bool Bool_t
Definition RtypesCore.h:63
unsigned short UShort_t
Definition RtypesCore.h:40
int Int_t
Definition RtypesCore.h:45
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
const char Option_t
Definition RtypesCore.h:66
#define BIT(n)
Definition Rtypes.h:85
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
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
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:1078
virtual void LabelsOption(Option_t *option="h")
Set option(s) to draw axis with labels option can be:
Definition TAxis.cxx:641
virtual void SetDefaults()
Set axis default values (from TStyle)
Definition TAxis.cxx:831
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:204
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
Definition TAxis.cxx:851
void Delete(Option_t *="") override
Delete this object.
Definition TAxis.h:98
Int_t fLast
Last bin to display.
Definition TAxis.h:38
void CenterLabels(Bool_t center=kTRUE)
Center axis labels.
Definition TAxis.h:176
virtual Bool_t GetTimeDisplay() const
Definition TAxis.h:127
Bool_t IsAlphanumeric() const
Definition TAxis.h:84
Bool_t GetRotateTitle() const
Definition TAxis.h:125
Bool_t IsVariableBinSize() const
Definition TAxis.h:137
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:1239
const char * GetTitle() const override
Returns title of object.
Definition TAxis.h:130
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: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
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:214
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:158
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:100
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:1164
THashList * fLabels
List of labels.
Definition TAxis.h:43
const TArrayD * GetXbins() const
Definition TAxis.h:131
Bool_t GetMoreLogLabels() const
Definition TAxis.h:120
void SetCanExtend(Bool_t canExtend)
Definition TAxis.h:86
void Copy(TObject &axis) const override
Copy axis structure to another axis.
Definition TAxis.cxx:216
Double_t GetXmax() const
Definition TAxis.h:135
virtual void SetTicks(Option_t *option="+")
Set ticks orientation.
Definition TAxis.cxx:1004
EStatusBits
TAxis status bits.
Definition TAxis.h:57
@ 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
Bool_t fTimeDisplay
On/off displaying time values instead of numerics.
Definition TAxis.h:40
Bool_t GetNoExponent() const
Definition TAxis.h:123
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
@ 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 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
virtual void SetTimeDisplay(Int_t value)
Definition TAxis.h:162
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:759
Bool_t HasBinWithoutLabel() const
This helper function checks if there is a bin without a label if all bins have labels,...
Definition TAxis.cxx:625
void RotateTitle(Bool_t rotate=kTRUE)
Rotate title by 180 degrees.
Definition TAxis.h:194
void CenterTitle(Bool_t center=kTRUE)
Center axis title.
Definition TAxis.h:185
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:150
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:224
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:689
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:155
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
Definition TAxis.cxx:659
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:807
Double_t GetXmin() const
Definition TAxis.h:134
TAxis & operator=(const TAxis &)
Assignment operator.
Definition TAxis.cxx:118
~TAxis() override
Destructor.
Definition TAxis.cxx:89
TList * GetModifiedLabels() const
Definition TAxis.h:118
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:978
virtual Int_t FindBin(Double_t x) const
Definition TAxis.h:103
virtual const char * GetTimeFormat() const
Definition TAxis.h:128
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
virtual void SetTimeFormat(const char *format="")
Change the format used for time plotting.
Definition TAxis.cxx:1052
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:124
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
Definition TAxis.cxx:952
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:614
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:905
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:201
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition TObject.cxx:774
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:380
Double_t x[n]
Definition legend1.C:17
Definition first.py:1