Histogram axis base class.
Keeps track of the number of bins and overflow handling. Offers bin iteration.
Regular bin indices are starting from 1, up to N + 1 for an axis with N bins. Index -1 is for the underflow bin, representing values that are lower than the axis range. Index -2 is the overflow bin for values larger than the axis range. Growable axes do not have underflow or overflow bins, as they don't need them.
Classes | |
| class | const_iterator | 
| Random const_iterator through bins.  More... | |
Public Member Functions | |
| virtual bool | CanGrow () const noexcept=0 | 
| Whether this axis can grow (and thus has no overflow bins).   | |
| virtual int | FindBin (double x) const noexcept=0 | 
Find the adjusted bin index (returning kUnderflowBin for underflow and kOverflowBin for overflow) for the given coordinate.   | |
| virtual double | GetBinCenter (int bin) const =0 | 
| Get the bin center for the given bin index.   | |
| virtual double | GetBinFrom (int bin) const =0 | 
| Get the low bin border ("left edge") for the given bin index.   | |
| virtual int | GetBinIndexForLowEdge (double x) const noexcept=0 | 
If the coordinate x is within 10 ULPs of a bin low edge coordinate, return the bin for which this is a low edge.   | |
| double | GetBinTo (int bin) const | 
| Get the high bin border ("right edge") for the given bin index.   | |
| int | GetFirstBin () const noexcept | 
| Get the bin index for the first bin of the axis.   | |
| int | GetLastBin () const noexcept | 
| Get the bin index for the last bin of the axis.   | |
| double | GetMaximum () const | 
| Get the high end of the axis range.   | |
| double | GetMinimum () const | 
| Get the low end of the axis range.   | |
| int | GetNBins () const noexcept | 
| Get the number of bins, including under- and overflow.   | |
| virtual int | GetNBinsNoOver () const noexcept=0 | 
| Get the number of bins, excluding under- and overflow.   | |
| int | GetNOverflowBins () const noexcept | 
| Get the number of over- and underflow bins: 0 for growable axes, 2 otherwise.   | |
| int | GetOverflowBin () const noexcept | 
Get the bin index for the overflow bin (or kInvalidBin if CanGrow()).   | |
| const std::string & | GetTitle () const | 
| Get the axis's title.   | |
| int | GetUnderflowBin () const noexcept | 
Get the bin index for the underflow bin (or kInvalidBin if CanGrow()).   | |
| bool | HasSameBinningAs (const RAxisBase &other) const | 
| Check if two axes use the same binning convention, i.e.   | |
Iterator interfaces  | |
| const_iterator | begin () const noexcept | 
| Get a const_iterator pointing to the first regular bin.   | |
| const_iterator | end () const noexcept | 
| Get a const_iterator pointing beyond the last regular bin.   | |
Static Public Attributes | |
| static constexpr const int | kInvalidBin = 0 | 
| Special bin index returned to signify that no bin matches a request.   | |
| static constexpr const int | kOverflowBin = -2 | 
| Index of the overflow bin, if any.   | |
| static constexpr const int | kUnderflowBin = -1 | 
| Index of the underflow bin, if any.   | |
Protected Member Functions | |
| RAxisBase () noexcept(noexcept(std::string()))=default | |
| Default construct a RAxisBase (for use by derived classes for I/O)   | |
| RAxisBase (std::string_view title) noexcept | |
| Construct a RAxisBase.   | |
| virtual | ~RAxisBase () | 
| Virtual destructor needed in this inheritance-based design.   | |
| int | AdjustOverflowBinNumber (double rawbin) const | 
Given rawbin (<0 for underflow, >=GetNBinsNoOver() for overflow), determine the bin number taking into account how over/underflow should be handled.   | |
| virtual bool | HasSameBinBordersAs (const RAxisBase &other) const | 
| Check if two axis have the same bin borders.   | |
Inaccessible copy, assignment  | |
The copy and move constructors and assignment operators are protected to prevent slicing.  | |
| RAxisBase (const RAxisBase &)=default | |
| RAxisBase (RAxisBase &&)=default | |
| RAxisBase & | operator= (const RAxisBase &)=default | 
| RAxisBase & | operator= (RAxisBase &&)=default | 
Private Attributes | |
| std::string | fTitle | 
| Title of this axis, used for graphics / text.   | |
#include <ROOT/RAxis.hxx>
      
  | 
  protecteddefault | 
      
  | 
  protecteddefaultnoexcept | 
Default construct a RAxisBase (for use by derived classes for I/O)
      
  | 
  protectedvirtual | 
      
  | 
  inlineprotectednoexcept | 
Given rawbin (<0 for underflow, >=GetNBinsNoOver() for overflow), determine the bin number taking into account how over/underflow should be handled. 
| [in] | rawbin | for which to determine the bin number. | 
kInvalidBin if the axis cannot handle the over- / underflow. 
      
  | 
  inlinenoexcept | 
Get a const_iterator pointing to the first regular bin.
Whether this axis can grow (and thus has no overflow bins).
Implemented in ROOT::Experimental::RAxisGrow, ROOT::Experimental::RAxisIrregular, and ROOT::Experimental::RAxisEquidistant.
      
  | 
  inlinenoexcept | 
Get a const_iterator pointing beyond the last regular bin.
Find the adjusted bin index (returning kUnderflowBin for underflow and kOverflowBin for overflow) for the given coordinate. 
Implemented in ROOT::Experimental::RAxisEquidistant, and ROOT::Experimental::RAxisIrregular.
Get the bin center for the given bin index.
The result of this method on an overflow or underflow bin is unspecified.
Implemented in ROOT::Experimental::RAxisEquidistant, and ROOT::Experimental::RAxisIrregular.
Get the low bin border ("left edge") for the given bin index.
The result of this method on an underflow bin is unspecified.
Implemented in ROOT::Experimental::RAxisEquidistant, and ROOT::Experimental::RAxisIrregular.
      
  | 
  pure virtualnoexcept | 
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 kInvalidBin. 
Implemented in ROOT::Experimental::RAxisEquidistant, and ROOT::Experimental::RAxisIrregular.
      
  | 
  inlinenoexcept | 
      
  | 
  inlinenoexcept | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inlinenoexcept | 
Get the number of bins, excluding under- and overflow.
Implemented in ROOT::Experimental::RAxisEquidistant, and ROOT::Experimental::RAxisIrregular.
      
  | 
  inlinenoexcept | 
      
  | 
  inlinenoexcept | 
      
  | 
  inline | 
      
  | 
  inlinenoexcept | 
      
  | 
  inlineprotectedvirtual | 
Check if two axis have the same bin borders.
Default implementation should work for any RAxis type, but is quite inefficient as it does virtual GetBinFrom calls in a loop. RAxis implementations are encouraged to provide optimized overrides for common axis binning comparison scenarios.
Reimplemented in ROOT::Experimental::RAxisEquidistant, and ROOT::Experimental::RAxisIrregular.
      
  | 
  private |