LSSTApplications  20.0.0
LSSTDataManagementBasePackage
Public Member Functions | List of all members
lsst::meas::algorithms::evalChi2Visitor< PixelT > Class Template Reference

A class to pass around to all our PsfCandidates to evaluate the PSF fit's X^2. More...

Inheritance diagram for lsst::meas::algorithms::evalChi2Visitor< PixelT >:
lsst::afw::math::CandidateVisitor

Public Member Functions

 evalChi2Visitor (afw::math::Kernel const &kernel, double lambda)
 
void reset ()
 
void processCandidate (afw::math::SpatialCellCandidate *candidate)
 
double getValue () const
 

Detailed Description

template<typename PixelT>
class lsst::meas::algorithms::evalChi2Visitor< PixelT >

A class to pass around to all our PsfCandidates to evaluate the PSF fit's X^2.

Definition at line 431 of file SpatialModelPsf.cc.

Constructor & Destructor Documentation

◆ evalChi2Visitor()

template<typename PixelT >
lsst::meas::algorithms::evalChi2Visitor< PixelT >::evalChi2Visitor ( afw::math::Kernel const &  kernel,
double  lambda 
)
inlineexplicit

Definition at line 439 of file SpatialModelPsf.cc.

440  : afw::math::CandidateVisitor(),
441  _chi2(0.0),
442  _kernel(kernel),
443  _lambda(lambda),
444  _kImage(std::shared_ptr<KImage>(new KImage(kernel.getDimensions()))) {}

Member Function Documentation

◆ getValue()

template<typename PixelT >
double lsst::meas::algorithms::evalChi2Visitor< PixelT >::getValue ( ) const
inline

Definition at line 486 of file SpatialModelPsf.cc.

486 { return _chi2; }

◆ processCandidate()

template<typename PixelT >
void lsst::meas::algorithms::evalChi2Visitor< PixelT >::processCandidate ( afw::math::SpatialCellCandidate candidate)
inlinevirtual

Reimplemented from lsst::afw::math::CandidateVisitor.

Definition at line 449 of file SpatialModelPsf.cc.

449  {
450  PsfCandidate<PixelT>* imCandidate = dynamic_cast<PsfCandidate<PixelT>*>(candidate);
451  if (imCandidate == NULL) {
453  "Failed to cast SpatialCellCandidate to PsfCandidate");
454  }
455 
456  double const xcen = imCandidate->getSource()->getX();
457  double const ycen = imCandidate->getSource()->getY();
458 
459  _kernel.computeImage(*_kImage, true, xcen, ycen);
461  try {
462  data = imCandidate->getOffsetImage(WARP_ALGORITHM, WARP_BUFFER);
464  return;
465  }
466 
467  try {
469  fitKernel(*_kImage, *data, _lambda, false, imCandidate->getSource()->getId());
470 
471  double dchi2 = result.first; // chi^2 from this object
472  double const amp = result.second; // estimate of amplitude of model at this point
473 
474  imCandidate->setChi2(dchi2);
475  imCandidate->setAmplitude(amp);
476 
477  _chi2 += dchi2;
478  } catch (lsst::pex::exceptions::RangeError& e) {
479  imCandidate->setStatus(afw::math::SpatialCellCandidate::BAD);
480  imCandidate->setChi2(std::numeric_limits<double>::quiet_NaN());
481  imCandidate->setAmplitude(std::numeric_limits<double>::quiet_NaN());
482  }
483  }

◆ reset()

template<typename PixelT >
void lsst::meas::algorithms::evalChi2Visitor< PixelT >::reset ( )
inlinevirtual

Reimplemented from lsst::afw::math::CandidateVisitor.

Definition at line 446 of file SpatialModelPsf.cc.

446 { _chi2 = 0.0; }

The documentation for this class was generated from the following file:
std::shared_ptr
STL class.
std::pair< double, double >
lsst::pex::exceptions::RangeError
Reports when the result of an operation cannot be represented by the destination type.
Definition: Runtime.h:115
lsst::afw::math::Kernel::computeImage
double computeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize, double x=0.0, double y=0.0) const
Compute an image (pixellized representation of the kernel) in place.
Definition: Kernel.cc:85
lsst::afw::math::SpatialCellCandidate::BAD
@ BAD
Definition: SpatialCell.h:72
data
char * data
Definition: BaseRecord.cc:62
lsst::pex::exceptions::LengthError
Reports attempts to exceed implementation-defined length limits for some classes.
Definition: Runtime.h:76
lsst::pex::exceptions::LogicError
Reports errors in the logical structure of the program.
Definition: Runtime.h:46
result
py::object result
Definition: _schema.cc:429
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
std::numeric_limits