LSSTApplications  19.0.0-10-g4a5fae6+3,19.0.0-10-g920eed2,19.0.0-11-g48a0200+2,19.0.0-18-gfc4e62b+16,19.0.0-2-g3b2f90d+2,19.0.0-2-gd671419+6,19.0.0-20-g5a5a17ab+14,19.0.0-21-g2644856+17,19.0.0-24-g0913cb1,19.0.0-24-g878c510+4,19.0.0-25-g6c8df7140+1,19.0.0-25-gb330496+4,19.0.0-3-g2b32d65+6,19.0.0-3-g8227491+15,19.0.0-3-g9c54d0d+15,19.0.0-3-gca68e65+11,19.0.0-3-gcfc5f51+6,19.0.0-3-ge110943+14,19.0.0-3-ge74d124,19.0.0-30-g9c3fd16+5,19.0.0-4-g06f5963+6,19.0.0-4-g10df615,19.0.0-4-g3d16501+17,19.0.0-4-g4a9c019+6,19.0.0-4-g5a8b323,19.0.0-4-g66397f0+1,19.0.0-4-g8557e14,19.0.0-4-g8964aba+16,19.0.0-4-ge404a01+15,19.0.0-5-g40f3a5a,19.0.0-5-g4db63b3,19.0.0-5-gb9eeb60,19.0.0-5-gfb03ce7+16,19.0.0-6-gbaebbfb+15,19.0.0-61-gec4c6e08+5,19.0.0-7-g039c0b5+15,19.0.0-7-gbea9075+4,19.0.0-7-gc567de5+16,19.0.0-72-g37abf38+2,19.0.0-9-g463f923+15,v20.0.0.rc1
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
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
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
Box.h
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
base.h
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
Angle.h
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