SourceXtractorPlusPlus  0.15
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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>
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:
48  virtual ~FlexibleModelFittingParameter() = default;
49 
51  FlexibleModelFittingParameterManager& parameter_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 
68 
69 public:
70 
74 
76 
78  FlexibleModelFittingParameterManager& parameter_manager,
80  const SourceInterface& source) const override;
81 
83  const std::vector<double>&) const override {
84  return 0.0;
85  }
86 
87 
88 private:
89 
91 
92 };
93 
95 public:
96 
100 
104  m_initial_value(initial_value),
105  m_converter_factory(converter_factory) {}
106 
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 
119 };
120 
122 
123 public:
124 
128 
132  m_value_calculator(value_calculator),
133  m_parameters(parameters) { }
134 
136  FlexibleModelFittingParameterManager& parameter_manager,
137  ModelFitting::EngineParameterManager& engine_manager,
138  const SourceInterface& source) const override;
139 
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 
153 
154 };
155 
156 }
157 
158 #endif /* _SEIMPLEMENTATION_PLUGIN_FLEXIBLEMODELFITTING_FLEXIBLEMODELFITTINGPARAMETER_H_ */
std::vector< double > getPartialDerivatives(const SourceInterface &source, const std::vector< double > &param_values) const
double getSigma(FlexibleModelFittingParameterManager &parameter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const override
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager &parameter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
double getSigma(FlexibleModelFittingParameterManager &parameter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const override
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager &parameter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager &parameter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const override
std::shared_ptr< FlexibleModelFittingConverterFactory > m_converter_factory
FlexibleModelFittingFreeParameter(int id, InitialValueFunc initial_value, std::shared_ptr< FlexibleModelFittingConverterFactory > converter_factory)
const std::vector< std::shared_ptr< FlexibleModelFittingParameter > > & getDependees() const
double getSigma(FlexibleModelFittingParameterManager &, const SourceInterface &, const std::vector< double > &) const override
Class responsible for managing the parameters the least square engine minimizes.
FlexibleModelFittingDependentParameter(int id, ValueFunc value_calculator, std::vector< std::shared_ptr< FlexibleModelFittingParameter >> parameters)
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
The SourceInterface is an abstract &quot;source&quot; that has properties attached to it.
virtual std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager &parameter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const =0
virtual double getSigma(FlexibleModelFittingParameterManager &parameter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const =0