Tomographer  v4.0
Tomographer C++ Framework Documentation
Tomographer::AveragedHistogram< HistogramType_, RealAvgType > Class Template Reference

Combines several histograms (with same parameters) into an averaged histogram. More...

#include <tomographer/histogram.h>

+ Inheritance diagram for Tomographer::AveragedHistogram< HistogramType_, RealAvgType >:
+ Collaboration diagram for Tomographer::AveragedHistogram< HistogramType_, RealAvgType >:

Public Types

typedef HistogramType_ HistogramType
 Type of the individual histograms we are averaging. More...
 
typedef UniformBinsHistogramWithErrorBars< typename HistogramType_::Scalar, RealAvgType > Base_
 Shortcut for our base class' type.
 
typedef Base_::Params Params
 The histogram parameters' type. See UniformBinsHistogramWithErrorBars::Params.
 
typedef Base_::Scalar Scalar
 The histogram's X-axis scalar type. See UniformBinsHistogramWithErrorBars::Scalar.
 
typedef Base_::CountType CountType
 The histogram' count type. This is exactly the same as RealAvgType.
 
- Public Types inherited from Tomographer::UniformBinsHistogramWithErrorBars< HistogramType_::Scalar, RealAvgType >
typedef HistogramType_::Scalar Scalar
 The Scalar (X-axis) Type. See UniformBinsHistogram::Scalar.
 
typedef RealAvgType CountType
 The Type used to keep track of counts. See UniformBinsHistogram::CountType.
 
typedef UniformBinsHistogram< HistogramType_::Scalar, RealAvgType > Base_
 Shortcut for our base class type.
 
typedef Base_::Params Params
 Shortcut for our base class' histogram parameters. See UniformBinsHistogram::Params.
 
- Public Types inherited from Tomographer::UniformBinsHistogram< HistogramType_::Scalar, RealAvgType >
typedef HistogramType_::Scalar Scalar
 The scalar type of the "X"-axis of the histogram (usually double)
 
typedef RealAvgType CountType
 The type that serves to count how many hits in each bin.
 
typedef UniformBinsHistogramParams< HistogramType_::Scalar > Params
 The type for specifying parameters of this histogram (limits, number of bins)
 

Public Member Functions

 AveragedHistogram (const Params &params=Params())
 Constructs an AveragedHistogram with the given histogram parameters. More...
 
 AveragedHistogram (Scalar min, Scalar max, std::size_t num_bins)
 Constructs an AveragedHistogram with the given histogram parameters. More...
 
void reset (const Params &params_)
 Resets the data and sets new params. More...
 
void reset ()
 Resets the data keeping the exisiting params. More...
 
template<ENABLED_IF( !HistogramType::HasErrorBars) >
void addHistogram (const HistogramType &histogram)
 Add a new histogram in the data series. More...
 
template<ENABLED_IF( !HistogramType::HasErrorBars) >
void finalize ()
 Finalize the averaging procedure. More...
 
template<ENABLED_IF( HistogramType::HasErrorBars) >
void addHistogram (const HistogramType &histogram)
 Add a new histogram in the data series. More...
 
template<ENABLED_IF( HistogramType::HasErrorBars) >
void finalize ()
 Finalize the averaging procedure. More...
 
- Public Member Functions inherited from Tomographer::UniformBinsHistogramWithErrorBars< HistogramType_::Scalar, RealAvgType >
 UniformBinsHistogramWithErrorBars (Params params=Params())
 Constructor, with given histogram parameters. More...
 
 UniformBinsHistogramWithErrorBars (Scalar min, Scalar max, std::size_t num_bins)
 Constructor, with given histogram parameters. More...
 
void reset ()
 Resets the histogram to zero counts everywhere, and zero error bars. More...
 
CountType errorBar (std::size_t i) const
 For the Histogram Interface. Get error bar for bin number i. More...
 
void load (const Eigen::DenseBase< EigenType > &d, const Eigen::DenseBase< EigenType2 > &derr, CountType off_chart_=0)
 Load data for the histogram. Uses current histogram parameters, just sets the bin counts and the error bars. More...
 
UniformBinsHistogramWithErrorBars< Scalar, NewCountType > normalized () const
 Get a normalized version of this histogram. More...
 
std::string prettyPrint (int max_width=0) const
 Print the histogram in human readable form. More...
 
- Public Member Functions inherited from Tomographer::UniformBinsHistogram< HistogramType_::Scalar, RealAvgType >
 UniformBinsHistogram (Params2 p=Params())
 Constructor: stores the parameters and initializes the histogram to zero counts everywhere.
 
 UniformBinsHistogram (Scalar min_, Scalar max_, std::size_t num_bins)
 Constructor: stores the parameters and initializes the histogram to zero counts everywhere.
 
 UniformBinsHistogram (const HistogramType &other)
 Constructor: copy another histogram type.
 
