LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Protected Attributes | List of all members
lsst::jointcal::SimplePolyMapping Class Reference

Mapping implementation for a polynomial transformation. More...

#include <SimpleAstrometryMapping.h>

Inheritance diagram for lsst::jointcal::SimplePolyMapping:
lsst::jointcal::SimpleAstrometryMapping lsst::jointcal::AstrometryMapping

Public Member Functions

 ~SimplePolyMapping ()
 
 SimplePolyMapping (AstrometryTransformLinear const &CenterAndScale, AstrometryTransformPolynomial const &transform)
 The transformation will be initialized to transform, so that the effective transformation reads transform*CenterAndScale. More...
 
 SimplePolyMapping (SimplePolyMapping const &)=delete
 No copy or move: there is only ever one instance of a given mapping (i.e.. per ccd+visit) More...
 
 SimplePolyMapping (SimplePolyMapping &&)=delete
 
SimplePolyMappingoperator= (SimplePolyMapping const &)=delete
 
SimplePolyMappingoperator= (SimplePolyMapping &&)=delete
 
void positionDerivative (Point const &where, Eigen::Matrix2d &derivative, double epsilon) const override
 The derivative w.r.t. position. More...
 
void computeTransformAndDerivatives (FatPoint const &where, FatPoint &outPoint, Eigen::MatrixX2d &H) const override
 Calls the transforms and implements the centering and scaling of coordinates. More...
 
void transformPosAndErrors (FatPoint const &where, FatPoint &outPoint) const override
 The same as above but without the parameter derivatives (used to evaluate chi^2) More...
 
AstrometryTransform const & getTransform () const override
 Access to the (fitted) transform. More...
 
virtual void freezeErrorTransform ()
 
std::size_t getNpar () const override
 Number of parameters in total. More...
 
void getMappingIndices (IndexVector &indices) const override
 Sets how this set of parameters (of length Npar()) map into the "grand" fit Expects that indices has enough space reserved. More...
 
void offsetParams (Eigen::VectorXd const &delta) override
 Remember the error scale and freeze it. More...
 
Eigen::Index getIndex () const
 position of the parameters within the grand fitting scheme More...
 
void setIndex (Eigen::Index i)
 Set the index of this mapping in the grand fit. More...
 
bool getToBeFit () const
 Get whether this mapping is fit as part of a Model. More...
 
void setToBeFit (bool value)
 Set whether this Mapping is to be fit as part of a Model. More...
 
void print (std::ostream &out) const override
 Print a string representation of the contents of this mapping, for debugging. More...
 

Protected Attributes

bool toBeFit
 
Eigen::Index index
 
std::shared_ptr< AstrometryTransformtransform
 
std::shared_ptr< AstrometryTransformerrorProp
 
std::unique_ptr< AstrometryTransformLinearlin
 

Detailed Description

Mapping implementation for a polynomial transformation.

Definition at line 117 of file SimpleAstrometryMapping.h.

Constructor & Destructor Documentation

◆ ~SimplePolyMapping()

lsst::jointcal::SimplePolyMapping::~SimplePolyMapping ( )
inline

Definition at line 119 of file SimpleAstrometryMapping.h.

119 {}

◆ SimplePolyMapping() [1/3]

lsst::jointcal::SimplePolyMapping::SimplePolyMapping ( AstrometryTransformLinear const &  CenterAndScale,
AstrometryTransformPolynomial const &  transform 
)

The transformation will be initialized to transform, so that the effective transformation reads transform*CenterAndScale.

Definition at line 73 of file SimpleAstrometryMapping.cc.

75  : SimpleAstrometryMapping(transform), _centerAndScale(CenterAndScale) {
76  // We assume that the initialization was done properly, for example that
77  // transform = pixToTangentPlane*CenterAndScale.inverted(), so we do not touch transform.
78  /* store the (spatial) derivative of _centerAndScale. For the extra
79  diagonal terms, just copied the ones in positionDerivatives */
80  preDer(0, 0) = _centerAndScale.getCoefficient(1, 0, 0);
81  preDer(1, 0) = _centerAndScale.getCoefficient(0, 1, 0);
82  preDer(0, 1) = _centerAndScale.getCoefficient(1, 0, 1);
83  preDer(1, 1) = _centerAndScale.getCoefficient(0, 1, 1);
84 
85  // check of matrix indexing (once for all)
86  MatrixX2d H(3, 2);
87  assert((&H(1, 0) - &H(0, 0)) == 1);
88 }
Eigen::Matrix< double, Eigen::Dynamic, 2 > MatrixX2d
Definition: Eigenstuff.h:33
double getCoefficient(std::size_t powX, std::size_t powY, std::size_t whichCoord) const
Get the coefficient of a given power in x and y, for either the x or y coordinate.
std::shared_ptr< AstrometryTransform > transform
SimpleAstrometryMapping(AstrometryTransform const &astrometryTransform, bool toBeFit=true)

