#include <SwitchingFunction.h>
|
double | calculate (double x, double &df) const |
| Compute the switching function. More...
|
|
double | calculateSqr (double distance2, double &dfunc) const |
| Compute the switching function. More...
|
|
std::string | description () const |
| Returns a string with a description of the switching function. More...
|
|
double | get_d0 () const |
| Returns d0. More...
|
|
double | get_dmax () const |
| Return dmax. More...
|
|
double | get_dmax2 () const |
| Return dmax squared. More...
|
|
double | get_r0 () const |
| Returns r0. More...
|
|
void | set (const std::string &definition, std::string &errormsg) |
| Set an arbitrary switching function. More...
|
|
void | set (int nn, int mm, double r_0, double d_0) |
| Set a "rational" switching function. More...
|
|
|
double | do_rational (double rdist, double &dfunc, int nn, int mm) const |
| Low-level tool to compute rational functions. More...
|
|
Small class to compute switching functions. Switching functions are created using set() and then can be used with function calculate() or calculateSqr(). Since this is typically computed on a distance vector, the second all (calculateSqr()) allows to skip the calculation of a square root in some case, thus potentially increasing performances.
◆ anonymous enum
Type of function.
Enumerator |
---|
rational | |
exponential | |
gaussian | |
smap | |
cubic | |
tanh | |
cosinus | |
matheval | |
leptontype | |
nativeq | |
◆ calculate()
double PLMD::SwitchingFunction::calculate |
( |
double |
x, |
|
|
double & |
df |
|
) |
| const |
Compute the switching function.
Returns s(x). df will be set to the value of the derivative of the switching function _divided_by_x
◆ calculateSqr()
double PLMD::SwitchingFunction::calculateSqr |
( |
double |
distance2, |
|
|
double & |
dfunc |
|
) |
| const |
Compute the switching function.
Returns \( s(\sqrt{x})\) . df will be set to the \( \frac{1}{\sqrt{x}}\frac{ds}{d\sqrt{x}}= 2 \frac{ds}{dx}\) (same as calculate()). The advantage is that in some case the expensive square root can be avoided (namely for rational functions, if nn and mm are even and d0 is zero)
◆ description()
std::string PLMD::SwitchingFunction::description |
( |
| ) |
const |
Returns a string with a description of the switching function.
◆ do_rational()
double PLMD::SwitchingFunction::do_rational |
( |
double |
rdist, |
|
|
double & |
dfunc, |
|
|
int |
nn, |
|
|
int |
mm |
|
) |
| const |
|
private |
◆ get_d0()
double PLMD::SwitchingFunction::get_d0 |
( |
| ) |
const |
◆ get_dmax()
double PLMD::SwitchingFunction::get_dmax |
( |
| ) |
const |
◆ get_dmax2()
double PLMD::SwitchingFunction::get_dmax2 |
( |
| ) |
const |
◆ get_r0()
double PLMD::SwitchingFunction::get_r0 |
( |
| ) |
const |
◆ registerKeywords()
void PLMD::SwitchingFunction::registerKeywords |
( |
Keywords & |
keys | ) |
|
|
static |
◆ set() [1/2]
void PLMD::SwitchingFunction::set |
( |
const std::string & |
definition, |
|
|
std::string & |
errormsg |
|
) |
| |
Set an arbitrary switching function.
Parse the string in definition and possibly returns errors in the errormsg string
◆ set() [2/2]
void PLMD::SwitchingFunction::set |
( |
int |
nn, |
|
|
int |
mm, |
|
|
double |
r_0, |
|
|
double |
d_0 |
|
) |
| |
Set a "rational" switching function.
Notice that a d_max is set automatically to a value such that f(d_max)=0.00001.
int PLMD::SwitchingFunction::a =0 |
|
private |
Parameters for smap function.
int PLMD::SwitchingFunction::b =0 |
|
private |
◆ beta
double PLMD::SwitchingFunction::beta =0.0 |
|
private |
double PLMD::SwitchingFunction::c =0.0 |
|
private |
double PLMD::SwitchingFunction::d =0.0 |
|
private |
◆ d0
double PLMD::SwitchingFunction::d0 =0.0 |
|
private |
Minimum distance (before this, function is one)
◆ dmax
double PLMD::SwitchingFunction::dmax =0.0 |
|
private |
Maximum distance (after this, function is zero)
◆ dmax_2
double PLMD::SwitchingFunction::dmax_2 =0.0 |
|
private |
◆ expression
◆ expression_deriv
◆ fastrational
bool PLMD::SwitchingFunction::fastrational =false |
|
private |
Set to true for fast rational functions (depending on x**2 only)
◆ init
bool PLMD::SwitchingFunction::init =false |
|
private |
This is to check that switching function has been initialized.
◆ invr0
double PLMD::SwitchingFunction::invr0 =0.0 |
|
private |
Inverse of scaling length.
We store the inverse to avoid a division
◆ invr0_2
double PLMD::SwitchingFunction::invr0_2 =0.0 |
|
private |
◆ lambda
double PLMD::SwitchingFunction::lambda =0.0 |
|
private |
◆ lepton_func
std::string PLMD::SwitchingFunction::lepton_func |
|
private |
◆ lepton_ref
std::vector<double*> PLMD::SwitchingFunction::lepton_ref |
|
private |
◆ lepton_ref_deriv
std::vector<double*> PLMD::SwitchingFunction::lepton_ref_deriv |
|
private |
◆ leptonx2
bool PLMD::SwitchingFunction::leptonx2 =false |
|
private |
Set to true if lepton only uses x2.
◆ mm
int PLMD::SwitchingFunction::mm =0 |
|
private |
◆ nn
int PLMD::SwitchingFunction::nn =6 |
|
private |
Exponents for rational function.
◆ ref
double PLMD::SwitchingFunction::ref =0.0 |
|
private |
◆ shift
double PLMD::SwitchingFunction::shift =0.0 |
|
private |
◆ stretch
double PLMD::SwitchingFunction::stretch =1.0 |
|
private |
Parameters for stretching the function to zero at d_max.
◆ type
enum { ... } PLMD::SwitchingFunction::type |
The documentation for this class was generated from the following files: