32 BaseCore::Registrar<Quadrupole> Quadrupole::registrar;
37 if (_matrix(0, 1) != _matrix(1, 0))
39 "Quadrupole matrix must be symmetric.");
42 "Quadrupole matrix cannot have negative diagonal elements.");
45 "Quadrupole matrix cannot have negative determinant.");
88 return Jacobian::Identity();
109 return Jacobian::Identity();
114 _matrix(1, 0) = _matrix(0, 1);
119 _matrix(1, 0) = _matrix(0, 1);
void _assignToAxes(double &a, double &b, double &theta) const override
static Jacobian _dAssignQuadrupoleToAxes(double ixx, double iyy, double ixy, double &a, double &b, double &theta)
static Jacobian _dAssignAxesToQuadrupole(double a, double b, double theta, double &ixx, double &iyy, double &ixy)
Quadrupole(double ixx=1.0, double iyy=1.0, double ixy=0.0, bool normalize=false)
Construct from parameter values.
Jacobian _dAssignToQuadrupole(double &ixx, double &iyy, double &ixy) const override
Jacobian _dAssignFromAxes(double a, double b, double theta) override
static void _assignQuadrupoleToAxes(double ixx, double iyy, double ixy, double &a, double &b, double &theta)
void readParameters(double const *iter) override
Jacobian _dAssignFromQuadrupole(double ixx, double iyy, double ixy) override
void normalize() override
Put the parameters into a "standard form", and throw InvalidParameterError if they cannot be normaliz...
double const getIxy() const
double const getIyy() const
A base class for image defects.
Eigen::Vector3d ParameterVector
Parameter vector type.
std::string getName() const override
Return a string that identifies this parametrization.
Eigen::Matrix< double, 2, 2, Eigen::DontAlign > Matrix
Matrix type for the matrix representation of Quadrupole parameters.
static void _assignAxesToQuadrupole(double a, double b, double theta, double &ixx, double &iyy, double &ixy)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Eigen::Matrix3d Jacobian
Parameter Jacobian matrix type.
Jacobian _dAssignToAxes(double &a, double &b, double &theta) const override
void writeParameters(double *iter) const override
void _assignFromQuadrupole(double ixx, double iyy, double ixy) override
Reports invalid arguments.
double getDeterminant() const
Return the determinant of the matrix representation.
void _assignToQuadrupole(double &ixx, double &iyy, double &ixy) const override
double const getIxx() const
void _assignFromAxes(double a, double b, double theta) override