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
Classes | Public Member Functions | Friends | List of all members
lsst::jointcal::ChipVisitAstrometryMapping Class Reference

The mapping with two transforms in a row. More...

#include <ChipVisitAstrometryMapping.h>

Inheritance diagram for lsst::jointcal::ChipVisitAstrometryMapping:
lsst::jointcal::AstrometryMapping

Public Member Functions

 ChipVisitAstrometryMapping (std::shared_ptr< SimpleAstrometryMapping > chipMapping, std::shared_ptr< SimpleAstrometryMapping > visitMapping)
 
 ChipVisitAstrometryMapping (ChipVisitAstrometryMapping const &)=delete
 No copy or move: there is only ever one instance of a given model (i.e.. per ccd+visit) More...
 
 ChipVisitAstrometryMapping (ChipVisitAstrometryMapping &&)=delete
 
ChipVisitAstrometryMappingoperator= (ChipVisitAstrometryMapping const &)=delete
 
ChipVisitAstrometryMappingoperator= (ChipVisitAstrometryMapping &&)=delete
 
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 computeTransformAndDerivatives (FatPoint const &where, FatPoint &outPoint, Eigen::MatrixX2d &H) const override
 Actually applies the AstrometryMapping and evaluates the derivatives w.r.t the fitted parameters. 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...
 
void offsetParams (Eigen::VectorXd const &delta) override
 Remember the error scale and freeze it. More...
 
AstrometryTransform const & getTransform1 () const
 access to transforms More...
 
AstrometryTransform const & getTransform2 () const
 access to transforms More...
 
void positionDerivative (Point const &where, Eigen::Matrix2d &derivative, double epsilon) const override
 The derivative w.r.t. position. More...
 
void freezeErrorTransform ()
 Currently not implemented. More...
 
void print (std::ostream &out) const override
 Print a string representation of the contents of this mapping, for debugging. More...
 

Friends

class ConstrainedAstrometryModel
 

Detailed Description

The mapping with two transforms in a row.

Definition at line 38 of file ChipVisitAstrometryMapping.h.

Constructor & Destructor Documentation

◆ ChipVisitAstrometryMapping() [1/3]

lsst::jointcal::ChipVisitAstrometryMapping::ChipVisitAstrometryMapping ( std::shared_ptr< SimpleAstrometryMapping chipMapping,
std::shared_ptr< SimpleAstrometryMapping visitMapping 
)

Definition at line 33 of file ChipVisitAstrometryMapping.cc.

35  : _m1(chipMapping), _m2(visitMapping) {
36  /* Allocate the record of temporary variables, so that they are not
37  allocated at every call. This is hidden behind a pointer in order
38  to be allowed to alter them in a const routine. */
39  tmp = std::unique_ptr<tmpVars>(new tmpVars);
40  setWhatToFit(true, true);
41 }

◆ ChipVisitAstrometryMapping() [2/3]

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

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

◆ ChipVisitAstrometryMapping() [3/3]

lsst::jointcal::ChipVisitAstrometryMapping::ChipVisitAstrometryMapping ( ChipVisitAstrometryMapping &&  )
delete

Member Function Documentation

◆ computeTransformAndDerivatives()

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

Actually applies the AstrometryMapping and evaluates the derivatives w.r.t the fitted parameters.

This is grouped into a single call because for most models, evaluating the derivatives w.r.T parameters is not much longer than just transforming

Implements lsst::jointcal::AstrometryMapping.

Definition at line 62 of file ChipVisitAstrometryMapping.cc.

63  {
64  // not true in general. Will crash if H is too small.
65  // assert(H.cols()==Npar());
66 
67  FatPoint pMid;
68  // don't need errors there but no Mapping::Transform() routine.
69 
70  if (_nPar1) {
71  _m1->computeTransformAndDerivatives(where, pMid, tmp->h1);
72  // the last argument is epsilon and is not used for polynomials
73  _m2->positionDerivative(pMid, tmp->dt2dx, 1e-4);
74  H.block(0, 0, _nPar1, 2) = tmp->h1 * tmp->dt2dx;
75  } else
76  _m1->transformPosAndErrors(where, pMid);
77  if (_nPar2) {
78  _m2->computeTransformAndDerivatives(pMid, outPoint, tmp->h2);
79  H.block(_nPar1, 0, _nPar2, 2) = tmp->h2;
80  } else
81  _m2->transformPosAndErrors(pMid, outPoint);
82 }

◆ freezeErrorTransform()

void lsst::jointcal::ChipVisitAstrometryMapping::freezeErrorTransform ( )

