#ifndef STARFIT_H
#define STARFIT_H

#include "rawimage.h"
#include <gsl/gsl_multifit_nlinear.h>

double gauss_model(double a, double x0, double y0, double sx, double sy, double x, double y);

struct Star
{
    double m_am;
    double m_x,m_y;
    double m_sx,m_sy;
    double m_theta;
    Star();
    bool valid() const;
    double hwhmX() const;
    double hwhmY() const;
    double hw20X() const;
    double hw20Y() const;
    double fwhmX() const;
    double fwhmY() const;
    bool operator<(const Star &d) const;
};

class StarFit
{
    int m_size;
    gsl_multifit_nlinear_fdf m_fdf;
    gsl_multifit_nlinear_fdf m_fdf_an;
    gsl_multifit_nlinear_parameters m_fdf_params;
    gsl_vector *m_vector;
public:
    StarFit(int size);
    ~StarFit();
    Star fitStar(const std::vector<double> &data, bool angle);
};

#endif // STARFIT_H