LSSTApplications  16.0-10-gc1446dd+43,16.0-11-g09ed895+1,16.0-11-gffd197f,16.0-13-g7649090,16.0-14-g0a28612+1,16.0-14-g6c7ed55+17,16.0-15-ga29f190+1,16.0-16-g89065d4+16,16.0-16-gd8e3590+17,16.0-16-ge6a35c8+7,16.0-17-g7e0e4ff+11,16.0-17-ga3d2e9f+1,16.0-19-gb830ed4e+17,16.0-2-g0febb12+21,16.0-2-g9d5294e+62,16.0-2-ga8830df+5,16.0-24-gc1c7f52+10,16.0-26-g3163dd8+5,16.0-3-ge00e371+22,16.0-4-g18f3627+6,16.0-4-g5f3a788+20,16.0-4-ga3eb747+10,16.0-4-gabf74b7+17,16.0-4-gade8416+10,16.0-4-gb13d127+5,16.0-43-g03c839fd,16.0-5-g6a53317+22,16.0-5-gb3f8a4b+75,16.0-5-gef99c9f+13,16.0-6-g9321be7+4,16.0-6-gcbc7b31+29,16.0-6-gf49912c+17,16.0-64-gf8c4409ec,16.0-7-gd2eeba5+38,16.0-8-g21fd5fe+17,16.0-8-g3a9f023+13,16.0-8-g4734f7a,16.0-9-g85d1a16+17,16.0-9-gf5c1f43+1,master-gdbf645fb6d,w.2018.49
LSSTDataManagementBasePackage
Public Member Functions | Protected Member Functions | List of all members
lsst::jointcal::MagnitudeTransfoChebyshev Class Reference

nth-order 2d Chebyshev photometry transform, plus the input flux. More...

#include <PhotometryTransform.h>

Inheritance diagram for lsst::jointcal::MagnitudeTransfoChebyshev:
lsst::jointcal::PhotometryTransformChebyshev lsst::jointcal::PhotometryTransform

Public Member Functions

 MagnitudeTransfoChebyshev (size_t order, afw::geom::Box2D const &bbox)
 
 MagnitudeTransfoChebyshev (ndarray::Array< double, 2, 2 > const &coefficients, afw::geom::Box2D const &bbox)
 
double transform (double x, double y, double value) const override
 Return the transform of value at (x,y). More...
 
