SourceXtractorPlusPlus
0.19
SourceXtractor++, the next generation SExtractor
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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)
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_ */
std::shared_ptr< ModelFitting::BasicParameter >
SourceXtractor::FlexibleModelFittingConstantParameter::m_value
ValueFunc m_value
Definition:
FlexibleModelFittingParameter.h:90
std::function< double(const SourceInterface &)>
SourceXtractor::FlexibleModelFittingDependentParameter::getPartialDerivatives
std::vector< double > getPartialDerivatives(const SourceInterface &source, const std::vector< double > ¶m_values) const
Definition:
FlexibleModelFittingParameter.cpp:182
SourceXtractor::FlexibleModelFittingParameter::m_id
int m_id
Definition:
FlexibleModelFittingParameter.h:64
SourceXtractor::FlexibleModelFittingParameter::~FlexibleModelFittingParameter
virtual ~FlexibleModelFittingParameter()=default
SourceXtractor::FlexibleModelFittingDependentParameter::getSigma
double getSigma(FlexibleModelFittingParameterManager ¶meter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const override
Definition:
FlexibleModelFittingParameter.cpp:208
SourceXtractor::FlexibleModelFittingConstantParameter::FlexibleModelFittingConstantParameter
FlexibleModelFittingConstantParameter(int id, ValueFunc value)
Definition:
FlexibleModelFittingParameter.cpp:67
SourceXtractor::FlexibleModelFittingConstantParameter::create
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
Definition:
FlexibleModelFittingParameter.cpp:70
SourceXtractor::FlexibleModelFittingFreeParameter::getSigma
double getSigma(FlexibleModelFittingParameterManager ¶meter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const override
Definition:
FlexibleModelFittingParameter.cpp:102
SourceXtractor::FlexibleModelFittingDependentParameter::create
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
Definition:
FlexibleModelFittingParameter.cpp:138
SourceXtractor::FlexibleModelFittingFreeParameter::create
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
Definition:
FlexibleModelFittingParameter.cpp:77
SourceXtractor::FlexibleModelFittingFreeParameter::m_converter_factory
std::shared_ptr< FlexibleModelFittingConverterFactory > m_converter_factory
Definition:
FlexibleModelFittingParameter.h:126
SourceXtractor::FlexibleModelFittingConstantParameter
Definition:
FlexibleModelFittingParameter.h:67
SourceXtractor::FlexibleModelFittingParameterManager
Definition:
FlexibleModelFittingParameterManager.h:43
SourceXtractor::FlexibleModelFittingFreeParameter::FlexibleModelFittingFreeParameter
FlexibleModelFittingFreeParameter(int id, InitialValueFunc initial_value, std::shared_ptr< FlexibleModelFittingConverterFactory > converter_factory)
Definition:
FlexibleModelFittingParameter.h:101
SourceXtractor::FlexibleModelFittingParameter
Definition:
FlexibleModelFittingParameter.h:45
std::enable_shared_from_this
CoordinateSystem.h
SourceXtractor::FlexibleModelFittingFreeParameter::getInitialValue
double getInitialValue(const SourceInterface &source) const
Definition:
FlexibleModelFittingParameter.cpp:108
std::vector< double >
SourceXtractor::FlexibleModelFittingDependentParameter::getDependees
const std::vector< std::shared_ptr< FlexibleModelFittingParameter > > & getDependees() const
Definition:
FlexibleModelFittingParameter.h:148
SourceXtractor::FlexibleModelFittingConstantParameter::getSigma
double getSigma(FlexibleModelFittingParameterManager &, const SourceInterface &, const std::vector< double > &) const override
Definition:
FlexibleModelFittingParameter.h:82
SourceXtractor::FlexibleModelFittingParameter::getId
virtual int getId() const final
Definition:
FlexibleModelFittingParameter.cpp:63
ModelFitting::EngineParameterManager
Class responsible for managing the parameters the least square engine minimizes.
Definition:
EngineParameterManager.h:61
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::m_parameters
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
Definition:
FlexibleModelFittingParameter.h:160
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition:
SourceInterface.h:46
SourceXtractor::FlexibleModelFittingFreeParameter
Definition:
FlexibleModelFittingParameter.h:94
SourceXtractor::FlexibleModelFittingFreeParameter::m_initial_value
InitialValueFunc m_initial_value
Definition:
FlexibleModelFittingParameter.h:125
SourceXtractor::FlexibleModelFittingParameter::create
virtual std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const =0
SourceXtractor::FlexibleModelFittingDependentParameter
Definition:
FlexibleModelFittingParameter.h:129
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
Generated by
1.8.5