SourceXtractorPlusPlus
0.21
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::EngineParameterManager
Class responsible for managing the parameters the least square engine minimizes.
Definition
EngineParameterManager.h:61
SourceXtractor::FlexibleModelFittingConstantParameter
Definition
FlexibleModelFittingParameter.h: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::FlexibleModelFittingDependentParameter
Definition
FlexibleModelFittingParameter.h:129
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
Definition
FlexibleModelFittingParameter.h:94
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
Definition
FlexibleModelFittingParameter.h:45
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
AsinhChiSquareComparator.h:30
SourceXtractor
Definition
Aperture.h:30
std
STL namespace.
std::vector
Generated by
1.10.0