Logo ROOT   6.21/01
Reference Guide
ROOT::Experimental::RAxisIrregular Class Reference

An axis with non-equidistant bins (also known as "variable binning").

It is defined by an array of bin borders - one more than the number of (non-overflow-) bins it has! As an example, an axis with two bin needs three bin borders:

  • lower edge of the first bin;
  • higher edge of the first bin, identical to the lower edge of the second bin;
  • higher edge of the second bin

This axis cannot grow; the size of new bins would not be well defined.

Definition at line 586 of file RAxis.hxx.

Public Member Functions

 RAxisIrregular ()=default
 
 RAxisIrregular (const std::vector< double > &binborders)
 Construct a RAxisIrregular from a vector of bin borders. More...
 
 RAxisIrregular (std::vector< double > &&binborders) noexcept
 Construct a RAxisIrregular from a vector of bin borders. More...
 
 RAxisIrregular (std::string_view title, const std::vector< double > &binborders)
 Construct a RAxisIrregular from a vector of bin borders. More...
 
 RAxisIrregular (std::string_view title, std::vector< double > &&binborders) noexcept
 Construct a RAxisIrregular from a vector of bin borders. More...
 
bool CanGrow () const noexcept final override
 This axis cannot be extended. More...
 
int FindBin (double x) const noexcept final override
 Find the bin index corresponding to coordinate x. More...
 
const std::vector< double > & GetBinBorders () const noexcept
 Access to the bin borders used by this axis. More...
 
double GetBinCenter (int bin) const final override
 Get the bin center of the bin with the given index. More...
 
double GetBinFrom (int bin) const final override
 Get the lower bin border for a given bin index. More...
 
int GetBinIndexForLowEdge (double x) const noexcept final override
 If the coordinate x is within 10 ULPs of a bin low edge coordinate, return the bin for which this is a low edge. More...
 
int GetNBinsNoOver () const noexcept final override
 Get the number of bins, excluding under- and overflow. More...
 
 operator RAxisConfig () const
 Convert to RAxisConfig. More...
 
- Public Member Functions inherited from ROOT::Experimental::RAxisBase
double GetBinTo (int bin) const
 Get the high bin border ("right edge") for the given bin index. More...
 
double GetMaximum () const
 Get the high end of the axis range. More...
 
double GetMinimum () const
 Get the low end of the axis range. More...
 
int GetNBins () const noexcept
 Get the number of bins, including 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
 Get the axis's title. More...
 
int GetUnderflowBin () const noexcept
 Get the bin index for the underflow bin (or the last bin outside range if CanGrow()). More...
 
bool HasSameBinningAs (const RAxisBase &other) const
 Check if two axes use the same binning convention, i.e. 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 first bin, whether underflow or not. 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 last bin, whether overflow or not. More...
 

Protected Member Functions

bool HasSameBinBordersAs (const RAxisBase &other) const override
 See RAxisBase::HasSameBinBordersAs. More...
 
- Protected Member Functions inherited from ROOT::Experimental::RAxisBase
 RAxisBase () noexcept=default
 Default construct a RAxisBase (for use by derived classes for I/O) More...
 
 RAxisBase (std::string_view title) noexcept
 Construct a RAxisBase. More...
 
virtual ~RAxisBase ()
 Virtual destructor needed in this inheritance-based design. 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
 

Private Attributes

std::vector< double > fBinBorders
 Bin borders, one more than the number of non-overflow bins. More...
 

Additional Inherited Members

- Public Types inherited from ROOT::Experimental::RAxisBase
enum  EFindStatus { EFindStatus::kCanGrow, EFindStatus::kValid }
 Status of FindBin(x) More...
 
- Static Public Attributes inherited from ROOT::Experimental::RAxisBase
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...
 

#include <ROOT/RAxis.hxx>

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

Constructor & Destructor Documentation

◆ RAxisIrregular() [1/5]

ROOT::Experimental::RAxisIrregular::RAxisIrregular ( )
default

◆ RAxisIrregular() [2/5]

ROOT::Experimental::RAxisIrregular::RAxisIrregular ( const std::vector< double > &  binborders)
inlineexplicit

Construct a RAxisIrregular from a vector of bin borders.

Note
The bin borders must be sorted in increasing order!

Definition at line 600 of file RAxis.hxx.

◆ RAxisIrregular() [3/5]

ROOT::Experimental::RAxisIrregular::RAxisIrregular ( std::vector< double > &&  binborders)
inlineexplicitnoexcept

Construct a RAxisIrregular from a vector of bin borders.

Note
The bin borders must be sorted in increasing order! Faster, noexcept version taking an rvalue of binborders. The compiler will know when it can take this one.

