Logo ROOT   6.16/01
Reference Guide
List of all members | Public Member Functions | Private Attributes | List of all members
ROOT::Experimental::RAxisLabels Class Reference

A RAxisGrow 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), RAxisLabels 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 RAxisGrow might differ: the RAxisGrow will only grow when seeing a Fill(), while the RAxisLabels 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.

Definition at line 736 of file RAxis.hxx.

Public Member Functions

 RAxisLabels (const std::vector< std::string > &labels)
 Construct a RAxisLables from a vector of strings. More...
 
 RAxisLabels (const std::vector< std::string_view > &labels)
 Construct a RAxisLables from a vector of string_views. More...
 
 RAxisLabels (std::string_view title, const std::vector< std::string > &labels)
 Construct a RAxisLables from a vector of strings, with title. More...
 
 RAxisLabels (std::string_view title, const std::vector< std::string_view > &labels)
 Construct a RAxisLables from a vector of string_views, with title. More...
 
double GetBinCenter (const std::string &label)
 Get the center of the bin with label. More...
 
int GetBinIndex (const std::string &label)
 Get the bin index with label. More...
 
std::vector< std::string_viewGetBinLabels () const
 Build a vector of labels. The position in the vector defines the label's bin. More...
 
- Public Member Functions inherited from ROOT::Experimental::RAxisGrow
 RAxisGrow (int nbins, double low, double high) noexcept
 Initialize a RAxisGrow. More...
 
 RAxisGrow (std::string_view title, int nbins, double low, double high) noexcept
 Initialize a RAxisGrow. More...
 
bool CanGrow () const
 This axis kind can increase its range. More...
 
int Grow (int toBin)
 Grow this axis to make the "virtual bin" toBin in-range. More...
 
 operator RAxisConfig () const
 Convert to RAxisConfig. More...
 
- Public Member Functions inherited from ROOT::Experimental::RAxisEquidistant
 RAxisEquidistant ()=default
 
 RAxisEquidistant (int nbinsNoOver, double low, double high) noexcept
 Initialize a RAxisEquidistant. More...
 
 RAxisEquidistant (std::string_view title, int nbinsNoOver, double low, double high) noexcept
 Initialize a RAxisEquidistant. More...
 
int FindBin (double x) const noexcept
 Find the bin index for the given coordinate. 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...
 
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...
 
double GetBinTo (int bin) const noexcept
 Get the high bin border for the given bin index. 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 GetMaximum () const noexcept
 Get the high end of the axis range. More...
 
double GetMinimum () const noexcept
 Get the low end of the axis range. More...
 
 operator RAxisConfig () const
 Convert to RAxisConfig. More...
 
- Public Member Functions inherited from ROOT::Experimental::RAxisBase
 RAxisBase (int nbinsNoOver, bool canGrow) noexcept
 Construct a RAxisBase. More...
 
 RAxisBase (std::string_view title, int nbinsNoOver, bool canGrow) noexcept
 Construct a RAxisBase. More...
 
int GetNBins () const noexcept
 Get the number of bins, including under- and overflow. More...
 
int GetNBinsNoOver () const noexcept
 Get the number of bins, excluding under- and overflow. More...
 
int GetNOverflowBins () const noexcept
 Get the number of over- and underflow bins: 0 for growable axes, 2 otherwise. More...
 
int GetOverflowBin () const noexcept
 Get the bin index for the underflow bin (or the next bin outside range if CanGrow()). More...
 
const std::string & GetTitle () const
 
int GetUnderflowBin () const noexcept
 Get the bin index for the underflow bin. More...
 
bool IsOverflowBin (int bin) const noexcept
 Whether the bin index is referencing a bin higher than the axis range. More...
 
bool IsUnderflowBin (int bin) const noexcept
 Whether the bin index is referencing a bin lower 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::Experimental::RAxisBase
enum class  EFindStatus { kCanGrow , kValid }
 Status of FindBin(x) More...
 
- Static Public Member Functions inherited from ROOT::Experimental::RAxisEquidistant
static bool CanGrow () noexcept
 This axis cannot grow. More...
 