Currently not implemented.

Definition at line 119 of file ChipVisitAstrometryMapping.cc.

119  {
121  " The routine ChipVisitAstrometryMapping::freezeErrorTransform() was thought to be "
122  "useless and is not implemented (yet)");
123 }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
Reports errors from accepting an object of an unexpected or inappropriate type.
Definition: Runtime.h:167

◆ getMappingIndices()

void lsst::jointcal::ChipVisitAstrometryMapping::getMappingIndices ( IndexVector indices) const
overridevirtual

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 45 of file ChipVisitAstrometryMapping.cc.

45  {
46  std::size_t npar = getNpar();
47  if (indices.size() < npar) indices.resize(npar);
48  // in case we are only fitting one of the two transforms
49  if (_nPar1)
50  _m1->getMappingIndices(indices);
51  else if (_nPar2) {
52  _m2->getMappingIndices(indices);
53  return;
54  }
55  // if we get here we are fitting both
56  // there is probably a more elegant way to feed a subpart of a std::vector
57  IndexVector ind2(_nPar2);
58  _m2->getMappingIndices(ind2);
59  for (Eigen::Index k = 0; k < _nPar2; ++k) indices.at(k + _nPar1) = ind2.at(k);
60 }
T at(T... args)
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::ChipVisitAstrometryMapping::getNpar ( ) const
overridevirtual

Number of parameters in total.

Implements lsst::jointcal::AstrometryMapping.

Definition at line 43 of file ChipVisitAstrometryMapping.cc.

43 { return _nPar1 + _nPar2; }

◆ getTransform1()

AstrometryTransform const& lsst::jointcal::ChipVisitAstrometryMapping::getTransform1 ( ) const
inline

access to transforms

Definition at line 72 of file ChipVisitAstrometryMapping.h.

72 { return _m1->getTransform(); }

◆ getTransform2()

AstrometryTransform const& lsst::jointcal::ChipVisitAstrometryMapping::getTransform2 ( ) const
inline

access to transforms

Definition at line 75 of file ChipVisitAstrometryMapping.h.

75 { return _m2->getTransform(); }

◆ offsetParams()

void lsst::jointcal::ChipVisitAstrometryMapping::offsetParams ( Eigen::VectorXd const &  delta)
inlineoverridevirtual

Remember the error scale and freeze it.

Note
this routine is not used when fitting (the Model manages the mappings separately), but can be useful for debugging

Implements lsst::jointcal::AstrometryMapping.

Definition at line 66 of file ChipVisitAstrometryMapping.h.

66  {
67  _m1->offsetParams(delta.segment(_m1->getIndex(), _m1->getNpar()));
68  _m2->offsetParams(delta.segment(_m2->getIndex() + _m1->getNpar(), _m2->getNpar()));
69  }

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ positionDerivative()

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

The derivative w.r.t. position.

Implements lsst::jointcal::AstrometryMapping.

Definition at line 107 of file ChipVisitAstrometryMapping.cc.

108  {
109  Eigen::Matrix2d d1, d2; // seems that it does not trigger dynamic allocation
110  _m1->positionDerivative(where, d1, 1e-4);
111  FatPoint pMid;
112  _m1->transformPosAndErrors(where, pMid);
113  _m2->positionDerivative(pMid, d2, 1e-4);
114  /* The following line is not a mistake. It is a consequence
115  of chosing derivative(0,1) = d(y_out)/d x_in. */
116  derivative = d1 * d2;
117 }

◆ print()

void lsst::jointcal::ChipVisitAstrometryMapping::print ( std::ostream out) const
overridevirtual

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 125 of file ChipVisitAstrometryMapping.cc.

125  {
126  out << "Composed Astrometry Mapping:" << std::endl;
127  out << "Sensor f(x,y)->(u,v): " << *_m1 << std::endl;
128  out << "Visit f(u,v)->alpha,delta: " << *_m2 << std::endl;
129 }
T endl(T... args)

◆ transformPosAndErrors()

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

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

Implements lsst::jointcal::AstrometryMapping.

Definition at line 101 of file ChipVisitAstrometryMapping.cc.

101  {
102  FatPoint pMid;
103  _m1->transformPosAndErrors(where, pMid);
104  _m2->transformPosAndErrors(pMid, outPoint);
105 }

Friends And Related Function Documentation

◆ ConstrainedAstrometryModel

friend class ConstrainedAstrometryModel
friend

Definition at line 85 of file ChipVisitAstrometryMapping.h.


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