LSST Applications g0265f82a02+093ff98f47,g02d81e74bb+10352d6f39,g1f3e9fa97e+40b0fc677d,g2079a07aa2+14824f138e,g2bbee38e9b+093ff98f47,g337abbeb29+093ff98f47,g3ddfee87b4+064c02c7ee,g487adcacf7+7e842ebf4b,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g568d43a26c+1d7ac31cb0,g591dd9f2cf+fb1f69e2ea,g858d7b2824+10352d6f39,g8a8a8dda67+a6fc98d2e7,g8cdfe0ae6a+66d966b544,g99cad8db69+7ce8a7c20a,g9ddcbc5298+d4bad12328,ga1e77700b3+246acaaf9c,ga2e4dd1c03+064c02c7ee,ga8c6da7877+04f6ba86dc,gae46bcf261+093ff98f47,gb0e22166c9+3863383f4c,gba4ed39666+9664299f35,gbb8dafda3b+db40f59a7d,gbeb006f7da+e6a448e96d,gbf5cecdb8a+10352d6f39,gc0f3af6251+10a3fd39cd,gc120e1dc64+5839e50a77,gc28159a63d+093ff98f47,gcf0d15dbbd+064c02c7ee,gd2a12a3803+0c2c227a2b,gdaeeff99f8+a38ce5ea23,ge79ae78c31+093ff98f47,gee10cc3b42+a6fc98d2e7,gf1cff7945b+10352d6f39,w.2024.15
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
lsst::jointcal::PhotometryModel Class Referenceabstract

#include <PhotometryModel.h>

Inheritance diagram for lsst::jointcal::PhotometryModel:
lsst::jointcal::ConstrainedPhotometryModel lsst::jointcal::SimplePhotometryModel lsst::jointcal::ConstrainedFluxModel lsst::jointcal::ConstrainedMagnitudeModel lsst::jointcal::SimpleFluxModel lsst::jointcal::SimpleMagnitudeModel

Public Member Functions

 PhotometryModel (LOG_LOGGER log, double errorPedestal=0)
 
virtual Eigen::Index assignIndices (std::string const &whatToFit, Eigen::Index firstIndex)=0
 Assign indices in the full matrix to the parameters being fit in the mappings, starting at firstIndex.
 
virtual void offsetParams (Eigen::VectorXd const &delta)=0
 Offset the parameters by the provided amounts (by -delta).
 
virtual void offsetFittedStar (FittedStar &fittedStar, double delta) const =0
 Offset the appropriate flux or magnitude (by -delta).
 
virtual double computeResidual (CcdImage const &ccdImage, MeasuredStar const &measuredStar) const =0
 Compute the residual between the model applied to a star and its associated fittedStar.
 
virtual double transform (CcdImage const &ccdImage, MeasuredStar const &measuredStar) const =0
 Return the on-sky transformed flux for measuredStar on ccdImage.
 
virtual double transformError (CcdImage const &ccdImage, MeasuredStar const &measuredStar) const =0
 Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.
 
virtual void freezeErrorTransform ()=0
 Once this routine has been called, the error transform is not modified by offsetParams().
 
virtual void getMappingIndices (CcdImage const &ccdImage, IndexVector &indices) const =0
 Get how this set of parameters (of length Npar()) map into the "grand" fit.
 
virtual void computeParameterDerivatives (MeasuredStar const &measuredStar, CcdImage const &ccdImage, Eigen::VectorXd &derivatives) const =0
 Compute the parametric derivatives of this model.
 
virtual double getRefError (RefStar const &refStar) const =0
 Return the refStar error appropriate for this model (e.g. fluxErr or magErr).
 
virtual double computeRefResidual (FittedStar const &fittedStar, RefStar const &refStar) const =0
 Return the fittedStar - refStar residual appropriate for this model (e.g. flux - flux or mag - mag).
 
virtual std::shared_ptr< afw::image::PhotoCalibtoPhotoCalib (CcdImage const &ccdImage) const =0
 Return the mapping of ccdImage represented as a PhotoCalib.
 
std::size_t getNpar (CcdImage const &ccdImage) const
 Return the number of parameters in the mapping of CcdImage.
 
PhotometryMappingBase const & getMapping (CcdImage const &ccdImage) const
 Get the mapping associated with ccdImage.
 
virtual std::size_t getTotalParameters () const =0
 Return the total number of parameters in this model.
 
