LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Types | Public Member Functions | Static Public Attributes | List of all members
lsst::shapelet::ShapeletFunction Class Reference

A 2-d function defined by an expansion onto a Gauss-Laguerre or Gauss-Hermite basis. More...

#include <ShapeletFunction.h>

Public Types

typedef std::shared_ptr< ShapeletFunctionPtr
 
typedef std::shared_ptr< ShapeletFunction const > ConstPtr
 
typedef ShapeletFunctionEvaluator Evaluator
 

Public Member Functions

int getOrder () const
 Return the maximum order (inclusive), either \(n_x + n_y\) or \(p + q\). More...
 
afw::geom::ellipses::Ellipse const & getEllipse () const
 Get the ellipse (const). More...
 
afw::geom::ellipses::EllipsegetEllipse ()
 Get the ellipse (non-const). More...
 
void setEllipse (afw::geom::ellipses::Ellipse const &ellipse)
 Set the ellipse. More...
 
BasisTypeEnum getBasisType () const
 Return the basis type (HERMITE or LAGUERRE). More...
 
void changeBasisType (BasisTypeEnum basisType)
 Change the basis type and convert coefficients in-place correspondingly. More...
 
void normalize (double value=1.0)
 Normalize the integral of the shapelet function to the given value. More...
 
ndarray::Array< double, 1, 1 > const getCoefficients ()
 Return the coefficient vector. More...
 
ndarray::Array< double const, 1, 1 > const getCoefficients () const
 Return the coefficient vector (const). More...
 
ShapeletFunction convolve (ShapeletFunction const &other) const
 Convolve the shapelet function. More...
 
Evaluator evaluate () const
 Construct a helper object that can efficiently evaluate the function. More...
 
void shiftInPlace (geom::Extent2D const &offset)
 Shift the shapelet function by shifting the basis ellipse. More...
 
void transformInPlace (geom::AffineTransform const &transform)
 Transform the shapelet function by transforming the basis ellipse. More...
 
 ShapeletFunction (int order, BasisTypeEnum basisType)
 Construct a function with a unit-circle ellipse and set all coefficients to zero. More...
 
 ShapeletFunction (int order, BasisTypeEnum basisType, ndarray::Array< double, 1, 1 > const &coefficients)
 Construct a function with a unit-circle ellipse and a deep-copied coefficient vector. More...
 
 ShapeletFunction (int order, BasisTypeEnum basisType, double radius, geom::Point2D const &center=geom::Point2D())
 Construct a function with a circular ellipse and set all coefficients to zero. More...
 
 ShapeletFunction (int order, BasisTypeEnum basisType, double radius, geom::Point2D const &center, ndarray::Array< double, 1, 1 > const &coefficients)
 Construct a function with a circular ellipse and a deep-copied coefficient vector. More...
 
 ShapeletFunction (int order, BasisTypeEnum basisType, afw::geom::ellipses::Ellipse const &ellipse)
 Construct a function and set all coefficients to zero. More...
 
 ShapeletFunction (int order, BasisTypeEnum basisType, afw::geom::ellipses::Ellipse const &ellipse, ndarray::Array< double const, 1, 1 > const &coefficients)
 Construct a function with a deep-copied coefficient vector. More...
 
 ShapeletFunction (ShapeletFunction const &other)
 Copy constructor (deep). More...
 
ShapeletFunctionoperator= (ShapeletFunction const &other)
 Assignment (deep). More...
 
 ShapeletFunction ()
 Default constructor to appease SWIG (used by std::list). Not for use by users. More...
 

Static Public Attributes

static double const FLUX_FACTOR
 

Detailed Description

A 2-d function defined by an expansion onto a Gauss-Laguerre or Gauss-Hermite basis.

The coefficients are in units of flux, not surface brightness; increasing the area of the basis ellipse while leaving the coefficients unchanged will decrease the surface brightness by the ratio of the areas of the new and old ellipses. This convention is necessary to ensure that convolution with a delta function is sane. Because the BasisEvaluator class does not deal with ellipses, it is necessary to divide its output by R^2 to get the same result as a ShapeletFunctionEvaluator whose ellipse has determinant radius of R.

The coefficient normalization is not identical to that of a Gaussian, however; a zeroth-order ShapeletFunction with its only coefficient value set to 1 has a flux of 2.0 * pi^(1/2). This value is defined as ShapeletFunction::FLUX_FACTOR. Of course, to get the flux of a more complex shapelet expansion you have to use ShapeletFunctionEvaluator::integrate().

Note that the units of the coefficients would have to be radius for basis functions with the same ellipse to be orthonormal, but this orthonormality isn't very useful, because the basis functions aren't even orthogonal in the more common case that the ellipses differ. However, basis functions defined on the unit circle are still orthonormal.

Definition at line 65 of file ShapeletFunction.h.

Member Typedef Documentation

◆ ConstPtr

Definition at line 69 of file ShapeletFunction.h.

◆ Evaluator

Definition at line 71 of file ShapeletFunction.h.

◆ Ptr

Definition at line 68 of file ShapeletFunction.h.

Constructor & Destructor Documentation

