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