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]

◆ 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.

◆ 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& 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

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.

◆ fBinBorders

 std::vector 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: