23#ifndef AFW_TABLE_aggregates_h_INCLUDED
24#define AFW_TABLE_aggregates_h_INCLUDED
104 bool isValid() const noexcept {
return _x.isValid() && _y.isValid(); }
125template <
typename Box>
179 void set(
BaseRecord& record, Box
const& value)
const override;
183 bool operator==(
BoxKey const& other)
const noexcept {
return _min == other._min && _max == other._max; }
188 bool isValid() const noexcept {
return _min.isValid() && _max.isValid(); }
227 : _ra(ra), _dec(
dec) {}
253 bool operator==(
CoordKey const& other) const noexcept {
return _ra == other._ra && _dec == other._dec; }
263 bool isValid() const noexcept {
return _ra.isValid() && _dec.isValid(); }
303 : _ixx(ixx), _iyy(iyy), _ixy(ixy) {}
325 void set(
BaseRecord& record,
geom::ellipses::Quadrupole const& value) const override;
330 return _ixx == other._ixx && _iyy == other._iyy && _ixy == other._ixy;
401 void set(
BaseRecord& record,
geom::ellipses::Ellipse const& value) const override;
406 return _qKey == other._qKey && _pKey == other._pKey;
431template <
typename T,
int N>
452 std::string const& unit,
bool diagonalOnly =
false);
469 NameArray const& units,
bool diagonalOnly =
false);
587template <
typename T,
int N>
588struct hash<
lsst::afw::table::CovarianceMatrixKey<T, N>> {
table::Key< std::string > name
Base class for all records.
A FunctorKey used to get or set a lsst::geom::Box2I or Box2D from a (min, max) pair of PointKeys.
BoxKey(BoxKey const &) noexcept=default
bool operator!=(BoxKey const &other) const noexcept
bool isValid() const noexcept
Return True if both the min and max PointKeys are valid.
std::size_t hash_value() const noexcept
Return a hash of this object.
Box get(BaseRecord const &record) const override
Get a Box from the given record.
static BoxKey addFields(Schema &schema, std::string const &name, std::string const &doc, std::string const &unit)
Add _min_x, _min_y, _max_x, _max_y fields to a Schema, and return a BoxKey that points to them.
PointKey< Element > getMin() const noexcept
Return the underlying min PointKey.
PointKey< Element > getMax() const noexcept
Return the underlying max PointKey.
typename Box::Element Element
Type of coordinate elements (i.e. int or double).
BoxKey() noexcept=default
Default constructor; instance will not be usable unless subsequently assigned to.
bool operator==(BoxKey const &other) const noexcept
Compare the FunctorKey for equality with another, using the underlying x and y Keys.
void set(BaseRecord &record, Box const &value) const override
Set a Box in the given record.
BoxKey(BoxKey &&) noexcept=default
BoxKey(SubSchema const &s)
Construct from a subschema, assuming _min_x, _max_x, _min_y, _max_y subfields.
A FunctorKey used to get or set celestial coordinates from a pair of lsst::geom::Angle keys.
bool operator!=(CoordKey const &other) const noexcept
CoordKey(Key< lsst::geom::Angle > const &ra, Key< lsst::geom::Angle > const &dec) noexcept
Construct from a pair of Keys.
static CoordKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc)
Add a pair of _ra, _dec fields to a Schema, and return a CoordKey that points to them.
CoordKey(SubSchema const &s)
Construct from a subschema, assuming ra and dec subfields.
CoordKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
void set(BaseRecord &record, lsst::geom::SpherePoint const &value) const override
Set an lsst::geom::SpherePoint in the given record.
Key< lsst::geom::Angle > getDec() const noexcept
Key< lsst::geom::Angle > getRa() const noexcept
Return a constituent Key.
std::size_t hash_value() const noexcept
Return a hash of this object.
CoordKey(CoordKey &&) noexcept=default
bool isValid() const noexcept
CoordKey(CoordKey const &) noexcept=default
lsst::geom::SpherePoint get(BaseRecord const &record) const override
Get an lsst::geom::SpherePoint from the given record.
CovarianceMatrixKey()
Construct an invalid instance; must assign before subsequent use.
CovarianceMatrixKey(CovarianceMatrixKey const &)
Eigen::Matrix< T, N, N > get(BaseRecord const &record) const override
Get a covariance matrix from the given record.
void setElement(BaseRecord &record, int i, int j, T value) const
Set the element in row i and column j.
CovarianceMatrixKey & operator=(CovarianceMatrixKey &&)
T getElement(BaseRecord const &record, int i, int j) const
Return the element in row i and column j.
void set(BaseRecord &record, Eigen::Matrix< T, N, N > const &value) const override
Set a covariance matrix in the given record (uses only the lower triangle of the given matrix)
~CovarianceMatrixKey() noexcept override
CovarianceMatrixKey(CovarianceMatrixKey &&)
static CovarianceMatrixKey addFields(Schema &schema, std::string const &prefix, NameArray const &names, std::string const &unit, bool diagonalOnly=false)
Add covariance matrix fields to a Schema, and return a CovarianceMatrixKey to manage them.
std::vector< Key< T > > ErrKeyArray
std::size_t hash_value() const noexcept
Return a hash of this object.
std::vector< Key< T > > CovarianceKeyArray
bool isValid() const noexcept
Return True if all the constituent error Keys are valid.
CovarianceMatrixKey & operator=(CovarianceMatrixKey const &)
A FunctorKey used to get or set a geom::ellipses::Ellipse from an (xx,yy,xy,x,y) tuple of Keys.
void set(BaseRecord &record, geom::ellipses::Ellipse const &value) const override
Set an Ellipse in the given record.
EllipseKey(EllipseKey &&) noexcept=default
static EllipseKey addFields(Schema &schema, std::string const &name, std::string const &doc, std::string const &unit)
Add a set of _xx, _yy, _xy, _x, _y fields to a Schema, and return an EllipseKey that points to them.
PointKey< double > getCenter() const noexcept
geom::ellipses::Ellipse get(BaseRecord const &record) const override
Get an Ellipse from the given record.
EllipseKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
std::size_t hash_value() const noexcept
Return a hash of this object.
bool operator!=(EllipseKey const &other) const noexcept
EllipseKey(EllipseKey const &) noexcept=default
EllipseKey(SubSchema const &s)
Construct from a subschema, assuming (xx, yy, xy, x, y) subfields.
QuadrupoleKey getCore() const noexcept
Return constituent FunctorKeys.
bool isValid() const noexcept
Return True if all the constituent Keys are valid.
EllipseKey(QuadrupoleKey const &qKey, PointKey< double > const &pKey) noexcept
Construct from individual Keys.
Convenience base class that combines the OutputFunctorKey and InputFunctorKey.
A class used as a handle to a particular field in a table.
bool isValid() const noexcept
Return true if the key was initialized to valid offset.
A FunctorKey used to get or set a lsst::geom::Point from an (x,y) pair of int or double Keys.
std::size_t hash_value() const noexcept
Return a hash of this object.
PointKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
Key< T > getY() const noexcept
Return the underlying y Key.
PointKey(PointKey const &) noexcept=default
void set(BaseRecord &record, lsst::geom::Point< T, 2 > const &value) const override
Set a Point in the given record.
PointKey(PointKey &&) noexcept=default
bool operator!=(PointKey< T > const &other) const noexcept
static PointKey addFields(Schema &schema, std::string const &name, std::string const &doc, std::string const &unit)
Add a pair of _x, _y fields to a Schema, and return a PointKey that points to them.
PointKey(Key< T > const &x, Key< T > const &y) noexcept
Construct from a pair of Keys.
bool operator==(PointKey< T > const &other) const noexcept
Compare the FunctorKey for equality with another, using the underlying x and y Keys.
Key< T > getX() const noexcept
Return the underlying x Key.
bool isValid() const noexcept
Return True if both the x and y Keys are valid.
lsst::geom::Point< T, 2 > get(BaseRecord const &record) const override
Get a Point from the given record.
A FunctorKey used to get or set a geom::ellipses::Quadrupole from a tuple of constituent Keys.
std::size_t hash_value() const noexcept
Return a hash of this object.
Key< double > getIxx() const noexcept
Return a constituent Key.
geom::ellipses::Quadrupole get(BaseRecord const &record) const override
Get a Quadrupole from the given record.
QuadrupoleKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
QuadrupoleKey(SubSchema const &s)
Construct from a subschema with appropriate subfields.
QuadrupoleKey(QuadrupoleKey const &) noexcept=default
Key< double > getIxy() const noexcept
Key< double > getIyy() const noexcept
void set(BaseRecord &record, geom::ellipses::Quadrupole const &value) const override
Set a Quadrupole in the given record.
static QuadrupoleKey addFields(Schema &schema, std::string const &name, std::string const &doc, CoordinateType coordType=CoordinateType::PIXEL)
Add a set of quadrupole subfields to a schema and return a QuadrupoleKey that points to them.
QuadrupoleKey(Key< double > const &ixx, Key< double > const &iyy, Key< double > const &ixy) noexcept
Construct from individual Keys.
QuadrupoleKey(QuadrupoleKey &&) noexcept=default
bool operator!=(QuadrupoleKey const &other) const noexcept
bool isValid() const noexcept
Return True if all the constituent Keys are valid.
Defines the fields and offsets for a table.
A proxy type for name lookups in a Schema.
A coordinate class intended to represent absolute positions (2-d specialization).
Point in an unspecified spherical coordinate system.
CoordinateType
Enum used to set units for geometric FunctorKeys.
std::size_t hashCombine(std::size_t seed) noexcept
Combine hashes.
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
A base class for image defects.
size_t operator()(argument_type const &obj) const noexcept
size_t operator()(argument_type const &obj) const noexcept
size_t operator()(argument_type const &obj) const noexcept
size_t operator()(argument_type const &obj) const noexcept
size_t operator()(argument_type const &obj) const noexcept
size_t operator()(argument_type const &obj) const noexcept