LSST Applications g180d380827+0f66a164bb,g2079a07aa2+86d27d4dc4,g2305ad1205+7d304bc7a0,g29320951ab+500695df56,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+e42ea45bea,g48712c4677+36a86eeaa5,g487adcacf7+2dd8f347ac,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+c70619cc9d,g5a732f18d5+53520f316c,g5ea96fc03c+341ea1ce94,g64a986408d+f7cd9c7162,g858d7b2824+f7cd9c7162,g8a8a8dda67+585e252eca,g99cad8db69+469ab8c039,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+c92fc63c7e,gbd866b1f37+f7cd9c7162,gc120e1dc64+02c66aa596,gc28159a63d+0e5473021a,gc3e9b769f7+b0068a2d9f,gcf0d15dbbd+e42ea45bea,gdaeeff99f8+f9a426f77a,ge6526c86ff+84383d05b3,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+f7cd9c7162,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
ShapeUtilities.h
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2/*
3 * LSST Data Management System
4 * Copyright 2008-2015 AURA/LSST.
5 *
6 * This product includes software developed by the
7 * LSST Project (http://www.lsst.org/).
8 *
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the LSST License Statement and
20 * the GNU General Public License along with this program. If not,
21 * see <http://www.lsstcorp.org/LegalNotices/>.
22 */
23
24#ifndef LSST_MEAS_BASE_ShapeUtilities_h_INCLUDED
25#define LSST_MEAS_BASE_ShapeUtilities_h_INCLUDED
26
30
31namespace lsst {
32namespace meas {
33namespace base {
34
53
56
58 explicit ShapeResult(ShapeElement xx_, ShapeElement yy_, ShapeElement xy_, ShapeCov const& matrix)
59 : xx(xx_),
60 yy(yy_),
61 xy(xy_),
62 xxErr(std::sqrt(matrix(0, 0))),
63 yyErr(std::sqrt(matrix(1, 1))),
64 xyErr(std::sqrt(matrix(2, 2))),
65 xx_yy_Cov(matrix(0, 1)),
66 xx_xy_Cov(matrix(0, 2)),
67 yy_xy_Cov(matrix(1, 2)) {}
68
71 ErrElement yyErr_, ErrElement xyErr_)
72 : xx(xx_),
73 yy(yy_),
74 xy(xy_),
75 xxErr(xxErr_),
76 yyErr(yyErr_),
77 xyErr(xyErr_),
78 xx_yy_Cov(0.0),
79 xx_xy_Cov(0.0),
80 yy_xy_Cov(0.0) {}
81
88 Shape const getShape() const;
89
90 // get the Quadrupole corresponding to this ShapeResult
92
94 void setShape(Shape const& shape);
95
97 ShapeCov const getShapeErr() const;
98
101 void setShapeErr(ShapeCov const& matrix);
102
105};
106
113class ShapeResultKey : public afw::table::FunctorKey<ShapeResult> {
114public:
126 static ShapeResultKey addFields(afw::table::Schema& schema, std::string const& name,
127 std::string const& doc, UncertaintyEnum uncertainty,
129
131 ShapeResultKey() : _shape(), _shapeErr() {}
132
136 : _shape(shape), _shapeErr(shapeErr) {}
137
148
150 virtual ShapeResult get(afw::table::BaseRecord const& record) const;
151
153 virtual void set(afw::table::BaseRecord& record, ShapeResult const& value) const;
154
156
157 bool operator==(ShapeResultKey const& other) const {
158 return _shape == other._shape && _shapeErr == other._shapeErr;
159 }
160 bool operator!=(ShapeResultKey const& other) const { return !(*this == other); }
162
164 bool isValid() const { return _shape.isValid() && _shapeErr.isValid(); }
165
167 afw::table::QuadrupoleKey getShape() const { return _shape; }
168
171
173 afw::table::Key<ShapeElement> getIxx() const { return _shape.getIxx(); }
174
176 afw::table::Key<ShapeElement> getIyy() const { return _shape.getIyy(); }
177
179 afw::table::Key<ShapeElement> getIxy() const { return _shape.getIxy(); }
180
181private:
184};
185
207
208} // namespace base
209} // namespace meas
210} // namespace lsst
211
212#endif // !LSST_MEAS_BASE_ShapeUtilities_h_INCLUDED
An ellipse core with quadrupole moments as parameters.
Definition Quadrupole.h:47
Tag types used to declare specialized field types.
Definition misc.h:31
Base class for all records.
Definition BaseRecord.h:31
bool isValid() const noexcept
Return True if all the constituent error Keys are valid.
Convenience base class that combines the OutputFunctorKey and InputFunctorKey.
Definition FunctorKey.h:74
A FunctorKey used to get or set a geom::ellipses::Quadrupole from a tuple of constituent Keys.
Definition aggregates.h:369
Key< double > getIxx() const noexcept
Return a constituent Key.
Definition aggregates.h:433
Key< double > getIxy() const noexcept
Definition aggregates.h:435
Key< double > getIyy() const noexcept
Definition aggregates.h:434
bool isValid() const noexcept
Return True if all the constituent Keys are valid.
Definition aggregates.h:429
Defines the fields and offsets for a table.
Definition Schema.h:51
A proxy type for name lookups in a Schema.
Definition Schema.h:367
A 2D linear coordinate transformation.
A FunctorKey for ShapeResult.
afw::table::QuadrupoleKey getShape() const
Return a FunctorKey to just the shape value.
static ShapeResultKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc, UncertaintyEnum uncertainty, afw::table::CoordinateType coordType=afw::table::CoordinateType::PIXEL)
Add the appropriate fields to a Schema, and return a ShapeResultKey that manages them.
ShapeResultKey(afw::table::QuadrupoleKey const &shape, afw::table::CovarianceMatrixKey< ErrElement, 3 > const &shapeErr)
Construct from a pair of Keys.
afw::table::Key< ShapeElement > getIxy() const
Return a Key for the xy moment.
bool operator==(ShapeResultKey const &other) const
Compare the FunctorKey for equality with another, using the underlying Keys.
virtual ShapeResult get(afw::table::BaseRecord const &record) const
Get a ShapeResult from the given record.
ShapeResultKey()
Default constructor; instance will not be usuable unless subsequently assigned to.
bool operator!=(ShapeResultKey const &other) const
afw::table::Key< ShapeElement > getIxx() const
Return a Key for the xx moment.
bool isValid() const
Return True if the shape key is valid.
afw::table::Key< ShapeElement > getIyy() const
Return a Key for the yy moment.
afw::table::CovarianceMatrixKey< ErrElement, 3 > getShapeErr() const
Return a FunctorKey to just the uncertainty matrix.
daf::base::PropertySet * set
Definition fits.cc:931
CoordinateType
Enum used to set units for geometric FunctorKeys.
Definition aggregates.h:364
UncertaintyEnum
An enum used to specify how much uncertainty information measurement algorithms provide.
Definition constants.h:43
Eigen::Matrix< ErrElement, 3, 3, Eigen::DontAlign > ShapeCov
Definition constants.h:61
Eigen::Matrix< ShapeElement, 3, 3, Eigen::DontAlign > ShapeTrMatrix
Definition constants.h:62
double ShapeElement
Definition constants.h:57
ShapeTrMatrix makeShapeTransformMatrix(geom::LinearTransform const &xform)
Construct a matrix suitable for transforming second moments.
STL namespace.
A reusable struct for moments-based shape measurements.
ErrElement yy_xy_Cov
yy,xy term in the uncertainty convariance matrix
Shape const getShape() const
Return an afw::geom::ellipses object corresponding to xx, yy, xy.
ShapeCov const getShapeErr() const
Return the 3x3 symmetric covariance matrix, with rows and columns ordered (xx, yy,...
ErrElement xyErr
standard deviation of xy
afw::geom::ellipses::Quadrupole getQuadrupole()
void setShape(Shape const &shape)
Set struct elements from the given Quadrupole object.
ErrElement xx_xy_Cov
xx,xy term in the uncertainty convariance matrix
ShapeResult()
Constructor; initializes everything to NaN.
ShapeElement xy
image or model second moment for xy^2
ShapeResult(ShapeElement xx_, ShapeElement yy_, ShapeElement xy_, ErrElement xxErr_, ErrElement yyErr_, ErrElement xyErr_)
Constructor; initializes everything from values.
ErrElement xxErr
standard deviation of xx
ShapeElement xx
image or model second moment for x^2
void setShapeErr(ShapeCov const &matrix)
Set the struct standard deviation elements from the given matrix, with rows and columns ordered (xx,...
ErrElement xx_yy_Cov
xx,yy term in the uncertainty convariance matrix
ShapeResult(ShapeElement xx_, ShapeElement yy_, ShapeElement xy_, ShapeCov const &matrix)
Constructor; initializes everything from values.
ErrElement yyErr
standard deviation of yy
ShapeElement yy
image or model second moment for y^2