Jpp in_tag_pdf_generation
the software that should make you happy
Loading...
Searching...
No Matches
JMATH::JBell Struct Reference

Bell function object. More...

#include <JBell.hh>

Inheritance diagram for JMATH::JBell:
JMATH::JGauss_t JMATH::JMath< JGauss_t > JLANG::JEquals< JFirst_t, JSecond_t >

Public Types

typedef double JBell_t::* parameter_type
 Type definition of fit parameter.
 

Public Member Functions

 JBell ()
 Default constructor.
 
 JBell (const JBell_t &bell, const double alpha=2.0)
 Copy constructor.
 
 JBell (const double mean, const double sigma, const double signal=1.0, const double background=0.0, const double alpha=2.0)
 Constructor.
 
double getValue (const double x) const
 Function value.
 
double getDerivative (const double x) const
 Derivative value.
 
double operator() (const double x) const
 Function value.
 
const JBell_tgetGradient (const double x) const
 Get gradient.
 
bool equals (const JGauss_t &gauss, const double eps=std::numeric_limits< double >::min()) const
 Equality.
 
JGauss_tadd (const JGauss_t &gauss)
 Add gauss.
 
JGauss_tsub (const JGauss_t &gauss)
 Subtract gauss.
 
JGauss_tmul (const double factor)
 Scale gauss.
 
JGauss_tmul (const JSecond_t &object)
 Multiply with object.
 

Public Attributes

double mean
 
double sigma
 
double signal
 
double background
 

Private Member Functions

double get (const double u) const
 Get ordinate value.
 

Static Private Member Functions

static double _f (const double x, const double a)
 Power.
 

Private Attributes

double alpha
 power
 
double V
 normalisation constant
 
JBell_t gradient
 

Detailed Description

Bell function object.


This function object correspods to a Gauss with a different power (alpha) for the exponential term.

Evaluates function, derivative and gradient values.

Definition at line 30 of file JBell.hh.

Member Typedef Documentation

◆ parameter_type

double JBell_t::* JMATH::JBell::parameter_type

Type definition of fit parameter.

Definition at line 36 of file JBell.hh.

Constructor & Destructor Documentation

◆ JBell() [1/3]

JMATH::JBell::JBell ( )
inline

Default constructor.

Definition at line 42 of file JBell.hh.

42 :
43 JBell_t()
44 {}
JGauss_t JBell_t
Type definition for Bell model.
Definition JBell.hh:21

◆ JBell() [2/3]

JMATH::JBell::JBell ( const JBell_t & bell,
const double alpha = 2.0 )
inline

Copy constructor.

Parameters
bellbell
alphaalpha

Definition at line 53 of file JBell.hh.

54 :
55 JBell_t(bell),
56 alpha(alpha),
57 V(2.0 * pow(2.0,1.0/alpha) * tgamma(1.0/alpha) / alpha)
58 {}
T pow(const T &x, const double y)
Power .
Definition JMath.hh:97
double V
normalisation constant
Definition JBell.hh:142
double alpha
power
Definition JBell.hh:141

◆ JBell() [3/3]

JMATH::JBell::JBell ( const double mean,
const double sigma,
const double signal = 1.0,
const double background = 0.0,
const double alpha = 2.0 )
inline

Constructor.

Parameters
meanmean
sigmasigma
signalsignal
backgroundbackground
alphaalpha

Definition at line 70 of file JBell.hh.

74 :
76 {}
JBell()
Default constructor.
Definition JBell.hh:42
double background
Definition JGauss.hh:164
double signal
Definition JGauss.hh:163

Member Function Documentation

◆ getValue()

double JMATH::JBell::getValue ( const double x) const
inline

Function value.

Parameters
xabscissa value
Returns
function value

Definition at line 85 of file JBell.hh.

86 {
87 const double u = (x - mean) / sigma;
88
89 return signal * get(u) + background;
90 }
double get(const double u) const
Get ordinate value.
Definition JBell.hh:163

◆ getDerivative()

double JMATH::JBell::getDerivative ( const double x) const
inline

Derivative value.

Parameters
xabscissa value
Returns
derivative value

Definition at line 99 of file JBell.hh.

100 {
101 const double u = (x - mean) / sigma;
102
103 return signal * get(u) * copysign(_f(u, alpha - 1.0), -u) * alpha / sigma;
104 }
static double _f(const double x, const double a)
Power.
Definition JBell.hh:151

◆ operator()()

double JMATH::JBell::operator() ( const double x) const
inline

Function value.

