SourceXtractorPlusPlus  0.13
Please provide a description of the project.
CompactExponentialModel.h
Go to the documentation of this file.
1 /*
2  * CompactExponentialModel.h
3  *
4  * Created on: Aug 19, 2019
5  * Author: mschefer
6  */
7 
8 #ifndef _MODELFITTING_MODELS_COMPACTEXPONENTIALMODEL_H_
9 #define _MODELFITTING_MODELS_COMPACTEXPONENTIALMODEL_H_
10 
12 
13 namespace ModelFitting {
14 
15 template <typename ImageType>
16 class CompactExponentialModel : public CompactModelBase<ImageType> {
17 
18 public:
19  CompactExponentialModel(double sharp_radius,
22  std::shared_ptr<BasicParameter> rotation, double width, double height,
26 
27  virtual ~CompactExponentialModel() = default;
28 
29  double getValue(double x, double y) const override;
30  ImageType getRasterizedImage(double pixel_scale, std::size_t size_x, std::size_t size_y) const override;
31 
32 private:
39 
42  double i0, k;
43  double max_r_sqr;
44 
45  inline float evaluateModel(float x, float y) const {
46  float x2 = x * transform[0] + y * transform[1];
47  float y2 = x * transform[2] + y * transform[3];
48  float r_sqr = x2*x2 + y2*y2;
49  if (r_sqr < max_r_sqr) {
50  float r = std::sqrt(r_sqr);
51  return float(i0) * std::exp(float(-k * r));
52  } else {
53  return 0;
54  }
55  }
56  };
57 
59 
60  // Exponential parameters
64 
65 };
66 
67 }
68 
70 
71 #endif /* _MODELFITTING_MODELS_COMPACTEXPONENTIALMODEL_H_ */
ModelFitting::CompactExponentialModel::ExponentialModelEvaluator::i0
double i0
Definition: CompactExponentialModel.h:42
std::shared_ptr
STL class.
std::tuple< double, double, double, double >
ModelFitting::CompactExponentialModel::ExponentialModelEvaluator
Definition: CompactExponentialModel.h:40
CompactModelBase.h
ModelFitting::CompactExponentialModel::m_i0
std::shared_ptr< BasicParameter > m_i0
Definition: CompactExponentialModel.h:61
std::sqrt
T sqrt(T... args)
ModelFitting::CompactExponentialModel::ExponentialModelEvaluator::k
double k
Definition: CompactExponentialModel.h:42
ModelFitting::CompactModelBase
Definition: CompactModelBase.h:21
ModelFitting::CompactExponentialModel
Definition: CompactExponentialModel.h:16
ModelFitting::CompactExponentialModel::getValue
double getValue(double x, double y) const override
ModelFitting::CompactExponentialModel::m_sharp_radius_squared
float m_sharp_radius_squared
Definition: CompactExponentialModel.h:58
pixel_scale
const double pixel_scale
Definition: TestImage.cpp:75
ModelFitting::CompactExponentialModel::CompactExponentialModel
CompactExponentialModel(double sharp_radius, std::shared_ptr< BasicParameter > i0, std::shared_ptr< BasicParameter > k, std::shared_ptr< BasicParameter > x_scale, std::shared_ptr< BasicParameter > y_scale, std::shared_ptr< BasicParameter > rotation, double width, double height, std::shared_ptr< BasicParameter > x, std::shared_ptr< BasicParameter > y, std::shared_ptr< BasicParameter > flux, std::tuple< double, double, double, double > transform)
ModelFitting::CompactExponentialModel::m_k
std::shared_ptr< BasicParameter > m_k
Definition: CompactExponentialModel.h:62
ModelFitting::CompactExponentialModel::m_flux
std::shared_ptr< BasicParameter > m_flux
Definition: CompactExponentialModel.h:63
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition: MoffatModelFittingTask.cpp:94
ModelFitting::CompactExponentialModel::ExponentialModelEvaluator::evaluateModel
float evaluateModel(float x, float y) const
Definition: CompactExponentialModel.h:45
std::exp
T exp(T... args)
SourceXtractor::transform
std::pair< double, double > transform(int x, int y, const std::array< double, 4 > &t)
Definition: TransformedAperture.cpp:46
ModelFitting::CompactExponentialModel::ExponentialModelEvaluator::transform
Mat22 transform
Definition: CompactExponentialModel.h:41
std::size_t
ModelFitting::CompactExponentialModel::ExponentialModelEvaluator::max_r_sqr
double max_r_sqr
Definition: CompactExponentialModel.h:43
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition: MoffatModelFittingTask.cpp:94
ModelFitting
Definition: AsinhChiSquareComparator.h:30
ModelFitting::CompactExponentialModel::getRasterizedImage
ImageType getRasterizedImage(double pixel_scale, std::size_t size_x, std::size_t size_y) const override
SExtractor::Mat22
Definition: Mat22.h:19
ModelFitting::CompactExponentialModel::~CompactExponentialModel
virtual ~CompactExponentialModel()=default
CompactExponentialModel.icpp