void reset ()
 Resets the histogram to zero counts everywhere (including the off-chart counts)
 
void load (const Eigen::DenseBase< EigenType > &x, CountType off_chart_=0)
 Load data for the histogram. Uses current histogram parameters, just sets the bin counts. More...
 
void add (const Eigen::ArrayBase< EigenType > &x, CountType off_chart_=0)
 Add data to the histogram. More...
 
void add (const UniformBinsHistogram< OtherScalar, OtherCountType > &x)
 Add data to the histogram. More...
 
std::size_t numBins () const
 Shorthand for params.num_bins
 
CountType count (std::size_t i) const
 Shorthand for bins(i)
 
bool isWithinBounds (Scalar value) const
 Shorthand for Params::isWithinBounds()
 
std::size_t binIndex (Scalar value) const
 Shorthand for Params::binIndex()
 
Scalar binLowerValue (int index) const
 Shorthand for Params::binLowerValue()
 
Scalar binCenterValue (std::size_t index) const
 Shorthand for Params::binCenterValue()
 
Scalar binUpperValue (std::size_t index) const
 Shorthand for Params::binUpperValue()
 
Scalar binResolution () const
 Shorthand for Params::binResolution()
 
std::size_t record (Scalar value)
 Record a new value in the histogram. More...
 
std::size_t record (Scalar value, CountType weight)
 Record a new value in the histogram, with a certain weight. More...
 
NewCountType normalization () const
 Calculate the total weight stored in this histogram. More...
 
UniformBinsHistogram< Scalar, NewCountType > normalized () const
 Get a normalized version of this histogram. More...
 
std::string prettyPrint (int max_width=0) const
 Pretty-print the histogram and return it as a string with horizontal bars. More...
 

Public Attributes

int num_histograms
 The number of histograms averaged. More...
 
- Public Attributes inherited from Tomographer::UniformBinsHistogramWithErrorBars< HistogramType_::Scalar, RealAvgType >
Eigen::Array< CountType, Eigen::Dynamic, 1 > delta
 The error bars associated with each histogram bin.
 
