ProteoWizard
Public Member Functions | Private Member Functions | Private Attributes
ParametrizedCosine Class Reference
Inheritance diagram for ParametrizedCosine:
pwiz::frequency::ParametrizedFunction< double >

List of all members.

Public Member Functions

virtual unsigned int parameterCount () const
virtual double operator() (double x, const ublas::vector< double > &p) const
virtual ublas::vector< double > dp (double x, const ublas::vector< double > &p) const
virtual ublas::matrix< double > dp2 (double x, const ublas::vector< double > &p) const
- Public Member Functions inherited from pwiz::frequency::ParametrizedFunction< double >
virtual ~ParametrizedFunction ()

Private Member Functions

void preprocess (double x, const ublas::vector< double > &p) const

Private Attributes

double x_
double A_
double B_
double sinBx_
double cosBx_

Detailed Description

Definition at line 92 of file ParametrizedFunctionTest.cpp.


Member Function Documentation

virtual unsigned int ParametrizedCosine::parameterCount ( ) const
inlinevirtual

Implements pwiz::frequency::ParametrizedFunction< double >.

Definition at line 98 of file ParametrizedFunctionTest.cpp.

{return 2;}
virtual double ParametrizedCosine::operator() ( double  x,
const ublas::vector< double > &  p 
) const
inlinevirtual
virtual ublas::vector<double> ParametrizedCosine::dp ( double  x,
const ublas::vector< double > &  p 
) const
inlinevirtual

Implements pwiz::frequency::ParametrizedFunction< double >.

Definition at line 107 of file ParametrizedFunctionTest.cpp.

{
ublas::vector<double> v(2);
v(0) = cosBx_; // dF/dA
v(1) = -A_*x_*sinBx_; // dF/dB
return v;
}
virtual ublas::matrix<double> ParametrizedCosine::dp2 ( double  x,
const ublas::vector< double > &  p 
) const
inlinevirtual

Implements pwiz::frequency::ParametrizedFunction< double >.

Definition at line 117 of file ParametrizedFunctionTest.cpp.

{
ublas::matrix<double> m(2,2);
m(0,0) = 0; // d2F/dA2
m(1,0) = m(0,1) = -x_*sinBx_; // d2F/dAdB
m(1,1) = -A_*x_*x_*cosBx_; // d2F/dB2
return m;
}
void ParametrizedCosine::preprocess ( double  x,
const ublas::vector< double > &  p 
) const
inlineprivate

Definition at line 130 of file ParametrizedFunctionTest.cpp.

References x.

{
// check parameter size
if (p.size() != parameterCount())
throw logic_error("[Parabola] Wrong parameter size.");
// cache arguments and do expensive calculations
if (x!=x_ || p(0)!=A_ || p(1)!=B_)
{
x_ = x;
A_ = p(0);
B_ = p(1);
sinBx_ = sin(B_*x);
cosBx_ = cos(B_*x);
}
else
{
//if (os_) *os_ << "cache hit!\n";
}
}

Member Data Documentation

double ParametrizedCosine::x_
mutableprivate

Definition at line 152 of file ParametrizedFunctionTest.cpp.

double ParametrizedCosine::A_
mutableprivate

Definition at line 153 of file ParametrizedFunctionTest.cpp.

double ParametrizedCosine::B_
mutableprivate

Definition at line 154 of file ParametrizedFunctionTest.cpp.

double ParametrizedCosine::sinBx_
mutableprivate

Definition at line 155 of file ParametrizedFunctionTest.cpp.

double ParametrizedCosine::cosBx_
mutableprivate

Definition at line 156 of file ParametrizedFunctionTest.cpp.


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