lsst.meas.base g76965917b2+a5ca99c4d9
Loading...
Searching...
No Matches
ScaledApertureFlux.cc
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2/*
3 * LSST Data Management System
4 * Copyright 2008-2016 AURA/LSST.
5 *
6 * This product includes software developed by the
7 * LSST Project (http://www.lsst.org/).
8 *
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the LSST License Statement and
20 * the GNU General Public License along with this program. If not,
21 * see <http://www.lsstcorp.org/LegalNotices/>.
22 */
23
29
30namespace lsst {
31namespace meas {
32namespace base {
33
35 afw::table::Schema& schema)
36 : _ctrl(ctrl),
37 _instFluxResultKey(
38 FluxResultKey::addFields(schema, name, "instFlux derived from PSF-scaled aperture")),
39 _centroidExtractor(schema, name) {
41}
42
44 afw::image::Exposure<float> const& exposure) const {
45 geom::Point2D const center = _centroidExtractor(measRecord, _flagHandler);
46 double const radius = exposure.getPsf()->computeShape(center).getDeterminantRadius();
47 double const fwhm = 2.0 * std::sqrt(2.0 * std::log(2)) * radius;
48 double const size = _ctrl.scale * fwhm;
49 afw::geom::ellipses::Axes const axes(size, size);
50
51 // ApertureFluxAlgorithm::computeSincFlux requires an ApertureFluxControl as an
52 // argument. All that it uses it for is to read the type of warping kernel.
54 apCtrl.shiftKernel = _ctrl.shiftKernel;
55
57 exposure.getMaskedImage(), afw::geom::ellipses::Ellipse(axes, center), apCtrl);
58 measRecord.set(_instFluxResultKey, result);
59
62 if (result.getFlag(iter.number)) {
63 _flagHandler.setValue(measRecord, iter.number, true);
64 }
65 }
66}
67
69 _flagHandler.handleFailure(measRecord, error);
70}
71
74 : FluxTransform{name, mapper} {
78 mapper.getInputSchema().find<afw::table::Flag>(name + "_" + flagName).key;
79 if (key.isValid()) {
80 mapper.addMapping(key);
81 }
82 }
83}
84
85} // namespace base
86} // namespace meas
87} // namespace lsst
MaskedImageT getMaskedImage()
std::shared_ptr< lsst::afw::detection::Psf const > getPsf() const
void set(Key< T > const &key, U const &value)
bool isValid() const noexcept
SchemaItem< T > find(std::string const &name) const
Key< T > addMapping(Key< T > const &inputKey, bool doReplace=false)
Schema const getInputSchema() const
static FlagDefinitionList const & getFlagDefinitions()
static Result computeSincFlux(afw::image::Image< T > const &image, afw::geom::ellipses::Ellipse const &ellipse, Control const &ctrl=Control())
Compute the instFlux (and optionally, uncertanties) within an aperture using Sinc photometry.
Configuration object for multiple-aperture flux algorithms.
std::string shiftKernel
"Warping kernel used to shift Sinc photometry coefficients to different center positions" ;
std::size_t size() const
return the current size (number of defined elements) of the collection
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.
A FunctorKey for FluxResult.
FluxTransform(std::string const &name, afw::table::SchemaMapper &mapper)
Exception to be thrown when a measurement algorithm experiences a known failure mode.
Definition exceptions.h:48
ScaledApertureFluxAlgorithm(Control const &control, std::string const &name, afw::table::Schema &schema)
virtual void measure(afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure) const override
Measure the scaled aperture instFlux on the given image.
virtual void fail(afw::table::SourceRecord &measRecord, MeasurementError *error=nullptr) const override
Handle an exception thrown by the current algorithm by setting flags in the given record.
ScaledApertureFluxTransform(Control const &ctrl, std::string const &name, afw::table::SchemaMapper &mapper)
T log(T... args)
Point< double, 2 > Point2D
T sqrt(T... args)
bool getFlag(unsigned int index) const
Return the flag value associated with the given bit.
Simple class used to define and document flags The name and doc constitute the identity of the FlagDe...
Definition FlagHandler.h:40