◆ ShapeletFunction() [1/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( int  order,
BasisTypeEnum  basisType 
)

Construct a function with a unit-circle ellipse and set all coefficients to zero.

◆ ShapeletFunction() [2/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( int  order,
BasisTypeEnum  basisType,
ndarray::Array< double, 1, 1 > const &  coefficients 
)

Construct a function with a unit-circle ellipse and a deep-copied coefficient vector.

◆ ShapeletFunction() [3/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( int  order,
BasisTypeEnum  basisType,
double  radius,
geom::Point2D const &  center = geom::Point2D() 
)

Construct a function with a circular ellipse and set all coefficients to zero.

◆ ShapeletFunction() [4/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( int  order,
BasisTypeEnum  basisType,
double  radius,
geom::Point2D const &  center,
ndarray::Array< double, 1, 1 > const &  coefficients 
)

Construct a function with a circular ellipse and a deep-copied coefficient vector.

◆ ShapeletFunction() [5/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( int  order,
BasisTypeEnum  basisType,
afw::geom::ellipses::Ellipse const &  ellipse 
)

Construct a function and set all coefficients to zero.

◆ ShapeletFunction() [6/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( int  order,
BasisTypeEnum  basisType,
afw::geom::ellipses::Ellipse const &  ellipse,
ndarray::Array< double const, 1, 1 > const &  coefficients 
)

Construct a function with a deep-copied coefficient vector.

◆ ShapeletFunction() [7/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( ShapeletFunction const &  other)

Copy constructor (deep).

◆ ShapeletFunction() [8/8]

lsst::shapelet::ShapeletFunction::ShapeletFunction ( )

Default constructor to appease SWIG (used by std::list). Not for use by users.

Member Function Documentation

◆ changeBasisType()

void lsst::shapelet::ShapeletFunction::changeBasisType ( BasisTypeEnum  basisType)
inline

Change the basis type and convert coefficients in-place correspondingly.

Definition at line 91 of file ShapeletFunction.h.

91  {
92  ConversionMatrix::convertCoefficientVector(_coefficients, _basisType, basisType, _order);
93  _basisType = basisType;
94  }
static void convertCoefficientVector(ndarray::Array< double, 1 > const &array, BasisTypeEnum input, BasisTypeEnum output, int order)
Convert a coefficient vector between basis types in-place.

◆ convolve()

ShapeletFunction lsst::shapelet::ShapeletFunction::convolve ( ShapeletFunction const &  other) const

Convolve the shapelet function.

◆ evaluate()

ShapeletFunctionEvaluator lsst::shapelet::ShapeletFunction::evaluate ( ) const
inline

Construct a helper object that can efficiently evaluate the function.

Definition at line 241 of file ShapeletFunction.h.

241  {
242  return ShapeletFunctionEvaluator(*this);
243 }

◆ getBasisType()

BasisTypeEnum lsst::shapelet::ShapeletFunction::getBasisType ( ) const
inline

Return the basis type (HERMITE or LAGUERRE).

Definition at line 88 of file ShapeletFunction.h.

88 { return _basisType; }

◆ getCoefficients() [1/2]

ndarray::Array<double,1,1> const lsst::shapelet::ShapeletFunction::getCoefficients ( )
inline

Return the coefficient vector.

Definition at line 100 of file ShapeletFunction.h.

100 { return _coefficients; }

◆ getCoefficients() [2/2]

ndarray::Array<double const,1,1> const lsst::shapelet::ShapeletFunction::getCoefficients ( ) const
inline

Return the coefficient vector (const).

Definition at line 103 of file ShapeletFunction.h.

103 { return _coefficients; }

◆ getEllipse() [1/2]

afw::geom::ellipses::Ellipse& lsst::shapelet::ShapeletFunction::getEllipse ( )
inline

Get the ellipse (non-const).

Definition at line 82 of file ShapeletFunction.h.

82 { return _ellipse; }

◆ getEllipse() [2/2]

afw::geom::ellipses::Ellipse const& lsst::shapelet::ShapeletFunction::getEllipse ( ) const
inline

Get the ellipse (const).

Definition at line 79 of file ShapeletFunction.h.

79 { return _ellipse; }

◆ getOrder()

int lsst::shapelet::ShapeletFunction::getOrder ( ) const
inline

Return the maximum order (inclusive), either \(n_x + n_y\) or \(p + q\).

Definition at line 76 of file ShapeletFunction.h.

76 { return _order; }

◆ normalize()

void lsst::shapelet::ShapeletFunction::normalize ( double  value = 1.0)

Normalize the integral of the shapelet function to the given value.

◆ operator=()

ShapeletFunction& lsst::shapelet::ShapeletFunction::operator= ( ShapeletFunction const &  other)

Assignment (deep).

◆ setEllipse()

void lsst::shapelet::ShapeletFunction::setEllipse ( afw::geom::ellipses::Ellipse const &  ellipse)
inline

Set the ellipse.

Definition at line 85 of file ShapeletFunction.h.

85 { _ellipse = ellipse; }

◆ shiftInPlace()

void lsst::shapelet::ShapeletFunction::shiftInPlace ( geom::Extent2D const &  offset)
inline

Shift the shapelet function by shifting the basis ellipse.

Definition at line 112 of file ShapeletFunction.h.

112  {
113  _ellipse.getCenter() += offset;
114  }
lsst::geom::Point2D const & getCenter() const
Return the center point.
Definition: Ellipse.h:62

◆ transformInPlace()

void lsst::shapelet::ShapeletFunction::transformInPlace ( geom::AffineTransform const &  transform)
inline

Transform the shapelet function by transforming the basis ellipse.

Definition at line 117 of file ShapeletFunction.h.

117  {
118  _ellipse.transform(transform).inPlace();
119  }
table::Key< int > transform
void inPlace()
Transform the ellipse in-place.
Definition: Transformer.cc:103
Transformer transform(lsst::geom::AffineTransform const &transform)
Definition: Transformer.h:124

Member Data Documentation

◆ FLUX_FACTOR

double const lsst::shapelet::ShapeletFunction::FLUX_FACTOR
static

Definition at line 73 of file ShapeletFunction.h.


The documentation for this class was generated from the following file: