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 integer 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 be a floating-point type such as float
or double
, or the special type RBinWithError. Note that float
has a limited significant 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 60 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, double low, double high) | |
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. | |
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 | Streamer (TBuffer &) |
ROOT Streamer function to throw when trying to store an object of this class. | |
Static Public Attributes | |
static constexpr bool | SupportsWeightedFilling |
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. | |
#include <ROOT/RHistEngine.hxx>
|
inlineexplicit |
Construct a histogram engine.
[in] | axes | the axis objects, must have size > 0 |
Definition at line 70 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] | low | the lower end of the axis interval (inclusive) |
[in] | high | the upper end of the axis interval (exclusive), must be > low |
Definition at line 83 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 178 of file RHistEngine.hxx.
|
inline |
Clear all bin contents.
Definition at line 189 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 201 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram.
For weighted filling, pass an RWeight as the last argument:
This is only available for floating-point 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.
[in] | args | the arguments for each axis |
std::tuple
for unweighted filling and for weighted filling Definition at line 307 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.
[in] | args | the arguments for each axis |
Definition at line 232 of file RHistEngine.hxx.
|
inline |
Fill an entry into the histogram with a weight.
This overload is only available for floating-point 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.
[in] | args | the arguments for each axis |
[in] | weight | the weight for this entry |
Definition at line 267 of file RHistEngine.hxx.
|
inline |
Definition at line 109 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 167 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 132 of file RHistEngine.hxx.
|
inline |
Definition at line 110 of file RHistEngine.hxx.
|
inline |
Definition at line 111 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 |
ROOT Streamer function to throw when trying to store an object of this class.
Definition at line 329 of file RHistEngine.hxx.
|
private |
The axis configuration for this histogram. Relevant methods are forwarded from the public interface.
Definition at line 62 of file RHistEngine.hxx.
|
private |
The bin contents for this histogram.
Definition at line 64 of file RHistEngine.hxx.
|
staticconstexpr |
Whether this histogram engine type supports weighted filling.
Definition at line 211 of file RHistEngine.hxx.