Logo ROOT   6.21/01
Reference Guide
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT > Class Template Reference

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
class ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >


Histogram class for histograms with DIMENSIONS dimensions, where each bin count is stored by a value of type PRECISION.

STAT stores statistical data of the entries filled into the histogram (bin content, uncertainties etc).

A histogram counts occurrences of values or n-dimensional combinations thereof. Contrary to for instance a RTree, a histogram combines adjacent values. The resolution of this combination is defined by the axis binning, see e.g. http://www.wikiwand.com/en/Histogram

Definition at line 31 of file RHistDrawable.hxx.

Public Types

using AxisRange_t = typename ImplBase_t::AxisIterRange_t
 Range. More...
 
using const_iterator = Detail::RHistBinIter< ImplBase_t >
 
using CoordArray_t = typename ImplBase_t::CoordArray_t
 The coordinates type: a DIMENSIONS-dimensional std::array of double. More...
 
using FillFunc_t = typename ImplBase_t::FillFunc_t
 Pointer type to HistImpl_t::Fill, for faster access. More...
 
using ImplBase_t = Detail::RHistImplBase< Detail::RHistData< DIMENSIONS, PRECISION, std::vector< PRECISION >, STAT... > >
 The type of the Detail::RHistImplBase of this histogram. More...
 
using Weight_t = PRECISION
 The type of weights. More...
 

Public Member Functions

 RHist ()=default
 
 RHist (RHist &&)=default
 
 RHist (const RHist &other)
 
 RHist (std::array< RAxisConfig, DIMENSIONS > axes)
 Create a histogram from an array of axes (RAxisConfigs). More...
 
 RHist (std::string_view histTitle, std::array< RAxisConfig, DIMENSIONS > axes)
 Constructor overload taking the histogram title. More...
 
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 1>::type>
 RHist (const RAxisConfig &xaxis)
 Constructor overload that's only available for a 1-dimensional histogram. More...
 
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 1>::type>
 RHist (std::string_view histTitle, const RAxisConfig &xaxis)
 Constructor overload that's only available for a 1-dimensional histogram, also passing the histogram title. More...
 
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 2>::type>
 RHist (const RAxisConfig &xaxis, const RAxisConfig &yaxis)
 Constructor overload that's only available for a 2-dimensional histogram. More...
 
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 2>::type>
 RHist (std::string_view histTitle, const RAxisConfig &xaxis, const RAxisConfig &yaxis)
 Constructor overload that's only available for a 2-dimensional histogram, also passing the histogram title. More...
 
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 3>::type>
 RHist (const RAxisConfig &xaxis, const RAxisConfig &yaxis, const RAxisConfig &zaxis)
 Constructor overload that's only available for a 3-dimensional histogram. More...
 
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 3>::type>
 RHist (std::string_view histTitle, const RAxisConfig &xaxis, const RAxisConfig &yaxis, const RAxisConfig &zaxis)
 Constructor overload that's only available for a 3-dimensional histogram, also passing the histogram title. More...
 
const_iterator begin () const
 
const_iterator end () const
 
void Fill (const CoordArray_t &x, Weight_t weight=(Weight_t) 1) noexcept
 Add weight to the bin containing coordinate x. More...
 
void FillN (const std::span< const CoordArray_t > xN, const std::span< const Weight_t > weightN) noexcept
 For each coordinate in xN, add weightN[i] to the bin at coordinate xN[i]. More...
 
void FillN (const std::span< const CoordArray_t > xN) noexcept
 Convenience overload: FillN() with weight 1. More...
 
Weight_t GetBinContent (const CoordArray_t &x) const
 Get the content of the bin at x. More...
 
double GetBinUncertainty (const CoordArray_t &x) const
 Get the uncertainty on the content of the bin at x. More...
 
int64_t GetEntries () const noexcept
 Get the number of entries this histogram was filled with. More...
 
ImplBase_tGetImpl () const noexcept
 Access the ImplBase_t this RHist points to. More...
 
void swap (RHist< DIMENSIONS, PRECISION, STAT... > &other) noexcept
 Swap *this and other. More...
 
std::unique_ptr< ImplBase_tTakeImpl () &&noexcept
 "Steal" the ImplBase_t this RHist points to. More...
 