- Public Attributes inherited from Tomographer::UniformBinsHistogram< HistogramType_::Scalar, RealAvgType >
Params params
 Parameters of this histogram (range and # of bins)
 
Eigen::Array< CountType, Eigen::Dynamic, 1 > bins
 The counts for each bin.
 
CountType off_chart
 The number of points that fell outside of the given range.
 

Static Public Attributes

static constexpr bool HasErrorBars = true
 For the Histogram Interface. This histogram type does provide error bars.
 
- Static Public Attributes inherited from Tomographer::UniformBinsHistogramWithErrorBars< HistogramType_::Scalar, RealAvgType >
static constexpr bool HasErrorBars
 For the Histogram Interface. This type of histogram does provide error bars.
 
- Static Public Attributes inherited from Tomographer::UniformBinsHistogram< HistogramType_::Scalar, RealAvgType >
static constexpr bool HasErrorBars
 This histogram type does not provide error bars (see Histogram Interface)
 

Detailed Description

template<typename HistogramType_, typename RealAvgType = double>
class Tomographer::AveragedHistogram< HistogramType_, RealAvgType >

Combines several histograms (with same parameters) into an averaged histogram.

What this class does exactly is explained on the page Averaged Histogram.

The HistogramType is expected to be a Histogram Interface -compliant type. It may, or may not, come with its own error bars. If this is the case, then the error bars are properly combined.

You should add histograms to average with repeated calls to addHistogram(). Then, you should call finalize(). Then this object, which inherits UniformBinsHistogramWithErrorBars, will be properly initialized with average counts and error bars.

Warning
All the histograms added with addHistogram() MUST have the same params, i.e. bin ranges and number of bins! The bin values are added up regardless of any parameters, simply because the Histogram Interface does not expose any API for querying the params for a general histogram.

This class itself complies with the Histogram Interface.

Warning
Don't forget to call finalize()! The bin counts in bins, off-chart count off_chart and error bars delta have UNDEFINED VALUES before calling finalize().
Template Parameters
HistgoramType_the type of the individual histograms that we are averaging. This must comply with the Histogram Interface
RealAvgTypethe real scalar type used for averaging. You'll most likely want to choose double here. This can be different from the underlying HistogramType's CountType, because that may be an integer type and not suitable for holding an average.

Definition at line 658 of file histogram.h.

Member Typedef Documentation

§ HistogramType

template<typename HistogramType_, typename RealAvgType = double>
typedef HistogramType_ Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::HistogramType

Type of the individual histograms we are averaging.

This is the argument given as template parameter, and is expected to compily with the Histogram Interface.

Definition at line 667 of file histogram.h.

Constructor & Destructor Documentation

§ AveragedHistogram() [1/2]

template<typename HistogramType_, typename RealAvgType = double>
Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::AveragedHistogram ( const Params params = Params())
inline

Constructs an AveragedHistogram with the given histogram parameters.

The params are the histogram parameters (see UniformBinsHistogram::Params) of the individual histograms which will be averaged. Note that all those histograms must have the same params.

Definition at line 695 of file histogram.h.

§ AveragedHistogram() [2/2]

template<typename HistogramType_, typename RealAvgType = double>
Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::AveragedHistogram ( Scalar  min,
Scalar  max,
std::size_t  num_bins 
)
inline

Constructs an AveragedHistogram with the given histogram parameters.

This overload is provided for convenience and has the same effect as the other constructor.

Definition at line 705 of file histogram.h.

Member Function Documentation

§ addHistogram() [1/2]

template<typename HistogramType_, typename RealAvgType = double>
template<ENABLED_IF( !HistogramType::HasErrorBars) >
void Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::addHistogram ( const HistogramType histogram)
inline

Add a new histogram in the data series.

Add a new histogram to include into the final averaged histogram. Call this function repeatedly with different histograms you want to average together. When you're finished adding histograms, you must call finalize() in order to finalize the averaging; until then the members bins and delta (as well as count(), errorBar() etc.) yield undefined values.

Note
histogram must have the same range and number of bins as the params specified to the constructor of this class.

This implementation deals with the case where the individual histograms (such as histogram) don't have themselves error bars.

Definition at line 754 of file histogram.h.

§ addHistogram() [2/2]

template<typename HistogramType_, typename RealAvgType = double>
template<ENABLED_IF( HistogramType::HasErrorBars) >
void Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::addHistogram ( const HistogramType histogram)
inline

Add a new histogram in the data series.

Add a new histogram to include into the final averaged histogram. Call this function repeatedly with different histograms you want to average together. When you're finished adding histograms, you must call finalize() in order to finalize the averaging; until then the members bins and delta (as well as count(), errorBar() etc.) yield undefined values.

Note
histogram must have the same range and number of bins as the params specified to the constructor of this class.

This implementation deals with the case where the individual histograms (such as histogram) do have themselves error bars.

Definition at line 816 of file histogram.h.

§ finalize() [1/2]

template<typename HistogramType_, typename RealAvgType = double>
template<ENABLED_IF( !HistogramType::HasErrorBars) >
void Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::finalize ( )
inline

Finalize the averaging procedure.

Call this function once you have called addHistogram() for all the histograms you wanted to average together.

Only after this function was called may you access the averaged histogram data (in bins, delta, count() etc.). Before calling finalize(), those methods return undefined results.

Calling addHistogram() after finalize() will yield undefined results.

This implementation deals with the case where the individual histograms (such as histogram) don't have themselves error bars.

Definition at line 786 of file histogram.h.

§ finalize() [2/2]

template<typename HistogramType_, typename RealAvgType = double>
template<ENABLED_IF( HistogramType::HasErrorBars) >
void Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::finalize ( )
inline

Finalize the averaging procedure.

Call this function once you have called addHistogram() for all the histograms you wanted to average together.

Only after this function was called may you access the averaged histogram data (in bins, delta, count() etc.). Before calling finalize(), those methods return undefined results.

Calling addHistogram() after finalize() will yield undefined results.

This implementation deals with the case where the individual histograms (such as histogram) do have themselves error bars.

Definition at line 848 of file histogram.h.

§ reset() [1/2]

template<typename HistogramType_, typename RealAvgType = double>
void Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::reset ( const Params params_)
inline

Resets the data and sets new params.

Warning
the corresponding base class has NO virtual methods. So don't see this class inheritance as object polymorphism. If you need to reset a uniform bins histogram with error bars, you need to know its type.

Definition at line 716 of file histogram.h.

§ reset() [2/2]

template<typename HistogramType_, typename RealAvgType = double>
void Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::reset ( )
inline

Resets the data keeping the exisiting params.

Warning
the corresponding base class has NO virtual methods. So don't see this class inheritance as object polymorphism. If you need to reset a uniform bins histogram with error bars, you need to know its type.

Definition at line 729 of file histogram.h.

Member Data Documentation

§ num_histograms

template<typename HistogramType_, typename RealAvgType = double>
int Tomographer::AveragedHistogram< HistogramType_, RealAvgType >::num_histograms

The number of histograms averaged.

This member records how many histograms have been added using addHistogram() since the object was created or was last reset().

Definition at line 686 of file histogram.h.


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