LSST Applications g070148d5b3+33e5256705,g0d53e28543+25c8b88941,g0da5cf3356+2dd1178308,g1081da9e2a+62d12e78cb,g17e5ecfddb+7e422d6136,g1c76d35bf8+ede3a706f7,g295839609d+225697d880,g2e2c1a68ba+cc1f6f037e,g2ffcdf413f+853cd4dcde,g38293774b4+62d12e78cb,g3b44f30a73+d953f1ac34,g48ccf36440+885b902d19,g4b2f1765b6+7dedbde6d2,g5320a0a9f6+0c5d6105b6,g56b687f8c9+ede3a706f7,g5c4744a4d9+ef6ac23297,g5ffd174ac0+0c5d6105b6,g6075d09f38+66af417445,g667d525e37+2ced63db88,g670421136f+2ced63db88,g71f27ac40c+2ced63db88,g774830318a+463cbe8d1f,g7876bc68e5+1d137996f1,g7985c39107+62d12e78cb,g7fdac2220c+0fd8241c05,g96f01af41f+368e6903a7,g9ca82378b8+2ced63db88,g9d27549199+ef6ac23297,gabe93b2c52+e3573e3735,gb065e2a02a+3dfbe639da,gbc3249ced9+0c5d6105b6,gbec6a3398f+0c5d6105b6,gc9534b9d65+35b9f25267,gd01420fc67+0c5d6105b6,geee7ff78d7+a14128c129,gf63283c776+ede3a706f7,gfed783d017+0c5d6105b6,w.2022.47
LSST Data Management Base Package
Loading...
Searching...
No Matches
MultiShapeletBasis.h
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2/*
3 * LSST Data Management System
4 * Copyright 2008-2013 LSST Corporation.
5 *
6 * This product includes software developed by the
7 * LSST Project (http://www.lsst.org/).
8 *
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the LSST License Statement and
20 * the GNU General Public License along with this program. If not,
21 * see <http://www.lsstcorp.org/LegalNotices/>.
22 */
23#ifndef LSST_SHAPELET_MultiShapeletBasis_h_INCLUDED
24#define LSST_SHAPELET_MultiShapeletBasis_h_INCLUDED
25
27
28namespace lsst { namespace shapelet {
29
41public:
42
58 MultiShapeletBasisComponent(double radius, int order, ndarray::Array<double const,2,2> const & matrix);
59
61 double getRadius() const { return _radius; }
62
64 int getOrder() const { return _order; }
65
67 ndarray::Array<double const,2,2> getMatrix() const { return _matrix; }
68
69private:
70 friend class MultiShapeletBasis;
71
72 double _radius;
73 int _order;
74 ndarray::Array<double const,2,2> _matrix;
75};
76
94public:
97 typedef ComponentVector::const_iterator Iterator;
98
100 explicit MultiShapeletBasis(int size);
101
103 int getSize() const { return _size; }
104
106 int getComponentCount() const { return _components.size(); }
107
109
110 Iterator begin() const { return _components.begin(); }
111 Iterator end() const { return _components.end(); }
113
119 void addComponent(double radius, int order, ndarray::Array<double const,2,2> const & matrix);
120
122 void scale(double factor);
123
125 void normalize();
126
128 void merge(MultiShapeletBasis const & other);
129
138 afw::geom::ellipses::Ellipse const & ellipse,
139 ndarray::Array<double const,1,1> const & coefficients
140 ) const;
141
142private:
143 int _size;
144 ComponentVector _components;
145};
146
147}} // namespace lsst::shapelet
148
149#endif // !LSST_SHAPELET_MultiShapeletBasis_h_INCLUDED
ndarray::Array< double const, 2, 2 > coefficients
T begin(T... args)
An ellipse defined by an arbitrary BaseCore and a center point.
Definition: Ellipse.h:51
Simple struct that represents one shapelet expansion in a MultiShapeletBasis.
MultiShapeletBasisComponent(double radius, int order, ndarray::Array< double const, 2, 2 > const &matrix)
Main constructor for MultiShapeletBasisComponent.
int getOrder() const
Order of this shapelet expansion.
double getRadius() const
Return the radius of this shapelet expansion.
ndarray::Array< double const, 2, 2 > getMatrix() const
Matrix whose elements [i,j] map MultiShapeletBasis elements j to shapelet terms i.
A basis formed from a linear combination of shapelet bases that differ only in radius.
void merge(MultiShapeletBasis const &other)
Combine the given basis with this (in place), by appending its elements.
MultiShapeletBasis(int size)
Construct a MultiShapeletBasis with the given number of elements (i.e. free amplitudes).
void normalize()
Rescale all matrices so each element has unit flux.
Iterator begin() const
Iterator over the components (distinct shapelet bases) of the MultiShapeletBasis.
ComponentVector::const_iterator Iterator
int getComponentCount() const
Return the number of components (distinct shapelet bases) in the MultiShapeletBasis.
int getSize() const
Return the number of elements (i.e. free amplitudes) in the MultiShapeletBasis.
MultiShapeletBasisComponent Component
void scale(double factor)
Multiply the radius of all basis elements by the given factor.
std::vector< Component > ComponentVector
MultiShapeletFunction makeFunction(afw::geom::ellipses::Ellipse const &ellipse, ndarray::Array< double const, 1, 1 > const &coefficients) const
Create a MultiShapeletFunction from the basis.
void addComponent(double radius, int order, ndarray::Array< double const, 2, 2 > const &matrix)
Add a new component (shapelet basis) to the MultiShapeletBasis.
A multi-scale shapelet function.
T end(T... args)
T size(T... args)
table::Key< int > order