#include <LinearSumFunction.h>
Inheritance diagram for LinearSumFunction:
This function is a composite of other functions and computes the linear sum of them.
Definition at line 26 of file LinearSumFunction.h.
Public Member Functions | |
virtual void | addToComposite (FunctionBase *) |
Adds the function to the linear sum of functions. | |
virtual FunctionBase * | clone () const |
Creates a new function object by copying an existing one. | |
virtual int | count () |
Returns the number of functions that are a part of this composite. | |
virtual double | derivByParm (int i, double x) const |
Returns the function's derivative at the coordinate value x with respect to the i-th parameter. | |
virtual unsigned int | dimensions () const |
Returns the number of dimensions of the data coordinate. | |
void | freeParmNames (std::vector< std::string > &names) const |
virtual const std::vector< double > & | getParameters () const |
Returns the values of the parameters as a vector. | |
virtual bool | hasDerivatives () const |
Returns true if function can calculate its partial derivatives. | |
virtual void | initialParameters (const FunctionHelper *helper) |
Sets the FunctionHelper so that the function can calculate a reasonable set of initial parameter values. | |
virtual double | integrate (double lower_limit, double upper_limit) const |
virtual bool | isComposite () const |
Returns true . | |
LinearSumFunction (const LinearSumFunction &) | |
The copy constructor. | |
LinearSumFunction () | |
The default constructor. | |
const std::string & | name () const |
Returns the name of the function. | |
virtual double | operator() (const std::vector< double > &v) const |
The function call operator for multi-dimension coordinate variable. | |
virtual double | operator() (double x) const |
The function call operator. | |
const std::vector< std::string > & | parmNames () const |
Returns a reference to a vector of parameter names. | |
virtual void | removeFromComposite (FunctionBase *) |
Removes the function from the linear sum of functions. | |
virtual void | setParameters (const std::vector< double > &incr) |
Sets the parameter values. | |
virtual std::vector< double >::const_iterator | setParameters (std::vector< double >::const_iterator it) |
Sets the parameter values to the value pointed to by the iterator. | |
void | setParmNames (const std::vector< std::string > &names) |
Sets the names of the parameters. | |
virtual int | size () const |
Returns the number of parameters. | |
Protected Member Functions | |
virtual void | initialize () |
Initializes the function and parameter names. | |
virtual void | resize () |
Re-sizes the appropriate vectors maintained in this base class. | |
void | setName (const char *) |
Sets the name of the function. | |
Protected Attributes | |
std::string | m_name |
The name of the function. | |
std::vector< std::string > | m_parm_names |
The names of the function parameters. | |
std::vector< double > | m_parms |
The parameter values. | |
Private Types | |
typedef std::vector< FunctionBase * > | FunctionList_t |
Private Attributes | |
FunctionList_t | m_functions |
typedef std::vector< FunctionBase * > FunctionList_t [private] |
Definition at line 31 of file LinearSumFunction.h.
The default constructor.
Definition at line 31 of file LinearSumFunction.cxx.
References LinearSumFunction::initialize().
Referenced by LinearSumFunction::clone().
LinearSumFunction | ( | const LinearSumFunction & | ) |
The copy constructor.
Makes a deep copy.
Definition at line 37 of file LinearSumFunction.cxx.
References LinearSumFunction::initialize(), and LinearSumFunction::m_functions.
void addToComposite | ( | FunctionBase * | ) | [virtual] |
Adds the function to the linear sum of functions.
Reimplemented from FunctionBase.
Definition at line 153 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions.
FunctionBase * clone | ( | ) | const [virtual] |
Creates a new function object by copying an existing one.
The implementation raises an assertion as this member function should be reimplemented in s derived class.
Reimplemented from FunctionBase.
Definition at line 54 of file LinearSumFunction.cxx.
References LinearSumFunction::LinearSumFunction().
int count | ( | ) | [virtual] |
Returns the number of functions that are a part of this composite.
Reimplemented from FunctionBase.
Definition at line 128 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions.
double derivByParm | ( | int | i, | |
double | x | |||
) | const [virtual] |
Returns the function's derivative at the coordinate value x
with respect to the i-th
parameter.
Derived classes must implement this function.
Reimplemented from FunctionBase.
Definition at line 110 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions, and LinearSumFunction::size().
unsigned int dimensions | ( | ) | const [virtual, inherited] |
Returns the number of dimensions of the data coordinate.
This implementation in the base class returns 1
. Derived class should override this function if the data coordinate is multi-dimensional.
Reimplemented in FunctionWrap.
Definition at line 213 of file FunctionBase.cxx.
Referenced by FunctionWrap::dimensions().
void freeParmNames | ( | std::vector< std::string > & | names | ) | const |
const vector< double > & getParameters | ( | ) | const [virtual] |
Returns the values of the parameters as a vector.
The function is non-const because a derived class may need to create the vector.
Reimplemented from FunctionBase.
Definition at line 83 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions, and FunctionBase::m_parms.
bool hasDerivatives | ( | ) | const [virtual, inherited] |
Returns true
if function can calculate its partial derivatives.
This base class implementation returns true
. Derived class that can not calculate its partial derivatives should return false
. This allows an application to not attempt to use a minimizer that requires derivatives to use this function.
Reimplemented in LogNormal, LogParabola, Novosibirsk, and FunctionWrap.
Definition at line 126 of file FunctionBase.cxx.
void initialize | ( | ) | [protected, virtual] |
Initializes the function and parameter names.
Reimplemented from FunctionBase.
Definition at line 49 of file LinearSumFunction.cxx.
References FunctionBase::m_name.
Referenced by LinearSumFunction::LinearSumFunction().
void initialParameters | ( | const FunctionHelper * | helper | ) | [virtual] |
Sets the FunctionHelper so that the function can calculate a reasonable set of initial parameter values.
Reimplemented from FunctionBase.
Definition at line 187 of file LinearSumFunction.cxx.
double integrate | ( | double | lower_limit, | |
double | upper_limit | |||
) | const [virtual, inherited] |
As of now all the integration is done here numerically using the trapezoidal rule. Derived class may implement an analytical expression in place of this numerical method.
Definition at line 138 of file FunctionBase.cxx.
References FunctionBase::operator()().
bool isComposite | ( | ) | const [virtual] |
Returns true
.
Reimplemented from FunctionBase.
Definition at line 148 of file LinearSumFunction.cxx.
const string & name | ( | ) | const [inherited] |
Returns the name of the function.
Definition at line 81 of file FunctionBase.cxx.
References FunctionBase::m_name.
Referenced by FunctionProjectorXML::createElement(), FunctionController::createNTuple(), hippodraw::Python::export_FunctionBase(), FunctionController::functionNames(), FunctionProjector::getTitle(), FunctionProjector::getYLabel(), and LinearSumFunction::parmNames().
double operator() | ( | const std::vector< double > & | v | ) | const [virtual, inherited] |
The function call operator for multi-dimension coordinate variable.
Returns the value of the function at coordinate represented by v. The implementation in this base class uses the first element of the vector and calls operator () ( double ).
Reimplemented in FunctionWrap.
Definition at line 181 of file FunctionBase.cxx.
References FunctionBase::operator()().
double operator() | ( | double | x | ) | const [virtual] |
The function call operator.
Reimplemented from FunctionBase.
Definition at line 174 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions.
const vector< string > & parmNames | ( | ) | const [virtual] |
Returns a reference to a vector of parameter names.
Reimplemented from FunctionBase.
Definition at line 60 of file LinearSumFunction.cxx.
References hippodraw::String::convert(), LinearSumFunction::m_functions, FunctionBase::m_parm_names, and FunctionBase::name().
void removeFromComposite | ( | FunctionBase * | ) | [virtual] |
Removes the function from the linear sum of functions.
Reimplemented from FunctionBase.
Definition at line 160 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions.
void resize | ( | ) | [protected, virtual, inherited] |
Re-sizes the appropriate vectors maintained in this base class.
Derived classes should call this member function after initializing the m_parm_names data member, as the new size is taken from that data member's size.
Definition at line 71 of file FunctionBase.cxx.
References FunctionBase::m_parm_names, FunctionBase::m_parms, and FunctionBase::size().
Referenced by Quadratic2::initialize(), Quadratic::initialize(), PowerLaw::initialize(), Novosibirsk::initialize(), LogParabola::initialize(), LogNormal::initialize(), Linear::initialize(), Landau::initialize(), Gaussian::initialize(), FunctionWrap::initialize(), Exponential::initialize(), Erfc::initialize(), ConstantF::initialize(), Chi2Dist::initialize(), BrokenPowerLaw::initialize(), FunctionWrap::setParmNames(), and FunctionBase::setParmNames().
void setName | ( | const char * | ) | [protected, inherited] |
Sets the name of the function.
Definition at line 66 of file FunctionBase.cxx.
References FunctionBase::m_name.
Referenced by FunctionWrap::setName().
void setParameters | ( | const std::vector< double > & | incr | ) | [virtual, inherited] |
Sets the parameter values.
Derived classes should implement this function by invoking incrementValues ( vector< double >::const_iterator ) so that they correctly work with the LinearSumFunction class.
Definition at line 106 of file FunctionBase.cxx.
Referenced by hippodraw::Python::export_FunctionBase(), FunctionProjector::restoreParameters(), FunctionProjectorXML::setAttributes(), and FunctionProjector::setParameters().
vector< double >::const_iterator setParameters | ( | std::vector< double >::const_iterator | it | ) | [virtual] |
Sets the parameter values to the value pointed to by the iterator.
Returns an iterator to a data element one past the last used data element.
Reimplemented from FunctionBase.
Definition at line 98 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions.
void setParmNames | ( | const std::vector< std::string > & | names | ) | [inherited] |
Sets the names of the parameters.
Reimplemented in FunctionWrap.
Definition at line 93 of file FunctionBase.cxx.
References FunctionBase::m_parm_names, and FunctionBase::resize().
int size | ( | ) | const [virtual] |
Returns the number of parameters.
Reimplemented from FunctionBase.
Definition at line 135 of file LinearSumFunction.cxx.
References LinearSumFunction::m_functions.
Referenced by LinearSumFunction::derivByParm().
FunctionList_t m_functions [private] |
Definition at line 32 of file LinearSumFunction.h.
Referenced by LinearSumFunction::addToComposite(), LinearSumFunction::count(), LinearSumFunction::derivByParm(), LinearSumFunction::getParameters(), LinearSumFunction::LinearSumFunction(), LinearSumFunction::operator()(), LinearSumFunction::parmNames(), LinearSumFunction::removeFromComposite(), LinearSumFunction::setParameters(), and LinearSumFunction::size().
std::string m_name [protected, inherited] |
The name of the function.
Definition at line 103 of file FunctionBase.h.
Referenced by FunctionBase::FunctionBase(), Quadratic2::initialize(), Quadratic::initialize(), PowerLaw::initialize(), Novosibirsk::initialize(), LogParabola::initialize(), LogNormal::initialize(), LinearSumFunction::initialize(), Linear::initialize(), Landau::initialize(), Gaussian::initialize(), Exponential::initialize(), Erfc::initialize(), ConstantF::initialize(), Chi2Dist::initialize(), BrokenPowerLaw::initialize(), FunctionBase::name(), and FunctionBase::setName().
std::vector<std::string> m_parm_names [protected, inherited] |
The names of the function parameters.
Definition at line 106 of file FunctionBase.h.
Referenced by Quadratic2::initialize(), Quadratic::initialize(), PowerLaw::initialize(), Novosibirsk::initialize(), LogParabola::initialize(), LogNormal::initialize(), Linear::initialize(), Landau::initialize(), Gaussian::initialize(), Exponential::initialize(), Erfc::initialize(), ConstantF::initialize(), Chi2Dist::initialize(), BrokenPowerLaw::initialize(), LinearSumFunction::parmNames(), FunctionBase::parmNames(), FunctionBase::resize(), FunctionWrap::setParmNames(), FunctionBase::setParmNames(), and FunctionBase::size().
std::vector< double > m_parms [protected, inherited] |
The parameter values.
Definition at line 109 of file FunctionBase.h.
Referenced by BrokenPowerLaw::BrokenPowerLaw(), Erfc::calcRed(), Chi2Dist::Chi2Dist(), ConstantF::ConstantF(), Gaussian::derivByMean(), Landau::derivByNorm(), Gaussian::derivByNorm(), Quadratic2::derivByParm(), PowerLaw::derivByParm(), LogParabola::derivByParm(), Exponential::derivByParm(), Erfc::derivByParm(), Chi2Dist::derivByParm(), BrokenPowerLaw::derivByParm(), Landau::derivByPeak(), Landau::derivBySigma(), Gaussian::derivBySigma(), Erfc::Erfc(), Exponential::Exponential(), Gaussian::Gaussian(), LinearSumFunction::getParameters(), FunctionBase::getParameters(), Quadratic2::initialParameters(), Quadratic::initialParameters(), PowerLaw::initialParameters(), Novosibirsk::initialParameters(), LogParabola::initialParameters(), LogNormal::initialParameters(), Linear::initialParameters(), Landau::initialParameters(), Gaussian::initialParameters(), Exponential::initialParameters(), Erfc::initialParameters(), ConstantF::initialParameters(), Chi2Dist::initialParameters(), BrokenPowerLaw::initialParameters(), Landau::Landau(), Linear::Linear(), LogNormal::LogNormal(), LogParabola::LogParabola(), Novosibirsk::Novosibirsk(), Quadratic2::operator()(), Quadratic::operator()(), PowerLaw::operator()(), Novosibirsk::operator()(), LogParabola::operator()(), LogNormal::operator()(), Linear::operator()(), Landau::operator()(), Gaussian::operator()(), Exponential::operator()(), ConstantF::operator()(), Chi2Dist::operator()(), BrokenPowerLaw::operator()(), PowerLaw::PowerLaw(), Quadratic::Quadratic(), Quadratic2::Quadratic2(), FunctionBase::resize(), and FunctionBase::setParameters().