Static Public Member Functions

static constexpr int GetNDim () noexcept
 Number of dimensions of the coordinates. More...
 

Private Attributes

FillFunc_t fFillFunc = nullptr
 ! Pinter to RHistImpl::Fill() member function More...
 
std::unique_ptr< ImplBase_tfImpl
 The actual histogram implementation. More...
 

Friends

RHist HistFromImpl (std::unique_ptr< ImplBase_t >)
 

#include <ROOT/RHistDrawable.hxx>

Member Typedef Documentation

◆ AxisRange_t

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
using ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::AxisRange_t = typename ImplBase_t::AxisIterRange_t

Range.

Definition at line 63 of file RHist.hxx.

◆ const_iterator

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
using ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::const_iterator = Detail::RHistBinIter<ImplBase_t>

Definition at line 65 of file RHist.hxx.

◆ CoordArray_t

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
using ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::CoordArray_t = typename ImplBase_t::CoordArray_t

The coordinates type: a DIMENSIONS-dimensional std::array of double.

Definition at line 57 of file RHist.hxx.

◆ FillFunc_t

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
using ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::FillFunc_t = typename ImplBase_t::FillFunc_t

Pointer type to HistImpl_t::Fill, for faster access.

Definition at line 61 of file RHist.hxx.

◆ ImplBase_t

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
using ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::ImplBase_t = Detail::RHistImplBase<Detail::RHistData<DIMENSIONS, PRECISION, std::vector<PRECISION>, STAT...> >

The type of the Detail::RHistImplBase of this histogram.

Definition at line 55 of file RHist.hxx.

◆ Weight_t

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
using ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::Weight_t = PRECISION

The type of weights.

Definition at line 59 of file RHist.hxx.

Constructor & Destructor Documentation

