Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
c2_transformation< float_type > Class Template Reference

a transformation of a coordinate, including an inverse More...

#include <c2_function.hh>

Inheritance diagram for c2_transformation< float_type >:

Public Member Functions

 c2_transformation (bool transformed, float_type(*xin)(float_type), float_type(*xinp)(float_type), float_type(*xinpp)(float_type), float_type(*xout)(float_type))
 initialize all our function pointers More...
 
 c2_transformation (bool transformed)
 initialize all our function pointers so that only the (overridden) virtual functions can be called without an error More...
 
virtual ~c2_transformation ()
 the destructor More...
 
virtual float_type fIn (float_type x) const
 virtual input X transform More...
 
virtual float_type fInPrime (float_type x) const
 virtual input X transform derivative More...
 
virtual float_type fInDPrime (float_type x) const
 virtual input X transform second derivative More...
 
virtual float_type fOut (float_type x) const
 virtual output X transform More...
 

Public Attributes

const bool fTransformed
 flag to indicate if this transform is not the identity More...
 
const bool fHasStaticTransforms
 flag to indicate if the static function pointers can be used for efficiency More...
 
float_type(*const pIn )(float_type)
 non-virtual pointer to input X transform More...
 
float_type(*const pInPrime )(float_type)
 non-virtual pointer to input X transform derivative More...
 
float_type(*const pInDPrime )(float_type)
 non-virtual pointer to input X transform second derivative More...
 
float_type(*const pOut )(float_type)
 non-virtual pointer to output X transform More...
 

Static Protected Member Functions

static float_type report_error (float_type x)
 utility function for unimplemented conversion More...
 
static float_type ident (float_type x)
 utility function f(x)=x useful in axis transforms More...
 
static float_type one (float_type)
 utility function f(x)=1 useful in axis transforms More...
 
static float_type zero (float_type)
 utility function f(x)=0 useful in axis transforms More...
 
static float_type recip (float_type x)
 utility function f(x)=1/x useful in axis transforms More...
 
static float_type recip_prime (float_type x)
 utility function f(x)=-1/x**2 useful in axis transforms More...
 
static float_type recip_prime2 (float_type x)
 utility function f(x)=2/x**3 useful in axis transforms More...
 

Detailed Description

template<typename float_type>
class c2_transformation< float_type >

a transformation of a coordinate, including an inverse

Definition at line 1257 of file c2_function.hh.

Constructor & Destructor Documentation

template<typename float_type>
c2_transformation< float_type >::c2_transformation ( bool  transformed,
float_type(*)(float_type)  xin,
float_type(*)(float_type)  xinp,
float_type(*)(float_type)  xinpp,
float_type(*)(float_type)  xout 
)
inline

initialize all our function pointers

Parameters
transformedtrue if this function is not the identity
xininput X transform
xinpinput X transform derivative
xinppinput X transform second derivative
xoutoutput X transform, which MUST be the inverse of xin

Definition at line 1265 of file c2_function.hh.

1270  :
1271  fTransformed(transformed), fHasStaticTransforms(true),
1272  pIn(xin), pInPrime(xinp), pInDPrime(xinpp), pOut(xout) { }
const bool fTransformed
flag to indicate if this transform is not the identity
float_type(*const pOut)(float_type)
non-virtual pointer to output X transform
float_type(*const pInDPrime)(float_type)
non-virtual pointer to input X transform second derivative
float_type(*const pIn)(float_type)
non-virtual pointer to input X transform
float_type(*const pInPrime)(float_type)
non-virtual pointer to input X transform derivative
const bool fHasStaticTransforms
flag to indicate if the static function pointers can be used for efficiency
template<typename float_type>
c2_transformation< float_type >::c2_transformation ( bool  transformed)
inline

initialize all our function pointers so that only the (overridden) virtual functions can be called without an error

Parameters
transformedtrue if this function is nonlinear

Definition at line 1277 of file c2_function.hh.

1277  :
1278  fTransformed(transformed), fHasStaticTransforms(false),
1280  pOut(report_error) { }
const bool fTransformed
flag to indicate if this transform is not the identity
float_type(*const pOut)(float_type)
non-virtual pointer to output X transform
float_type(*const pInDPrime)(float_type)
non-virtual pointer to input X transform second derivative
float_type(*const pIn)(float_type)
non-virtual pointer to input X transform
float_type(*const pInPrime)(float_type)
non-virtual pointer to input X transform derivative
static float_type report_error(float_type x)
utility function for unimplemented conversion
const bool fHasStaticTransforms
flag to indicate if the static function pointers can be used for efficiency
template<typename float_type>
virtual c2_transformation< float_type >::~c2_transformation ( )
inlinevirtual

the destructor

Definition at line 1282 of file c2_function.hh.

1282 { }

Member Function Documentation