◆ SimplePolyMapping() [2/3]

lsst::jointcal::SimplePolyMapping::SimplePolyMapping ( SimplePolyMapping const &  )
delete

No copy or move: there is only ever one instance of a given mapping (i.e.. per ccd+visit)

◆ SimplePolyMapping() [3/3]

lsst::jointcal::SimplePolyMapping::SimplePolyMapping ( SimplePolyMapping &&  )
delete

Member Function Documentation

◆ computeTransformAndDerivatives()

void lsst::jointcal::SimplePolyMapping::computeTransformAndDerivatives ( FatPoint const &  where,
FatPoint outPoint,
Eigen::MatrixX2d H 
) const
overridevirtual

Calls the transforms and implements the centering and scaling of coordinates.

Reimplemented from lsst::jointcal::SimpleAstrometryMapping.

Definition at line 107 of file SimpleAstrometryMapping.cc.

108  {
109  FatPoint mid;
110  _centerAndScale.transformPosAndErrors(where, mid);
111  transform->transformPosAndErrors(mid, outPoint);
112  FatPoint tmp;
113  errorProp->transformPosAndErrors(mid, tmp);
114  outPoint.vx = tmp.vx;
115  outPoint.vy = tmp.vy;
116  outPoint.vxy = tmp.vxy;
117  transform->paramDerivatives(mid, &H(0, 0), &H(0, 1));
118 }
virtual void transformPosAndErrors(const FatPoint &in, FatPoint &out) const override
a mix of apply and Derivative
std::shared_ptr< AstrometryTransform > errorProp

◆ freezeErrorTransform()

virtual void lsst::jointcal::SimpleAstrometryMapping::freezeErrorTransform ( )
inlinevirtualinherited

Definition at line 55 of file SimpleAstrometryMapping.h.

55  {
56  // from there on, updating the transform does not change the errors.
57  errorProp = transform->clone();
58  }

◆ getIndex()

Eigen::Index lsst::jointcal::SimpleAstrometryMapping::getIndex ( ) const
inlineinherited

position of the parameters within the grand fitting scheme

Definition at line 83 of file SimpleAstrometryMapping.h.

◆ getMappingIndices()

void lsst::jointcal::SimpleAstrometryMapping::getMappingIndices ( IndexVector indices) const
overridevirtualinherited

Sets how this set of parameters (of length Npar()) map into the "grand" fit Expects that indices has enough space reserved.

Implements lsst::jointcal::AstrometryMapping.

Definition at line 32 of file SimpleAstrometryMapping.cc.

32  {
33  if (indices.size() < getNpar()) {
34  indices.resize(getNpar());
35  }
36  for (std::size_t k = 0; k < getNpar(); ++k) {
37  indices[k] = index + k;
38  }
39 }
std::size_t getNpar() const override
Number of parameters in total.
T resize(T... args)
T size(T... args)

◆ getNpar()

std::size_t lsst::jointcal::SimpleAstrometryMapping::getNpar ( ) const
inlineoverridevirtualinherited

Number of parameters in total.

Implements lsst::jointcal::AstrometryMapping.

Definition at line 61 of file SimpleAstrometryMapping.h.

61  {
62  if (toBeFit)
63  return transform->getNpar();
64  else
65  return 0;
66  }

◆ getToBeFit()

bool lsst::jointcal::SimpleAstrometryMapping::getToBeFit ( ) const
inlineinherited

Get whether this mapping is fit as part of a Model.

Definition at line 96 of file SimpleAstrometryMapping.h.

96 { return toBeFit; }

◆ getTransform()

AstrometryTransform const & lsst::jointcal::SimplePolyMapping::getTransform ( ) const
overridevirtual

Access to the (fitted) transform.

Reimplemented from lsst::jointcal::SimpleAstrometryMapping.

Definition at line 131 of file SimpleAstrometryMapping.cc.

131  {
132  // Cannot fail given the contructor:
133  const AstrometryTransformPolynomial *fittedPoly =
134  dynamic_cast<const AstrometryTransformPolynomial *>(&(*transform));
135  actualResult = (*fittedPoly) * _centerAndScale;
136  return actualResult;
137 }

◆ offsetParams()

void lsst::jointcal::SimpleAstrometryMapping::offsetParams ( Eigen::VectorXd const &  delta)
inlineoverridevirtualinherited

Remember the error scale and freeze it.

Implements lsst::jointcal::AstrometryMapping.

