Geant4  10.01.p03
accumulated_histogram< float_type > Class Template Reference

An interpolating_function_p which is the cumulative integral of a histogram. More...

#include <c2_function.hh>

+ Inheritance diagram for accumulated_histogram< float_type >:
+ Collaboration diagram for accumulated_histogram< float_type >:

Public Member Functions

 accumulated_histogram (const std::vector< float_type >binedges, const std::vector< float_type > binheights, bool normalize=false, bool inverse_function=false, bool drop_zeros=true)
 Construct the integrated histogram. More...
 
- Public Member Functions inherited from interpolating_function_p< float_type >
 interpolating_function_p ()
 an empty linear-linear cubic-spline interpolating_function_p More...
 
 interpolating_function_p (const c2_function_transformation< float_type > &transform)
 an empty cubic-spline interpolating_function_p with a specific transform More...
 
interpolating_function_p
< float_type > & 
load (const std::vector< float_type > &x, const std::vector< float_type > &f, bool lowerSlopeNatural, float_type lowerSlope, bool upperSlopeNatural, float_type upperSlope, bool splined=true) throw (c2_exception)
 do the dirty work of constructing the spline from a function. More...
 
interpolating_function_p
< float_type > & 
load_pairs (std::vector< std::pair< float_type, float_type > > &data, bool lowerSlopeNatural, float_type lowerSlope, bool upperSlopeNatural, float_type upperSlope, bool splined=true) throw (c2_exception)
 do the dirty work of constructing the spline from a function. More...
 
interpolating_function_p
< float_type > & 
sample_function (const c2_function< float_type > &func, float_type amin, float_type amax, float_type abs_tol, float_type rel_tol, bool lowerSlopeNatural, float_type lowerSlope, bool upperSlopeNatural, float_type upperSlope) throw (c2_exception)
 do the dirty work of constructing the spline from a function. More...
 
interpolating_function_p
< float_type > & 
load_random_generator_function (const std::vector< float_type > &bincenters, const c2_function< float_type > &binheights) throw (c2_exception)
 initialize from a grid of points and a c2_function (un-normalized) to an interpolator which, when evaluated with a uniform random variate on [0,1] returns random numbers distributed as the input function. More...
 
interpolating_function_p
< float_type > & 
load_random_generator_bins (const std::vector< float_type > &bins, const std::vector< float_type > &binheights, bool splined=true) throw (c2_exception)
 initialize from a grid of points and an std::vector of probability densities (un-normalized) to an interpolator which, when evaluated with a uniform random variate on [0,1] returns random numbers distributed as the input histogram. More...
 
virtual float_type value_with_derivatives (float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception)
 get the value and derivatives. More...
 
virtual ~interpolating_function_p ()
 destructor More...
 
virtual
interpolating_function_p
< float_type > & 
clone () const throw (c2_exception)
 create a new, empty interpolating function of this type (virtual constructor) More...
 
void get_data (std::vector< float_type > &xvals, std::vector< float_type > &yvals) const throw ()
 retrieve copies of the x & y tables from which this was built More...
 
void get_internal_data (std::vector< float_type > &xvals, std::vector< float_type > &yvals, std::vector< float_type > &y2vals) const
 retrieve copies of the transformed x, y and y2 tables from which this was built More...
 
void set_lower_extrapolation (float_type bound)
 enable extrapolation of the function below the tabulated data. More...
 
void set_upper_extrapolation (float_type bound)
 enable extrapolation of the function above the tabulated data. More...
 
interpolating_function_p
< float_type > & 
unary_operator (const c2_function< float_type > &source) const
 create a new interpolating_function_p which is the source function applied to every point in the interpolating tables More...
 
interpolating_function_p
< float_type > & 
binary_operator (const c2_function< float_type > &rhs, const c2_binary_function< float_type > *combining_stub) const
 create a new interpolating_function_p which is the parent interpolating_function_p combined with rhs using combiner at every point in the interpolating tables More...
 
interpolating_function_p
< float_type > & 
add_pointwise (const c2_function< float_type > &rhs) const
 produce a newly resampled interpolating_function_p which is the specified sum. More...
 
