Geant4
10.00.p01
|
a container into which any other c2_function can be dropped, to allow expressions with replacable components.It is useful for plugging different InterpolatingFunctions into a c2_function expression. It saves a lot of effort in other places with casting away const declarations. More...
#include <c2_function.hh>
Public Member Functions | |
c2_plugin_function_p () | |
construct the container with no function More... | |
c2_plugin_function_p (c2_function< float_type > &f) | |
construct the container with a pre-defined function More... | |
void | set_function (c2_function< float_type > *f) |
fill the container with a new function, or clear it with a null pointer and copy our domain 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 | ~c2_plugin_function_p () |
destructor More... | |
void | unset_function () |
clear our function 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... | |
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... | |
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... | |
Protected Attributes | |
c2_ptr< float_type > | func |
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... | |
Additional Inherited Members | |
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) |
a container into which any other c2_function can be dropped, to allow expressions with replacable components.
It is useful for plugging different InterpolatingFunctions into a c2_function expression. It saves a lot of effort in other places with casting away const declarations.
It is also useful as a wrapper for a function if it is necessary to have a copy of a function which has a different domain or sampling grid than the parent function. This can be be used, for example, to patch badly-behaved functions with c2_piecewise_function_p by taking the parent function, creating two plugins of it with domains on each side of the nasty bit, and then inserting a nice function in the hole.
This can also be used as a fancier c2_ptr which allows direct evaluation instead of having to dereference the container first.
The factory function c2_factory::plugin_function() creates *new c2_plugin_function_p()
Definition at line 782 of file c2_function.hh.
|
inline |
construct the container with no function
Definition at line 786 of file c2_function.hh.
|
inline |
construct the container with a pre-defined function
Definition at line 788 of file c2_function.hh.
|
inlinevirtual |
destructor
Definition at line 805 of file c2_function.hh.
|
inlinevirtual |
return the grid of 'interesting' points along this function which lie in the region requested
if a sampling grid is defined, work from there, otherwise return vector of (amin, amax)
amin | the lower bound for which the function is to be sampled | |
amax | the upper bound for which the function is to be sampled | |
[in,out] | grid | filled vector containing the samplng grid. |
Reimplemented from c2_function< float_type >.
Definition at line 810 of file c2_function.hh.
|
inline |
fill the container with a new function, or clear it with a null pointer and copy our domain
Definition at line 792 of file c2_function.hh.
Referenced by c2_const_plugin_function_p< G4double >::set_function().
|
inline |
clear our function
Definition at line 808 of file c2_function.hh.
Referenced by G4ScreenedCoulombClassicalKinematics::DoScreeningComputation().
|
inlinevirtual |
get the value and derivatives.
There is required checking for null pointers on the derivatives, and most implementations should operate faster if derivatives are not needed.
[in] | x | the point at which to evaluate the function |
[out] | yprime | the first derivative (if pointer is non-null) |
[out] | yprime2 | the second derivative (if pointer is non-null) |
Implements c2_function< float_type >.
Definition at line 799 of file c2_function.hh.
|
protected |
Definition at line 817 of file c2_function.hh.
Referenced by c2_const_plugin_function_p< G4double >::get(), c2_plugin_function_p< G4double >::get_sampling_grid(), c2_plugin_function_p< G4double >::set_function(), c2_plugin_function_p< G4double >::unset_function(), and c2_plugin_function_p< G4double >::value_with_derivatives().