SourceXtractorPlusPlus  0.11
Please provide a description of the project.
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 
73  using ValueFunc = std::function<double(const SourceInterface&)>;
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_ */
SourceXtractor::FlexibleModelFittingParameter::create
virtual std::shared_ptr< ModelFitting::BasicParameter > create(FlexibleModelFittingParameterManager &parameter_manager, ModelFitting::EngineParameterManager &engine_manager, const SourceInterface &source) const =0
std::shared_ptr< ModelFitting::BasicParameter >
SourceXtractor::FlexibleModelFittingDependentParameter
Definition: FlexibleModelFittingParameter.h:121
SourceXtractor::FlexibleModelFittingFreeParameter::FlexibleModelFittingFreeParameter
FlexibleModelFittingFreeParameter(int id, InitialValueFunc initial_value, std::shared_ptr< FlexibleModelFittingConverterFactory > converter_factory)
Definition: FlexibleModelFittingParameter.h:101
std::vector
STL class.
SourceXtractor::FlexibleModelFittingFreeParameter
Definition: FlexibleModelFittingParameter.h:94
SourceXtractor::FlexibleModelFittingConstantParameter::m_value
ValueFunc m_value
Definition: FlexibleModelFittingParameter.h:90
SourceXtractor::FlexibleModelFittingParameter::FlexibleModelFittingParameter
FlexibleModelFittingParameter(int id)
Definition: FlexibleModelFittingParameter.cpp:64
std::function< double(const SourceInterface &)>
SourceXtractor::FlexibleModelFittingParameter::getSigma
virtual double getSigma(FlexibleModelFittingParameterManager &parameter_manager, const SourceInterface &source, const std::vector< double > &free_parameter_sigmas) const =0
CoordinateSystem.h
SourceXtractor::FlexibleModelFittingDependentParameter::getDependees
const std::vector< std::shared_ptr< FlexibleModelFittingParameter > > & getDependees() const
Definition: FlexibleModelFittingParameter.h:140
SourceXtractor::FlexibleModelFittingParameterManager
Definition: FlexibleModelFittingParameterManager.h:43
SourceXtractor::FlexibleModelFittingParameter
Definition: FlexibleModelFittingParameter.h:45
SourceXtractor
Definition: Aperture.h:30
SourceXtractor::FlexibleModelFittingFreeParameter::m_initial_value
InitialValueFunc m_initial_value
Definition: FlexibleModelFittingParameter.h:117
SourceXtractor::FlexibleModelFittingParameter::getId
virtual int getId() const final
Definition: FlexibleModelFittingParameter.cpp:66
SourceXtractor::FlexibleModelFittingDependentParameter::m_value_calculator
ValueFunc m_value_calculator
Definition: FlexibleModelFittingParameter.h:151
SourceXtractor::FlexibleModelFittingParameter::m_id
int m_id
Definition: FlexibleModelFittingParameter.h:64
SourceXtractor::FlexibleModelFittingParameter::~FlexibleModelFittingParameter
virtual ~FlexibleModelFittingParameter()=default
ModelFitting::EngineParameterManager
Class responsible for managing the parameters the least square engine minimizes.
Definition: EngineParameterManager.h:61
std::enable_shared_from_this
SourceXtractor::FlexibleModelFittingDependentParameter::m_parameters
std::vector< std::shared_ptr< FlexibleModelFittingParameter > > m_parameters
Definition: FlexibleModelFittingParameter.h:152
SourceXtractor::FlexibleModelFittingConstantParameter
Definition: FlexibleModelFittingParameter.h:67
SourceXtractor::FlexibleModelFittingDependentParameter::FlexibleModelFittingDependentParameter
FlexibleModelFittingDependentParameter(int id, ValueFunc value_calculator, std::vector< std::shared_ptr< FlexibleModelFittingParameter >> parameters)
Definition: FlexibleModelFittingParameter.h:129
SourceXtractor::FlexibleModelFittingConstantParameter::getSigma
double getSigma(FlexibleModelFittingParameterManager &, const SourceInterface &, const std::vector< double > &) const override
Definition: FlexibleModelFittingParameter.h:82
SourceXtractor::FlexibleModelFittingFreeParameter::m_converter_factory
std::shared_ptr< FlexibleModelFittingConverterFactory > m_converter_factory
Definition: FlexibleModelFittingParameter.h:118
std
STL namespace.
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition: SourceInterface.h:46
ModelFitting
Definition: AsinhChiSquareComparator.h:30