interpolating_function_p
< float_type > & 
subtract_pointwise (const c2_function< float_type > &rhs) const
 produce a newly resampled interpolating_function_p which is the specified difference. More...
 
interpolating_function_p
< float_type > & 
multiply_pointwise (const c2_function< float_type > &rhs) const
 produce a newly resampled interpolating_function_p which is the specified product. More...
 
interpolating_function_p
< float_type > & 
divide_pointwise (const c2_function< float_type > &rhs) const
 produce a newly resampled interpolating_function_p which is the specified ratio. More...
 
void clone_data (const interpolating_function_p< float_type > &rhs)
 copy data from another interpolating function. This only makes sense if the source function has the same transforms as the destination. More...
 
- Public Member Functions inherited from c2_function< float_type >
const std::string cvs_header_vers () const
 get versioning information for the header file More...
 
const std::string cvs_file_vers () const
 get versioning information for the source file More...
 
virtual ~c2_function ()
 destructor More...
 
float_type operator() (float_type x) const throw (c2_exception)
 evaluate the function in the classic way, ignoring derivatives. More...
 
float_type operator() (float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception)
 get the value and derivatives. More...
 
float_type find_root (float_type lower_bracket, float_type upper_bracket, float_type start, float_type value, int *error=0, float_type *final_yprime=0, float_type *final_yprime2=0) const throw (c2_exception)
 solve f(x)==value very efficiently, with explicit knowledge of derivatives of the function More...
 
float_type partial_integrals (std::vector< float_type > xgrid, std::vector< float_type > *partials=0, float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, bool adapt=true, bool extrapolate=true) const throw (c2_exception)
 for points in xgrid, adaptively return Integral[f(x),{x,xgrid[i],xgrid[i+1]}] and return in vector, along with sum More...
 
float_type integral (float_type amin, float_type amax, std::vector< float_type > *partials=0, float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, bool adapt=true, bool extrapolate=true) const throw (c2_exception)
 a fully-automated integrator which uses the information provided by the get_sampling_grid() function to figure out what to do. More...
 
c2_piecewise_function_p
< float_type > * 
adaptively_sample (float_type amin, float_type amax, float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, std::vector< float_type > *xvals=0, std::vector< float_type > *yvals=0) const throw (c2_exception)
 create a c2_piecewise_function_p from c2_connector_function_p segments which is a representation of the parent function to the specified accuracy, but maybe much cheaper to evaluate More...
 
float_type xmin () const
 return the lower bound of the domain for this function as set by set_domain() More...
 
float_type xmax () const
 return the upper bound of the domain for this function as set by set_domain() More...
 
void set_domain (float_type amin, float_type amax)
 set the domain for this function. More...
 
size_t get_evaluations () const
 this is a counter owned by the function but which can be used to monitor efficiency of algorithms. More...
 
void reset_evaluations () const
 reset the counter More...
 
void increment_evaluations () const
 count evaluations More...
 
bool check_monotonicity (const std::vector< float_type > &data, const char message[]) const throw (c2_exception)
 check that a vector is monotonic, throw an exception if not, and return a flag if it is reversed More...
 
virtual void set_sampling_grid (const std::vector< float_type > &grid) throw (c2_exception)
 establish a grid of 'interesting' points on the function. More...
 
std::vector< float_type > * get_sampling_grid_pointer () const
 get the sampling grid, which may be a null pointer More...
 
virtual void get_sampling_grid (float_type amin, float_type amax, std::vector< float_type > &grid) const
 return the grid of 'interesting' points along this function which lie in the region requested More...
 
void preen_sampling_grid (std::vector< float_type > *result) const
 clean up endpoints on a grid of points More...
 
void refine_sampling_grid (std::vector< float_type > &grid, size_t refinement) const
 refine a grid by splitting each interval into more intervals More...
 
c2_function< float_type > & normalized_function (float_type amin, float_type amax, float_type norm=1.0) const throw (c2_exception)
 create a new c2_function from this one which is normalized on the interval More...
 
c2_function< float_type > & square_normalized_function (float_type amin, float_type amax, float_type norm=1.0) const throw (c2_exception)
 create a new c2_function from this one which is square-normalized on the interval More...
 