template<typename float_type>
virtual float_type c2_transformation< float_type >::fIn ( float_type  x) const
inlinevirtual

virtual input X transform

Definition at line 1303 of file c2_function.hh.

1303 { return pIn(x); }
tuple x
Definition: test.py:50
float_type(*const pIn)(float_type)
non-virtual pointer to input X transform
template<typename float_type>
virtual float_type c2_transformation< float_type >::fInDPrime ( float_type  x) const
inlinevirtual

virtual input X transform second derivative

Definition at line 1307 of file c2_function.hh.

1307 { return pInDPrime(x); }
tuple x
Definition: test.py:50
float_type(*const pInDPrime)(float_type)
non-virtual pointer to input X transform second derivative
template<typename float_type>
virtual float_type c2_transformation< float_type >::fInPrime ( float_type  x) const
inlinevirtual

virtual input X transform derivative

Definition at line 1305 of file c2_function.hh.

1305 { return pInPrime(x); }
tuple x
Definition: test.py:50
float_type(*const pInPrime)(float_type)
non-virtual pointer to input X transform derivative
template<typename float_type>
virtual float_type c2_transformation< float_type >::fOut ( float_type  x) const
inlinevirtual

virtual output X transform

Definition at line 1309 of file c2_function.hh.

1309 { return pOut(x); }
tuple x
Definition: test.py:50
float_type(*const pOut)(float_type)
non-virtual pointer to output X transform
template<typename float_type>
static float_type c2_transformation< float_type >::ident ( float_type  x)
inlinestaticprotected

utility function f(x)=x useful in axis transforms

Definition at line 1317 of file c2_function.hh.

1317 { return x; }
tuple x
Definition: test.py:50
template<typename float_type>
static float_type c2_transformation< float_type >::one ( float_type  )
inlinestaticprotected

utility function f(x)=1 useful in axis transforms

Definition at line 1319 of file c2_function.hh.

1319 { return 1; }

Here is the caller graph for this function:

template<typename float_type>
static float_type c2_transformation< float_type >::recip ( float_type  x)
inlinestaticprotected

utility function f(x)=1/x useful in axis transforms

Definition at line 1323 of file c2_function.hh.

1323 { return 1.0/x; }
tuple x
Definition: test.py:50
template<typename float_type>
static float_type c2_transformation< float_type >::recip_prime ( float_type  x)
inlinestaticprotected

utility function f(x)=-1/x**2 useful in axis transforms

Definition at line 1325 of file c2_function.hh.

1325 { return -1/(x*x); }
tuple x
Definition: test.py:50
template<typename float_type>
static float_type c2_transformation< float_type >::recip_prime2 ( float_type  x)
inlinestaticprotected

utility function f(x)=2/x**3 useful in axis transforms

Definition at line 1327 of file c2_function.hh.

1327 { return 2/(x*x*x); }
tuple x
Definition: test.py:50
template<typename float_type>
static float_type c2_transformation< float_type >::report_error ( float_type  x)
inlinestaticprotected

utility function for unimplemented conversion

Definition at line 1313 of file c2_function.hh.

1313  {
1314  throw c2_exception("use of improperly constructed axis transform");
1315  return x; }
tuple x
Definition: test.py:50
the exception class for c2_function operations.
Definition: c2_function.hh:65
template<typename float_type>
static float_type c2_transformation< float_type >::zero ( float_type  )
inlinestaticprotected

utility function f(x)=0 useful in axis transforms

Definition at line 1321 of file c2_function.hh.

1321 { return 0; }

Member Data Documentation

template<typename float_type>
const bool c2_transformation< float_type >::fHasStaticTransforms

flag to indicate if the static function pointers can be used for efficiency

Definition at line 1287 of file c2_function.hh.

template<typename float_type>
const bool c2_transformation< float_type >::fTransformed

flag to indicate if this transform is not the identity

Definition at line 1284 of file c2_function.hh.

template<typename float_type>
float_type(* const c2_transformation< float_type >::pIn)(float_type)

non-virtual pointer to input X transform

Note
the pointers to functions allow highly optimized access when static functions are available. They are only used inside value_with_derivatives(), which is assumed to be the most critical routine.

Definition at line 1294 of file c2_function.hh.

template<typename float_type>
float_type(* const c2_transformation< float_type >::pInDPrime)(float_type)

non-virtual pointer to input X transform second derivative

Definition at line 1298 of file c2_function.hh.

template<typename float_type>
float_type(* const c2_transformation< float_type >::pInPrime)(float_type)

non-virtual pointer to input X transform derivative

Definition at line 1296 of file c2_function.hh.

template<typename float_type>
float_type(* const c2_transformation< float_type >::pOut)(float_type)

non-virtual pointer to output X transform

Definition at line 1300 of file c2_function.hh.


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