8#ifndef _MODELFITTING_MODELS_COMPACTSERSICMODEL_H_
9#define _MODELFITTING_MODELS_COMPACTSERSICMODEL_H_
15template <
typename ImageType>
31 double getValue(
double x,
double y)
const override;
44 float r_sqr = x2*x2 + y2*y2;
float samplePixel(const ModelEvaluator &model_eval, int x, int y, unsigned int subsampling) const
CompactModelBase(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::tuple< double, double, double, double > transform)
void renormalize(ImageType &image, double flux) const
double getMaxRadiusSqr(std::size_t size_x, std::size_t size_y, const Mat22 &transform) const
Mat22 getCombinedTransform(double pixel_scale) const
float adaptiveSamplePixel(const ModelEvaluator &model_eval, int x, int y, unsigned int max_subsampling, float threshold=1.1) const
float sampleStochastic(const ModelEvaluator &model_eval, int x, int y, unsigned int samples=100) const
std::shared_ptr< BasicParameter > m_n
ImageType getRasterizedImage(double pixel_scale, std::size_t size_x, std::size_t size_y) const override
virtual ~CompactSersicModel()=default
std::shared_ptr< BasicParameter > m_k
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)
double getValue(double x, double y) const override
std::shared_ptr< BasicParameter > m_flux
std::shared_ptr< BasicParameter > m_i0
float m_sharp_radius_squared
float evaluateModel(float x, float y) const