SourceXtractorPlusPlus
0.11
Please provide a description of the project.
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
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
double
getSigma
(
FlexibleModelFittingParameterManager
& parameter_manager,
const
SourceInterface
& source,
113
const
std::vector<double>
& free_parameter_sigmas)
const override
;
114
115
private
:
116
117
InitialValueFunc
m_initial_value
;
118
std::shared_ptr<FlexibleModelFittingConverterFactory>
m_converter_factory
;
119
};
120
121
class
FlexibleModelFittingDependentParameter
:
public
FlexibleModelFittingParameter
{
122
123
public
:
124
127
using
ValueFunc
=
std::function<double(const std::shared_ptr<CoordinateSystem>
&,
const
std::vector<double>
&)>;
128
129
FlexibleModelFittingDependentParameter
(
int
id
,
ValueFunc
value_calculator,
130
std::vector
<
std::shared_ptr<FlexibleModelFittingParameter>
> parameters)
131
:
FlexibleModelFittingParameter
(id),
132
m_value_calculator
(value_calculator),
133
m_parameters
(parameters) { }
134
135
std::shared_ptr<ModelFitting::BasicParameter>
create
(
136
FlexibleModelFittingParameterManager
& parameter_manager,
137
ModelFitting::EngineParameterManager
& engine_manager,
138
const
SourceInterface
& source)
const override
;
139
140
const
std::vector<std::shared_ptr<FlexibleModelFittingParameter>
>&
getDependees
()
const
{
141
return
m_parameters
;
142
}
143
144
double
getSigma
(
FlexibleModelFittingParameterManager
& parameter_manager,
const
SourceInterface
& source,
145
const
std::vector<double>
& free_parameter_sigmas)
const override
;
146
147
std::vector<double>
getPartialDerivatives
(
const
SourceInterface
& source,
const
std::vector<double>
& param_values)
const
;
148
149
private
:
150
151
ValueFunc
m_value_calculator
;
152
std::vector<std::shared_ptr<FlexibleModelFittingParameter>
>
m_parameters
;
153
154
};
155
156
}
157
158
#endif
/* _SEIMPLEMENTATION_PLUGIN_FLEXIBLEMODELFITTING_FLEXIBLEMODELFITTINGPARAMETER_H_ */
SourceXtractor::FlexibleModelFittingDependentParameter::getPartialDerivatives
std::vector< double > getPartialDerivatives(const SourceInterface &source, const std::vector< double > ¶m_values) const
Definition:
FlexibleModelFittingParameter.cpp:170
std::shared_ptr< ModelFitting::BasicParameter >
SourceXtractor::FlexibleModelFittingConstantParameter::m_value
ValueFunc m_value
Definition:
FlexibleModelFittingParameter.h:90
std::function< double(const SourceInterface &)>
SourceXtractor::FlexibleModelFittingDependentParameter::getDependees
const std::vector< std::shared_ptr< FlexibleModelFittingParameter > > & getDependees() const
Definition:
FlexibleModelFittingParameter.h:140
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:196
ModelFitting
Definition:
AsinhChiSquareComparator.h:30
SourceXtractor::FlexibleModelFittingConstantParameter::FlexibleModelFittingConstantParameter
FlexibleModelFittingConstantParameter(int id, ValueFunc value)
Definition:
FlexibleModelFittingParameter.cpp:70
SourceXtractor::FlexibleModelFittingConstantParameter::create
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
Definition:
FlexibleModelFittingParameter.cpp:73
SourceXtractor::FlexibleModelFittingFreeParameter::getSigma
double getSigma(FlexibleModelFittingParameterManager ¶meter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const override
Definition:
FlexibleModelFittingParameter.cpp:93
SourceXtractor::FlexibleModelFittingDependentParameter::create
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
Definition:
FlexibleModelFittingParameter.cpp:126
SourceXtractor::FlexibleModelFittingFreeParameter::create
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager ¶meter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
Definition:
FlexibleModelFittingParameter.cpp:80
SourceXtractor::FlexibleModelFittingFreeParameter::m_converter_factory
std::shared_ptr< FlexibleModelFittingConverterFactory > m_converter_factory
Definition:
FlexibleModelFittingParameter.h:118
SourceXtractor::FlexibleModelFittingConstantParameter
Definition:
FlexibleModelFittingParameter.h:67
SourceXtractor
Definition:
Aperture.h:30
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
std::vector< double >
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:66
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:151
SourceXtractor::FlexibleModelFittingDependentParameter::FlexibleModelFittingDependentParameter
FlexibleModelFittingDependentParameter(int id, ValueFunc value_calculator, std::vector< std::shared_ptr< FlexibleModelFittingParameter >> parameters)
Definition:
FlexibleModelFittingParameter.h:129
SourceXtractor::FlexibleModelFittingDependentParameter::m_parameters
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
Definition:
FlexibleModelFittingParameter.h:152
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:117
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:121
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:64
Generated by
1.8.14