c2_function< float_type > & square_normalized_function (float_type amin, float_type amax, const c2_function< float_type > &weight, float_type norm=1.0) const throw (c2_exception)
 create a new c2_function from this one which is square-normalized with the provided weight on the interval More...
 
c2_sum_p< float_type > & operator+ (const c2_function< float_type > &rhs) const
 factory function to create a c2_sum_p from a regular algebraic expression. More...
 
c2_diff_p< float_type > & operator- (const c2_function< float_type > &rhs) const
 factory function to create a c2_diff_p from a regular algebraic expression. More...
 
c2_product_p< float_type > & operator* (const c2_function< float_type > &rhs) const
 factory function to create a c2_product_p from a regular algebraic expression. More...
 
c2_ratio_p< float_type > & operator/ (const c2_function< float_type > &rhs) const
 factory function to create a c2_ratio_p from a regular algebraic expression. More...
 
c2_composed_function_p
< float_type > & 
operator() (const c2_function< float_type > &inner) const
 compose this function outside another. More...
 
float_type get_trouble_point () const
 Find out where a calculation ran into trouble, if it got a nan. If the most recent computation did not return a nan, this is undefined. More...
 
void claim_ownership () const
 increment our reference count. Destruction is only legal if the count is zero. More...
 
size_t release_ownership_for_return () const throw (c2_exception)
 decrement our reference count. Do not destroy at zero. More...
 
void release_ownership () const throw (c2_exception)
 decrement our reference count. If the count reaches zero, destroy ourself. More...
 
size_t count_owners () const
 get the reference count, mostly for debugging More...
 
void fill_fblock (c2_fblock< float_type > &fb) const throw (c2_exception)
 fill in a c2_fblock<float_type>... a shortcut for the integrator & sampler More...
 

Additional Inherited Members

- Public Attributes inherited from interpolating_function_p< float_type >
const
c2_function_transformation
< float_type > & 
fTransform
 
- Protected Member Functions inherited from interpolating_function_p< float_type >
void spline (bool lowerSlopeNatural, float_type lowerSlope, bool upperSlopeNatural, float_type upperSlope) throw (c2_exception)
 create the spline coefficients More...
 
- Protected Member Functions inherited from c2_function< float_type >
 c2_function (const c2_function< float_type > &src)
 
 c2_function ()
 
virtual void set_sampling_grid_pointer (std::vector< float_type > &grid)
 
- Static Protected Member Functions inherited from interpolating_function_p< float_type >
static bool comp_pair (std::pair< float_type, float_type > const &i, std::pair< float_type, float_type > const &j)
 
- Protected Attributes inherited from interpolating_function_p< float_type >
std::vector< float_type > Xraw
 
std::vector< float_type > X
 
std::vector< float_type > F
 
std::vector< float_type > y2
 
c2_const_ptr< float_type > sampler_function
 
bool xInverted
 
size_t lastKLow
 
- Protected Attributes inherited from c2_function< float_type >
std::vector< float_type > * sampling_grid
 
bool no_overwrite_grid
 
float_type fXMin
 
float_type fXMax
 
size_t evaluations
 
float_type bad_x_point
 this point may be used to record where a calculation ran into trouble More...
 

Detailed Description

template<typename float_type = double>
class accumulated_histogram< float_type >

An interpolating_function_p which is the cumulative integral of a histogram.

Note than binedges should be one element longer than binheights, since the lower & upper edges are specified. Note that this is a malformed spline, since the second derivatives are all zero, so it has less continuity. Also, note that the bin edges can be given in backwards order to generate the reversed accumulation (starting at the high end)

Definition at line 1968 of file c2_function.hh.

Constructor & Destructor Documentation

template<typename float_type = double>
accumulated_histogram< float_type >::accumulated_histogram ( const std::vector< float_type >  binedges,
const std::vector< float_type >  binheights,
bool  normalize = false,
bool  inverse_function = false,
bool  drop_zeros = true 
)

Construct the integrated histogram.

Parameters
binedgesthe edges of the bins in binheights. It should have one more element than binheights
binheightsthe number of counts in each bin.
normalizeif true, normalize integral to 1
inverse_functionif true, drop zero channels, and return inverse function for random generation
drop_zeroseliminate null bins before integrating, so integral is strictly monotonic.

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