LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
LSST Data Management Base Package
Loading...
Searching...
No Matches
ApertureFlux.h
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
24#ifndef LSST_MEAS_BASE_ApertureFlux_h_INCLUDED
25#define LSST_MEAS_BASE_ApertureFlux_h_INCLUDED
26
27#include <array>
28#include <string>
29#include <vector>
30#include <bitset>
31
32#include "lsst/pex/config.h"
41
42namespace lsst {
43namespace meas {
44namespace base {
45
50public:
52
53 LSST_CONTROL_FIELD(radii, std::vector<double>, "Radius (in pixels) of apertures.");
54
56 maxSincRadius, double,
57 "Maximum radius (in pixels) for which the sinc algorithm should be used instead of the "
58 "faster naive algorithm. For elliptical apertures, this is the minor axis radius.");
59
62 "Warping kernel used to shift Sinc photometry coefficients to different center positions");
63};
64
66
81public:
82 // Structures and routines to manage flaghandler
84 static unsigned int const N_FLAGS = 3;
85 static FlagDefinition const FAILURE;
88
90
93
95
106 template <typename T>
108 afw::geom::ellipses::Ellipse const& ellipse,
109 Control const& ctrl = Control());
110 template <typename T>
112 afw::geom::ellipses::Ellipse const& ellipse,
113 Control const& ctrl = Control());
115
117
126 template <typename T>
128 afw::geom::ellipses::Ellipse const& ellipse,
129 Control const& ctrl = Control());
130 template <typename T>
132 afw::geom::ellipses::Ellipse const& ellipse,
133 Control const& ctrl = Control());
135
137
148 template <typename T>
150 Control const& ctrl = Control());
151
152 template <typename T>
154 afw::geom::ellipses::Ellipse const& ellipse, Control const& ctrl = Control());
156
160 explicit ApertureFluxAlgorithm(Control const& ctrl, std::string const& name, afw::table::Schema& schema,
161 daf::base::PropertySet& metadata);
162
164
173 virtual void measure(afw::table::SourceRecord& record,
174 afw::image::Exposure<float> const& exposure) const = 0;
175
177 virtual void fail(afw::table::SourceRecord& measRecord, MeasurementError* error = nullptr) const;
178
191 static std::string makeFieldPrefix(std::string const& name, double radius);
192
193protected:
194 void copyResultToRecord(Result const& result, afw::table::SourceRecord& record, int index) const;
195
196 FlagHandler const& getFlagHandler(int index) const { return _keys[index].flags; }
197
200
201private:
202 struct Keys {
203 FluxResultKey instFluxKey;
204 FlagHandler flags;
205
206 Keys(afw::table::Schema& schema, std::string const& prefix, std::string const& doc, bool isSinc);
207 };
208
209 std::vector<Keys> _keys;
210};
211
219 bool getFlag(unsigned int index) const { return _flags[index]; }
220
222 bool getFlag(std::string const& name) const {
224 }
225
227 void setFlag(unsigned int index, bool value = true) { _flags[index] = value; }
228
230 void unsetFlag(unsigned int index) { _flags[index] = false; }
231
232private:
234};
235
243public:
246
247 /*
248 * @brief Perform transformation from inputCatalog to outputCatalog.
249 *
250 * @param[in] inputCatalog Source of data to be transformed
251 * @param[in,out] outputCatalog Container for transformed results
252 * @param[in] wcs World coordinate system under which transformation will take place
253 * @param[in] photoCalib Photometric calibration under which transformation will take place
254 * @throws LengthError Catalog sizes do not match
255 */
256 virtual void operator()(afw::table::SourceCatalog const& inputCatalog,
257 afw::table::BaseCatalog& outputCatalog, afw::geom::SkyWcs const& wcs,
258 afw::image::PhotoCalib const& photoCalib) const;
259
260private:
262 Control _ctrl;
263};
264
265} // namespace base
266} // namespace meas
267} // namespace lsst
268
269#endif // !LSST_MEAS_BASE_ApertureFlux_h_INCLUDED
std::string prefix
SchemaMapper * mapper
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
Definition SkyWcs.h:117
An ellipse defined by an arbitrary BaseCore and a center point.
Definition Ellipse.h:51
A class to contain the data, WCS, and other information needed to describe an image of the sky.
Definition Exposure.h:72
A class to represent a 2-dimensional array of pixels.
Definition Image.h:51
A class to manipulate images, masks, and variance as a single object.
Definition MaskedImage.h:74
The photometric calibration of an exposure.
Definition PhotoCalib.h:114
Defines the fields and offsets for a table.
Definition Schema.h:51
A mapping between the keys of two Schemas, used to copy data between them.
Record class that contains measurements made on a single exposure.
Definition Source.h:78
Class for storing generic metadata.
Definition PropertySet.h:66
Base class for multiple-aperture photometry algorithms.
ApertureFluxAlgorithm(Control const &ctrl, std::string const &name, afw::table::Schema &schema, daf::base::PropertySet &metadata)
Construct the algorithm and add its fields to the given Schema.
void copyResultToRecord(Result const &result, afw::table::SourceRecord &record, int index) const
static FlagDefinitionList const & getFlagDefinitions()
static FlagDefinition const FAILURE
static unsigned int const N_FLAGS
static FlagDefinition const SINC_COEFFS_TRUNCATED
static std::string makeFieldPrefix(std::string const &name, double radius)
Construct an appropriate prefix for table fields.
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.
static Result computeFlux(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 the algorithm determined...
static FlagDefinition const APERTURE_TRUNCATED
ApertureFluxResult Result
Result object returned by static methods.
FlagHandler const & getFlagHandler(int index) const
static Result computeNaiveFlux(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 naive photometry.
virtual void measure(afw::table::SourceRecord &record, afw::image::Exposure< float > const &exposure) const =0
Measure the configured apertures on the given image.
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.
Configuration object for multiple-aperture flux algorithms.
std::string shiftKernel
"Warping kernel used to shift Sinc photometry coefficients to different center positions" ;
double maxSincRadius
"Maximum radius (in pixels) for which the sinc algorithm should be used instead of the " "faster naiv...
std::vector< double > radii
"Radius (in pixels) of apertures." ;
Measurement transformation for aperture fluxes.
virtual void operator()(afw::table::SourceCatalog const &inputCatalog, afw::table::BaseCatalog &outputCatalog, afw::geom::SkyWcs const &wcs, afw::image::PhotoCalib const &photoCalib) const
Abstract base class for all C++ measurement transformations.
Definition Transform.h:86
vector-type utility class to build a collection of FlagDefinitions
Definition FlagHandler.h:60
FlagDefinition getDefinition(std::size_t index) const
get a reference to the FlagDefinition with specified index.
Utility class for handling flag fields that indicate the failure modes of an algorithm.
A FunctorKey for FluxResult.
Exception to be thrown when a measurement algorithm experiences a known failure mode.
Definition exceptions.h:48
Utility class for measurement algorithms that extracts a position from the Centroid slot and handles ...
An abstract base classes for which the same implementation can be used for both SingleFrameAlgorithm ...
Definition Algorithm.h:170
#define LSST_CONTROL_FIELD(NAME, TYPE, DOC)
A preprocessor macro used to define fields in C++ "control object" structs.
Definition config.h:43
This defines the base of measurement transformations.
A Result struct for running an aperture flux algorithm with a single radius.
bool getFlag(std::string const &name) const
Return the flag value associated with the given flag name.
bool getFlag(unsigned int index) const
Return the flag value associated with the given bit.
void setFlag(unsigned int index, bool value=true)
Set the flag value associated with the given bit.
void unsetFlag(unsigned int index)
Clear (i.e. set to false) the flag 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
A reusable result struct for instFlux measurements.