LSSTApplications
19.0.0-14-gb0260a2+72efe9b372,20.0.0+7927753e06,20.0.0+8829bf0056,20.0.0+995114c5d2,20.0.0+b6f4b2abd1,20.0.0+bddc4f4cbe,20.0.0-1-g253301a+8829bf0056,20.0.0-1-g2b7511a+0d71a2d77f,20.0.0-1-g5b95a8c+7461dd0434,20.0.0-12-g321c96ea+23efe4bbff,20.0.0-16-gfab17e72e+fdf35455f6,20.0.0-2-g0070d88+ba3ffc8f0b,20.0.0-2-g4dae9ad+ee58a624b3,20.0.0-2-g61b8584+5d3db074ba,20.0.0-2-gb780d76+d529cf1a41,20.0.0-2-ged6426c+226a441f5f,20.0.0-2-gf072044+8829bf0056,20.0.0-2-gf1f7952+ee58a624b3,20.0.0-20-geae50cf+e37fec0aee,20.0.0-25-g3dcad98+544a109665,20.0.0-25-g5eafb0f+ee58a624b3,20.0.0-27-g64178ef+f1f297b00a,20.0.0-3-g4cc78c6+e0676b0dc8,20.0.0-3-g8f21e14+4fd2c12c9a,20.0.0-3-gbd60e8c+187b78b4b8,20.0.0-3-gbecbe05+48431fa087,20.0.0-38-ge4adf513+a12e1f8e37,20.0.0-4-g97dc21a+544a109665,20.0.0-4-gb4befbc+087873070b,20.0.0-4-gf910f65+5d3db074ba,20.0.0-5-gdfe0fee+199202a608,20.0.0-5-gfbfe500+d529cf1a41,20.0.0-6-g64f541c+d529cf1a41,20.0.0-6-g9a5b7a1+a1cd37312e,20.0.0-68-ga3f3dda+5fca18c6a4,20.0.0-9-g4aef684+e18322736b,w.2020.45
LSSTDataManagementBasePackage
|
Go to the documentation of this file.
25 #ifndef LSST_JOINTCAL_ASTROMETRY_TRANSFORM_H
26 #define LSST_JOINTCAL_ASTROMETRY_TRANSFORM_H
48 class AstrometryTransformLinear;
68 virtual void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const = 0;
78 return Point(xout, yout);
134 virtual double getJacobian(
const double x,
const double y)
const;
142 const double step = 0.01)
const;
156 const Frame ®ion)
const;
165 virtual double paramRef(Eigen::Index
const i)
const;
168 virtual double &
paramRef(Eigen::Index
const i);
214 AstrometryTransform
const &right);
225 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const override {
232 "AstrometryTransformIdentity is the identity transformation: it cannot be fit to anything.");
237 return right.clone();
249 const double step = 0.01)
const override;
253 const double step = 0.01)
const override;
272 AstrometryTransformIdentity
const &right);
311 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const override;
315 const double step = 0.01)
const override;
362 double paramRef(Eigen::Index
const i)
const override;
365 double &
paramRef(Eigen::Index
const i)
override;
379 const bool useErrors);
395 void computeMonomials(
double xIn,
double yIn,
double *monomial)
const;
402 ndarray::Array<double, 2, 2> toAstPolyMapCoefficients()
const;
418 double const precision,
448 const double step = 0.01)
const override;
451 const double step = 0.01)
const override;
459 const double aa21,
const double aa22);
469 const Frame ®ion)
const override;
518 const double scaleFactor = 1.0);
557 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const override;
586 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const;
609 double &yTangentPlane)
const = 0;
639 virtual void pixToTangentPlane(
double xPixel,
double yPixel,
double &xTangentPlane,
640 double &yTangentPlane)
const;
683 virtual void pixToTangentPlane(
double xPixel,
double yPixel,
double &xTangentPlane,
684 double &yTangentPlane)
const;
727 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const;
767 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const;
777 const void *_userData;
787 #endif // LSST_JOINTCAL_ASTROMETRY_TRANSFORM_H
std::unique_ptr< AstrometryTransformPolynomial > corr
AstrometryTransformLinear linPixelToTan
bool isIntegerShift(const AstrometryTransform *transform)
Shorthand test to tell if a transform is a simple integer shift.
Implements the (forward) SIP distorsion scheme.
virtual void pixToTangentPlane(double xPixel, double yPixel, double &xTangentPlane, double &yTangentPlane) const =0
Transform from pixels to tangent plane (degrees)
void apply(const double xIn, const double yIn, double &xOut, double &yOut) const
Transform pixels to ICRS RA, Dec in degrees.
TanPixelToRaDec inverted() const
exact typed inverse:
std::unique_ptr< AstrometryTransform > roughInverse(const Frame ®ion) const
Overload the "generic routine" (available for all AstrometryTransform types.
void apply(const double xIn, const double yIn, double &xOut, double &yOut) const
Point getTangentPoint() const
Get the sky origin (CRVAL in FITS WCS terminology) in degrees.
void() AstrometryTransformFun(const double, const double, double &, double &, const void *)
signature of the user-provided routine that actually does the coordinate transform for UserTransform.
This one is the Tangent Plane (called gnomonic) projection (from celestial sphere to tangent plane)
std::unique_ptr< AstrometryTransform > astrometryTransformRead(const std::string &fileName)
The virtual constructor from a file.
AstrometryTransformPolynomial getPixelToTangentPlane() const
the transformation from pixels to tangent plane (degrees)
void print(std::ostream &out) const
prints the transform coefficients to stream.
void print(std::ostream &out) const
prints the transform coefficients to stream.
std::unique_ptr< AstrometryTransform > clone() const
returns a copy (allocated by new) of the transformation.
void transformPosAndErrors(const FatPoint &in, FatPoint &out) const
transform with analytical derivatives
The transformation that handles pixels to sideral transformations (Gnomonic, possibly with polynomial...
virtual void pixToTangentPlane(double xPixel, double yPixel, double &xTangentPlane, double &yTangentPlane) const
transforms from pixel space to tangent plane (degrees)
Point getCrPix() const
Get the pixel origin of the WCS (CRPIX in FITS WCS terminology, but zero-based)
double fit(StarMatchList const &starMatchList)
Not implemented yet, because we do it otherwise.
std::unique_ptr< AstrometryTransform > inverseTransform(const double precision, const Frame ®ion) const
Inverse transform: returns a TanPixelToRaDec.
std::unique_ptr< AstrometryTransform > inverseTransform(const double precision, const Frame ®ion) const
Inverse transform: returns a TanRaDecToPixel if there are no corrections, or the iterative solver if ...
AstrometryTransformPolynomial getPixelToTangentPlane() const
the transformation from pixels to tangent plane (degrees)
std::ostream & operator<<(std::ostream &stream, AstrometryMapping const &mapping)
AstrometryTransformLinear normalizeCoordinatesTransform(const Frame &frame)
Returns the transformation that maps the input frame along both axes to [-1,1].
BaseTanWcs(AstrometryTransformLinear const &pixToTan, Point const &tangentPoint, const AstrometryTransformPolynomial *corrections=nullptr)
A Point with uncertainties.
const AstrometryTransformPolynomial * getCorr() const
Get a non-owning pointer to the correction transform polynomial.
A base class for image defects.
std::shared_ptr< AstrometryTransformPolynomial > inversePolyTransform(AstrometryTransform const &forward, Frame const &domain, double const precision, std::size_t maxOrder=9, std::size_t nSteps=50)
Approximate the inverse by a polynomial, to some precision.
double fit(StarMatchList const &starMatchList)
Not implemented yet, because we do it otherwise.
TanPixelToRaDec operator*(AstrometryTransformLinear const &right) const
composition with AstrometryTransformLinear
std::unique_ptr< AstrometryTransform > composeAndReduce(AstrometryTransformLinear const &right) const
Return a reduced composition of newTransform = this(right()), or nullptr if it cannot be reduced.
std::unique_ptr< AstrometryTransform > inverseTransform(const double precision, const Frame ®ion) const
Inverse transform: returns a TanRaDecToPixel if there are no corrections, or the iterative solver if ...
std::unique_ptr< AstrometryTransform > clone() const
returns a copy (allocated by new) of the transformation.
void operator=(const BaseTanWcs &original)
void print(std::ostream &out) const
prints the transform coefficients to stream.
void setCorrections(std::unique_ptr< AstrometryTransformPolynomial > corrections)
Assign the correction polynomial (what it means is left to derived classes)
def scale(algorithm, min, max=None, frame=None)
virtual AstrometryTransformPolynomial getPixelToTangentPlane() const =0
Get a transform from pixels to tangent plane (degrees) This is a linear transform plus the effects of...
Point getTangentPoint() const
tangent point coordinates (degrees)
double fit(StarMatchList const &starMatchList)
fits a transform to a std::list of Point pairs (p1,p2, the Point fields in StarMatch).
Reports errors from accepting an object of an unexpected or inappropriate type.
std::unique_ptr< AstrometryTransform > compose(AstrometryTransform const &left, AstrometryTransform const &right)
Returns a pointer to a composition of transforms, representing left(right()).
void setTangentPoint(Point const &tangentPoint)
Resets the projection (or tangent) point.
AstrometryTransformLinear getLinPart() const
The Linear part (corresponding to CD's and CRPIX's)
AstrometryTransformLinear getLinPart() const
The Linear part (corresponding to CD's and CRPIX's)
virtual void pixToTangentPlane(double xPixel, double yPixel, double &xTangentPlane, double &yTangentPlane) const
transforms from pixel space to tangent plane (degrees)
std::unique_ptr< AstrometryTransform > clone() const
returns a copy (allocated by new) of the transformation.
rectangle with sides parallel to axes.
std::unique_ptr< AstrometryTransform > roughInverse(const Frame ®ion) const
Overload the "generic routine" (available for all AstrometryTransform types.
TanRaDecToPixel inverted() const
approximate inverse : it ignores corrections;