ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
create a c2_function which smoothly connects two other c2_functions.This takes two points and generates a polynomial which matches two c2_function arguments at those two points, with two derivatives at each point, and an arbitrary value at the center of the region. It is useful for splicing together functions over rough spots (0/0, for example). More...
#include <geant4/tree/geant4-10.6-release/examples/extended/electromagnetic/TestEm7/include/c2_function.hh>
Public Member Functions | |
c2_connector_function_p (float_type x0, const c2_function< float_type > &f0, float_type x2, const c2_function< float_type > &f2, bool auto_center, float_type y1) | |
construct the container from two functions | |
c2_connector_function_p (float_type x0, float_type y0, float_type yp0, float_type ypp0, float_type x2, float_type y2, float_type yp2, float_type ypp2, bool auto_center, float_type y1) | |
construct the container from numerical values | |
c2_connector_function_p (const c2_fblock< float_type > &fb0, const c2_fblock< float_type > &fb2, bool auto_center, float_type y1) | |
construct the container from c2_fblock<float_type> objects | |
virtual | ~c2_connector_function_p () |
destructor | |
virtual float_type | value_with_derivatives (float_type x, float_type *yprime, float_type *yprime2) const |
get the value and derivatives. | |
Public Member Functions inherited from c2_function< float_type > | |
const std::string | cvs_header_vers () const |
get versioning information for the header file | |
const std::string | cvs_file_vers () const |
get versioning information for the source file | |
virtual | ~c2_function () |
destructor | |
float_type | operator() (float_type x) const |
evaluate the function in the classic way, ignoring derivatives. | |
float_type | operator() (float_type x, float_type *yprime, float_type *yprime2) const |
get the value and derivatives. | |
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 |
solve f(x)==value very efficiently, with explicit knowledge of derivatives of the function | |
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 |
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 |
a fully-automated integrator which uses the information provided by the get_sampling_grid() function to figure out what to do. | |
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 |
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 | |
float_type | xmin () const |
float_type | xmax () const |
void | set_domain (float_type amin, float_type amax) |
size_t | get_evaluations () const |
void | reset_evaluations () const |
reset the counter | |
void | increment_evaluations () const |
count evaluations | |
bool | check_monotonicity (const std::vector< float_type > &data, const char message[]) const |
check that a vector is monotonic, throw an exception if not, and return a flag if it is reversed | |
virtual void | set_sampling_grid (const std::vector< float_type > &grid) |
establish a grid of 'interesting' points on the function. | |
std::vector< float_type > * | get_sampling_grid_pointer () const |
get the sampling grid, which may be a null pointer | |
virtual void | get_sampling_grid (float_type amin, float_type amax, std::vector< float_type > &grid) const |
void | preen_sampling_grid (std::vector< float_type > *result) const |
The grid is modified in place. | |
void | refine_sampling_grid (std::vector< float_type > &grid, size_t refinement) const |
c2_function< float_type > & | normalized_function (float_type amin, float_type amax, float_type norm=1.0) const |
create a new c2_function from this one which is normalized on the interval | |
c2_function< float_type > & | square_normalized_function (float_type amin, float_type amax, float_type norm=1.0) const |
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 |
create a new c2_function from this one which is square-normalized with the provided weight on the interval | |
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. | |
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. | |
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. | |
c2_ratio_p< float_type > & | operator/ (const c2_function< float_type > &rhs) const |
c2_composed_function_p < float_type > & | operator() (const c2_function< float_type > &inner) const |
compose this function outside another. | |
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. | |
void | claim_ownership () const |
increment our reference count. Destruction is only legal if the count is zero. | |
size_t | release_ownership_for_return () const |
decrement our reference count. Do not destroy at zero. | |
void | release_ownership () const |
size_t | count_owners () const |
get the reference count, mostly for debugging | |
void | fill_fblock (c2_fblock< float_type > &fb) const |
fill in a c2_fblock<float_type>... a shortcut for the integrator & sampler | |
Protected Member Functions | |
void | init (const c2_fblock< float_type > &fb0, const c2_fblock< float_type > &fb2, bool auto_center, float_type y1) |
fill container numerically | |
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) |
Protected Attributes | |
float_type | fhinv |
float_type | fy1 |
float_type | fa |
float_type | fb |
float_type | fc |
float_type | fd |
float_type | fe |
float_type | ff |
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 | |
create a c2_function which smoothly connects two other c2_functions.
This takes two points and generates a polynomial which matches two c2_function arguments at those two points, with two derivatives at each point, and an arbitrary value at the center of the region. It is useful for splicing together functions over rough spots (0/0, for example).
If auto_center is true, the value at the midpoint is computed so that the resulting polynomial is of order 5. If auto_center is false, the value y1 is used at the midpoint, resulting in a polynomial of order 6.
This is usually used in conjunction with c2_piecewise_function_p to assemble an apparently seamless function from a series of segments.
Definition at line 2214 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2214 of file c2_function.hh
c2_connector_function_p< float_type >::c2_connector_function_p | ( | float_type | x0, |
const c2_function< float_type > & | f0, | ||
float_type | x2, | ||
const c2_function< float_type > & | f2, | ||
bool | auto_center, | ||
float_type | y1 | ||
) |
construct the container from two functions
x0 | the point at which to match f1 and its derivatives |
f0 | the function on the left side to be connected |
x2 | the point at which to match f2 and its derivatives |
f2 | the function on the right side to be connected |
auto_center | if true, no midpoint value is specified. If false, match the value y1 at the midpoint |
y1 | the value to match at the midpoint, if auto_center is false |
c2_connector_function_p< float_type >::c2_connector_function_p | ( | float_type | x0, |
float_type | y0, | ||
float_type | yp0, | ||
float_type | ypp0, | ||
float_type | x2, | ||
float_type | y2, | ||
float_type | yp2, | ||
float_type | ypp2, | ||
bool | auto_center, | ||
float_type | y1 | ||
) |
construct the container from numerical values
x0 | the position of the left edge |
y0 | the function derivative on the left boundary |
yp0 | the function second derivative on the left boundary |
ypp0 | the function value on the left boundary |
x2 | the position of the right edge |
y2 | the function derivative on the right boundary |
yp2 | the function second derivative on the right boundary |
ypp2 | the function value on the right boundary |
auto_center | if true, no midpoint value is specified. If false, match the value y1 at the midpoint |
y1 | the value to match at the midpoint, if auto_center is false |
c2_connector_function_p< float_type >::c2_connector_function_p | ( | const c2_fblock< float_type > & | fb0, |
const c2_fblock< float_type > & | fb2, | ||
bool | auto_center, | ||
float_type | y1 | ||
) |
construct the container from c2_fblock<float_type> objects
fb0 | the left edge |
fb2 | the right edge |
auto_center | if true, no midpoint value is specified. If false, match the value y1 at the midpoint |
y1 | the value to match at the midpoint, if auto_center is false |
|
virtual |
destructor
|
protected |
fill container numerically
|
virtual |
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
[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 >.
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh
|
protected |
Definition at line 2274 of file c2_function.hh.
View newest version in sPHENIX GitHub at line 2274 of file c2_function.hh