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 | List of all members
lsst::shapelet::MatrixBuilderFactory< T > Class Template Reference

A factory class for MatrixBuilder, providing more control over workspace memory. More...

#include <MatrixBuilder.h>

Public Types

typedef MatrixBuilderWorkspace< T > Workspace
 Associated workspace class. More...
 
typedef MatrixBuilder< T > Builder
 Associated builder class. More...
 

Public Member Functions

 MatrixBuilderFactory (ndarray::Array< T const, 1, 1 > const &x, ndarray::Array< T const, 1, 1 > const &y, int order)
 Create a MatrixBuilder that evaluates a simple non-compound shapelet basis. More...
 
 MatrixBuilderFactory (ndarray::Array< T const, 1, 1 > const &x, ndarray::Array< T const, 1, 1 > const &y, int order, ShapeletFunction const &psf)
 Create a MatrixBuilder that evaluates a simple non-compound shapelet basis after convolving it with a ShapeletFunction. More...
 
 MatrixBuilderFactory (ndarray::Array< T const, 1, 1 > const &x, ndarray::Array< T const, 1, 1 > const &y, MultiShapeletBasis const &basis)
 Create a MatrixBuilder that evaluates a MultiShapeletBasis object. More...
 
 MatrixBuilderFactory (ndarray::Array< T const, 1, 1 > const &x, ndarray::Array< T const, 1, 1 > const &y, MultiShapeletBasis const &basis, MultiShapeletFunction const &psf)
 Create a MatrixBuilder that evaluates a MultiShapeletBasis object after convolving it with a MultiShapeletFunction. More...
 
int getDataSize () const
 Return the number of data points. More...
 
int getBasisSize () const
 Return the number of basis elements. More...
 
int computeWorkspace () const
 Return the size of the workspace needed for this MatrixBuilder, in elements of T. More...
 
MatrixBuilder< T > operator() () const
 Return a new MatrixBuilder with internal, unshared workspace. More...
 
MatrixBuilder< T > operator() (Workspace &workspace) const
 Return a new MatrixBuilder using the given workspace. More...
 

Detailed Description

template<typename T>
class lsst::shapelet::MatrixBuilderFactory< T >

A factory class for MatrixBuilder, providing more control over workspace memory.

To allocate workspace manually for a MatrixBuilder, we use the following pattern:;

MatrixBuilderFactory<T> factory(...);
MatrixBuilderWorkspace<T> workspace(factory.computeWorkspace());
MatrixBuilder<T> builder = factory(workspace);

Because we aren't doing anything special with the workspace, however, this is actually exactly equivalent to just constructing the MatrixBuilder directly, i.e.:

MatrixBuilder<T> builder(...);

A more interesting case is if we want to use the same workspace for a pair of MatrixBuilders:

MatrixBuilderFactory<T> factory1(...);
MatrixBuilderFactory<T> factory2(...);
MatrixBuilderWorkspace<T> workspace1(
std::max(factory1.computeWorkspace(), factory2.computeWorkspace())
);
MatrixBuilderWorkspace<T> workspace2(workspace1);
MatrixBuilder<T> builder1 = factory1(workspace1);
MatrixBuilder<T> builder2 = factory2(workspace2);
T max(T... args)

Definition at line 265 of file MatrixBuilder.h.

Member Typedef Documentation

◆ Builder

template<typename T >
typedef MatrixBuilder<T> lsst::shapelet::MatrixBuilderFactory< T >::Builder

Associated builder class.

Definition at line 269 of file MatrixBuilder.h.

◆ Workspace

Associated workspace class.

Definition at line 268 of file MatrixBuilder.h.

Constructor & Destructor Documentation

◆ MatrixBuilderFactory() [1/4]

template<typename T >
lsst::shapelet::MatrixBuilderFactory< T >::MatrixBuilderFactory ( ndarray::Array< T const, 1, 1 > const &  x,
ndarray::Array< T const, 1, 1 > const &  y,
int  order 
)

Create a MatrixBuilder that evaluates a simple non-compound shapelet basis.

Parameters
[in]xcolumn positions at which the basis should be evaluated.
[in]yrow positions at which the basis should be evaluated (same size as x).
[in]orderorder of the shapelet basis

◆ MatrixBuilderFactory() [2/4]

template<typename T >
lsst::shapelet::MatrixBuilderFactory< T >::MatrixBuilderFactory ( ndarray::Array< T const, 1, 1 > const &  x,
ndarray::Array< T const, 1, 1 > const &  y,
int  order,
ShapeletFunction const &  psf 
)

Create a MatrixBuilder that evaluates a simple non-compound shapelet basis after convolving it with a ShapeletFunction.

Parameters
[in]xcolumn positions at which the basis should be evaluated.
[in]yrow positions at which the basis should be evaluated (same size as x).
[in]orderorder of the shapelet basis
[in]psffunction to convolve the basis with

◆ MatrixBuilderFactory() [3/4]

template<typename T >
lsst::shapelet::MatrixBuilderFactory< T >::MatrixBuilderFactory ( ndarray::Array< T const, 1, 1 > const &  x,
ndarray::Array< T const, 1, 1 > const &  y,
MultiShapeletBasis const &  basis 
)

Create a MatrixBuilder that evaluates a MultiShapeletBasis object.

Parameters
[in]xcolumn positions at which the basis should be evaluated.
[in]yrow positions at which the basis should be evaluated (same size as x).
[in]basisbasis object defining the functions the matrix evaluates

◆ MatrixBuilderFactory() [4/4]

template<typename T >
lsst::shapelet::MatrixBuilderFactory< T >::MatrixBuilderFactory ( ndarray::Array< T const, 1, 1 > const &  x,
ndarray::Array< T const, 1, 1 > const &  y,
MultiShapeletBasis const &  basis,
MultiShapeletFunction const &  psf 
)

Create a MatrixBuilder that evaluates a MultiShapeletBasis object after convolving it with a MultiShapeletFunction.

Parameters
[in]xcolumn positions at which the basis should be evaluated.
[in]yrow positions at which the basis should be evaluated (same size as x).
[in]basisbasis object defining the functions the matrix evaluates
[in]psffunction to convolve the basis with

Member Function Documentation

◆ computeWorkspace()

template<typename T >
int lsst::shapelet::MatrixBuilderFactory< T >::computeWorkspace ( ) const

Return the size of the workspace needed for this MatrixBuilder, in elements of T.

◆ getBasisSize()

template<typename T >
int lsst::shapelet::MatrixBuilderFactory< T >::getBasisSize ( ) const

Return the number of basis elements.

◆ getDataSize()

template<typename T >
int lsst::shapelet::MatrixBuilderFactory< T >::getDataSize ( ) const

Return the number of data points.

◆ operator()() [1/2]

template<typename T >
MatrixBuilder<T> lsst::shapelet::MatrixBuilderFactory< T >::operator() ( ) const

Return a new MatrixBuilder with internal, unshared workspace.

◆ operator()() [2/2]

template<typename T >
MatrixBuilder<T> lsst::shapelet::MatrixBuilderFactory< T >::operator() ( Workspace workspace) const

Return a new MatrixBuilder using the given workspace.


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