File Endpoint.h¶
-
namespace
lsst Class for a simple mapping implementing a generic AstrometryTransform.
Remove all non-astronomical counts from the Chunk Exposure’s pixels.
Forward declarations for lsst::utils::Cache
For details on the Cache class, see the Cache.h file.
It uses a template rather than a pointer so that the derived classes can use the specifics of the transform. The class simplePolyMapping overloads a few routines.
A base class for image defects
Numeric constants used by the Integrate.h integrator routines.
Compute Image Statistics
- Note
Gauss-Kronrod-Patterson quadrature coefficients for use in quadpack routine qng. These coefficients were calculated with 101 decimal digit arithmetic by L. W. Fullerton, Bell Labs, Nov 1981.
- Note
The Statistics class itself can only handle lsst::afw::image::MaskedImage() types. The philosophy has been to handle other types by making them look like lsst::afw::image::MaskedImage() and reusing that code. Users should have no need to instantiate a Statistics object directly, but should use the overloaded makeStatistics() factory functions.
-
namespace
afw -
namespace
geom Functions
-
std::ostream &
operator<<(std::ostream &os, GenericEndpoint const &endpoint)¶ Print “GenericEndpoint(_n_)” to the ostream where
_n_is the number of axes, e.g. “GenericAxes(4)”.
-
std::ostream &
operator<<(std::ostream &os, Point2Endpoint const &endpoint)¶ Print “Point2Endpoint()” to the ostream.
-
std::ostream &
operator<<(std::ostream &os, SpherePointEndpoint const &endpoint)¶ Print “SpherePointEndpoint()” to the ostream.
-
template<typename
PointT, typenameArrayT>
classBaseEndpoint - #include <Endpoint.h>
Virtual base class for endpoints, which are helper classes for Transform
Endpoints transform points and lists of points from LSST-specific data types, such as lsst::geom::Point2D and lsst::geom::SpherePoint, to a form accepted by ast::Mapping.tran. Each type of endpoint is used for a particular LSST data type, for example:
Point2Endpoint is used for lsst::geom::Point2D data
SpherePointEndpoint for lsst::geom::SpherePoint data
GenericEndpoint is used when no other form will do; its LSST data type is identical to the type used for ast::Mapping.applyForward.
Endpoints use the following forms of data for raw data:
std::vector<double> for a single point
ndarray<double, 2, 2> with dimensions number of axes x number of points for an array of points
Endpoints are designed as helper classes for Transform. Each transform has a two endpoints: one for input data and one for output data.
Endpoint also provides two methods to work with ast::Frames:
normalizeFrame verifies that a frame is the correct type, and adjusts its settings if necessary
makeFrame creates a new frame with the correct type and settings
- Template Parameters
PointT: LSST data type for one pointArrayT: LSST data type for an array of points
Public Types
-
template<>
usingPoint= PointT
-
template<>
usingArray= ArrayT
Public Functions
-
BaseEndpoint(BaseEndpoint const&)
-
BaseEndpoint(BaseEndpoint&&)
-
BaseEndpoint &
operator=(BaseEndpoint const&)
-
BaseEndpoint &
operator=(BaseEndpoint&&)
-
virtual
~BaseEndpoint()
-
int
getNAxes() const
-
virtual int
getNPoints(Array const &arr) const = 0 Return the number of points in an array
-
virtual bool
operator==(BaseEndpoint const &other) const Determine whether two endpoints represent the same conversion.
- Return
trueiff this object andotherare of exactly the same class and all visible properties are identical. This implementation requires that the objects have the same number of axes.- Warning
Two endpoints with different implementation classes will never compare equal, even if one class is conceptually equivalent to the other (e.g., a decorator). This may cause unexpected behavior when mixing related concrete endpoint classes.
- Parameters
other: the endpoint to compare
-
bool
operator!=(BaseEndpoint const &other) const Determine whether two endpoints do not represent the same conversion.
- Return
the inverse of operator==. See that operator’s documentation for important caveats.
-
virtual std::vector<double>
dataFromPoint(Point const &point) const = 0 Get raw data from a single point
- Return
the values in the point as a vector of size NAxess
- Parameters
[in] point: data for a single point
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the point has the wrong number of axes
-
virtual ndarray::Array<double, 2, 2>
dataFromArray(Array const &arr) const = 0 Get raw data from an array of points
- Return
the data as a 2-D ndarray array [nAxes, nPoints] in C order, so the in-memory view is, for example, x0, x1, x2, …, y0, y1, y2, …
- Parameters
[in] arr: Array of points
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
-
virtual Point
pointFromData(std::vector<double> const &data) const = 0 Get a single point from raw data
- Return
the corresponding point
- Parameters
[in] data: Data as a vector of length NAxes
-
virtual Array
arrayFromData(ndarray::Array<double, 2, 2> const &data) const = 0 Get an array of points from raw data
- Return
an array of points
- Parameters
[in] data: Raw data for an array of points, as a 2-D ndarray array [nPoints, nAxes] in C order, so the in-memory view is, for example, x0, y0, x1, y1, x2, y2, …
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
-
virtual std::shared_ptr<ast::Frame>
makeFrame() const Create a Frame that can be used with this end point in a Transform
Adjust and check the frame as needed.
Do not bother to check the number of axes because that is done elsewhere.
The base implementation does nothing.
Protected Functions
-
BaseEndpoint(int nAxes) Construct a BaseEndpoint
- Parameters
[in] nAxes: The number of axes in a point; must be > 0
- Exceptions
lsst.pex.exceptions.InvalidParameterError: if nAxes <= 0
-
void
_assertNAxes(int nAxes) const
-
int
_getNAxes(ndarray::Array<double, 2, 2> const &data) const
-
int
_getNAxes(ndarray::Array<double, 1, 1> const &data) const
-
int
_getNAxes(std::vector<double> const &data) const
-
int
_getNPoints(ndarray::Array<double, 2, 2> const &data) const
Private Members
-
int
_nAxes¶
-
template<typename
PointT>
classBaseVectorEndpoint: public lsst::afw::geom::BaseEndpoint<PointT, std::vector<PointT>> - #include <Endpoint.h>
Base class for endpoints with Array = std::vector<Point> where Point has 2 dimensions
- Note
Subclasses must provide
dataFromPoint,dataFromArray,pointFromDataandarrayFromData
Public Functions
-
BaseVectorEndpoint(BaseVectorEndpoint const&)
-
BaseVectorEndpoint(BaseVectorEndpoint&&)
-
BaseVectorEndpoint &
operator=(BaseVectorEndpoint const&)
-
BaseVectorEndpoint &
operator=(BaseVectorEndpoint&&)
-
~BaseVectorEndpoint()
-
int
getNPoints(Array const &arr) const Return the number of points in an array
Protected Functions
-
BaseVectorEndpoint(int nAxes) Construct a BaseVectorEndpoint
- Parameters
[in] nAxes: The number of axes in a point; must be > 0
- Exceptions
lsst.pex.exceptions.InvalidParameterError: if nAxes <= 0
-
class
GenericEndpoint: public lsst::afw::geom::BaseEndpoint<std::vector<double>, ndarray::Array<double, 2, 2>> - #include <Endpoint.h>
A generic endpoint for data in the format used by ast::Mapping
Thus supports all ast frame classes and any number of axes, and thus can be used as an endpoint for any ast::Mapping.
Public Functions
-
GenericEndpoint(GenericEndpoint const&)
-
GenericEndpoint(GenericEndpoint&&)
-
GenericEndpoint &
operator=(GenericEndpoint const&)
-
GenericEndpoint &
operator=(GenericEndpoint&&)
-
GenericEndpoint(int nAxes) Construct a GenericEndpoint with the specified number of axes
- Parameters
[in] nAxes: The number of axes in a point; must be > 0
- Exceptions
lsst.pex.exceptions.InvalidParameterError: if nAxes <= 0
-
~GenericEndpoint()
-
int
getNPoints(Array const &arr) const Return the number of points in an array
-
std::vector<double>
dataFromPoint(Point const &point) const Get raw data from a single point
- Return
the values in the point as a vector of size NAxess
- Parameters
[in] point: data for a single point
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the point has the wrong number of axes
-
ndarray::Array<double, 2, 2>
dataFromArray(Array const &arr) const Get raw data from an array of points
- Return
the data as a 2-D ndarray array [nAxes, nPoints] in C order, so the in-memory view is, for example, x0, x1, x2, …, y0, y1, y2, …
- Parameters
[in] arr: Array of points
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
-
Point
pointFromData(std::vector<double> const &data) const Get a single point from raw data
- Return
the corresponding point
- Parameters
[in] data: Data as a vector of length NAxes
-
Array
arrayFromData(ndarray::Array<double, 2, 2> const &data) const Get an array of points from raw data
- Return
an array of points
- Parameters
[in] data: Raw data for an array of points, as a 2-D ndarray array [nPoints, nAxes] in C order, so the in-memory view is, for example, x0, y0, x1, y1, x2, y2, …
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
Public Static Functions
-
static std::string
getClassPrefix() Get the class name prefix, e.g. “Point2” for “Point2Endpoint”.
-
-
class
Point2Endpoint: public lsst::afw::geom::BaseVectorEndpoint<lsst::geom::Point2D> - #include <Endpoint.h>
An endpoint for lsst::geom::Point2D
Public Functions
-
Point2Endpoint(Point2Endpoint const&)
-
Point2Endpoint(Point2Endpoint&&)
-
Point2Endpoint &
operator=(Point2Endpoint const&)
-
Point2Endpoint &
operator=(Point2Endpoint&&)
-
Point2Endpoint() Construct a Point2Endpoint
-
Point2Endpoint(int nAxes) Construct a Point2Endpoint with nAxes specified; nAxes must equal template parameter N
This constructor is primarily used by Transform; other users are encouraged to use the default constructor.
- Parameters
[in] nAxes: The number of axes in a point; must equal template parameter N
- Exceptions
lsst.pex.exceptions.InvalidParameterError: if nAxes != N
-
~Point2Endpoint()
-
std::vector<double>
dataFromPoint(Point const &point) const Get raw data from a single point
- Return
the values in the point as a vector of size NAxess
- Parameters
[in] point: data for a single point
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the point has the wrong number of axes
-
ndarray::Array<double, 2, 2>
dataFromArray(Array const &arr) const Get raw data from an array of points
- Return
the data as a 2-D ndarray array [nAxes, nPoints] in C order, so the in-memory view is, for example, x0, x1, x2, …, y0, y1, y2, …
- Parameters
[in] arr: Array of points
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
-
Point
pointFromData(std::vector<double> const &data) const Get a single point from raw data
- Return
the corresponding point
- Parameters
[in] data: Data as a vector of length NAxes
-
Array
arrayFromData(ndarray::Array<double, 2, 2> const &data) const Get an array of points from raw data
- Return
an array of points
- Parameters
[in] data: Raw data for an array of points, as a 2-D ndarray array [nPoints, nAxes] in C order, so the in-memory view is, for example, x0, y0, x1, y1, x2, y2, …
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
Check that framePtr points to a Frame, not a subclass
Subclasses are forbidden because lsst::geom::Point2D is assumed to be cartesian and subclasses of Frame are not (e.g. SkyFrame, SpecFrame and TimeFrame). Note that SpecFrame and TimeFrame are 1-dimensional so they cannot be used in any case. A CmpFrame could be cartesian, but we play it safe and reject these (however, a cartesian CmpFrame ought to simplify to a Frame).
Public Static Functions
-
static std::string
getClassPrefix() Get the class name prefix, e.g. “Point2” for “Point2Endpoint”.
-
-
class
SpherePointEndpoint: public lsst::afw::geom::BaseVectorEndpoint<lsst::geom::SpherePoint> - #include <Endpoint.h>
An endpoint for lsst::geom::SpherePoint
A SpherePointEndpoint always has 2 axes: longitude, latitude
Public Functions
-
SpherePointEndpoint(SpherePointEndpoint const&)
-
SpherePointEndpoint(SpherePointEndpoint&&)
-
SpherePointEndpoint &
operator=(SpherePointEndpoint const&)
-
SpherePointEndpoint &
operator=(SpherePointEndpoint&&)
-
SpherePointEndpoint() Construct a SpherePointEndpoint
-
SpherePointEndpoint(int nAxes) Construct a SpherePointEndpoint with nAxes specified; nAxes must equal 2
This constructor is primarily used by Transform; other users are encouraged to use the default constructor.
- Parameters
[in] nAxes: The number of axes in a point; must equal 2
- Exceptions
lsst.pex.exceptions.InvalidParameterError: if nAxes != 2
-
~SpherePointEndpoint()
-
std::vector<double>
dataFromPoint(Point const &point) const Get raw data from a single point
- Return
the values in the point as a vector of size NAxess
- Parameters
[in] point: data for a single point
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the point has the wrong number of axes
-
ndarray::Array<double, 2, 2>
dataFromArray(Array const &arr) const Get raw data from an array of points
- Return
the data as a 2-D ndarray array [nAxes, nPoints] in C order, so the in-memory view is, for example, x0, x1, x2, …, y0, y1, y2, …
- Parameters
[in] arr: Array of points
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
-
Point
pointFromData(std::vector<double> const &data) const Get a single point from raw data
- Return
the corresponding point
- Parameters
[in] data: Data as a vector of length NAxes
-
Array
arrayFromData(ndarray::Array<double, 2, 2> const &data) const Get an array of points from raw data
- Return
an array of points
- Parameters
[in] data: Raw data for an array of points, as a 2-D ndarray array [nPoints, nAxes] in C order, so the in-memory view is, for example, x0, y0, x1, y1, x2, y2, …
- Exceptions
lsst::pex::exceptions::InvalidParameterError: if the array has the wrong nAxes dimension
-
std::shared_ptr<ast::Frame>
makeFrame() const Create a Frame that can be used with this end point in a Transform.
Check that framePtr points to a SkyFrame and set longitude axis to 0, latitude to 1.
Public Static Functions
-
static std::string
getClassPrefix() Get the class name prefix, e.g. “Point2” for “Point2Endpoint”.
-
-
std::ostream &
-
namespace