107 axis.TAxis::Copy(*
this);
116 axis.TAxis::Copy(*
this);
129 const char *formatstr =
nullptr;
130 Int_t reasformat = 0;
136 length =
gPad->GetUxmax() -
gPad->GetUxmin();
148 n = ndiv - (ndiv/100)*100;
156 awidth /= 60; reasformat = 2;
159 awidth /=60; reasformat = 3;
162 awidth /= 24; reasformat = 4;
164 if (awidth>=15.218425) {
165 awidth /= 30.43685; reasformat = 5;
168 awidth /= 12; reasformat = 6;
170 awidth /= 12; reasformat = 7;
179 switch (reasformat) {
190 formatstr =
"%d-%Hh";
196 formatstr =
"%d/%m/%y";
199 formatstr =
"%d/%m/%y";
252 copyModLabel->
SetUniqueID(modlabel->GetUniqueID());
279 gPad->ExecuteEventAxis(event,px,py,
this);
299 if (
IsAlphanumeric() &&
gDebug)
Info(
"FindBin",
"Numeric query on alphanumeric axis - Sorting the bins or extending the axes / rebinning can alter the correspondence between the label and the bin interval.");
302 if (
fParent ==
nullptr)
return bin;
306 }
else if ( !(
x <
fXmax)) {
308 if (
fParent ==
nullptr)
return bin;
315 const int approxBin = (
x-
fXmin) / width;
316 bin = 1 + approxBin - (
x <
fXmin + width*approxBin) + (
fXmin + width*(approxBin+1) <=
x);
368 Info(
"FindBin",
"Label %s is not in the list and the axis is not alphanumeric - ignore it",label);
372 Info(
"FindBin",
"Label %s not in the list. It will be added to the histogram",label);
427 }
else if ( !(
x <
fXmax)) {
432 const int approxBin = (
x-
fXmin) / width;
433 bin = 1 + approxBin - (
x <
fXmin + width*approxBin) + (
fXmin + width*(approxBin+1) <=
x);
447 if (bin <= 0 || bin >
fNbins)
return "";
452 if (binid == bin)
return obj->
GetName();
487 return fXmin + (bin - 0.5) * binwidth;
490 return fXbins.fArray[bin-1] + 0.5*binwidth;
510 low =
fXmin + (bin-1) * binwidth;
513 low =
fXbins.fArray[bin-1];
526 return fXmin + (bin-1) * binwidth;
536 return fXmin + bin*binwidth;
538 return fXbins.fArray[bin];
548 if (
fNbins <= 0)
return 0;
613 return timeformat.
Data();
623 Warning(
"GetGMTimeOffset",
"Time format is not set!");
627 if (stime.
Length() != 19) {
628 Warning(
"GetGMTimeOffset",
"Bad time format!");
670 Warning(
"Sort",
"Cannot sort. No labels");
675 Error(
"Sort",
"Axis has no parent");
722 out << prefix <<
"SetTimeDisplay(1);\n";
723 out << prefix <<
"SetTimeFormat(\"" <<
GetTimeFormat() <<
"\");\n";
727 while (
auto obj =
static_cast<TObjString *
>(next())) {
728 out << prefix <<
"SetBinLabel(" << obj->GetUniqueID() <<
", \""
734 out << prefix <<
"SetRange(" <<
fFirst <<
", " <<
fLast <<
");\n";
737 out << prefix <<
"SetBit(TAxis::kLabelsHori);\n";
740 out << prefix <<
"SetBit(TAxis::kLabelsVert);\n";
743 out << prefix <<
"SetBit(TAxis::kLabelsDown);\n";
746 out << prefix <<
"SetBit(TAxis::kLabelsUp);\n";
749 out << prefix <<
"CenterLabels(true);\n";
752 out << prefix <<
"CenterTitle(true);\n";
755 out << prefix <<
"RotateTitle(true);\n";
758 out << prefix <<
"SetDecimals();\n";
761 out << prefix <<
"SetMoreLogLabels();\n";
764 out << prefix <<
"SetNoExponent();\n";
768 while (
auto ml =
static_cast<TAxisModLab *
>(next())) {
769 if (ml->GetLabNum() == 0)
770 out << prefix <<
"ChangeLabelByValue(" << ml->GetLabValue();
772 out << prefix <<
"ChangeLabel(" << ml->GetLabNum();
773 out <<
", " << ml->GetAngle() <<
", " << ml->GetSize() <<
", " << ml->GetAlign() <<
", "
793 if (!std::isfinite(xlow) || !std::isfinite(xup))
794 Error(
"TAxis::Set",
"Axis limits need to be finite numbers");
812 for (bin = 0; bin <=
fNbins; bin++) {
813 if (!std::isfinite(xbins[bin])) {
814 Error(
"TAxis::Set",
"Bin edges need to be finite numbers. Use a large number instead.");
816 fXbins.fArray[bin] = xbins[bin];
818 for (bin=1; bin<=
fNbins; bin++)
820 Error(
"TAxis::Set",
"bin edges must be in increasing order");
834 for (bin=0; bin<=
fNbins; bin++)
835 fXbins.fArray[bin] = xbins[bin];
836 for (bin=1; bin<=
fNbins; bin++)
838 Error(
"TAxis::Set",
"bin edges must be in increasing order");
862 if (s[0] != 0. &&
gDebug > 0)
863 Info(
"SetAlphanumeric",
"Cannot switch axis %s of histogram %s to alphanumeric: it has non-zero content",
GetName(),
h->GetName());
895 if (bin <= 0 || bin >
fNbins) {
896 Error(
"SetBinLabel",
"Illegal bin number: %d",bin);
934 if (ml->GetLabNum() != num)
937 if ((num != 0) || (
TMath::Abs(
v - ml->GetLabValue()) <= eps))
1067 if (last < first || (first < 0 && last < 0) ||
1068 (first > nCells && last > nCells) || (first == 0 && last == 0)
1074 fFirst = std::max(first, 0);
1075 fLast = std::min(last, nCells);
1092 if (!strstr(
GetName(),
"xaxis")) {
1169 if (timeformat.
Index(
"%F")>=0 || timeformat.
IsNull()) {
1203 timeoff = (time_t)((
Long_t)(toffset));
1206 utctis = gmtime(&timeoff);
1208 strftime(tmp,20,
"%Y-%m-%d %H:%M:%S",utctis);
1280 Warning(
"TAxis::UnZoom",
"Cannot UnZoom if gPad does not exist. Did you mean to draw the TAxis first?");
1288 if (!strstr(
GetName(),
"xaxis")) {
1291 if (strstr(
GetName(),
"zaxis")) {
1298 if (strcmp(hobj1->
GetName(),
"hframe") == 0 ) {
1313 TIter next(
gPad->GetListOfPrimitives());
1315 while ((obj= next())) {
1318 if (hobj == hobj1)
continue;
1319 if (!strstr(
GetName(),
"xaxis")) {
1321 if (strstr(
GetName(),
"zaxis")) {
1330 if (strcmp(hobj->
GetName(),
"hframe") == 0 ) {
1355 if (factor <= 0) factor = 2;
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
int Int_t
Signed integer 4 bytes (int).
short Version_t
Class version identifier (short).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
float Float_t
Float 4 bytes (float).
const char Option_t
Option string (const char).
virtual Color_t GetTitleColor() const
virtual Color_t GetLabelColor() const
Int_t fNdivisions
Number of divisions(10000*n3 + 100*n2 + n1).
virtual Int_t GetNdivisions() const
virtual Color_t GetAxisColor() const
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
virtual Style_t GetTitleFont() const
virtual Float_t GetLabelOffset() const
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
Set color of the line axis and tick marks.
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels.
virtual Style_t GetLabelFont() const
virtual void SetTitleFont(Style_t font=62)
Set the title font.
virtual void SetLabelOffset(Float_t offset=0.005)
Set distance between the axis and the labels.
virtual void SetLabelFont(Style_t font=62)
Set labels' font.
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title.
virtual void SaveAttributes(std::ostream &out, const char *name, const char *subname)
Save axis attributes as C++ statement(s) on output stream out.
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
virtual Float_t GetTitleSize() const
virtual void Streamer(TBuffer &)
Stream an object of class TAttAxis.
virtual Float_t GetLabelSize() const
virtual Float_t GetTickLength() const
virtual void ResetAttAxis(Option_t *option="")
Reset axis attributes.
virtual Float_t GetTitleOffset() const
virtual void SetTickLength(Float_t length=0.03)
Set tick mark length.
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis.
void Copy(TAttAxis &attaxis) const
Copy of the object.
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels.
TAxis helper class used to store the modified labels.
void SetColor(Int_t c=-1)
Set modified label color.
void SetSize(Double_t s=-1.)
Set modified label size.
void SetFont(Int_t f=-1)
Set modified label font.
void SetText(TString t="")
Set modified label text.
void SetLabValue(Double_t v=0.)
Set modified label value.
void SetAlign(Int_t a=-1)
Set modified label alignment.
void SetLabNum(Int_t n=0)
Set modified label number.
void SetAngle(Double_t a=-1.)
Set modified label angle.
virtual void GetCenter(Double_t *center) const
Return an array with the center of all bins.
virtual void SetTimeOffset(Double_t toffset, Option_t *option="local")
Change the time offset If option = "gmt", set display mode to GMT.
virtual void LabelsOption(Option_t *option="h")
Set option(s) to draw axis with labels option can be:
virtual void SetDefaults()
Set axis default values (from TStyle).
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
Int_t fLast
Last bin to display.
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".
Bool_t IsAlphanumeric() const
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...
const char * GetTitle() const override
Returns title of object.
Int_t GetNlabels() const
Return the number of axis labels.
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
TObject * fParent
! Object owning this axis
Double_t fXmax
Upper edge of last bin.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to an axis.
TArrayD fXbins
Bin edges array in X.
TAxis()
Default constructor.
UInt_t GetTimeOffset()
Return the time offset in GMT.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
virtual void UnZoom()
Reset first & last bin to the full range.
THashList * fLabels
List of labels.
void SetCanExtend(Bool_t canExtend)
void Copy(TObject &axis) const override
Copy axis structure to another axis.
@ kAlphanumeric
Axis is alphanumeric.
virtual void SetTicks(Option_t *option="+")
Set ticks orientation.
@ kCenterLabels
Bit 13 is used by TObject.
Bool_t fTimeDisplay
On/off displaying time values instead of numerics.
TList * fModLabs
List of modified labels.
const char * GetBinLabel(Int_t bin) const
Return label for bin.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t fNbins
Number of bins.
Double_t fXmin
Low edge of first bin.
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
Bool_t HasBinWithoutLabel() const
This helper function checks if there is a bin without a label if all bins have labels,...
TAxisModLab * FindModLab(Int_t num, Double_t v=0., Double_t eps=0.) const
Search for axis modifier by index or value.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
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...
void SaveAttributes(std::ostream &out, const char *name, const char *subname) override
Save axis attributes as C++ statement(s) on output stream out.
TClass * IsA() const override
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void ImportAttributes(const TAxis *axis)
Copy axis attributes to this.
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
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,...
void SetAlphanumeric(Bool_t alphanumeric=kTRUE)
Set axis alphanumeric.
void Streamer(TBuffer &) override
Stream an object of class TAxis.
TAxis & operator=(const TAxis &)
Assignment operator.
~TAxis() override
Destructor.
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".
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,...
virtual const char * GetTimeFormat() const
virtual void GetLowEdge(Double_t *edge) const
Return an array with the low edge of all bins.
virtual void SetTimeFormat(const char *format="")
Change the format used for time plotting.
Bool_t CanBeAlphanumeric()
TString fTimeFormat
Date&time format, ex: 09/12/99 12:34:00.
virtual TObject * GetParent() const
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Int_t GetFirst() const
Return first bin on the axis i.e.
virtual const char * GetTicks() const
Return the ticks option (see SetTicks).
UShort_t fBits2
Second bit status word.
Int_t fFirst
First bin to display.
Buffer base class used for serializing objects.
virtual Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr)=0
virtual Int_t ReadArray(Bool_t *&b)=0
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=nullptr)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
static TString SavePrimitiveColor(Int_t ci)
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
TH1 is the base class of all histogram classes in ROOT.
virtual Double_t GetMinimumStored() const
virtual Int_t GetDimension() const
@ kIsZoomed
Bit set when zooming on Y axis.
virtual void SetMaximum(Double_t maximum=-1111)
virtual void SetMinimum(Double_t minimum=-1111)
@ kNstat
Size of statistics data (up to TProfile3D).
virtual Double_t GetMaximumStored() const
static void Optimize(Double_t A1, Double_t A2, Int_t nold, Double_t &BinLow, Double_t &BinHigh, Int_t &nbins, Double_t &BWID, Option_t *option="")
Static function to compute reasonable axis limits.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
void Add(TObject *obj) override
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
void Copy(TObject &named) const override
Copy this to obj.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
void Streamer(TBuffer &) override
Stream an object of class TObject.
Collectable string class.
void SetString(const char *s)
const char * GetName() const override
Returns name of object.
Bool_t TestBit(UInt_t f) const
virtual UInt_t GetUniqueID() const
Return the unique object id.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
TObject()
TObject constructor.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
void ToLower()
Change string to lower-case.
TString & ReplaceSpecialCppChars()
Find special characters which are typically used in printf() calls and replace them by appropriate es...
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Floor(Double_t x)
Rounds x downward, returning the largest integral value that is not greater than x.
Double_t Sqrt(Double_t x)
Returns the square root of x.
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.