35template <
typename Ellipticity_,
typename Radius_>
36BaseCore::Registrar<Separable<Ellipticity_, Radius_> > Separable<Ellipticity_, Radius_>::registrar;
38template <
typename Ellipticity_,
typename Radius_>
40 return "Separable" + Ellipticity_::getName() + Radius_::getName();
43template <
typename Ellipticity_,
typename Radius_>
45 _ellipticity.normalize();
49template <
typename Ellipticity_,
typename Radius_>
56template <
typename Ellipticity_,
typename Radius_>
60 *iter++ = getRadius();
63template <
typename Ellipticity_,
typename Radius_>
66 _ellipticity = other._ellipticity;
67 _radius = other._radius;
72template <
typename Ellipticity_,
typename Radius_>
77template <
typename Ellipticity_,
typename Radius_>
79 : _ellipticity(e1, e2), _radius(radius) {
83template <
typename Ellipticity_,
typename Radius_>
86 : _ellipticity(complex), _radius(radius) {
90template <
typename Ellipticity_,
typename Radius_>
92 : _ellipticity(ellipticity), _radius(radius) {
96template <
typename Ellipticity_,
typename Radius_>
98 : _ellipticity(vector[0], vector[1]), _radius(vector[2]) {
102template <
typename Ellipticity_,
typename Radius_>
105 _radius.assignToQuadrupole(distortion, ixx, iyy, ixy);
108template <
typename Ellipticity_,
typename Radius_>
113 rhs.block<2, 2>(0, 0) = distortion.
dAssign(_ellipticity);
118template <
typename Ellipticity_,
typename Radius_>
120 double ixx, iyy, ixy;
121 this->_assignToQuadrupole(ixx, iyy, ixy);
125template <
typename Ellipticity_,
typename Radius_>
127 double& theta)
const {
128 double ixx, iyy, ixy;
134template <
typename Ellipticity_,
typename Radius_>
137 _radius.assignFromQuadrupole(ixx, iyy, ixy, distortion);
138 _ellipticity = distortion;
141template <
typename Ellipticity_,
typename Radius_>
147 lhs.block<2, 2>(0, 0) = _ellipticity.dAssign(distortion);
151template <
typename Ellipticity_,
typename Radius_>
153 double ixx, iyy, ixy;
155 this->_assignFromQuadrupole(ixx, iyy, ixy);
158template <
typename Ellipticity_,
typename Radius_>
160 double ixx, iyy, ixy;
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.
A complex ellipticity with magnitude .
Jacobian dAssign(Distortion const &other)
An ellipse core with a complex ellipticity and radius parameterization.
Jacobian _dAssignToQuadrupole(double &ixx, double &iyy, double &ixy) const 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 _dAssignToAxes(double &a, double &b, double &theta) const override
Return the size of the bounding box for the ellipse core.
void _assignToAxes(double &a, double &b, double &theta) const override
Return the size of the bounding box for the ellipse core.
Separable & operator=(Separable const &other)
Standard assignment.
void _assignFromAxes(double a, double b, double theta) override
Return the size of the bounding box for the ellipse core.
Separable(double e1=0.0, double e2=0.0, double radius=Radius(), bool normalize=true)
Construct from parameter values.
Jacobian _dAssignFromAxes(double a, double b, double theta) override
Return the size of the bounding box for the ellipse core.
void _assignFromQuadrupole(double ixx, double iyy, double ixy) 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.
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.
Jacobian _dAssignFromQuadrupole(double ixx, double iyy, double ixy) override
Return the size of the bounding box for the ellipse core.
void normalize() override
Put the parameters into a "standard form", and throw InvalidParameterError if they cannot be normaliz...