2 #ifndef LSST_JOINTCAL_SIMPLE_POLY_MAPPING_H
3 #define LSST_JOINTCAL_SIMPLE_POLY_MAPPING_H
30 std::unique_ptr<GtransfoLin>
lin;
65 for (
unsigned k = 0; k <
getNpar(); ++k) indices[k] =
index + k;
70 transfo->transformPosAndErrors(where, outPoint);
72 errorProp->transformPosAndErrors(where, tmp);
81 derivative(0, 0) =
lin->coeff(1, 0, 0);
88 derivative(1, 0) =
lin->coeff(0, 1, 0);
89 derivative(0, 1) =
lin->coeff(1, 0, 1);
90 derivative(1, 1) =
lin->coeff(0, 1, 1);
105 transfo->paramDerivatives(where, &H(0, 0), &H(0, 1));
118 Eigen::Matrix2d preDer;
135 preDer(0, 0) = _centerAndScale.
coeff(1, 0, 0);
136 preDer(1, 0) = _centerAndScale.
coeff(0, 1, 0);
137 preDer(0, 1) = _centerAndScale.
coeff(1, 0, 1);
138 preDer(1, 1) = _centerAndScale.
coeff(0, 1, 1);
142 assert((&H(1, 0) - &H(0, 0)) == 1);
157 derivative(0, 0) =
lin->coeff(1, 0, 0);
164 derivative(1, 0) =
lin->coeff(0, 1, 0);
165 derivative(0, 1) =
lin->coeff(1, 0, 1);
166 derivative(1, 1) =
lin->coeff(0, 1, 1);
167 derivative = preDer * derivative;
178 transfo->transformPosAndErrors(mid, outPoint);
180 errorProp->transformPosAndErrors(mid, tmp);
181 outPoint.
vx = tmp.
vx;
182 outPoint.
vy = tmp.
vy;
184 transfo->paramDerivatives(mid, &H(0, 0), &H(0, 1));
191 transfo->transformPosAndErrors(mid, outPoint);
193 errorProp->transformPosAndErrors(mid, tmp);
194 outPoint.
vx = tmp.
vx;
195 outPoint.
vy = tmp.
vy;
203 actualResult = (*fittedPoly) * _centerAndScale;
211 class SimpleIdentityMapping :
public SimpleGtransfoMapping<GtransfoIdentity> {
214 virtual void computeTransformAndDerivatives(FatPoint
const &where, FatPoint &outPoint,
223 #endif // LSST_JOINTCAL_SIMPLE_POLY_MAPPING_H
virtual void freezeErrorScales()
implements the linear transformations (6 real coefficients).
virtual void transformPosAndErrors(const FatPoint &in, FatPoint &out) const
a mix of apply and Derivative
virtual Gtransfo const & getTransfo() const
Access to the (fitted) transfo.
virtual void computeTransformAndDerivatives(FatPoint const &where, FatPoint &outPoint, Eigen::MatrixX2d &H) const
Calls the transforms and implements the centering and scaling of coordinates.
virtual void computeTransformAndDerivatives(FatPoint const &where, FatPoint &outPoint, Eigen::MatrixX2d &H) const
Actually applies the mapping and evaluates the derivatives w.r.t the fitted parameters.
virtual class needed in the abstraction of the distortion model
SimpleGtransfoMapping & operator=(SimpleGtransfoMapping const &)=delete
Gtransfo const & getTransfo() const
Access to the (fitted) transfo.
unsigned getIndex() const
position of the parameters within the grand fitting scheme
double coeff(const unsigned powX, const unsigned powY, const unsigned whichCoord) const
access to coefficients (read only)
Mapping implementation for a polynomial transformation.
void setMappingIndices(std::vector< unsigned > &indices) const
Sets how this set of parameters (of length Npar()) map into the "grand" fit Expects that indices has ...
SimplePolyMapping(GtransfoLin const &CenterAndScale, GtransfoPoly const >ransfo)
The transformation will be initialized to gtransfo, so that the effective transformation reads gtrans...
Polynomial transformation class.
unsigned getNpar() const
Number of parameters in total.
A Point with uncertainties.
void offsetParams(double const *delta)
Remember the error scale and freeze it.
void apply(const double xIn, const double yIn, double &xOut, double &yOut) const
void positionDerivative(Point const &where, Eigen::Matrix2d &derivative, double epsilon) const
The derivative w.r.t. position.
SimpleGtransfoMapping(Gtransfo const >ransfo, bool toFit=true)
void positionDerivative(Point const &where, Eigen::Matrix2d &derivative, double epsilon) const
The derivative w.r.t. position.
void setIndex(unsigned i)
Eigen::Matrix< double, Eigen::Dynamic, 2 > MatrixX2d
a virtual (interface) class for geometric transformations.
void transformPosAndErrors(FatPoint const &where, FatPoint &outPoint) const
Implements as well the centering and scaling of coordinates.
SimplePolyMapping & operator=(SimplePolyMapping const &)=delete
void transformPosAndErrors(FatPoint const &where, FatPoint &outPoint) const
The same as above but without the parameter derivatives (used to evaluate chi^2)
std::unique_ptr< GtransfoLin > lin
std::shared_ptr< Gtransfo > errorProp
std::shared_ptr< Gtransfo > transfo