SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
ModelFitting::DependentParameter< Parameters > Class Template Reference

Implementation of a parameter depending on an arbitrary number of other parameters. More...

#include <DependentParameter.h>

Inheritance diagram for ModelFitting::DependentParameter< Parameters >:
Collaboration diagram for ModelFitting::DependentParameter< Parameters >:

Public Types

using ValueCalculator = std::function<double(decltype(std::declval<Parameters>()->getValue())...)>
Public Types inherited from ModelFitting::BasicParameter
using ParameterObserver = std::function<void(double)>

Public Member Functions

 DependentParameter (ValueCalculator calculator, Parameters... parameters)
virtual ~DependentParameter ()=default
double getValue () const override
Public Member Functions inherited from ModelFitting::BasicParameter
virtual ~BasicParameter ()
 BasicParameter (const BasicParameter &)=delete
BasicParameteroperator= (const BasicParameter &)=delete
 BasicParameter (BasicParameter &&)=delete
BasicParameteroperator= (BasicParameter &&)=delete
std::size_t addObserver (ParameterObserver observer)
 The addObserver method adding observer to the member list.
bool removeObserver (std::size_t id)
bool isObserved () const

Static Public Attributes

static constexpr int PARAM_NO = sizeof...(Parameters)

Private Member Functions

template<typename First, typename ... Rest>
void inputParameterLoop (First &first, Rest &... rest)
template<typename Last>
void inputParameterLoop (Last &last)
template<typename... ParamValues>
void update (ParamValues... values)
void update (decltype(std::declval< Parameters >() ->getValue())... values)
template<typename Param>
void addParameterObserver (int, Param &param)

Private Attributes

std::shared_ptr< ValueCalculatorm_calculator
 function to calculate the dependent parameter value
std::shared_ptr< std::array< std::shared_ptr< BasicParameter >, PARAM_NO > > m_params

Additional Inherited Members

Protected Types inherited from ModelFitting::BasicParameter
typedef std::function< void(void)> GetValueHook
Protected Member Functions inherited from ModelFitting::BasicParameter
 BasicParameter (const double value)
virtual void setValue (const double new_value)
Protected Attributes inherited from ModelFitting::BasicParameter
GetValueHook m_get_value_hook
double m_value

Detailed Description

template<typename... Parameters>
class ModelFitting::DependentParameter< Parameters >

Implementation of a parameter depending on an arbitrary number of other parameters.

Variadic template implementation of a parameter depending on an arbitrary number of other parameters. A dependent parameter cannot be copied, but only moved.

DependentParameter creation should be achieved using the factory method createDependentParameter(...) provide after the end of this class.

Definition at line 48 of file DependentParameter.h.

Member Typedef Documentation

◆ ValueCalculator

template<typename... Parameters>
using ModelFitting::DependentParameter< Parameters >::ValueCalculator = std::function<double(decltype(std::declval<Parameters>()->getValue())...)>

Definition at line 54 of file DependentParameter.h.

Constructor & Destructor Documentation

◆ DependentParameter()

template<typename... Parameters>
ModelFitting::DependentParameter< Parameters >::DependentParameter ( ValueCalculator calculator,
Parameters... parameters )
inline

This constructor take a function which is used to compute the dependent parameter value as a function of input parameter values.

Definition at line 60 of file DependentParameter.h.

References ModelFitting::BasicParameter::BasicParameter(), getValue(), m_calculator, m_params, std::move(), and PARAM_NO.

Referenced by getValue().

Here is the call graph for this function:

◆ ~DependentParameter()

template<typename... Parameters>
virtual ModelFitting::DependentParameter< Parameters >::~DependentParameter ( )
virtualdefault

Member Function Documentation

◆ addParameterObserver()

template<typename... Parameters>
template<typename Param>
void ModelFitting::DependentParameter< Parameters >::addParameterObserver ( int ,
Param & param )
inlineprivate

Definition at line 120 of file DependentParameter.h.

References getValue(), ModelFitting::BasicParameter::isObserved(), m_params, and update().

Referenced by inputParameterLoop(), and inputParameterLoop().

Here is the call graph for this function:

◆ getValue()

template<typename... Parameters>
double ModelFitting::DependentParameter< Parameters >::getValue ( ) const
inlineoverridevirtual

◆ inputParameterLoop() [1/2]

template<typename... Parameters>
template<typename First, typename ... Rest>
void ModelFitting::DependentParameter< Parameters >::inputParameterLoop ( First & first,
Rest &... rest )
inlineprivate

Definition at line 91 of file DependentParameter.h.

References addParameterObserver(), inputParameterLoop(), and PARAM_NO.

Referenced by inputParameterLoop().

Here is the call graph for this function:

◆ inputParameterLoop() [2/2]

template<typename... Parameters>
template<typename Last>
void ModelFitting::DependentParameter< Parameters >::inputParameterLoop ( Last & last)
inlineprivate

Definition at line 97 of file DependentParameter.h.

References addParameterObserver(), and PARAM_NO.

Here is the call graph for this function:

◆ update() [1/2]

template<typename... Parameters>
void ModelFitting::DependentParameter< Parameters >::update ( decltype(std::declval< Parameters >() ->getValue())... values)
inlineprivate

Definition at line 112 of file DependentParameter.h.

References std::declval(), getValue(), m_calculator, and ModelFitting::BasicParameter::setValue().

Here is the call graph for this function:

◆ update() [2/2]

template<typename... Parameters>
template<typename... ParamValues>
void ModelFitting::DependentParameter< Parameters >::update ( ParamValues... values)
inlineprivate

Definition at line 108 of file DependentParameter.h.

References m_params, and update().

Referenced by addParameterObserver(), getValue(), and update().

Here is the call graph for this function:

Member Data Documentation

◆ m_calculator

template<typename... Parameters>
std::shared_ptr<ValueCalculator> ModelFitting::DependentParameter< Parameters >::m_calculator
private

function to calculate the dependent parameter value

Definition at line 80 of file DependentParameter.h.

Referenced by DependentParameter(), and update().

◆ m_params

template<typename... Parameters>
std::shared_ptr<std::array<std::shared_ptr<BasicParameter>, PARAM_NO> > ModelFitting::DependentParameter< Parameters >::m_params
private

Definition at line 83 of file DependentParameter.h.

Referenced by addParameterObserver(), DependentParameter(), getValue(), and update().

◆ PARAM_NO

template<typename... Parameters>
int ModelFitting::DependentParameter< Parameters >::PARAM_NO = sizeof...(Parameters)
staticconstexpr

Definition at line 52 of file DependentParameter.h.

Referenced by DependentParameter(), inputParameterLoop(), and inputParameterLoop().


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