ROOT
6.06/09
Reference Guide
|
A TAxisGrow that has a label assigned to each bin and a bin width of 1.
While filling still works through coordinates (i.e. arrays of doubles), TAxisLabels allows to convert a string to a bin number or the bin's coordinate center. The number of labels and the number of bins reported by TAxisGrow might differ: the TAxisGrow will only grow when seeing a Fill(), while the TAxisLabels will add a new label whenever GetBinCenter()
is called.
Implementation details: Filling happens often; GetBinCenter() needs to be fast. Thus the unordered_map. The painter needs the reverse: it wants the label for bin 0, bin 1 etc. The axis should only store the bin labels once; referencing them is (due to re-allocation, hashing etc) non-trivial. So instead, build a vector<string_view> for the few times the axis needs to be painted.
Public Member Functions | |
TAxisLabels (const std::vector< std::string_view > &labels) | |
Construct a TAxisLables from a vector of string_view s. More... | |
TAxisLabels (const std::vector< std::string > &labels) | |
Construct a TAxisLables from a vector of string s. More... | |
int | GetBinIndex (const std::string &label) |
Get the bin index with label. More... | |
double | GetBinCenter (const std::string &label) |
Get the center of the bin with label. More... | |
std::vector< std::string_view > | GetBinLabels () const |
Build a vector of labels. The position in the vector defines the label's bin. More... | |
Public Member Functions inherited from ROOT::TAxisGrow | |
constexpr | TAxisGrow (int nbins, double low, double high) noexcept |
Initialize a TAxisGrow. More... | |
int | Grow (int toBin) |
Grow this axis to make the "virtual bin" toBin in-range. More... | |
constexpr bool | CanGrow () const |
This axis kind can increase its range. More... | |
Public Member Functions inherited from ROOT::TAxisEquidistant | |
TAxisEquidistant ()=default | |
constexpr | TAxisEquidistant (int nbins, double low, double high) noexcept |
Initialize a TAxisEquidistant. More... | |
constexpr int | FindBin (double x) const noexcept |
Find the bin index for the given coordinate. More... | |
double | GetMinimum () const noexcept |
Get the low end of the axis range. More... | |
double | GetMaximum () const noexcept |
Get the high end of the axis range. More... | |
double | GetBinWidth () const noexcept |
Get the width of the bins. More... | |
double | GetInverseBinWidth () const noexcept |
Get the inverse of the width of the bins. More... | |
double | GetBinCenter (int bin) const noexcept |
Get the bin center for the given bin index. More... | |
double | GetBinFrom (int bin) const noexcept |
Get the low bin border for the given bin index. More... | |
double | GetBinTo (int bin) const noexcept |
Get the high bin border for the given bin index. More... | |
int | GetBinIndexForLowEdge (double x) const noexcept |
If the coordinate x is a bin low edge (within 1E-6 of the coordinate), return the bin for which this is a low edge. More... | |
Public Member Functions inherited from ROOT::TAxisBase | |
constexpr | TAxisBase (int nbins) noexcept |
Construct a TAxisBase. More... | |
constexpr int | GetNBinsNoOver () const noexcept |
Get the number of bins, excluding under- and overflow. More... | |
constexpr int | GetNBins () const noexcept |
Get the number of bins, including under- and overflow. More... | |
constexpr int | GetUnderflowBin () const noexcept |
Get the bin index for the underflow bin. More... | |
constexpr int | GetOverflowBin () const noexcept |
Get the bin index for the underflow bin. More... | |
constexpr bool | IsUnderflowBin (int bin) const noexcept |
Whether the bin index is referencing a bin lower than the axis range. More... | |
constexpr bool | IsOverflowBin (int bin) const noexcept |
Whether the bin index is referencing a bin higher than the axis range. More... | |
const_iterator | begin () const noexcept |
Get a const_iterator pointing to the first non-underflow bin. More... | |
const_iterator | begin_with_underflow () const noexcept |
Get a const_iterator pointing the underflow bin. More... | |
const_iterator | end () const noexcept |
Get a const_iterator pointing right beyond the last non-overflow bin (i.e. More... | |
const_iterator | end_with_overflow () const noexcept |
Get a const_iterator pointing right beyond the overflow bin. More... | |
Private Attributes | |
std::unordered_map< std::string, int > | fLabelsIndex |
Map of label (view on fLabels 's elements) to bin index. More... | |
Additional Inherited Members | |
Public Types inherited from ROOT::TAxisBase | |
enum | EFindStatus { EFindStatus::kCanGrow, EFindStatus::kValid } |
Status of FindBin(x) More... | |
Static Public Member Functions inherited from ROOT::TAxisEquidistant | |
static constexpr bool | CanGrow () noexcept |
This axis cannot grow. More... | |
Static Public Attributes inherited from ROOT::TAxisBase | |
static constexpr const int | kIgnoreBin = -1 |
FindBin() returns this bin to signal that the bin number is invalid. More... | |
static constexpr const int | kNOverflowBins [4] = {0, 1, 1, 2} |
Extra bins for each EAxisOverflow value. More... | |
Protected Member Functions inherited from ROOT::TAxisBase | |
constexpr int | AdjustOverflowBinNumber (int rawbin) const |
Given rawbin (<0 for underflow, >= GetNBinsNoOver() for overflow), determine the actual bin number taking into account how over/underflow should be handled. More... | |
TAxisBase (const TAxisBase &)=default | |
TAxisBase (TAxisBase &&)=default | |
TAxisBase & | operator= (const TAxisBase &)=default |
TAxisBase & | operator= (TAxisBase &&)=default |
Protected Attributes inherited from ROOT::TAxisEquidistant | |
double | fLow = 0. |
The lower limit of the axis. More... | |
double | fInvBinWidth = 0. |
The inverse of the bin width. More... | |
#include <ROOT/TAxis.h>
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Build a vector of labels. The position in the vector defines the label's bin.
Definition at line 546 of file TAxis.h.
Referenced by ROOT::TAxisConfig::TAxisConfig().
|
private |