LSST Applications g0aad566f14+98bdd3b178,g0dd44d6229+e0c2448475,g2079a07aa2+86d27d4dc4,g2305ad1205+28192cebb5,g2bbee38e9b+047b288a59,g337abbeb29+047b288a59,g33d1c0ed96+047b288a59,g3a166c0a6a+047b288a59,g3d1719c13e+98bdd3b178,g487adcacf7+08349b74a1,g4be5004598+98bdd3b178,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+742623b69a,g63cd9335cc+585e252eca,g858d7b2824+98bdd3b178,g88963caddf+0cb8e002cc,g88c60e1ba4+10d1129650,g99cad8db69+26979ce5a5,g9ddcbc5298+9a081db1e4,ga1e77700b3+a912195c07,gae0086650b+585e252eca,gb0e22166c9+60f28cb32d,gb1fda7adca+90d62c6f66,gb3a676b8dc+b4feba26a1,gb4b16eec92+950562e714,gba4ed39666+c2a2e4ac27,gbb8dafda3b+2fe9a6a885,gc120e1dc64+0553034b2f,gc28159a63d+047b288a59,gc3e9b769f7+f8a3f20ab6,gcf0d15dbbd+e0c2448475,gdaeeff99f8+f9a426f77a,gdb0af172c8+f61b8374e1,ge79ae78c31+047b288a59,w.2024.20
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
lsst::shapelet::MultiShapeletBasis Class Reference

A basis formed from a linear combination of shapelet bases that differ only in radius. More...

#include <MultiShapeletBasis.h>

Public Types

typedef MultiShapeletBasisComponent Component
 
typedef std::vector< ComponentComponentVector
 
typedef ComponentVector::const_iterator Iterator
 

Public Member Functions

 MultiShapeletBasis (int size)
 Construct a MultiShapeletBasis with the given number of elements (i.e. free amplitudes).
 
int getSize () const
 Return the number of elements (i.e. free amplitudes) in the MultiShapeletBasis.
 
int getComponentCount () const
 Return the number of components (distinct shapelet bases) in the MultiShapeletBasis.
 
Iterator begin () const
 Iterator over the components (distinct shapelet bases) of the MultiShapeletBasis.
 
Iterator end () const
 
void addComponent (double radius, int order, ndarray::Array< double const, 2, 2 > const &matrix)
 Add a new component (shapelet basis) to the MultiShapeletBasis.
 
void scale (double factor)
 Multiply the radius of all basis elements by the given factor.
 
void normalize ()
 Rescale all matrices so each element has unit flux.
 
void merge (MultiShapeletBasis const &other)
 Combine the given basis with this (in place), by appending its elements.
 
MultiShapeletFunction makeFunction (afw::geom::ellipses::Ellipse const &ellipse, ndarray::Array< double const, 1, 1 > const &coefficients) const
 Create a MultiShapeletFunction from the basis.
 

Detailed Description

A basis formed from a linear combination of shapelet bases that differ only in radius.

A MultiShapeletBasis can have many "components" (shapelet bases with different orders and radii), which are mapped via matrices into one or more "elements". It's common for a basis to have only one or two elements, representing a galaxy model that is a linear combination of one or two radial profiles. It's also common for most components to be zeroth order (Gaussians), as higher- order shapelet terms don't provide much of an advantage when approximating axisymmetric functions.

MultiShapeletBasis itself provides the interface to define these multi-Gaussian approximations and combine and refine them, and delegates the work of defining them to MultiShapeletFunction (via the makeFunction() method) and the MultiShapeletMatrixBuilder class. MultiShapeletFunction is a more user-friendly and versatile approach, intended for debugging and testing, while the MultiShapletMatrixBuilder approach is intended for performance-critical evaluation of PSF-convolved MultiShapeletBasis objects.

Definition at line 93 of file MultiShapeletBasis.h.

Member Typedef Documentation

◆ Component

Definition at line 95 of file MultiShapeletBasis.h.

◆ ComponentVector

Definition at line 96 of file MultiShapeletBasis.h.

◆ Iterator

typedef ComponentVector::const_iterator lsst::shapelet::MultiShapeletBasis::Iterator

Definition at line 97 of file MultiShapeletBasis.h.

Constructor & Destructor Documentation

◆ MultiShapeletBasis()

lsst::shapelet::MultiShapeletBasis::MultiShapeletBasis ( int size)
explicit

Construct a MultiShapeletBasis with the given number of elements (i.e. free amplitudes).

Member Function Documentation

◆ addComponent()

void lsst::shapelet::MultiShapeletBasis::addComponent ( double radius,
int order,
ndarray::Array< double const, 2, 2 > const & matrix )

Add a new component (shapelet basis) to the MultiShapeletBasis.

Should usually only be called by MultiShapeletBasis::addComponent.

Parameters
[in]radiusRadius of the shapelet expansion defined by this component.
[in]orderOrder of the shapelet expansion.
[in]matrixMatrix whose elements [i,j] map MultiShapeletBasis elements j to shapelet terms i; must have dimensions [computeSize(order), basis.getSize()], where "basis" is the MultiShapeletBasis this component is attached to. Will be deep-copied by the constructor.

Note that matrix elements follow the amplitude convention defined by ShapeletFunction; values are proportional to flux, not surface brightness.

◆ begin()

Iterator lsst::shapelet::MultiShapeletBasis::begin ( ) const
inline

Iterator over the components (distinct shapelet bases) of the MultiShapeletBasis.

Definition at line 110 of file MultiShapeletBasis.h.

110{ return _components.begin(); }
T begin(T... args)

◆ end()

Iterator lsst::shapelet::MultiShapeletBasis::end ( ) const
inline

Definition at line 111 of file MultiShapeletBasis.h.

111{ return _components.end(); }
T end(T... args)

◆ getComponentCount()

int lsst::shapelet::MultiShapeletBasis::getComponentCount ( ) const
inline

Return the number of components (distinct shapelet bases) in the MultiShapeletBasis.

Definition at line 106 of file MultiShapeletBasis.h.

106{ return _components.size(); }
T size(T... args)

◆ getSize()

int lsst::shapelet::MultiShapeletBasis::getSize ( ) const
inline

Return the number of elements (i.e. free amplitudes) in the MultiShapeletBasis.

Definition at line 103 of file MultiShapeletBasis.h.

103{ return _size; }

◆ makeFunction()

MultiShapeletFunction lsst::shapelet::MultiShapeletBasis::makeFunction ( afw::geom::ellipses::Ellipse const & ellipse,
ndarray::Array< double const, 1, 1 > const & coefficients ) const

Create a MultiShapeletFunction from the basis.

Parameters
[in]ellipseShapelet basis ellipse that will define the MultiShapeletFunction (will be scaled by the radius of each component).
[in]coefficientsCoefficients of the basis elements.

◆ merge()

void lsst::shapelet::MultiShapeletBasis::merge ( MultiShapeletBasis const & other)

Combine the given basis with this (in place), by appending its elements.

◆ normalize()

void lsst::shapelet::MultiShapeletBasis::normalize ( )

Rescale all matrices so each element has unit flux.

◆ scale()

void lsst::shapelet::MultiShapeletBasis::scale ( double factor)

Multiply the radius of all basis elements by the given factor.


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