Parameters
xabscissa value
Returns
function value

Definition at line 113 of file JBell.hh.

114 {
115 return getValue(x);
116 }
double getValue(const double x) const
Function value.
Definition JBell.hh:85

◆ getGradient()

const JBell_t & JMATH::JBell::getGradient ( const double x) const
inline

Get gradient.

Parameters
xabscissa value
Returns
gradient

Definition at line 125 of file JBell.hh.

126 {
127 const double w = 1.0 / sigma;
128 const double u = (x - mean) * w;
129 const double f0 = get(u);
130 const double fs = signal * f0;
131
132 gradient.mean = fs * copysign(_f(u, alpha - 1.0), u) * alpha * w; // d(f)/d(mean)
133 gradient.sigma = fs * -(_f(u, alpha) * alpha + 1.0) * w; // d(f)/d(sigma)
134 gradient.signal = f0; // d(f)/d(signal)
135 gradient.background = 1.0; // d(f)/d(background)
136
137 return gradient;
138 }
JBell_t gradient
Definition JBell.hh:170

◆ _f()

static double JMATH::JBell::_f ( const double x,
const double a )
inlinestaticprivate

Power.

Parameters
xabscissa value
apower
Returns
ordinate value

Definition at line 151 of file JBell.hh.

152 {
153 return -0.5 * pow(fabs(x), a);
154 }

◆ get()

double JMATH::JBell::get ( const double u) const
inlineprivate

Get ordinate value.

Parameters
uabscissa value
Returns
ordinate value

Definition at line 163 of file JBell.hh.

164 {
165 const double v = _f(u, alpha);
166
167 return exp(v) / (sigma * V);
168 }

◆ equals()

bool JMATH::JGauss_t::equals ( const JGauss_t & gauss,
const double eps = std::numeric_limits<double>::min() ) const
inlineinherited

Equality.

Parameters
gaussgauss
epsnumerical precision
Returns
true if gauss's identical; else false

Definition at line 70 of file JGauss.hh.

72 {
73 return (fabs(mean - gauss.mean) <= eps &&
74 fabs(sigma - gauss.sigma) <= eps &&
75 fabs(signal - gauss.signal) <= eps &&
76 fabs(background - gauss.background) <= eps);
77 }
double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).

◆ add()

JGauss_t & JMATH::JGauss_t::add ( const JGauss_t & gauss)
inlineinherited

Add gauss.

Parameters
gaussgauss
Returns
this gauss

Definition at line 86 of file JGauss.hh.

87 {
88 mean += gauss.mean;
89 sigma += gauss.sigma;
90 signal += gauss.signal;
91 background += gauss.background;
92
93 return *this;
94 }

◆ sub()

JGauss_t & JMATH::JGauss_t::sub ( const JGauss_t & gauss)
inlineinherited

Subtract gauss.

Parameters
gaussgauss
Returns
this gauss

Definition at line 103 of file JGauss.hh.

104 {
105 mean -= gauss.mean;
106 sigma -= gauss.sigma;
107 signal -= gauss.signal;
108 background -= gauss.background;
109
110 return *this;
111 }

◆ mul() [1/2]

JGauss_t & JMATH::JGauss_t::mul ( const double factor)
inlineinherited

Scale gauss.

Parameters
factormultiplication factor
Returns
this gauss

Definition at line 120 of file JGauss.hh.

121 {
122 mean *= factor;
123 sigma *= factor;
124 signal *= factor;
125 background *= factor;
126
127 return *this;
128 }

◆ mul() [2/2]

JGauss_t & JMATH::JMath< JGauss_t, JSecond_t >::mul ( const JSecond_t & object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 354 of file JMath.hh.

355 {
356 return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
357 }

Member Data Documentation

◆ alpha

double JMATH::JBell::alpha
private

power

Definition at line 141 of file JBell.hh.

◆ V

double JMATH::JBell::V
private

normalisation constant

Definition at line 142 of file JBell.hh.

◆ gradient

JBell_t JMATH::JBell::gradient
mutableprivate

Definition at line 170 of file JBell.hh.

◆ mean

double JMATH::JGauss_t::mean
inherited

Definition at line 161 of file JGauss.hh.

◆ sigma

double JMATH::JGauss_t::sigma
inherited

Definition at line 162 of file JGauss.hh.

◆ signal

double JMATH::JGauss_t::signal
inherited

Definition at line 163 of file JGauss.hh.

◆ background

double JMATH::JGauss_t::background
inherited

Definition at line 164 of file JGauss.hh.


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