File BaseCore.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
namespace ellipses
class BaseCore
#include <BaseCore.h>

A base class for parametrizations of the “core” of an ellipse - the ellipticity and size.

A subclass of BaseCore provides a particular interpretation of the three pointing point values that define an ellipse’s size and ellipticity (including position angle). All core subclasses are implicitly convertible and can be assigned to from any other core.

Subclassed by lsst::afw::geom::ellipses::Axes, lsst::afw::geom::ellipses::Quadrupole, lsst::afw::geom::ellipses::Separable< Ellipticity_, Radius_ >

Coordinate transforms

These member functions transform the ellipse by the given lsst::geom::LinearTransform. The transform can be done in-place by calling inPlace() on the returned expression object, or returned as a new shared_ptr by calling copy().

BaseCore::Transformer transform(lsst::geom::LinearTransform const &transform)
BaseCore::Transformer const transform(lsst::geom::LinearTransform const &transform) const

Convolve two bivariate Gaussians defined by their 1-sigma ellipses.

BaseCore::Convolution convolve(BaseCore const &other)
BaseCore::Convolution const convolve(BaseCore const &other) const

Public Types

typedef Eigen::Vector3d ParameterVector

Parameter vector type.

typedef Eigen::Matrix3d Jacobian

Parameter Jacobian matrix type.

Public Functions

virtual std::string getName() const = 0

Return a string that identifies this parametrization.

std::shared_ptr<BaseCore> clone() const

Deep-copy the Core.

virtual void normalize() = 0

Put the parameters into a “standard form”, and throw InvalidParameterError if they cannot be normalized.

void grow(double buffer)

Increase the major and minor radii of the ellipse core by the given buffer.

void scale(double factor)

Scale the size of the ellipse core by the given factor.

double getArea() const

Return the area of the ellipse core.

double getDeterminantRadius() const

Return the radius defined as the 4th root of the determinant of the quadrupole matrix.

The determinant radius is equal to the standard radius for a circle, and its square times pi is the area of the ellipse.

double getTraceRadius() const

Return the radius defined as the square root of one half the trace of the quadrupole matrix.

The trace radius is equal to the standard radius for a circle.

BaseCore::GridTransform const getGridTransform() const

Return the transform that maps the ellipse to the unit circle.

The returned proxy object is implicitly convertible to lsst::geom::LinearTransform and also supports differentiation.

lsst::geom::Extent2D computeDimensions() const

Return the size of the bounding box for the ellipse core.

virtual void readParameters(double const *iter) = 0
virtual void writeParameters(double *iter) const = 0
ParameterVector const getParameterVector() const

Return the core parameters as a vector.

void setParameterVector(ParameterVector const &vector)

Set the core parameters from a vector.

bool operator==(BaseCore const &other) const

Compare two ellipse cores for equality.

Ellipse cores are only equal if they have the same type.

bool operator!=(BaseCore const &other) const

Compare two ellipse cores for inequality.

Ellipses are only equal if they have the same type.

BaseCore &operator=(BaseCore const &other)

Set the parameters of this ellipse core from another.

This does not change the parametrization of the ellipse core.

BaseCore &operator=(BaseCore &&other)
Jacobian dAssign(BaseCore const &other)

Assign other to this and return the derivative of the conversion, d(this)/d(other).

template<typename Output>
BaseCore::Converter<Output> as() const

Convert this to the core type specified as a template parameter.

virtual ~BaseCore()

Public Static Functions

static std::shared_ptr<BaseCore> make(std::string const &name)
static std::shared_ptr<BaseCore> make(std::string const &name, ParameterVector const &parameters)
static std::shared_ptr<BaseCore> make(std::string const &name, double v1, double v2, double v3)
static std::shared_ptr<BaseCore> make(std::string const &name, BaseCore const &other)
static std::shared_ptr<BaseCore> make(std::string const &name, Transformer const &other)
static std::shared_ptr<BaseCore> make(std::string const &name, Convolution const &other)

Protected Functions

BaseCore()
virtual std::shared_ptr<BaseCore> _clone() const = 0
virtual void _assignToQuadrupole(double &ixx, double &iyy, double &ixy) const = 0
virtual void _assignFromQuadrupole(double ixx, double iyy, double ixy) = 0
virtual void _assignToAxes(double &a, double &b, double &theta) const = 0
virtual void _assignFromAxes(double a, double b, double theta) = 0
virtual Jacobian _dAssignToQuadrupole(double &ixx, double &iyy, double &ixy) const = 0
virtual Jacobian _dAssignFromQuadrupole(double ixx, double iyy, double ixy) = 0
virtual Jacobian _dAssignToAxes(double &a, double &b, double &theta) const = 0
virtual Jacobian _dAssignFromAxes(double a, double b, double theta) = 0

Protected Static Functions

static void registerSubclass(std::shared_ptr<BaseCore> const &example)
static void _assignQuadrupoleToAxes(double ixx, double iyy, double ixy, double &a, double &b, double &theta)
static Jacobian _dAssignQuadrupoleToAxes(double ixx, double iyy, double ixy, double &a, double &b, double &theta)
static void _assignAxesToQuadrupole(double a, double b, double theta, double &ixx, double &iyy, double &ixy)
static Jacobian _dAssignAxesToQuadrupole(double a, double b, double theta, double &ixx, double &iyy, double &ixy)

Friends

friend lsst::afw::geom::ellipses::Parametric
template<typename Output>
struct Converter

Public Functions

Converter(BaseCore const &input_)
operator Output() const
std::shared_ptr<Output> copy() const

Public Members

BaseCore const &input
template<typename T>
struct Registrar

Public Functions

Registrar()