SourceXtractorPlusPlus
1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
SEImplementation
Plugin
FlexibleModelFitting
FlexibleModelFittingParameter.h
Go to the documentation of this file.
1
17
/*
18
* FlexibleModelFittingParameter.h
19
*
20
* Created on: Sep 17, 2018
21
* Author: mschefer
22
*/
23
24
#ifndef _SEIMPLEMENTATION_PLUGIN_FLEXIBLEMODELFITTING_FLEXIBLEMODELFITTINGPARAMETER_H_
25
#define _SEIMPLEMENTATION_PLUGIN_FLEXIBLEMODELFITTING_FLEXIBLEMODELFITTINGPARAMETER_H_
26
27
#include <memory>
28
#include <utility>
29
#include <functional>
30
#include <vector>
31
#include <mutex>
32
#include "
SEFramework/CoordinateSystem/CoordinateSystem.h
"
33
34
namespace
ModelFitting
{
35
class
BasicParameter
;
36
class
EngineParameterManager
;
37
}
38
39
namespace
SourceXtractor
{
40
41
class
SourceInterface
;
42
class
FlexibleModelFittingParameterManager
;
43
class
FlexibleModelFittingConverterFactory
;
44
45
class
FlexibleModelFittingParameter
:
public
std::enable_shared_from_this
<FlexibleModelFittingParameter>{
46
public
:
47
explicit
FlexibleModelFittingParameter
(
int
id
);
48
virtual
~FlexibleModelFittingParameter
() =
default
;
49
50
virtual
std::shared_ptr<ModelFitting::BasicParameter>
create
(
51
FlexibleModelFittingParameterManager
& parameter_manager,
52
ModelFitting::EngineParameterManager
& engine_manager,
53
const
SourceInterface
& source)
const
= 0;
54
55
virtual
int
getId
() const final;
56
57
// returns the estimated 1-sigma margin of error for the parameter on a given source, takes the vector of errors
58
// for the free parameters from the minimization engine as input
59
virtual
double
getSigma
(
FlexibleModelFittingParameterManager
& parameter_manager, const
SourceInterface
& source,
60
const
std
::
vector
<
double
>& free_parameter_sigmas) const = 0;
61
62
63
private:
64
int
m_id
;
65
};
66
67
class
FlexibleModelFittingConstantParameter
: public
FlexibleModelFittingParameter
{
68
69
public
:
70
73
using
ValueFunc
=
std::function
<double(
const
SourceInterface
&)>;
74
75
FlexibleModelFittingConstantParameter
(
int
id
,
ValueFunc
value);
76
77
std::shared_ptr<ModelFitting::BasicParameter>
create
(
78
FlexibleModelFittingParameterManager
& parameter_manager,
79
ModelFitting::EngineParameterManager
& engine_manager,
80
const
SourceInterface
& source)
const override
;
81
82
double
getSigma
(
FlexibleModelFittingParameterManager
&,
const
SourceInterface
&,
83
const
std::vector<double>
&)
const override
{
84
return
0.0;
85
}
86
87
88
private
:
89
90
ValueFunc
m_value
;
91
92
};
93
94
class
FlexibleModelFittingFreeParameter
:
public
FlexibleModelFittingParameter
{
95
public
:
96
99
using
InitialValueFunc
=
std::function
<double(
const
SourceInterface
&)>;
100
101
FlexibleModelFittingFreeParameter
(
int
id
,
InitialValueFunc
initial_value,
102
std::shared_ptr<FlexibleModelFittingConverterFactory>
converter_factory)
103
:
FlexibleModelFittingParameter
(id),
104
m_initial_value
(initial_value),
105
m_converter_factory
(converter_factory) {}
106
107
std::shared_ptr<ModelFitting::BasicParameter>
create(
108
FlexibleModelFittingParameterManager
& parameter_manager,
109
ModelFitting::EngineParameterManager
& engine_manager,
110
const
SourceInterface
& source)
const override
;
111
112
std::shared_ptr<ModelFitting::BasicParameter>
create(
113
FlexibleModelFittingParameterManager
& parameter_manager,
114
ModelFitting::EngineParameterManager
& engine_manager,
115
const
SourceInterface
& source,
116
double
initial_value,
double
current_value)
const
;
117
118
double
getSigma(
FlexibleModelFittingParameterManager
& parameter_manager,
const
SourceInterface
& source,
119
const
std::vector<double>
& free_parameter_sigmas)
const override
;
120
121
double
getInitialValue(
const
SourceInterface
& source)
const
;
122
123
private
:
124
125
InitialValueFunc
m_initial_value
;
126
std::shared_ptr<FlexibleModelFittingConverterFactory>
m_converter_factory
;
127
};
128
129
class
FlexibleModelFittingDependentParameter
:
public
FlexibleModelFittingParameter
{
130
131
public
:
132
135
using
ValueFunc
=
std::function
<double(
const
std::shared_ptr<CoordinateSystem>
&,
const
std::vector<double>
&)>;
136
137
FlexibleModelFittingDependentParameter
(
int
id
,
ValueFunc
value_calculator,
138
std::vector
<
std::shared_ptr<FlexibleModelFittingParameter>
> parameters)
139
:
FlexibleModelFittingParameter
(id),
140
m_value_calculator
(value_calculator),
141
m_parameters
(parameters) { }
142
143
std::shared_ptr<ModelFitting::BasicParameter>
create(
144
FlexibleModelFittingParameterManager
& parameter_manager,
145
ModelFitting::EngineParameterManager
& engine_manager,
146
const
SourceInterface
& source)
const override
;
147
148
const
std::vector<std::shared_ptr<FlexibleModelFittingParameter>
>&
getDependees
()
const
{
149
return
m_parameters
;
150
}
151
152
double
getSigma(
FlexibleModelFittingParameterManager
& parameter_manager,
const
SourceInterface
& source,
153
const
std::vector<double>
& free_parameter_sigmas)
const override
;
154
155
std::vector<double>
getPartialDerivatives(
const
SourceInterface
& source,
const
std::vector<double>
& param_values)
const
;
156
157
private
:
158
159
ValueFunc
m_value_calculator
;
160
std::vector<std::shared_ptr<FlexibleModelFittingParameter>
>
m_parameters
;
161
162
};
163
164
}
165
166
#endif
/* _SEIMPLEMENTATION_PLUGIN_FLEXIBLEMODELFITTING_FLEXIBLEMODELFITTINGPARAMETER_H_ */
CoordinateSystem.h
ModelFitting::BasicParameter
The parameter base class.
Definition
BasicParameter.h:43
ModelFitting::EngineParameterManager
Class responsible for managing the parameters the least square engine minimizes.
Definition
EngineParameterManager.h:61
SourceXtractor::FlexibleModelFittingConstantParameter::ValueFunc
std::function< double(const SourceInterface &)> ValueFunc
Definition
FlexibleModelFittingParameter.h:73
SourceXtractor::FlexibleModelFittingConstantParameter::FlexibleModelFittingConstantParameter
FlexibleModelFittingConstantParameter(int id, ValueFunc value)
Definition
FlexibleModelFittingParameter.cpp:67
SourceXtractor::FlexibleModelFittingConstantParameter::m_value
ValueFunc m_value
Definition
FlexibleModelFittingParameter.h:90
SourceXtractor::FlexibleModelFittingConstantParameter::getSigma
double getSigma(FlexibleModelFittingParameterManager &, const SourceInterface &, const std::vector< double > &) const override
Definition
FlexibleModelFittingParameter.h:82
SourceXtractor::FlexibleModelFittingConverterFactory
Definition
FlexibleModelFittingConverterFactory.h:39
SourceXtractor::FlexibleModelFittingDependentParameter::ValueFunc
std::function< double(const std::shared_ptr< CoordinateSystem > &, const std::vector< double > &)> ValueFunc
Definition
FlexibleModelFittingParameter.h:135
SourceXtractor::FlexibleModelFittingDependentParameter::m_parameters
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
Definition
FlexibleModelFittingParameter.h:160
SourceXtractor::FlexibleModelFittingDependentParameter::m_value_calculator
ValueFunc m_value_calculator
Definition
FlexibleModelFittingParameter.h:159
SourceXtractor::FlexibleModelFittingDependentParameter::FlexibleModelFittingDependentParameter
FlexibleModelFittingDependentParameter(int id, ValueFunc value_calculator, std::vector< std::shared_ptr< FlexibleModelFittingParameter > > parameters)
Definition
FlexibleModelFittingParameter.h:137
SourceXtractor::FlexibleModelFittingDependentParameter::getDependees
const std::vector< std::shared_ptr< FlexibleModelFittingParameter > > & getDependees() const
Definition
FlexibleModelFittingParameter.h:148
SourceXtractor::FlexibleModelFittingFreeParameter::InitialValueFunc
std::function< double(const SourceInterface &)> InitialValueFunc
Definition
FlexibleModelFittingParameter.h:99
SourceXtractor::FlexibleModelFittingFreeParameter::m_initial_value
InitialValueFunc m_initial_value
Definition
FlexibleModelFittingParameter.h:125
SourceXtractor::FlexibleModelFittingFreeParameter::m_converter_factory
std::shared_ptr< FlexibleModelFittingConverterFactory > m_converter_factory
Definition
FlexibleModelFittingParameter.h:126
SourceXtractor::FlexibleModelFittingFreeParameter::FlexibleModelFittingFreeParameter
FlexibleModelFittingFreeParameter(int id, InitialValueFunc initial_value, std::shared_ptr< FlexibleModelFittingConverterFactory > converter_factory)
Definition
FlexibleModelFittingParameter.h:101
SourceXtractor::FlexibleModelFittingParameterManager
Definition
FlexibleModelFittingParameterManager.h:44
SourceXtractor::FlexibleModelFittingParameter::create
virtual std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const =0
SourceXtractor::FlexibleModelFittingParameter::~FlexibleModelFittingParameter
virtual ~FlexibleModelFittingParameter()=default
SourceXtractor::FlexibleModelFittingParameter::getId
virtual int getId() const final
Definition
FlexibleModelFittingParameter.cpp:63
SourceXtractor::FlexibleModelFittingParameter::m_id
int m_id
Definition
FlexibleModelFittingParameter.h:64
SourceXtractor::FlexibleModelFittingParameter::getSigma
virtual double getSigma(FlexibleModelFittingParameterManager ¶meter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const =0
SourceXtractor::FlexibleModelFittingParameter::FlexibleModelFittingParameter
FlexibleModelFittingParameter(int id)
Definition
FlexibleModelFittingParameter.cpp:61
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition
SourceInterface.h:46
std::enable_shared_from_this
std::function
ModelFitting
Definition
DataVsModelResiduals.icpp:23
SourceXtractor
Definition
Aperture.h:30
std
STL namespace.
std::shared_ptr
std::vector
Generated by
1.15.0