A histogram data structure to bin data along multiple dimensions.
Every call to Fill bins the data according to the axis configuration and increments the bin content:
The class is templated on the bin content type. For counting, as in the example above, it may be an integral type such as int or long. Narrower types such as unsigned char or short are supported, but may overflow due to their limited range and must be used with care. For weighted filling, the bin content type must not be an integral type, but a floating-point type such as float or double, or the special type RBinWithError. Note that float has a limited significand precision of 24 bits.
An object can have arbitrary dimensionality determined at run-time. The axis configuration is passed as a vector of RAxisVariant:
Definition at line 67 of file RHistEngine.hxx.
Public Member Functions | |
| RHistEngine (const RHistEngine< BinContentType > &)=delete | |
| The copy constructor is deleted. | |
| RHistEngine (RHistEngine< BinContentType > &&)=default | |
| Efficiently move construct a histogram engine. | |
| RHistEngine (std::size_t nNormalBins, std::pair< double, double > interval) | |
| Construct a one-dimensional histogram engine with a regular axis. | |
| RHistEngine (std::vector< RAxisVariant > axes) | |
| Construct a histogram engine. | |
| ~RHistEngine ()=default | |
| void | Add (const RHistEngine< BinContentType > &other) |
| Add all bin contents of another histogram. | |
| void | Clear () |
| Clear all bin contents. | |
| RHistEngine< BinContentType > | Clone () const |
| Clone this histogram engine. | |
| template<typename... A> | |
| void | Fill (const A &...args) |
| Fill an entry into the histogram. | |
| template<typename... A> | |
| void | Fill (const std::tuple< A... > &args) |
| Fill an entry into the histogram. | |
| template<typename... A> | |
| void | Fill (const std::tuple< A... > &args, RWeight weight) |
| Fill an entry into the histogram with a weight. | |
| template<typename... A> | |
| void | FillAtomic (const A &...args) |
| Fill an entry into the histogram using atomic instructions. | |
| template<typename... A> | |
| void | FillAtomic (const std::tuple< A... > &args) |
| Fill an entry into the histogram using atomic instructions. | |
| template<typename... A> | |
| void | FillAtomic (const std::tuple< A... > &args, RWeight weight) |
| Fill an entry into the histogram with a weight using atomic instructions. | |
| const std::vector< RAxisVariant > & | GetAxes () const |
| template<typename... A> | |
| const BinContentType & | GetBinContent (const A &...args) const |
| Get the content of a single bin. | |
| template<std::size_t N> | |
| const BinContentType & | GetBinContent (const std::array< RBinIndex, N > &indices) const |
| Get the content of a single bin. | |
| std::size_t | GetNDimensions () const |
| std::size_t | GetTotalNBins () const |
| RHistEngine< BinContentType > & | operator= (const RHistEngine< BinContentType > &)=delete |
| The copy assignment operator is deleted. | |
| RHistEngine< BinContentType > & | operator= (RHistEngine< BinContentType > &&)=default |
| Efficiently move a histogram engine. | |
| void | Scale (double factor) |
| Scale all histogram bin contents. | |
| void | Streamer (TBuffer &) |
| ROOT Streamer function to throw when trying to store an object of this class. | |
Static Public Attributes | |
| static constexpr bool | SupportsWeightedFilling = !std::is_integral_v<BinContentType> |
| Whether this histogram engine type supports weighted filling. | |
Private Attributes | |
| Internal::RAxes | fAxes |
| The axis configuration for this histogram. Relevant methods are forwarded from the public interface. | |
| std::vector< BinContentType > | fBinContents |
| The bin contents for this histogram. | |
Friends | |
| template<typename T , std::size_t N> | |
| void | Internal::SetBinContent (RHistEngine< T > &, const std::array< RBinIndex, N > &, const T &) |
#include <ROOT/RHistEngine.hxx>
|
inlineexplicit |
Construct a histogram engine.
| [in] | axes | the axis objects, must have size > 0 |
Definition at line 80 of file RHistEngine.hxx.
|
inline |
Construct a one-dimensional histogram engine with a regular axis.
| [in] | nNormalBins | the number of normal bins, must be > 0 |
| [in] | interval | the axis interval (lower end inclusive, upper end exclusive) |
Definition at line 93 of file RHistEngine.hxx.
|
delete |
The copy constructor is deleted.
Copying all bin contents can be an expensive operation, depending on the number of bins. If required, users can explicitly call Clone().
|
default |
Efficiently move construct a histogram engine.
After this operation, the moved-from object is invalid.
|
default |
|
inline |
Add all bin contents of another histogram.
Throws an exception if the axes configurations are not identical.
| [in] | other | another histogram |
Definition at line 189 of file RHistEngine.hxx.
|
inline |
Clear all bin contents.
Definition at line 200 of file RHistEngine.hxx.
|
inline |
Clone this histogram engine.
Copying all bin contents can be an expensive operation, depending on the number of bins.
Definition at line 212 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram.
For weighted filling, pass an RWeight as the last argument:
This is not available for integral bin content types (see SupportsWeightedFilling).
If one of the arguments is outside the corresponding axis and flow bins are disabled, the entry will be silently discarded.
Throws an exception if the number of arguments does not match the axis configuration, or if an argument cannot be converted for the axis type at run-time.
| [in] | args | the arguments for each axis |
std::tuple for unweighted filling and for weighted filling Definition at line 320 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram.
If one of the arguments is outside the corresponding axis and flow bins are disabled, the entry will be silently discarded.
Throws an exception if the number of arguments does not match the axis configuration, or if an argument cannot be converted for the axis type at run-time.
| [in] | args | the arguments for each axis |
Definition at line 243 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram with a weight.
This overload is not available for integral bin content types (see SupportsWeightedFilling).
If one of the arguments is outside the corresponding axis and flow bins are disabled, the entry will be silently discarded.
Throws an exception if the number of arguments does not match the axis configuration, or if an argument cannot be converted for the axis type at run-time.
| [in] | args | the arguments for each axis |
| [in] | weight | the weight for this entry |
Definition at line 279 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram using atomic instructions.
| [in] | args | the arguments for each axis |
Definition at line 388 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram using atomic instructions.
| [in] | args | the arguments for each axis |
Definition at line 345 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram with a weight using atomic instructions.
This overload is not available for integral bin content types (see SupportsWeightedFilling).
| [in] | args | the arguments for each axis |
| [in] | weight | the weight for this entry |
Definition at line 367 of file RHistEngine.hxx.
|
inline |
Definition at line 120 of file RHistEngine.hxx.
|
inline |
Get the content of a single bin.
Throws an exception if the number of arguments does not match the axis configuration or the bin is not found.
| [in] | args | the arguments for each axis |
std::array Definition at line 178 of file RHistEngine.hxx.
|
inline |
Get the content of a single bin.
Throws an exception if the number of indices does not match the axis configuration or the bin is not found.
| [in] | indices | the array of indices for each axis |
Definition at line 143 of file RHistEngine.hxx.
|
inline |
Definition at line 121 of file RHistEngine.hxx.
|
inline |
Definition at line 122 of file RHistEngine.hxx.
|
delete |
The copy assignment operator is deleted.
Copying all bin contents can be an expensive operation, depending on the number of bins. If required, users can explicitly call Clone().
|
default |
Efficiently move a histogram engine.
After this operation, the moved-from object is invalid.
|
inline |
Scale all histogram bin contents.
This method is not available for integral bin content types.
| [in] | factor | the scale factor |
Definition at line 413 of file RHistEngine.hxx.
|
inline |
ROOT Streamer function to throw when trying to store an object of this class.
Definition at line 422 of file RHistEngine.hxx.
|
friend |
|
private |
The axis configuration for this histogram. Relevant methods are forwarded from the public interface.
Definition at line 72 of file RHistEngine.hxx.
|
private |
The bin contents for this histogram.
Definition at line 74 of file RHistEngine.hxx.
|
staticconstexpr |
Whether this histogram engine type supports weighted filling.
Definition at line 222 of file RHistEngine.hxx.