24 #include "lsst/afw/table/BaseRecord.h" 28 namespace lsst {
namespace meas {
namespace base {
31 flux(
std::numeric_limits<
Flux>::quiet_NaN()),
36 afw::table::Schema & schema,
37 std::string
const & name,
38 std::string
const & doc
41 result._flux = schema.addField<
Flux>(schema.join(name,
"flux"), doc,
"count");
42 result._fluxSigma = schema.addField<
FluxErrElement>(schema.join(name,
"fluxSigma"),
43 "1-sigma flux uncertainty",
"count");
49 r.
flux = record.get(_flux);
55 record.set(_flux, value.
flux);
60 afw::table::Schema & schema,
61 std::string
const & name
64 result._magKey = schema.addField<
Mag>(schema.join(name,
"mag"),
"Magnitude");
65 result._magErrKey = schema.addField<
MagErrElement>(schema.join(name,
"magErr"),
"Error on magnitude");
70 MagResult result = {record.get(_magKey), record.get(_magErrKey)};
75 record.set(_magKey, magResult.
mag);
76 record.set(_magErrKey, magResult.
magErr);
79 void MagResultKey::set(afw::table::BaseRecord & record, std::pair<double,double>
const & magResult)
const {
80 record.set(_magKey, magResult.first);
81 record.set(_magErrKey, magResult.second);
85 std::string
const & name,
86 afw::table::SchemaMapper & mapper
91 mapper.addMapping(mapper.getInputSchema().find<afw::table::Flag>(name +
"_flag").key);
98 afw::table::SourceCatalog
const & inputCatalog,
99 afw::table::BaseCatalog & outputCatalog,
100 afw::image::Wcs
const & wcs,
101 afw::image::Calib
const & calib
105 afw::table::SourceCatalog::const_iterator inSrc = inputCatalog.begin();
106 afw::table::BaseCatalog::iterator outSrc = outputCatalog.begin();
111 for (; inSrc != inputCatalog.end() && outSrc != outputCatalog.end(); ++inSrc, ++outSrc) {
113 _magKey.
set(*outSrc, calib.getMagnitude(fluxResult.
flux, fluxResult.
fluxSigma));
119 _throwOnNegative = afw::image::Calib::getThrowOnNegativeFlux();
120 afw::image::Calib::setThrowOnNegativeFlux(
false);
124 afw::image::Calib::setThrowOnNegativeFlux(_throwOnNegative);
A FunctorKey for MagResult.
Temporarily replace negative fluxes with NaNs.
A reusable result struct for magnitudes.
static FluxResultKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc)
Add a pair of _flux, _fluxSigma fields to a Schema, and return a FluxResultKey that points to them...
FluxResult()
Default constructor; initializes everything to NaN.
Flux flux
Measured flux in DN.
A FunctorKey for FluxResult.
static MagResultKey addFields(afw::table::Schema &schema, std::string const &name)
Add a pair of _mag, _magErr fields to a Schema, and return a MagResultKey that points to them...
NoThrowOnNegativeFluxContext()
virtual FluxResult get(afw::table::BaseRecord const &record) const
Get a FluxResult from the given record.
virtual void set(afw::table::BaseRecord &record, MagResult const &magResult) const
Set a MagResult in the given record.
virtual void set(afw::table::BaseRecord &record, FluxResult const &other) const
Set a FluxResult in the given record.
virtual MagResult get(afw::table::BaseRecord const &record) const
Get a MagResult from the given record.
FluxErrElement fluxSigma
1-Sigma error (sqrt of variance) on flux in DN.
~NoThrowOnNegativeFluxContext()
A reusable result struct for flux measurements.