25#ifndef LSST_AFW_MATH_SHAPELETS_SHAPELETFUNCTION_H
26#define LSST_AFW_MATH_SHAPELETS_SHAPELETFUNCTION_H
38namespace lsst {
namespace shapelet {
40class ShapeletFunctionEvaluator;
93 _basisType = basisType;
103 ndarray::Array<double const,1,1>
const getCoefficients()
const {
return _coefficients; }
165 ndarray::Array<double,1,1> _coefficients;
190 return _normalization * _h.
sumEvaluation(_coefficients, _transform(point));
195 return _normalization * _h.
sumEvaluation(_coefficients, _transform(point));
200 ndarray::Array<double const,1>
const &
x,
201 ndarray::Array<double const,1>
const &
y
206 ndarray::Array<double,2,1>
const & array,
233 void _computeRawMoments(
double & q0, Eigen::Vector2d & q1, Eigen::Matrix2d & q2)
const;
235 double _normalization;
236 ndarray::Array<double const,1,1> _coefficients;
ndarray::Array< double const, 2, 2 > coefficients
An ellipse defined by an arbitrary BaseCore and a center point.
lsst::geom::Point2D const & getCenter() const
Return the center point.
Transformer transform(lsst::geom::AffineTransform const &transform)
A class to represent a 2-dimensional array of pixels.
static void convertCoefficientVector(ndarray::Array< double, 1 > const &array, BasisTypeEnum input, BasisTypeEnum output, int order)
Convert a coefficient vector between basis types in-place.
A class to evaluate HERMITE shapelet-related quantities.
double sumIntegration(ndarray::Array< double const, 1 > const &coeff, int xMoment=0, int yMoment=0) const
Integrate a simple unscaled shapelet expansion.
double sumEvaluation(ndarray::Array< double const, 1 > const &coeff, double x, double y, double *dx=0, double *dy=0) const
Evaluate a simple unscaled shapelet expansion at the given point.
Evaluates a MultiShapeletFunction.
Evaluates a ShapeletFunction.
std::shared_ptr< ShapeletFunctionEvaluator const > ConstPtr
void addToImage(afw::image::Image< double > &image) const
Evaluate the function on the given image.
afw::geom::ellipses::Ellipse computeMoments() const
Return the unweighted dipole and quadrupole moments of the function as an ellipse.
double operator()(geom::Extent2D const &point) const
Evaluate at the given point.
double operator()(double x, double y) const
Evaluate at the given point.
double operator()(geom::Point2D const &point) const
Evaluate at the given point.
void update(ShapeletFunction const &function)
Update the evaluator from the given function.
void addToImage(ndarray::Array< double, 2, 1 > const &array, geom::Point2I const &xy0=geom::Point2I()) const
Add the function to the given image-like array.
ShapeletFunctionEvaluator(ShapeletFunction const &function)
Construct an evaluator for the given function.
std::shared_ptr< ShapeletFunctionEvaluator > Ptr
ndarray::Array< double, 1, 1 > operator()(ndarray::Array< double const, 1 > const &x, ndarray::Array< double const, 1 > const &y) const
Evaluate at the given points, returning a newly-allocated array.
double integrate() const
Compute the definite integral or integral moments.
A 2-d function defined by an expansion onto a Gauss-Laguerre or Gauss-Hermite basis.
Evaluator evaluate() const
Construct a helper object that can efficiently evaluate the function.
ShapeletFunction(int order, BasisTypeEnum basisType)
Construct a function with a unit-circle ellipse and set all coefficients to zero.
int getOrder() const
Return the maximum order (inclusive), either or .
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.
BasisTypeEnum getBasisType() const
Return the basis type (HERMITE or LAGUERRE).
ShapeletFunctionEvaluator Evaluator
afw::geom::ellipses::Ellipse const & getEllipse() const
Get the ellipse (const).
ShapeletFunction(int order, BasisTypeEnum basisType, afw::geom::ellipses::Ellipse const &ellipse)
Construct a function and set all coefficients to zero.
void changeBasisType(BasisTypeEnum basisType)
Change the basis type and convert coefficients in-place correspondingly.
ndarray::Array< double, 1, 1 > const getCoefficients()
Return the coefficient vector.
ShapeletFunction(int order, BasisTypeEnum basisType, double radius, geom::Point2D const ¢er, ndarray::Array< double, 1, 1 > const &coefficients)
Construct a function with a circular ellipse and a deep-copied coefficient vector.
std::shared_ptr< ShapeletFunction const > ConstPtr
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.
afw::geom::ellipses::Ellipse & getEllipse()
Get the ellipse (non-const).
void shiftInPlace(geom::Extent2D const &offset)
Shift the shapelet function by shifting the basis ellipse.
ShapeletFunction convolve(ShapeletFunction const &other) const
Convolve the shapelet function.
ShapeletFunction(ShapeletFunction const &other)
Copy constructor (deep).
void setEllipse(afw::geom::ellipses::Ellipse const &ellipse)
Set the ellipse.
std::shared_ptr< ShapeletFunction > Ptr
ndarray::Array< double const, 1, 1 > const getCoefficients() const
Return the coefficient vector (const).
ShapeletFunction()
Default constructor to appease SWIG (used by std::list). Not for use by users.
void normalize(double value=1.0)
Normalize the integral of the shapelet function to the given value.
ShapeletFunction(int order, BasisTypeEnum basisType, double radius, geom::Point2D const ¢er=geom::Point2D())
Construct a function with a circular ellipse and set all coefficients to zero.
ShapeletFunction & operator=(ShapeletFunction const &other)
Assignment (deep).
void transformInPlace(geom::AffineTransform const &transform)
Transform the shapelet function by transforming the basis ellipse.
static double const FLUX_FACTOR
Constants, typedefs, and general-purpose functions for shapelets library.