Definition at line 613 of file RAxis.hxx.

◆ RAxisIrregular() [4/5]

ROOT::Experimental::RAxisIrregular::RAxisIrregular ( std::string_view  title,
const std::vector< double > &  binborders 
)
inlineexplicit

Construct a RAxisIrregular from a vector of bin borders.

Note
The bin borders must be sorted in increasing order!

Definition at line 624 of file RAxis.hxx.

◆ RAxisIrregular() [5/5]

ROOT::Experimental::RAxisIrregular::RAxisIrregular ( std::string_view  title,
std::vector< double > &&  binborders 
)
inlineexplicitnoexcept

Construct a RAxisIrregular from a vector of bin borders.

Note
The bin borders must be sorted in increasing order! Faster, noexcept version taking an rvalue of binborders. The compiler will know when it can take this one.

Definition at line 637 of file RAxis.hxx.

Member Function Documentation

◆ CanGrow()

bool ROOT::Experimental::RAxisIrregular::CanGrow ( ) const
inlinefinaloverridevirtualnoexcept

This axis cannot be extended.

Implements ROOT::Experimental::RAxisBase.

Definition at line 709 of file RAxis.hxx.

◆ FindBin()

int ROOT::Experimental::RAxisIrregular::FindBin ( double  x) const
inlinefinaloverridevirtualnoexcept

Find the bin index corresponding to coordinate x.

If the coordinate is below the axis range, return 0. If it is above, return N + 1 for an axis with N non-overflow bins.

Implements ROOT::Experimental::RAxisBase.

Definition at line 655 of file RAxis.hxx.

◆ GetBinBorders()

const std::vector<double>& ROOT::Experimental::RAxisIrregular::GetBinBorders ( ) const
inlinenoexcept

Access to the bin borders used by this axis.

Definition at line 712 of file RAxis.hxx.

◆ GetBinCenter()

double ROOT::Experimental::RAxisIrregular::GetBinCenter ( int  bin) const
inlinefinaloverridevirtual

Get the bin center of the bin with the given index.

For the bin at index 0 (i.e. the underflow bin), a bin center of std::numeric_limits<double>::lowest() is returned, i.e. the smallest value that can be held in a double. Similarly, for the bin at index N + 1 (i.e. the overflow bin), a bin center of std::numeric_limits<double>::max() is returned, i.e. the largest value that can be held in a double.

Implements ROOT::Experimental::RAxisBase.

Definition at line 675 of file RAxis.hxx.

◆ GetBinFrom()

double ROOT::Experimental::RAxisIrregular::GetBinFrom ( int  bin) const
inlinefinaloverridevirtual

Get the lower bin border for a given bin index.

For the bin at index 0 (i.e. the underflow bin), a lower bin border of std::numeric_limits<double>::lowest() is returned, i.e. the smallest value that can be held in a double. Similarly, for the bin at index N + 2 (i.e. after the overflow bin), a lower bin border of std::numeric_limits<double>::max() is returned, i.e. the largest value that can be held in a double.

Implements ROOT::Experimental::RAxisBase.

Definition at line 692 of file RAxis.hxx.

◆ GetBinIndexForLowEdge()

int ROOT::Experimental::RAxisIrregular::GetBinIndexForLowEdge ( double  x) const
finaloverridevirtualnoexcept

If the coordinate x is within 10 ULPs of a bin low edge coordinate, return the bin for which this is a low edge.

If it's not a bin edge, return -1.

Implements ROOT::Experimental::RAxisBase.

Definition at line 83 of file RAxis.cxx.

◆ GetNBinsNoOver()

int ROOT::Experimental::RAxisIrregular::GetNBinsNoOver ( ) const
inlinefinaloverridevirtualnoexcept

Get the number of bins, excluding under- and overflow.

Implements ROOT::Experimental::RAxisBase.

Definition at line 650 of file RAxis.hxx.

◆ HasSameBinBordersAs()

bool ROOT::Experimental::RAxisIrregular::HasSameBinBordersAs ( const RAxisBase other) const
overrideprotectedvirtual

See RAxisBase::HasSameBinBordersAs.

Reimplemented from ROOT::Experimental::RAxisBase.

Definition at line 105 of file RAxis.cxx.

◆ operator RAxisConfig()

ROOT::Experimental::RAxisIrregular::operator RAxisConfig ( ) const
inline

Convert to RAxisConfig.

Definition at line 647 of file RAxis.hxx.

Member Data Documentation

◆ fBinBorders

std::vector<double> ROOT::Experimental::RAxisIrregular::fBinBorders
private

Bin borders, one more than the number of non-overflow bins.

Definition at line 589 of file RAxis.hxx.


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