SourceXtractorPlusPlus  0.12
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CompactSersicModel.h
Go to the documentation of this file.
1 /*
2  * CompactSersicModel.h
3  *
4  * Created on: Jul 25, 2019
5  * Author: mschefer
6  */
7 
8 #ifndef _MODELFITTING_MODELS_COMPACTSERSICMODEL_H_
9 #define _MODELFITTING_MODELS_COMPACTSERSICMODEL_H_
10 
12 
13 namespace ModelFitting {
14 
15 template <typename ImageType>
16 class CompactSersicModel : public CompactModelBase<ImageType> {
17 
18 public:
19 
20  CompactSersicModel(double sharp_radius,
27  );
28 
29  virtual ~CompactSersicModel() = default;
30 
31  double getValue(double x, double y) const override;
32 
33  ImageType getRasterizedImage(double pixel_scale, std::size_t size_x, std::size_t size_y) const override;
34 
35 
38  double i0, k, n;
39  double max_r_sqr;
40 
41  inline float evaluateModel(float x, float y) const {
42  float x2 = x * transform[0] + y * transform[1];
43  float y2 = x * transform[2] + y * transform[3];
44  float r_sqr = x2*x2 + y2*y2;
45  if (r_sqr < max_r_sqr) {
46  float r = std::sqrt(r_sqr);
47  return i0 * std::exp(float(-k * powf(r, 1. / n)));
48  } else {
49  return 0;
50  }
51  }
52  };
53 
54 private:
61 
63 
65 
66  // Sersic parameters
71 };
72 
73 }
74 
76 
77 #endif /* _MODELFITTING_MODELS_COMPACTSERSICMODEL_H_ */
T exp(T...args)
virtual ~CompactSersicModel()=default
std::shared_ptr< BasicParameter > m_i0
std::shared_ptr< BasicParameter > m_n
CompactSersicModel(double sharp_radius, std::shared_ptr< BasicParameter > i0, std::shared_ptr< BasicParameter > k, std::shared_ptr< BasicParameter > n, 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)
std::shared_ptr< BasicParameter > m_flux
ImageType getRasterizedImage(double pixel_scale, std::size_t size_x, std::size_t size_y) const override
std::shared_ptr< BasicParameter > m_k
double getValue(double x, double y) const override
T sqrt(T...args)
const double pixel_scale
Definition: TestImage.cpp:75
std::pair< double, double > transform(int x, int y, const std::array< double, 4 > &t)