◆ RHist() [1/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( )
default

◆ RHist() [2/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( RHist< DIMENSIONS, PRECISION, STAT > &&  )
default

◆ RHist() [3/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( const RHist< DIMENSIONS, PRECISION, STAT > &  other)
inline

Definition at line 72 of file RHist.hxx.

◆ RHist() [4/11]

template<int DIMENSIONS, class PRECISION , template< int D_, class P_ > class... STAT>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( std::array< RAxisConfig, DIMENSIONS >  axes)
explicit

Create a histogram from an array of axes (RAxisConfigs).

Example code:

Construct a 1-dimensional histogram that can be filled with floatss. The axis has 10 bins between 0. and 1. The two outermost sets of curly braces are to reach the initialization of the std::array elements; the inner one is for the initialization of a RAxisCoordinate.

RHist<1,float> h1f({{ {10, 0., 1.} }});

Construct a 2-dimensional histogram, with the first axis as before, and the second axis having non-uniform ("irregular") binning, where all bin- edges are specified. As this is itself an array it must be enclosed by double curlies.

RHist<2,int> h2i({{ {10, 0., 1.}, {{-1., 0., 1., 10., 100.}} }});  

Definition at line 266 of file RHist.hxx.

◆ RHist() [5/11]

template<int DIMENSIONS, class PRECISION , template< int D_, class P_ > class... STAT>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( std::string_view  histTitle,
std::array< RAxisConfig, DIMENSIONS >  axes 
)

Constructor overload taking the histogram title.

Definition at line 256 of file RHist.hxx.

◆ RHist() [6/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 1>::type>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( const RAxisConfig xaxis)
inlineexplicit

Constructor overload that's only available for a 1-dimensional histogram.

Definition at line 97 of file RHist.hxx.

◆ RHist() [7/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 1>::type>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( std::string_view  histTitle,
const RAxisConfig xaxis 
)
inline

Constructor overload that's only available for a 1-dimensional histogram, also passing the histogram title.

Definition at line 103 of file RHist.hxx.

◆ RHist() [8/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 2>::type>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( const RAxisConfig xaxis,
const RAxisConfig yaxis 
)
inline

Constructor overload that's only available for a 2-dimensional histogram.

Definition at line 108 of file RHist.hxx.

◆ RHist() [9/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 2>::type>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( std::string_view  histTitle,
const RAxisConfig xaxis,
const RAxisConfig yaxis 
)
inline

Constructor overload that's only available for a 2-dimensional histogram, also passing the histogram title.

Definition at line 114 of file RHist.hxx.

◆ RHist() [10/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 3>::type>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( const RAxisConfig xaxis,
const RAxisConfig yaxis,
const RAxisConfig zaxis 
)
inline

Constructor overload that's only available for a 3-dimensional histogram.

Definition at line 120 of file RHist.hxx.

◆ RHist() [11/11]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
template<int ENABLEIF_NDIM = DIMENSIONS, class = typename std::enable_if<ENABLEIF_NDIM == 3>::type>
ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::RHist ( std::string_view  histTitle,
const RAxisConfig xaxis,
const RAxisConfig yaxis,
const RAxisConfig zaxis 
)
inline

Constructor overload that's only available for a 3-dimensional histogram, also passing the histogram title.

Definition at line 127 of file RHist.hxx.

Member Function Documentation

◆ begin()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
const_iterator ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::begin ( ) const
inline

Definition at line 160 of file RHist.hxx.

◆ end()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
const_iterator ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::end ( ) const
inline

Definition at line 162 of file RHist.hxx.

◆ Fill()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
void ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::Fill ( const CoordArray_t x,
Weight_t  weight = (Weight_t)1 
)
inlinenoexcept

Add weight to the bin containing coordinate x.

Definition at line 138 of file RHist.hxx.

◆ FillN() [1/2]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
void ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::FillN ( const std::span< const CoordArray_t xN,
const std::span< const Weight_t weightN 
)
inlinenoexcept

For each coordinate in xN, add weightN[i] to the bin at coordinate xN[i].

The sizes of xN and weightN must be the same. This is more efficient than many separate calls to Fill().

Definition at line 143 of file RHist.hxx.

◆ FillN() [2/2]

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
void ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::FillN ( const std::span< const CoordArray_t xN)
inlinenoexcept

Convenience overload: FillN() with weight 1.

Definition at line 149 of file RHist.hxx.

◆ GetBinContent()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
Weight_t ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::GetBinContent ( const CoordArray_t x) const
inline

Get the content of the bin at x.

Definition at line 155 of file RHist.hxx.

◆ GetBinUncertainty()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
double ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::GetBinUncertainty ( const CoordArray_t x) const
inline

Get the uncertainty on the content of the bin at x.

Definition at line 158 of file RHist.hxx.

◆ GetEntries()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
int64_t ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::GetEntries ( ) const
inlinenoexcept

Get the number of entries this histogram was filled with.

Definition at line 152 of file RHist.hxx.

◆ GetImpl()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
ImplBase_t* ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::GetImpl ( ) const
inlinenoexcept

Access the ImplBase_t this RHist points to.

Definition at line 132 of file RHist.hxx.

◆ GetNDim()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
static constexpr int ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::GetNDim ( )
inlinestaticnoexcept

Number of dimensions of the coordinates.

Definition at line 68 of file RHist.hxx.

◆ swap()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
void ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::swap ( RHist< DIMENSIONS, PRECISION, STAT... > &  other)
inlinenoexcept

Swap *this and other.

Very efficient; swaps the fImpl pointers.

Definition at line 167 of file RHist.hxx.

◆ TakeImpl()

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
std::unique_ptr<ImplBase_t> ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::TakeImpl ( ) &&
inlinenoexcept

"Steal" the ImplBase_t this RHist points to.

Definition at line 135 of file RHist.hxx.

Friends And Related Function Documentation

◆ HistFromImpl

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
RHist HistFromImpl ( std::unique_ptr< ImplBase_t )
friend

Member Data Documentation

◆ fFillFunc

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
FillFunc_t ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::fFillFunc = nullptr
private

! Pinter to RHistImpl::Fill() member function

Definition at line 175 of file RHist.hxx.

◆ fImpl

template<int DIMENSIONS, class PRECISION, template< int D_, class P_ > class... STAT>
std::unique_ptr<ImplBase_t> ROOT::Experimental::RHist< DIMENSIONS, PRECISION, STAT >::fImpl
private

The actual histogram implementation.

Definition at line 174 of file RHist.hxx.


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