SourceXtractorPlusPlus
0.12
Please provide a description of the project.
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
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_ */
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:170
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
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::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::FlexibleModelFittingDependentParameter::getDependees
const std::vector< std::shared_ptr< FlexibleModelFittingParameter > > & getDependees() const
Definition:
FlexibleModelFittingParameter.h:140
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.5