- Static Public Attributes inherited from ROOT::Experimental::RAxisBase
constexpr static const int kIgnoreBin = -1
 FindBin() returns this bin to signal that the bin number is invalid. More...
 
constexpr static const int kNOverflowBins [4] = {0, 1, 1, 2}
 Extra bins for each EAxisOverflow value. More...
 
- Protected Member Functions inherited from ROOT::Experimental::RAxisEquidistant
 RAxisEquidistant (int nbinsNoOver, double low, double high, bool canGrow) noexcept
 Initialize a RAxisEquidistant. More...
 
 RAxisEquidistant (std::string_view title, int nbinsNoOver, double low, double high, bool canGrow) noexcept
 Initialize a RAxisEquidistant. More...
 
- Protected Member Functions inherited from ROOT::Experimental::RAxisBase
 RAxisBase ()=default
 Default construct a RAxisBase (for use by derived classes for I/O) More...
 
int AdjustOverflowBinNumber (double 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...
 
 RAxisBase (const RAxisBase &)=default
 
 RAxisBase (RAxisBase &&)=default
 
RAxisBaseoperator= (const RAxisBase &)=default
 
RAxisBaseoperator= (RAxisBase &&)=default
 
- Static Protected Member Functions inherited from ROOT::Experimental::RAxisEquidistant
static double GetInvBinWidth (int nbinsNoOver, double lowOrHigh, double highOrLow)
 Determine the inverse bin width. More...
 
- Protected Attributes inherited from ROOT::Experimental::RAxisEquidistant
double fInvBinWidth = 0.
 The inverse of the bin width. More...
 
double fLow = 0.
 The lower limit of the axis. More...
 

#include <ROOT/RAxis.hxx>

Inheritance diagram for ROOT::Experimental::RAxisLabels:
[legend]

Constructor & Destructor Documentation

◆ RAxisLabels() [1/4]

ROOT::Experimental::RAxisLabels::RAxisLabels ( std::string_view  title,
const std::vector< std::string_view > &  labels 
)
inlineexplicit

Construct a RAxisLables from a vector of string_views, with title.

Definition at line 743 of file RAxis.hxx.

◆ RAxisLabels() [2/4]

ROOT::Experimental::RAxisLabels::RAxisLabels ( std::string_view  title,
const std::vector< std::string > &  labels 
)
inlineexplicit

Construct a RAxisLables from a vector of strings, with title.

Definition at line 751 of file RAxis.hxx.

◆ RAxisLabels() [3/4]

ROOT::Experimental::RAxisLabels::RAxisLabels ( const std::vector< std::string_view > &  labels)
inlineexplicit

Construct a RAxisLables from a vector of string_views.

Definition at line 759 of file RAxis.hxx.

◆ RAxisLabels() [4/4]

ROOT::Experimental::RAxisLabels::RAxisLabels ( const std::vector< std::string > &  labels)
inlineexplicit

Construct a RAxisLables from a vector of strings.

Definition at line 762 of file RAxis.hxx.

Member Function Documentation

◆ GetBinCenter()

double ROOT::Experimental::RAxisLabels::GetBinCenter ( const std::string &  label)
inline

Get the center of the bin with label.

Definition at line 778 of file RAxis.hxx.

◆ GetBinIndex()

int ROOT::Experimental::RAxisLabels::GetBinIndex ( const std::string &  label)
inline

Get the bin index with label.

Definition at line 765 of file RAxis.hxx.

◆ GetBinLabels()

std::vector< std::string_view > ROOT::Experimental::RAxisLabels::GetBinLabels ( ) const
inline

Build a vector of labels. The position in the vector defines the label's bin.

Definition at line 784 of file RAxis.hxx.

Member Data Documentation

◆ fLabelsIndex

std::unordered_map<std::string, int > ROOT::Experimental::RAxisLabels::fLabelsIndex
private

Map of label (view on fLabels's elements) to bin index.

Definition at line 739 of file RAxis.hxx.

Libraries for ROOT::Experimental::RAxisLabels:
[legend]

The documentation for this class was generated from the following file: