LSSTApplications  19.0.0-14-gb0260a2+c4152221ba,20.0.0+428775a0ef,20.0.0+7c6b12c2f9,20.0.0+ae956f52c5,20.0.0+c388114e2c,20.0.0+e2e26847c2,20.0.0+e5529315c6,20.0.0-1-g04bee24+7c6b12c2f9,20.0.0-1-g10df615+cc9679e3e4,20.0.0-1-g253301a+7c6b12c2f9,20.0.0-1-g2b7511a+46a6078777,20.0.0-1-g4d801e7+9b3155b620,20.0.0-1-g5b95a8c+3d35cd64b7,20.0.0-1-gb058bd0+46a6078777,20.0.0-1-gb88604f+acecce4127,20.0.0-1-gc96f8cb+f5ea1f6730,20.0.0-1-gedffbd8+57e6df9186,20.0.0-10-g0891cd99+21712b8dc8,20.0.0-10-g9a20bd332+576ca7b471,20.0.0-17-gcdbda88+f8ebf1b2ab,20.0.0-2-g4dae9ad+f5ea1f6730,20.0.0-2-g61b8584+85c46248f3,20.0.0-2-gb780d76+f45b7d88f4,20.0.0-20-g7966b28+f5ea1f6730,20.0.0-21-g1f5da01+74cacf985d,20.0.0-23-g8900aa8+dfd6ff4ddf,20.0.0-3-g1653f94+85c46248f3,20.0.0-3-g4cc78c6+63636aeed8,20.0.0-3-g750bffe+3a91ba9410,20.0.0-3-gbd60e8c+ff10c6d78d,20.0.0-32-g15a0e07c+fb20712e7c,20.0.0-4-g97dc21a+dfd6ff4ddf,20.0.0-4-gfea843c+f45b7d88f4,20.0.0-5-g357b56b+f45b7d88f4,20.0.0-59-gb502cbb+701042a847,20.0.0-6-g9a5b7a1+3980549e0d,20.0.0-7-gcda7bf1+ddb9d7f898,w.2020.43
LSSTDataManagementBasePackage
ChebyshevBoundedField.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 /*
3  * LSST Data Management System
4  * Copyright 2008-2014 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 
24 #ifndef LSST_AFW_MATH_ChebyshevBoundedField_h_INCLUDED
25 #define LSST_AFW_MATH_ChebyshevBoundedField_h_INCLUDED
26 
27 #include "ndarray.h"
28 
29 #include "lsst/pex/config.h"
32 
33 namespace lsst {
34 namespace afw {
35 namespace math {
36 
39 public:
41 
42  LSST_CONTROL_FIELD(orderX, int, "maximum Chebyshev function order in x");
43 
44  LSST_CONTROL_FIELD(orderY, int, "maximum Chebyshev function order in y");
45 
47  "if true, only include terms where the sum of the x and y order "
48  "is less than or equal to max(orderX, orderY)");
49 
51  int computeSize() const;
52 };
53 
76 class ChebyshevBoundedField : public table::io::PersistableFacade<ChebyshevBoundedField>,
77  public BoundedField {
78 public:
80 
116  ndarray::Array<double const, 2, 2> const& coefficients);
117 
123 
135  ndarray::Array<double const, 1> const& x,
136  ndarray::Array<double const, 1> const& y,
137  ndarray::Array<double const, 1> const& z,
138  Control const& ctrl);
139 
153  ndarray::Array<double const, 1> const& x,
154  ndarray::Array<double const, 1> const& y,
155  ndarray::Array<double const, 1> const& z,
156  ndarray::Array<double const, 1> const& w,
157  Control const& ctrl);
158 
172  template <typename T>
174 
180  ndarray::Array<double const, 2, 2> getCoefficients() const { return _coefficients; }
181 
184 
192 
194  double evaluate(lsst::geom::Point2D const& position) const override;
195 
197 
199  double integrate() const override;
200 
202  double mean() const override;
203 
205  bool isPersistable() const noexcept override { return true; }
206 
208  std::shared_ptr<BoundedField> operator*(double const scale) const override;
209 
211  bool operator==(BoundedField const& rhs) const override;
212 
213 protected:
214  std::string getPersistenceName() const override;
215 
216  std::string getPythonModule() const override;
217 
218  void write(OutputArchiveHandle& handle) const override;
219 
220 private:
221  // Internal constructor for fit() routines: just initializes the transform,
222  // leaves coefficients empty.
224 
225  lsst::geom::AffineTransform _toChebyshevRange; // maps points from the bbox to [-1,1]x[-1,1]
226  ndarray::Array<double const, 2, 2> _coefficients; // shape=(orderY+1, orderX+1)
227 
228  std::string toString() const override;
229 };
230 } // namespace math
231 } // namespace afw
232 } // namespace lsst
233 
234 #endif // !LSST_AFW_MATH_ChebyshevBoundedField_h_INCLUDED
y
int y
Definition: SpanSet.cc:49
lsst::afw::math::ChebyshevBoundedField::Control
ChebyshevBoundedFieldControl Control
Definition: ChebyshevBoundedField.h:79
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition: imageAlgorithm.dox:1
lsst::afw::math::ChebyshevBoundedFieldControl
A control object used when fitting ChebyshevBoundedField to data (see ChebyshevBoundedField::fit)
Definition: ChebyshevBoundedField.h:38
lsst::afw::math::ChebyshevBoundedField::ChebyshevBoundedField
ChebyshevBoundedField(ChebyshevBoundedField &&)
std::string
STL class.
std::shared_ptr
STL class.
lsst::afw::math::ChebyshevBoundedFieldControl::orderX
int orderX
"maximum Chebyshev function order in x" ;
Definition: ChebyshevBoundedField.h:42
lsst::afw::math::BoundedField
An abstract base class for 2-d functions defined on an integer bounding boxes.
Definition: BoundedField.h:55
coefficients
ndarray::Array< double const, 2, 2 > coefficients
Definition: ChebyshevBoundedField.cc:276
lsst::afw::math::ChebyshevBoundedField::operator=
ChebyshevBoundedField & operator=(ChebyshevBoundedField const &)=delete
lsst::afw::math::ChebyshevBoundedField::integrate
double integrate() const override
Compute the integral of this function over its bounding-box.
Definition: ChebyshevBoundedField.cc:297
lsst::afw::math::ChebyshevBoundedField::truncate
std::shared_ptr< ChebyshevBoundedField > truncate(Control const &ctrl) const
Return a new ChebyshevBoudedField with maximum orders set by the given control object.
Definition: ChebyshevBoundedField.cc:216
lsst::afw::math::ChebyshevBoundedField::~ChebyshevBoundedField
~ChebyshevBoundedField() override
AffineTransform.h
lsst::afw
Definition: imageAlgorithm.dox:1
lsst::afw::math::ChebyshevBoundedField::fit
static std::shared_ptr< ChebyshevBoundedField > fit(lsst::geom::Box2I const &bbox, ndarray::Array< double const, 1 > const &x, ndarray::Array< double const, 1 > const &y, ndarray::Array< double const, 1 > const &z, Control const &ctrl)
Fit a Chebyshev approximation to non-gridded data with equal weights.
Definition: ChebyshevBoundedField.cc:149
lsst::afw::math::ChebyshevBoundedField::mean
double mean() const override
Compute the mean of this function over its bounding-box.
Definition: ChebyshevBoundedField.cc:308
lsst::afw::math::ChebyshevBoundedField::getPersistenceName
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
Definition: ChebyshevBoundedField.cc:358
lsst::afw::math::ChebyshevBoundedField::operator*
std::shared_ptr< BoundedField > operator*(double const scale) const override
Return a scaled BoundedField.
Definition: ChebyshevBoundedField.cc:376
lsst::afw::math::ChebyshevBoundedField::getCoefficients
ndarray::Array< double const, 2, 2 > getCoefficients() const
Return the coefficient matrix.
Definition: ChebyshevBoundedField.h:180
lsst::afw::math::ChebyshevBoundedFieldControl::ChebyshevBoundedFieldControl
ChebyshevBoundedFieldControl()
Definition: ChebyshevBoundedField.h:40
lsst::afw::math::ChebyshevBoundedField
A BoundedField based on 2-d Chebyshev polynomials of the first kind.
Definition: ChebyshevBoundedField.h:77
lsst::afw::math::ChebyshevBoundedField::getPythonModule
std::string getPythonModule() const override
Return the fully-qualified Python module that should be imported to guarantee that its factory is reg...
Definition: ChebyshevBoundedField.cc:362
lsst::afw::math::ChebyshevBoundedField::evaluate
double evaluate(lsst::geom::Point2D const &position) const override
Evaluate the field at the given point.
Definition: ChebyshevBoundedField.cc:282
lsst::geom::AffineTransform
An affine coordinate transformation consisting of a linear transformation and an offset.
Definition: AffineTransform.h:75
lsst::afw::math::ChebyshevBoundedField::relocate
std::shared_ptr< ChebyshevBoundedField > relocate(lsst::geom::Box2I const &bbox) const
Return a new ChebyshevBoundedField with domain set to the given bounding box.
Definition: ChebyshevBoundedField.cc:240
lsst::afw::math::ChebyshevBoundedField::operator=
ChebyshevBoundedField & operator=(ChebyshevBoundedField &&)=delete
z
double z
Definition: Match.cc:44
x
double x
Definition: ChebyshevBoundedField.cc:277
lsst::afw::math::ChebyshevBoundedFieldControl::orderY
int orderY
"maximum Chebyshev function order in y" ;
Definition: ChebyshevBoundedField.h:44
LSST_CONTROL_FIELD
#define LSST_CONTROL_FIELD(NAME, TYPE, DOC)
A preprocessor macro used to define fields in C++ "control object" structs.
Definition: config.h:43
lsst
A base class for image defects.
Definition: imageAlgorithm.dox:1
lsst::afw::math::ChebyshevBoundedFieldControl::triangular
bool triangular
"if true, only include terms where the sum of the x and y order " "is less than or equal to max(order...
Definition: ChebyshevBoundedField.h:48
lsst::afw::math::BoundedField::evaluate
virtual double evaluate(lsst::geom::Point2D const &position) const =0
Evaluate the field at the given point.
lsst::afw::math::ChebyshevBoundedField::ChebyshevBoundedField
ChebyshevBoundedField(lsst::geom::Box2I const &bbox, ndarray::Array< double const, 2, 2 > const &coefficients)
Initialize the field from its bounding box an coefficients.
Definition: ChebyshevBoundedField.cc:60
lsst::afw::math::ChebyshevBoundedFieldControl::computeSize
int computeSize() const
Return the number of nonzero coefficients in the Chebyshev function defined by this object.
Definition: ChebyshevBoundedField.cc:44
lsst::afw::math::ChebyshevBoundedField::ChebyshevBoundedField
ChebyshevBoundedField(ChebyshevBoundedField const &)
lsst::afw::math::ChebyshevBoundedField::isPersistable
bool isPersistable() const noexcept override
ChebyshevBoundedField is always persistable.
Definition: ChebyshevBoundedField.h:205
lsst::geom::Point
A coordinate class intended to represent absolute positions.
Definition: CoordinateBase.h:39
lsst::afw::math::ChebyshevBoundedField::operator==
bool operator==(BoundedField const &rhs) const override
BoundedFields (of the same sublcass) are equal if their bounding boxes and parameters are equal.
Definition: ChebyshevBoundedField.cc:380
lsst::afw::table::io::PersistableFacade
A CRTP facade class for subclasses of Persistable.
Definition: Persistable.h:176
lsst::geom::Box2I
An integer coordinate rectangle.
Definition: Box.h:55
lsst::afw.display.ds9.scale
def scale(algorithm, min, max=None, frame=None)
Definition: ds9.py:109
config.h
w
double w
Definition: CoaddPsf.cc:69
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition: Image.h:58
lsst::afw::math::ChebyshevBoundedField::write
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
Definition: ChebyshevBoundedField.cc:364
BoundedField.h
lsst::afw::table::io::Persistable::OutputArchiveHandle
io::OutputArchiveHandle OutputArchiveHandle
Definition: Persistable.h:108
bbox
AmpInfoBoxKey bbox
Definition: Amplifier.cc:117