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
CreateWcsWithSip.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
25 #ifndef CREATE_WCS_WITH_SIP
26 #define CREATE_WCS_WITH_SIP
27 
28 #include <memory>
29 #include <vector>
30 
31 #include "lsst/base.h"
32 #include "Eigen/Core"
33 
34 #include "lsst/afw/table/Match.h"
35 #include "lsst/geom/Angle.h"
36 #include "lsst/geom/Box.h"
37 
38 namespace lsst {
39 namespace meas {
40 namespace astrom {
41 namespace sip {
42 
75 template <class MatchT>
77 public:
80 
95  CreateWcsWithSip(std::vector<MatchT> const& matches, afw::geom::SkyWcs const& linearWcs, int const order,
96  geom::Box2I const& bbox = geom::Box2I(), int const ngrid = 0);
97 
99 
106  double getScatterInPixels() const;
107 
115 
122  double getLinearScatterInPixels() const;
123 
131 
133  int getOrder() const { return _sipA.rows(); }
135  int getNPoints() const { return _matches.size(); }
137  int getNGrid() const { return _ngrid; }
138 
139  // Return the SIP A matrix
140  Eigen::MatrixXd const getSipA() { return _sipA; }
141  // Return the SIP B matrix
142  Eigen::MatrixXd const getSipB() { return _sipB; }
143  // Return the SIP Ap matrix
144  Eigen::MatrixXd const getSipAp() { return _sipAp; }
145  // Return the SIP Bp matrix
146  Eigen::MatrixXd const getSipBp() { return _sipBp; }
147 
148 private:
149  std::vector<MatchT> const _matches;
150  geom::Box2I mutable _bbox;
151  int _ngrid; // grid size to calculate inverse SIP coefficients (1-D)
153  // _sipOrder is polynomial order for forward transform.
154  // _reverseSipOrder is order for reverse transform, not necessarily the same.
155  int const _sipOrder, _reverseSipOrder;
156 
157  Eigen::MatrixXd _sipA, _sipB;
158  Eigen::MatrixXd _sipAp, _sipBp;
159 
161 
162  void _calculateForwardMatrices();
163  void _calculateReverseMatrices();
164 };
165 
167 template <class MatchT>
169  afw::geom::SkyWcs const& linearWcs, int const order,
170  geom::Box2I const& bbox = geom::Box2I(), int const ngrid = 0) {
171  return CreateWcsWithSip<MatchT>(matches, linearWcs, order, bbox, ngrid);
172 }
173 
174 } // namespace sip
175 } // namespace astrom
176 } // namespace meas
177 } // namespace lsst
178 
179 #endif
AmpInfoBoxKey bbox
Definition: Amplifier.cc:117
Basic LSST definitions.
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
Definition: SkyWcs.h:117
A class representing an angle.
Definition: Angle.h:127
An integer coordinate rectangle.
Definition: Box.h:55
Measure the distortions in an image plane and express them a SIP polynomials.
std::shared_ptr< afw::geom::SkyWcs > getNewWcs()
double getLinearScatterInPixels() const
Compute the median radial separation between items in this object's match list.
std::shared_ptr< CreateWcsWithSip > Ptr
std::shared_ptr< CreateWcsWithSip const > ConstPtr
int getNGrid() const
Return the number of grid points (on each axis) used in inverse SIP transform.
int getNPoints() const
Return the number of points in the catalogue.
int getOrder() const
Return the number of terms in the SIP matrix.
double getScatterInPixels() const
Compute the median separation, in pixels, between items in this object's match list.
geom::Angle getScatterOnSky() const
Compute the median on-sky separation between items in this object's match list.
geom::Angle getLinearScatterOnSky() const
Compute the median on-sky separation between items in this object's match list,.
CreateWcsWithSip(std::vector< MatchT > const &matches, afw::geom::SkyWcs const &linearWcs, int const order, geom::Box2I const &bbox=geom::Box2I(), int const ngrid=0)
Construct a CreateWcsWithSip.
CreateWcsWithSip< MatchT > makeCreateWcsWithSip(std::vector< MatchT > const &matches, afw::geom::SkyWcs const &linearWcs, int const order, geom::Box2I const &bbox=geom::Box2I(), int const ngrid=0)
Factory function for CreateWcsWithSip.
A base class for image defects.
T size(T... args)
table::Key< int > order