LSSTApplications  21.0.0+1b62c9342b,21.0.0+45a059f35e,21.0.0-1-ga51b5d4+ceb9cf20a3,21.0.0-17-gf9a0284+9e5b25d042,21.0.0-2-g103fe59+513edb8842,21.0.0-2-g1367e85+d9bb5204cb,21.0.0-2-g2909d54+45a059f35e,21.0.0-2-g45278ab+1b62c9342b,21.0.0-2-g4bc9b9f+36532ac5d2,21.0.0-2-g5242d73+d9bb5204cb,21.0.0-2-g54e2caa+0b4b33a26b,21.0.0-2-g66bcc37+0525a04256,21.0.0-2-g7f82c8f+8938dec807,21.0.0-2-g8dde007+7bfb5851c8,21.0.0-2-g8f08a60+73884b2cf5,21.0.0-2-g973f35b+44678ca34c,21.0.0-2-ga326454+8938dec807,21.0.0-2-ga63a54e+682c8ce20e,21.0.0-2-ga885a99+9a92674037,21.0.0-2-gc738bc1+5ce50b2a03,21.0.0-2-gde069b7+5a8f2956b8,21.0.0-2-ge17e5af+d9bb5204cb,21.0.0-2-ge712728+d5c34dc911,21.0.0-2-gecfae73+8bdf007ced,21.0.0-2-gfc62afb+d9bb5204cb,21.0.0-21-g006371a9+5abec3504c,21.0.0-3-g4c5b185+4e2de95c30,21.0.0-3-g6d51c4a+0525a04256,21.0.0-3-gaa929c8+fca53d2b73,21.0.0-3-gd222c45+afc8332dbe,21.0.0-3-gd5de2f2+0525a04256,21.0.0-4-g3300ddd+1b62c9342b,21.0.0-4-g8a80011+23661db33a,21.0.0-5-gb7080ec+ee9551b7be,21.0.0-5-gcff38f6+e51f0852ce,21.0.0-6-gd3283ba+fca53d2b73,21.0.0-8-g19111d86+898b2b281f,21.0.0-8-gd9c33f4a0+b58bb1f4d6,w.2021.03
LSSTDataManagementBasePackage
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
Angle.h
lsst::meas::astrom::sip::CreateWcsWithSip::getNPoints
int getNPoints() const
Return the number of points in the catalogue.
Definition: CreateWcsWithSip.h:135
std::shared_ptr
STL class.
Match.h
lsst::meas::astrom::sip::CreateWcsWithSip::getNGrid
int getNGrid() const
Return the number of grid points (on each axis) used in inverse SIP transform.
Definition: CreateWcsWithSip.h:137
std::vector< MatchT >
std::vector::size
T size(T... args)
lsst::meas::astrom::sip::CreateWcsWithSip::getSipA
Eigen::MatrixXd const getSipA()
Definition: CreateWcsWithSip.h:140
Box.h
lsst::afw::geom::SkyWcs
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
Definition: SkyWcs.h:117
base.h
Basic LSST definitions.
lsst::meas::astrom::sip::CreateWcsWithSip::getScatterInPixels
double getScatterInPixels() const
Compute the median separation, in pixels, between items in this object's match list.
Definition: CreateWcsWithSip.cc:352
lsst::meas::astrom::sip::CreateWcsWithSip::getSipB
Eigen::MatrixXd const getSipB()
Definition: CreateWcsWithSip.h:142
lsst::meas::astrom::sip::CreateWcsWithSip
Measure the distortions in an image plane and express them a SIP polynomials.
Definition: CreateWcsWithSip.h:76
lsst::meas::astrom::sip::CreateWcsWithSip::Ptr
std::shared_ptr< CreateWcsWithSip > Ptr
Definition: CreateWcsWithSip.h:78
lsst::meas::astrom::sip::CreateWcsWithSip::getLinearScatterInPixels
double getLinearScatterInPixels() const
Compute the median radial separation between items in this object's match list.
Definition: CreateWcsWithSip.cc:358
lsst::meas::astrom::sip::makeCreateWcsWithSip
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.
Definition: CreateWcsWithSip.h:168
lsst::meas::astrom::sip::CreateWcsWithSip::getNewWcs
std::shared_ptr< afw::geom::SkyWcs > getNewWcs()
Definition: CreateWcsWithSip.h:98
lsst::meas::astrom::sip::CreateWcsWithSip::getOrder
int getOrder() const
Return the number of terms in the SIP matrix.
Definition: CreateWcsWithSip.h:133
lsst::meas::astrom::sip::CreateWcsWithSip::getLinearScatterOnSky
geom::Angle getLinearScatterOnSky() const
Compute the median on-sky separation between items in this object's match list,.
Definition: CreateWcsWithSip.cc:370
lsst::meas::astrom::sip::CreateWcsWithSip::getSipBp
Eigen::MatrixXd const getSipBp()
Definition: CreateWcsWithSip.h:146
lsst
A base class for image defects.
Definition: imageAlgorithm.dox:1
lsst::meas::astrom::sip::CreateWcsWithSip::getScatterOnSky
geom::Angle getScatterOnSky() const
Compute the median on-sky separation between items in this object's match list.
Definition: CreateWcsWithSip.cc:364
lsst::meas::astrom::sip::CreateWcsWithSip::ConstPtr
std::shared_ptr< CreateWcsWithSip const > ConstPtr
Definition: CreateWcsWithSip.h:79
lsst::geom::Angle
A class representing an angle.
Definition: Angle.h:127
lsst::geom::Box2I
An integer coordinate rectangle.
Definition: Box.h:55
lsst::meas::astrom::sip::CreateWcsWithSip::getSipAp
Eigen::MatrixXd const getSipAp()
Definition: CreateWcsWithSip.h:144
lsst::meas::astrom::sip::CreateWcsWithSip::CreateWcsWithSip
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.
Definition: CreateWcsWithSip.cc:102
bbox
AmpInfoBoxKey bbox
Definition: Amplifier.cc:117