lsst.meas.astrom  20.0.0-1-gc96f8cb+14
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.
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
base.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
Box.h
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
Match.h
lsst::meas::astrom::sip::CreateWcsWithSip::getSipBp
Eigen::MatrixXd const getSipBp()
Definition: CreateWcsWithSip.h:146
Angle.h
lsst
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
lsst::geom::Box2I
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