38 FlagDefinitionList flagDefinitions;
43 flagDefinitions.add(
"flag_noGoodPixels",
"no good pixels in the annulus");
51 _resultKey(
FluxResultKey::addFields(schema, name,
"background in annulus around source")),
53 _centroidExtractor(schema, name),
54 _stats(ctrl.bgRej, ctrl.bgIter) {
60 geom::Point2D const center = _centroidExtractor(measRecord, _flagHandler);
70 float const psfSigma =
psf->computeShape().getDeterminantRadius();
80 auto const& annulus = outer->clippedTo(image.
getBBox())->intersectNot(*inner);
81 auto const& imageValues = annulus->flatten(image.
getImage()->getArray(), image.
getXY0());
82 auto const& maskValues = annulus->flatten(image.
getMask()->getArray(), image.
getXY0());
86 values.
reserve(imageValues.getNumElements());
87 assert(imageValues.getNumElements() == maskValues.getNumElements());
88 auto maskIter = maskValues.begin();
89 for (
auto imageIter = imageValues.begin(); imageIter != imageValues.end(); ++imageIter, ++maskIter) {
90 if ((*maskIter & badMask) == 0) {
95 if (values.
size() == 0) {
114 if (flag == LocalBackgroundAlgorithm::FAILURE)
continue;
115 if (
mapper.getInputSchema().getNames().count(
mapper.getInputSchema().join(
name, flag.
name)) == 0)
118 mapper.getInputSchema().find<afw::table::Flag>(
name +
"_" + flag.
name).key;
std::size_t size() const
return the current size (number of defined elements) of the collection
Configuration of LocalBackgroundAlgorithm.
Simple class used to define and document flags The name and doc constitute the identity of the FlagDe...
virtual void measure(afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure) const
Called to measure a single child source in an image.
float annulusInner
"Inner radius for background annulus as a multiple of the PSF sigma" ;
std::vector< std::string > badMaskPlanes
"Mask planes that indicate pixels that should be excluded from the measurement" ; ...
static std::shared_ptr< geom::SpanSet > fromShape(int r, Stencil s=Stencil::CIRCLE, lsst::geom::Point2I offset=lsst::geom::Point2I())
Exception to be thrown when a measurement algorithm experiences a known failure mode.
lsst::geom::Point2I getXY0() const
ImagePtr getImage() const
Utility class for handling flag fields that indicate the failure modes of an algorithm.
float annulusOuter
"Outer radius for background annulus as a multiple of the PSF sigma" ;
MaskedImageT getMaskedImage()
Statistics makeStatistics(lsst::afw::image::Image< Pixel > const &img, lsst::afw::image::Mask< image::MaskPixel > const &msk, int const flags, StatisticsControl const &sctrl=StatisticsControl())
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
static FlagDefinition const NO_GOOD_PIXELS
A FunctorKey for FluxResult.
std::unique_ptr< SchemaItem< U > > result
static FlagDefinitionList const & getFlagDefinitions()
#define LSST_EXCEPT(type,...)
LocalBackgroundAlgorithm(Control const &ctrl, std::string const &name, afw::table::Schema &schema, std::string const &logName="")
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...
static FlagDefinition const NO_PSF
void handleFailure(afw::table::BaseRecord &record, MeasurementError const *error=nullptr) const
Handle an expected or unexpected Exception thrown by a measurement algorithm.
void set(Key< T > const &key, U const &value)
std::shared_ptr< lsst::afw::detection::Psf const > getPsf() const
static FlagDefinition const FAILURE
vector-type utility class to build a collection of FlagDefinitions
lsst::geom::Box2I getBBox(ImageOrigin const origin=PARENT) const
A reusable result struct for instFlux measurements.