void computeParameterDerivatives (double x, double y, double value, Eigen::Ref< Eigen::VectorXd > derivatives) const override
 Compute the derivatives with respect to the parameters (i.e. More...
 
std::shared_ptr< PhotometryTransformclone () const override
 return a copy (allocated by new) of the transformation. More...
 
double transformError (double x, double y, double value, double valueErr) const override
 Return the transformed valueErr at Point(x,y). More...
 
double transformError (Point const &in, double value, double valueErr) const
 Return the transformed valueErr at Point(x,y). More...
 
void dump (std::ostream &stream=std::cout) const override
 dumps the transform coefficients to stream. More...
 
int getNpar () const override
 Return the number of parameters (used to compute chisq) More...
 
void offsetParams (Eigen::VectorXd const &delta) override
 Offset the parameters by some (negative) amount during fitting. More...
 
ndarray::Array< double, 2, 2 > getCoefficients () const
 Get a copy of the coefficients of the polynomials, as a 2d array (NOTE: layout is [y][x]) More...
 
Eigen::VectorXd getParameters () const override
 Get a copy of the parameters of this model, in the same order as offsetParams. More...
 
ndarray::Size getOrder () const
 
afw::geom::Box2D getBBox () const
 
double mean () const
 
double transform (Point const &in, double value) const
 Return the transformed value at Point(x,y). More...
 

Protected Member Functions

double computeChebyshev (double x, double y) const
 Return the value of this polynomial at x,y. More...
 
void computeChebyshevDerivatives (double x, double y, Eigen::Ref< Eigen::VectorXd > derivatives) const
 Set the derivatives of this polynomial at x,y. More...
 

Detailed Description

nth-order 2d Chebyshev photometry transform, plus the input flux.

Definition at line 321 of file PhotometryTransform.h.

Constructor & Destructor Documentation

◆ MagnitudeTransfoChebyshev() [1/2]

lsst::jointcal::MagnitudeTransfoChebyshev::MagnitudeTransfoChebyshev ( size_t  order,
afw::geom::Box2D const &  bbox 
)
inline

Definition at line 323 of file PhotometryTransform.h.

324  : PhotometryTransformChebyshev(order, bbox, false) {}
table::Box2IKey bbox
Definition: Detector.cc:166
PhotometryTransformChebyshev(size_t order, afw::geom::Box2D const &bbox, bool identity)
Create a Chebyshev transform with terms up to order in (x*y).

◆ MagnitudeTransfoChebyshev() [2/2]

lsst::jointcal::MagnitudeTransfoChebyshev::MagnitudeTransfoChebyshev ( ndarray::Array< double, 2, 2 > const &  coefficients,
afw::geom::Box2D const &  bbox 
)
inline

Definition at line 326 of file PhotometryTransform.h.

table::Box2IKey bbox
Definition: Detector.cc:166
PhotometryTransformChebyshev(size_t order, afw::geom::Box2D const &bbox, bool identity)
Create a Chebyshev transform with terms up to order in (x*y).
ndarray::Array< double const, 2, 2 > coefficients

Member Function Documentation

◆ clone()

std::shared_ptr<PhotometryTransform> lsst::jointcal::MagnitudeTransfoChebyshev::clone ( ) const
inlineoverridevirtual

return a copy (allocated by new) of the transformation.

Implements lsst::jointcal::PhotometryTransform.

Definition at line 342 of file PhotometryTransform.h.

342  {
343  return std::make_shared<FluxTransfoChebyshev>(getCoefficients(), getBBox());
344  }
ndarray::Array< double, 2, 2 > getCoefficients() const
Get a copy of the coefficients of the polynomials, as a 2d array (NOTE: layout is [y][x]) ...

◆ computeChebyshev()

double lsst::jointcal::PhotometryTransformChebyshev::computeChebyshev ( double  x,
double  y 
) const
protectedinherited

Return the value of this polynomial at x,y.

For use in the sublcass transform() methods.

Definition at line 156 of file PhotometryTransform.cc.

156  {
157  afw::geom::Point2D p = _toChebyshevRange(afw::geom::Point2D(x, y));
158  return evaluateFunction1d(RecursionArrayImitator(_coefficients, p.getX()), p.getY(),
159  _coefficients.getSize<0>());
160 }
int y
Definition: SpanSet.cc:49
double x
Point< double, 2 > Point2D
Definition: Point.h:324

◆ computeChebyshevDerivatives()

void lsst::jointcal::PhotometryTransformChebyshev::computeChebyshevDerivatives ( double  x,
double  y,
Eigen::Ref< Eigen::VectorXd >  derivatives 
) const
protectedinherited

Set the derivatives of this polynomial at x,y.

For use in the sublcass computeParameterDerivatives() methods.

Definition at line 162 of file PhotometryTransform.cc.

163  {
164  afw::geom::Point2D p = _toChebyshevRange(afw::geom::Point2D(x, y));
165  // Algorithm: compute all the individual components recursively (since we'll need them anyway),
166  // then combine them into the final answer vectors.
167  Eigen::VectorXd Tnx(_order + 1);
168  Eigen::VectorXd Tmy(_order + 1);
169  Tnx[0] = 1;
170  Tmy[0] = 1;
171  if (_order >= 1) {
172  Tnx[1] = p.getX();
173  Tmy[1] = p.getY();
174  }
175  for (ndarray::Size i = 2; i <= _order; ++i) {
176  Tnx[i] = 2 * p.getX() * Tnx[i - 1] - Tnx[i - 2];
177  Tmy[i] = 2 * p.getY() * Tmy[i - 1] - Tmy[i - 2];
178  }
179 
180  // NOTE: the indexing in this method and offsetParams must be kept consistent!
181  Eigen::VectorXd::Index k = 0;
182  for (ndarray::Size j = 0; j <= _order; ++j) {
183  ndarray::Size const iMax = _order - j; // to save re-computing `i+j <= order` every inner step.
184  for (ndarray::Size i = 0; i <= iMax; ++i, ++k) {
185  derivatives[k] = Tmy[j] * Tnx[i];
186  }
187  }
188 }
int y
Definition: SpanSet.cc:49
double x
Point< double, 2 > Point2D
Definition: Point.h:324

◆ computeParameterDerivatives()

void lsst::jointcal::MagnitudeTransfoChebyshev::computeParameterDerivatives ( double  x,
double  y,
double  value,
Eigen::Ref< Eigen::VectorXd >  derivatives 
) const
inlineoverridevirtual

Compute the derivatives with respect to the parameters (i.e.

the coefficients).

Parameters
[in]xThe x coordinate to compute at (in the appropriate units for this transform).
[in]yThe y coordinate to compute at (in the appropriate units for this transform).
[in]valueThe instrument flux or magnitude to compute the derivative at.
[out]derivativesThe computed derivatives, in the same order as the deltas in offsetParams.

Implements lsst::jointcal::PhotometryTransform.

Definition at line 335 of file PhotometryTransform.h.

336  {
337  // The derivatives here are independent of value
338  computeChebyshevDerivatives(x, y, derivatives);
339  }
void computeChebyshevDerivatives(double x, double y, Eigen::Ref< Eigen::VectorXd > derivatives) const
Set the derivatives of this polynomial at x,y.
int y
Definition: SpanSet.cc:49
double x

◆ dump()

void lsst::jointcal::PhotometryTransformChebyshev::dump ( std::ostream stream = std::cout) const
inlineoverridevirtualinherited

dumps the transform coefficients to stream.

Implements lsst::jointcal::PhotometryTransform.

Definition at line 245 of file PhotometryTransform.h.

245 { stream << _coefficients; }

◆ getBBox()

afw::geom::Box2D lsst::jointcal::PhotometryTransformChebyshev::getBBox ( ) const
inlineinherited

Definition at line 261 of file PhotometryTransform.h.

261 { return _bbox; }

◆ getCoefficients()

ndarray::Array<double, 2, 2> lsst::jointcal::PhotometryTransformChebyshev::getCoefficients ( ) const
inlineinherited

Get a copy of the coefficients of the polynomials, as a 2d array (NOTE: layout is [y][x])

Definition at line 254 of file PhotometryTransform.h.

254 { return ndarray::copy(_coefficients); }

◆ getNpar()

int lsst::jointcal::PhotometryTransformChebyshev::getNpar ( ) const
inlineoverridevirtualinherited

Return the number of parameters (used to compute chisq)

Implements lsst::jointcal::PhotometryTransform.

Definition at line 248 of file PhotometryTransform.h.

248 { return _nParameters; }

◆ getOrder()

ndarray::Size lsst::jointcal::PhotometryTransformChebyshev::getOrder ( ) const
inlineinherited

Definition at line 259 of file PhotometryTransform.h.

259 { return _order; }

◆ getParameters()

Eigen::VectorXd lsst::jointcal::PhotometryTransformChebyshev::getParameters ( ) const
overridevirtualinherited

Get a copy of the parameters of this model, in the same order as offsetParams.

Implements lsst::jointcal::PhotometryTransform.

Definition at line 142 of file PhotometryTransform.cc.

142  {
143  Eigen::VectorXd parameters(_nParameters);
144  // NOTE: the indexing in this method and offsetParams must be kept consistent!
145  Eigen::VectorXd::Index k = 0;
146  for (ndarray::Size j = 0; j <= _order; ++j) {
147  ndarray::Size const iMax = _order - j; // to save re-computing `i+j <= order` every inner step.
148  for (ndarray::Size i = 0; i <= iMax; ++i, ++k) {
149  parameters[k] = _coefficients[j][i];
150  }
151  }
152 
153  return parameters;
154 }

◆ mean()

double lsst::jointcal::PhotometryTransformChebyshev::mean ( ) const
inherited

Definition at line 140 of file PhotometryTransform.cc.

140 { return integrate() / _bbox.getArea(); }
double getArea() const noexcept
Definition: Box.h:400
UnaryFunctionT::result_type integrate(UnaryFunctionT func, typename UnaryFunctionT::argument_type const a, typename UnaryFunctionT::argument_type const b, double eps=1.0e-6)
The 1D integrator.
Definition: Integrate.h:886

◆ offsetParams()

void lsst::jointcal::PhotometryTransformChebyshev::offsetParams ( Eigen::VectorXd const &  delta)
overridevirtualinherited

Offset the parameters by some (negative) amount during fitting.

Equivalent to flatten(parameters) -= delta

Ordering of delta is the same as the ordering of the derivatives returned from computeParameterDerivatives.

Implements lsst::jointcal::PhotometryTransform.

Definition at line 107 of file PhotometryTransform.cc.

107  {
108  // NOTE: the indexing in this method and computeParameterDerivatives must be kept consistent!
109  Eigen::VectorXd::Index k = 0;
110  for (ndarray::Size j = 0; j <= _order; ++j) {
111  ndarray::Size const iMax = _order - j; // to save re-computing `i+j <= order` every inner step.
112  for (ndarray::Size i = 0; i <= iMax; ++i, ++k) {
113  _coefficients[j][i] -= delta[k];
114  }
115  }
116 }

◆ transform() [1/2]

double lsst::jointcal::PhotometryTransform::transform ( Point const &  in,
double  value 
) const
inlineinherited

Return the transformed value at Point(x,y).

Definition at line 58 of file PhotometryTransform.h.

58 { return transform(in.x, in.y, value); }
virtual double transform(double x, double y, double value) const =0
Return the transform of value at (x,y).

◆ transform() [2/2]

double lsst::jointcal::MagnitudeTransfoChebyshev::transform ( double  x,
double  y,
double  value 
) const
inlineoverridevirtual

Return the transform of value at (x,y).

Implements lsst::jointcal::PhotometryTransform.

Definition at line 330 of file PhotometryTransform.h.

330  {
331  return value + computeChebyshev(x, y);
332  }
int y
Definition: SpanSet.cc:49
double computeChebyshev(double x, double y) const
Return the value of this polynomial at x,y.
double x

◆ transformError() [1/2]

double lsst::jointcal::PhotometryTransform::transformError ( Point const &  in,
double  value,
double  valueErr 
) const
inlineinherited

Return the transformed valueErr at Point(x,y).

Definition at line 64 of file PhotometryTransform.h.

64  {
65  return transformError(in.x, in.y, value, valueErr);
66  }
virtual double transformError(double x, double y, double value, double valueErr) const =0
Return the transformed valueErr at Point(x,y).

◆ transformError() [2/2]

double lsst::jointcal::PhotometryTransformChebyshev::transformError ( double  x,
double  y,
double  value,
double  valueErr 
) const
inlineoverridevirtualinherited

Return the transformed valueErr at Point(x,y).

Implements lsst::jointcal::PhotometryTransform.

Definition at line 242 of file PhotometryTransform.h.

242 { return 0; }

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