virtual void print (std::ostream &out) const =0
 Print a string representation of the contents of this mapping, for debugging.
 
bool validate (CcdImageList const &ccdImageList, int ndof) const
 Return true if this is a "reasonable" model.
 
bool checkPositiveOnBBox (CcdImage const &ccdImage) const
 Check that the model is positive on the ccdImage bbox.
 
double getErrorPedestal () const
 
double tweakFluxError (jointcal::MeasuredStar const &measuredStar) const
 Add a fraction of the instrumental flux to the instrumental flux error, in quadrature.
 
double tweakMagnitudeError (jointcal::MeasuredStar const &measuredStar) const
 Add a small magnitude offset to the "instrumental magnitude" error, in quadrature.
 
virtual ~PhotometryModel ()=default
 

Protected Member Functions

virtual PhotometryMappingBasefindMapping (CcdImage const &ccdImage) const =0
 Return a pointer to the mapping associated with this ccdImage.
 

Protected Attributes

LOG_LOGGER _log
 lsst.logging instance, to be created by a subclass so that messages have consistent name.
 
double errorPedestal
 

Friends

std::ostreamoperator<< (std::ostream &s, PhotometryModel const &model)
 

Detailed Description

Definition at line 45 of file PhotometryModel.h.

Constructor & Destructor Documentation

◆ PhotometryModel()

lsst::jointcal::PhotometryModel::PhotometryModel ( LOG_LOGGER log,
double errorPedestal = 0 )
inline
Parameters
logLogger to send messages to, to keep names consistent when logging.
errorPedestalPedestal on flux/magnitude error (percent of flux or delta magnitude).

Definition at line 51 of file PhotometryModel.h.

LOG_LOGGER _log
lsst.logging instance, to be created by a subclass so that messages have consistent name.
T move(T... args)

◆ ~PhotometryModel()

virtual lsst::jointcal::PhotometryModel::~PhotometryModel ( )
virtualdefault

Member Function Documentation

◆ assignIndices()

virtual Eigen::Index lsst::jointcal::PhotometryModel::assignIndices ( std::string const & whatToFit,
Eigen::Index firstIndex )
pure virtual

Assign indices in the full matrix to the parameters being fit in the mappings, starting at firstIndex.

Parameters
[in]whatToFitString containing parameters to fit.
[in]firstIndexIndex to start assigning at.
Returns
The highest assigned index.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ checkPositiveOnBBox()

bool lsst::jointcal::PhotometryModel::checkPositiveOnBBox ( CcdImage const & ccdImage) const

Check that the model is positive on the ccdImage bbox.

Parameters
ccdImageThe ccdImage to test.
Returns
True if the image is positive on a sampling of points of the ccdImage bbox.

Definition at line 49 of file PhotometryModel.cc.

49 {
50 bool check = true;
51 auto bbox = ccdImage.getImageFrame();
52 for (auto const &x : {bbox.xMin, bbox.getCenter().x, bbox.xMax})
53 for (auto const &y : {bbox.yMin, bbox.getCenter().y, bbox.yMax}) {
54 // flux, fluxErr, instFlux, instFluxErr all 1
56 star.setInstFluxAndErr(1, 1);
57 double result = transform(ccdImage, star);
58 // Don't short circuit so that we log every place the model is negative.
59 if (result < 0) {
60 LOGLS_WARN(_log, "CcdImage " << ccdImage.getName() << " is negative at (" << x << "," << y
61 << "): " << result);
62 check = false;
63 }
64 }
65 return check;
66}
py::object result
Definition _schema.cc:429
AmpInfoBoxKey bbox
Definition Amplifier.cc:117
#define LOGLS_WARN(logger, message)
Log a warn-level message using an iostream-based interface.
Definition Log.h:659
int y
Definition SpanSet.cc:48
table::Key< int > transform
The base class for handling stars. Used by all matching routines.
Definition BaseStar.h:51
Sources measured on images.

◆ computeParameterDerivatives()

virtual void lsst::jointcal::PhotometryModel::computeParameterDerivatives ( MeasuredStar const & measuredStar,
CcdImage const & ccdImage,
Eigen::VectorXd & derivatives ) const
pure virtual

Compute the parametric derivatives of this model.

Parameters
[in]measuredStarThe measured star with the position and flux to compute at.
[in]ccdImageThe ccdImage containing the measured star, to find the correct mapping.
[out]derivativesThe computed derivatives. Must be pre-allocated to the correct size.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ computeRefResidual()

