lsst.meas.base
19.0.0-9-g463f923+12
|
Go to the documentation of this file.
28 #include "ndarray/eigen.h"
40 FlagDefinitionList flagDefinitions;
45 flagDefinitions.add(
"flag_noGoodPixels",
"not enough non-rejected pixels in data to attempt the fit");
47 "flag_edge",
"object was too close to the edge of the image to use the full PSF model");
57 schema,
name,
"instFlux derived from linear least-squares fit of PSF model")),
58 _areaKey(
schema.addField<float>(
name +
"_area",
"effective area of PSF",
"pixel")),
71 geom::Point2D position = _centroidExtractor(measRecord, _flagHandler);
75 if (fitBBox != psfImage->getBBox()) {
80 auto fitRegionSpans = std::make_shared<afw::geom::SpanSet>(fitBBox);
86 badBits |= exposure.
getMaskedImage().getMask()->getPlaneBitMask(*i);
98 auto modelNdArray = fitRegion.
getSpans()->flatten(psfImage->getArray(), psfImage->getXY0());
103 auto model = ndarray::asEigenMatrix(modelNdArray);
104 auto data = ndarray::asEigenMatrix(dataNdArray);
105 auto variance = ndarray::asEigenMatrix(varianceNdArray);
106 PsfPixel alpha = model.squaredNorm();
108 result.instFlux = model.dot(
data.cast<PsfPixel>()) / alpha;
112 measRecord.
set(_areaKey, model.sum() / alpha);
116 measRecord.
set(_instFluxResultKey,
result);
129 if (
mapper.getInputSchema().getNames().count(
mapper.getInputSchema().join(name, flag.
name)) == 0)
132 mapper.getInputSchema().find<afw::table::Flag>(
name +
"_" + flag.
name).key;
math::Kernel::Pixel Pixel
std::shared_ptr< lsst::afw::detection::Psf const > getPsf() const
std::vector< std::string > badMaskPlanes
"Mask planes that indicate pixels that should be excluded from the fit" ;
A reusable result struct for instFlux measurements.
void handleFailure(afw::table::BaseRecord &record, MeasurementError const *error=nullptr) const
Handle an expected or unexpected Exception thrown by a measurement algorithm.
PsfFluxAlgorithm(Control const &ctrl, std::string const &name, afw::table::Schema &schema, std::string const &logName="")
A C++ control class to handle PsfFluxAlgorithm's configuration.
static FlagDefinitionList const & getFlagDefinitions()
Exception to be thrown when a measurement algorithm experiences a known failure mode.
Exception to be thrown when a measurement algorithm experiences a fatal error.
#define LOGL_ERROR(logger, message...)
A FunctorKey for FluxResult.
MaskedImageT getMaskedImage()
vector-type utility class to build a collection of FlagDefinitions
static FlagDefinition const FAILURE
void setValue(afw::table::BaseRecord &record, std::size_t i, bool value) const
Set the flag field corresponding to the given flag index.
std::unique_ptr< SchemaItem< U > > result
static FlagDefinition const NO_GOOD_PIXELS
lsst::geom::Box2I getBBox(ImageOrigin const origin=PARENT) const
virtual void fail(afw::table::SourceRecord &measRecord, MeasurementError *error=nullptr) const
Handle an exception thrown by the current algorithm by setting flags in the given record.
#define LSST_EXCEPT(type,...)
std::string getLogName() const
std::size_t size() const
return the current size (number of defined elements) of the collection
Simple class used to define and document flags The name and doc constitute the identity of the FlagDe...
void clip(Box2I const &other) noexcept
Exception to be thrown when a measurement algorithm encounters a NaN or infinite pixel.
lsst::geom::Point2I getXY0() const
static FlagDefinition const EDGE
void set(Key< T > const &key, U const &value)
static FlagHandler addFields(afw::table::Schema &schema, std::string const &prefix, FlagDefinitionList const &flagDefs, FlagDefinitionList const &exclDefs=FlagDefinitionList::getEmptyList())
Add Flag fields to a schema, creating a FlagHandler object to manage them.
virtual void measure(afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure) const
Called to measure a single child source in an image.