Definition at line 78 of file SimpleAstrometryMapping.h.

78  {
79  if (toBeFit) transform->offsetParams(delta);
80  }

◆ operator=() [1/2]

SimplePolyMapping& lsst::jointcal::SimplePolyMapping::operator= ( SimplePolyMapping &&  )
delete

◆ operator=() [2/2]

SimplePolyMapping& lsst::jointcal::SimplePolyMapping::operator= ( SimplePolyMapping const &  )
delete

◆ positionDerivative()

void lsst::jointcal::SimplePolyMapping::positionDerivative ( Point const &  where,
Eigen::Matrix2d &  derivative,
double  epsilon 
) const
overridevirtual

The derivative w.r.t. position.

Reimplemented from lsst::jointcal::SimpleAstrometryMapping.

Definition at line 90 of file SimpleAstrometryMapping.cc.

91  {
92  Point tmp = _centerAndScale.apply(where);
93  errorProp->computeDerivative(tmp, *lin, epsilon);
94  derivative(0, 0) = lin->getCoefficient(1, 0, 0);
95  //
96  /* This does not work : it was proved by rotating the frame
97  see the compilation switch ROTATE_T2 in constrainedAstrometryModel.cc
98  derivative(1,0) = lin->getCoefficient(1,0,1);
99  derivative(0,1) = lin->getCoefficient(0,1,0);
100  */
101  derivative(1, 0) = lin->getCoefficient(0, 1, 0);
102  derivative(0, 1) = lin->getCoefficient(1, 0, 1);
103  derivative(1, 1) = lin->getCoefficient(0, 1, 1);
104  derivative = preDer * derivative;
105 }
void apply(const double xIn, const double yIn, double &xOut, double &yOut) const override
std::unique_ptr< AstrometryTransformLinear > lin

◆ print()

void lsst::jointcal::SimpleAstrometryMapping::print ( std::ostream out) const
overridevirtualinherited

Print a string representation of the contents of this mapping, for debugging.

This string representation can be very verbose, as it contains all of the parameters of all of the transforms in this mapping.

Implements lsst::jointcal::AstrometryMapping.

Definition at line 71 of file SimpleAstrometryMapping.cc.

71 { out << *transform; }

◆ setIndex()

void lsst::jointcal::SimpleAstrometryMapping::setIndex ( Eigen::Index  i)
inlineinherited

Set the index of this mapping in the grand fit.

Definition at line 86 of file SimpleAstrometryMapping.h.

86 { index = i; }

◆ setToBeFit()

void lsst::jointcal::SimpleAstrometryMapping::setToBeFit ( bool  value)
inlineinherited

Set whether this Mapping is to be fit as part of a Model.

Definition at line 98 of file SimpleAstrometryMapping.h.

98 { toBeFit = value; }

◆ transformPosAndErrors()

void lsst::jointcal::SimplePolyMapping::transformPosAndErrors ( FatPoint const &  where,
FatPoint outPoint 
) const
overridevirtual

The same as above but without the parameter derivatives (used to evaluate chi^2)

Reimplemented from lsst::jointcal::SimpleAstrometryMapping.

Definition at line 120 of file SimpleAstrometryMapping.cc.

120  {
121  FatPoint mid;
122  _centerAndScale.transformPosAndErrors(where, mid);
123  transform->transformPosAndErrors(mid, outPoint);
124  FatPoint tmp;
125  errorProp->transformPosAndErrors(mid, tmp);
126  outPoint.vx = tmp.vx;
127  outPoint.vy = tmp.vy;
128  outPoint.vxy = tmp.vxy;
129 }

Member Data Documentation

◆ errorProp

std::shared_ptr<AstrometryTransform> lsst::jointcal::SimpleAstrometryMapping::errorProp
protectedinherited

Definition at line 110 of file SimpleAstrometryMapping.h.

◆ index

Eigen::Index lsst::jointcal::SimpleAstrometryMapping::index
protectedinherited

Definition at line 105 of file SimpleAstrometryMapping.h.

◆ lin

std::unique_ptr<AstrometryTransformLinear> lsst::jointcal::SimpleAstrometryMapping::lin
protectedinherited

Definition at line 113 of file SimpleAstrometryMapping.h.

◆ toBeFit

bool lsst::jointcal::SimpleAstrometryMapping::toBeFit
protectedinherited

Definition at line 104 of file SimpleAstrometryMapping.h.

◆ transform

std::shared_ptr<AstrometryTransform> lsst::jointcal::SimpleAstrometryMapping::transform
protectedinherited

Definition at line 108 of file SimpleAstrometryMapping.h.


The documentation for this class was generated from the following files: