LSST Applications g180d380827+78227d2bc4,g2079a07aa2+86d27d4dc4,g2305ad1205+bdd7851fe3,g2bbee38e9b+c6a8a0fb72,g337abbeb29+c6a8a0fb72,g33d1c0ed96+c6a8a0fb72,g3a166c0a6a+c6a8a0fb72,g3d1719c13e+260d7c3927,g3ddfee87b4+723a6db5f3,g487adcacf7+29e55ea757,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+9443c4b912,g62aa8f1a4b+7e2ea9cd42,g858d7b2824+260d7c3927,g864b0138d7+8498d97249,g95921f966b+dffe86973d,g991b906543+260d7c3927,g99cad8db69+4809d78dd9,g9c22b2923f+e2510deafe,g9ddcbc5298+9a081db1e4,ga1e77700b3+03d07e1c1f,gb0e22166c9+60f28cb32d,gb23b769143+260d7c3927,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e22341fd87,gbd998247f1+585e252eca,gc120e1dc64+713f94b854,gc28159a63d+c6a8a0fb72,gc3e9b769f7+385ea95214,gcf0d15dbbd+723a6db5f3,gdaeeff99f8+f9a426f77a,ge6526c86ff+fde82a80b9,ge79ae78c31+c6a8a0fb72,gee10cc3b42+585e252eca,w.2024.18
LSST Data Management Base Package
Loading...
Searching...
No Matches
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
35#include "lsst/geom/Angle.h"
36#include "lsst/geom/Box.h"
37
38namespace lsst {
39namespace meas {
40namespace astrom {
41namespace sip {
42
75template <class MatchT>
77public:
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
148private:
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
167template <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:128
An integer coordinate rectangle.
Definition Box.h:55
Measure the distortions in an image plane and express them a SIP polynomials.
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.
std::shared_ptr< afw::geom::SkyWcs > getNewWcs()
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.
T size(T... args)
table::Key< int > order