virtual double lsst::jointcal::PhotometryModel::computeRefResidual ( FittedStar const & fittedStar,
RefStar const & refStar ) const
pure virtual

Return the fittedStar - refStar residual appropriate for this model (e.g. flux - flux or mag - mag).

Implemented in lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ computeResidual()

virtual double lsst::jointcal::PhotometryModel::computeResidual ( CcdImage const & ccdImage,
MeasuredStar const & measuredStar ) const
pure virtual

Compute the residual between the model applied to a star and its associated fittedStar.

\[ residual = Model(measuredStar) - fittedStar \]

Parameters
ccdImageThe ccdImage where measuredStar resides.
measuredStarThe measured star position to compute the residual of.
Returns
The residual.

Implemented in lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ findMapping()

virtual PhotometryMappingBase * lsst::jointcal::PhotometryModel::findMapping ( CcdImage const & ccdImage) const
protectedpure virtual

Return a pointer to the mapping associated with this ccdImage.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ freezeErrorTransform()

virtual void lsst::jointcal::PhotometryModel::freezeErrorTransform ( )
pure virtual

Once this routine has been called, the error transform is not modified by offsetParams().

The routine can be called when the mappings are roughly in place. After the call, the transformations used to propagate errors are no longer affected when updating the mappings. This allows an exactly linear fit, which can be necessary for some model+data combinations.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ getErrorPedestal()

double lsst::jointcal::PhotometryModel::getErrorPedestal ( ) const
inline

Definition at line 197 of file PhotometryModel.h.

197{ return errorPedestal; }

◆ getMapping()

PhotometryMappingBase const & lsst::jointcal::PhotometryModel::getMapping ( CcdImage const & ccdImage) const
inline

Get the mapping associated with ccdImage.

Definition at line 157 of file PhotometryModel.h.

157 {
158 return *(findMapping(ccdImage));
159 }
virtual PhotometryMappingBase * findMapping(CcdImage const &ccdImage) const =0
Return a pointer to the mapping associated with this ccdImage.

◆ getMappingIndices()

virtual void lsst::jointcal::PhotometryModel::getMappingIndices ( CcdImage const & ccdImage,
IndexVector & indices ) const
pure virtual

Get how this set of parameters (of length Npar()) map into the "grand" fit.

Parameters
[in]ccdImageThe ccdImage to look up.
[out]indicesThe indices of the mapping associated with ccdImage.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ getNpar()

std::size_t lsst::jointcal::PhotometryModel::getNpar ( CcdImage const & ccdImage) const
inline

Return the number of parameters in the mapping of CcdImage.

Definition at line 154 of file PhotometryModel.h.

154{ return findMapping(ccdImage)->getNpar(); }
virtual std::size_t getNpar() const =0
Number of total parameters in this mapping.

◆ getRefError()

virtual double lsst::jointcal::PhotometryModel::getRefError ( RefStar const & refStar) const
pure virtual

Return the refStar error appropriate for this model (e.g. fluxErr or magErr).

Implemented in lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ getTotalParameters()

virtual std::size_t lsst::jointcal::PhotometryModel::getTotalParameters ( ) const
pure virtual

Return the total number of parameters in this model.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ offsetFittedStar()

virtual void lsst::jointcal::PhotometryModel::offsetFittedStar ( FittedStar & fittedStar,
double delta ) const
pure virtual

Offset the appropriate flux or magnitude (by -delta).

Parameters
fittedStarThe star to update.
deltaThe amount to update by.

Implemented in lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ offsetParams()

virtual void lsst::jointcal::PhotometryModel::offsetParams ( Eigen::VectorXd const & delta)
pure virtual

Offset the parameters by the provided amounts (by -delta).

The shifts are applied according to the indices given in assignIndices.

Parameters
[in]deltavector of offsets to apply

Implemented in lsst::jointcal::ConstrainedPhotometryModel, and lsst::jointcal::SimplePhotometryModel.

◆ print()

virtual void lsst::jointcal::PhotometryModel::print ( std::ostream & out) const
pure virtual

Print a string representation of the contents of this mapping, for debugging.

This string representation can be very verbose, as it contains all of the parameters of all of the transforms in this model.

Implemented in lsst::jointcal::ConstrainedPhotometryModel, lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimplePhotometryModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ toPhotoCalib()

virtual std::shared_ptr< afw::image::PhotoCalib > lsst::jointcal::PhotometryModel::toPhotoCalib ( CcdImage const & ccdImage) const
pure virtual

◆ transform()

virtual double lsst::jointcal::PhotometryModel::transform ( CcdImage const & ccdImage,
MeasuredStar const & measuredStar ) const
pure virtual

Return the on-sky transformed flux for measuredStar on ccdImage.

Parameters
[in]ccdImageThe ccdImage where measuredStar resides.
measuredStarThe measured star position to transform.
Returns
The on-sky flux transformed from instFlux at measuredStar's position.

Implemented in lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ transformError()

virtual double lsst::jointcal::PhotometryModel::transformError ( CcdImage const & ccdImage,
MeasuredStar const & measuredStar ) const
pure virtual

Return the on-sky transformed flux uncertainty for measuredStar on ccdImage.

Identical to transform() until freezeErrorTransform() is called.

Parameters
[in]ccdImageThe ccdImage where measuredStar resides.
measuredStarThe measured star position to transform.
Returns
The on-sky flux transformed from instFlux at measuredStar's position.

Implemented in lsst::jointcal::ConstrainedFluxModel, lsst::jointcal::ConstrainedMagnitudeModel, lsst::jointcal::SimpleFluxModel, and lsst::jointcal::SimpleMagnitudeModel.

◆ tweakFluxError()

double lsst::jointcal::PhotometryModel::tweakFluxError ( jointcal::MeasuredStar const & measuredStar) const
inline

Add a fraction of the instrumental flux to the instrumental flux error, in quadrature.

Definition at line 200 of file PhotometryModel.h.

200 {
201 if (errorPedestal == 0) {
202 return measuredStar.getInstFluxErr();
203 } else {
204 return std::hypot(measuredStar.getInstFluxErr(), measuredStar.getInstFlux() * errorPedestal);
205 }
206 }
T hypot(T... args)

◆ tweakMagnitudeError()

double lsst::jointcal::PhotometryModel::tweakMagnitudeError ( jointcal::MeasuredStar const & measuredStar) const
inline

Add a small magnitude offset to the "instrumental magnitude" error, in quadrature.

Definition at line 209 of file PhotometryModel.h.

209 {
210 if (errorPedestal == 0) {
211 return measuredStar.getInstMagErr();
212 } else {
213 return std::hypot(measuredStar.getInstMagErr(), errorPedestal);
214 }
215 }

◆ validate()

bool lsst::jointcal::PhotometryModel::validate ( CcdImageList const & ccdImageList,
int ndof ) const

Return true if this is a "reasonable" model.

A valid photometry model is positive within each sensor's bounding box.

Parameters
ccdImageListThe ccdImages to test the model validity on.
ndofThe number of degrees of freedom in the fit, e.g. from Fitterbase.computeChi2().
Returns
True if the model is valid on all ccdImages.

Definition at line 33 of file PhotometryModel.cc.

33 {
34 bool check = true;
35 for (auto const &ccdImage : ccdImageList) {
36 // Don't short circuit so that we log every place the model is negative.
37 check &= checkPositiveOnBBox(*ccdImage);
38 }
39 if (ndof < 0) {
40 check &= false;
41 LOGLS_ERROR(_log, "This model only has "
42 << ndof << " degrees of freedom, with " << getTotalParameters()
43 << " total parameters. Reduce the model complexity (e.g. polynomial order)"
44 " to better match the number of measured sources.");
45 }
46 return check;
47}
#define LOGLS_ERROR(logger, message)
Log a error-level message using an iostream-based interface.
Definition Log.h:679
virtual std::size_t getTotalParameters() const =0
Return the total number of parameters in this model.
bool checkPositiveOnBBox(CcdImage const &ccdImage) const
Check that the model is positive on the ccdImage bbox.

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & s,
PhotometryModel const & model )
friend

Definition at line 192 of file PhotometryModel.h.

192 {
193 model.print(s);
194 return s;
195 }

Member Data Documentation

◆ _log

LOG_LOGGER lsst::jointcal::PhotometryModel::_log
protected

lsst.logging instance, to be created by a subclass so that messages have consistent name.

Definition at line 224 of file PhotometryModel.h.

◆ errorPedestal

double lsst::jointcal::PhotometryModel::errorPedestal
protected

Definition at line 227 of file PhotometryModel.h.


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