LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
FluxUtilities.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 /*
3  * LSST Data Management System
4  * Copyright 2008-2014 LSST Corporation.
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_FluxUtilities_h_INCLUDED
25 #define LSST_MEAS_BASE_FluxUtilities_h_INCLUDED
26 
29 #include "lsst/afw/table/Schema.h"
30 
31 namespace lsst { namespace meas { namespace base {
32 
36 struct FluxResult {
39 
41  FluxResult();
42 
44  explicit FluxResult(Flux flux_, FluxErrElement fluxSigma_) :
45  flux(flux_), fluxSigma(fluxSigma_)
46  {}
47 };
48 
55 class FluxResultKey : public afw::table::FunctorKey<FluxResult> {
56 public:
57 
68  static FluxResultKey addFields(
70  std::string const & name,
71  std::string const & doc
72  );
73 
76 
79  afw::table::Key<meas::base::Flux> const & flux, // namespace qualification to unconfuse swig
80  afw::table::Key<FluxErrElement> const & fluxSigma
81  ) :
82  _flux(flux), _fluxSigma(fluxSigma)
83  {}
84 
94  FluxResultKey(afw::table::SubSchema const & s) : _flux(s["flux"]), _fluxSigma(s["fluxSigma"]) {}
95 
97  virtual FluxResult get(afw::table::BaseRecord const & record) const;
98 
100  virtual void set(afw::table::BaseRecord & record, FluxResult const & other) const;
101 
103  bool operator==(FluxResultKey const & other) const {
105  return _flux == other._flux && _fluxSigma == other._fluxSigma;
106  }
107  bool operator!=(FluxResultKey const & other) const { return !(*this == other); }
109 
111  bool isValid() const { return _flux.isValid() && _fluxSigma.isValid(); }
112 
115 
118 
119 private:
122 };
123 
124 }}} // lsst::meas::base
125 
126 #endif // !LSST_MEAS_BASE_FluxUtilities_h_INCLUDED
bool isValid() const
Return true if the key was initialized to valid offset.
Definition: Key.h:83
Defines the fields and offsets for a table.
Definition: Schema.h:46
double FluxErrElement
Definition: constants.h:50
bool operator==(FluxResultKey const &other) const
Compare the FunctorKey for equality with another, using the underlying flux and fluxSigma Keys...
A proxy type for name lookups in a Schema.
Definition: Schema.h:370
FluxResultKey()
Default constructor; instance will not be usuable unless subsequently assigned to.
Definition: FluxUtilities.h:75
virtual void set(afw::table::BaseRecord &record, FluxResult const &other) const
Set a FluxResult in the given record.
static FluxResultKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc)
FluxResult()
Default constructor; initializes everything to NaN.
FluxResultKey(afw::table::Key< meas::base::Flux > const &flux, afw::table::Key< FluxErrElement > const &fluxSigma)
Construct from a pair of Keys.
Definition: FluxUtilities.h:78
FluxResult(Flux flux_, FluxErrElement fluxSigma_)
Constructor from flux and its uncertainty.
Definition: FluxUtilities.h:44
FluxResultKey(afw::table::SubSchema const &s)
Construct from a subschema, assuming flux and fluxSigma subfields.
Definition: FluxUtilities.h:94
tbl::Schema schema
Definition: CoaddPsf.cc:324
afw::table::Key< Flux > _flux
bool isValid() const
Return True if both the flux and fluxSigma Keys are valid.
Flux flux
Measured flux in DN.
Definition: FluxUtilities.h:37
A FunctorKey for FluxResult.
Definition: FluxUtilities.h:55
Base class for all records.
Definition: BaseRecord.h:27
A class used as a handle to a particular field in a table.
Definition: fwd.h:44
afw::table::Key< meas::base::Flux > getFlux() const
Return the underlying flux Key.
afw::table::Key< FluxErrElement > getFluxSigma() const
Return the underlying fluxSigma Key.
FluxErrElement fluxSigma
1-Sigma error (sqrt of variance) on flux in DN.
Definition: FluxUtilities.h:38
afw::table::Key< FluxErrElement > _fluxSigma
A reusable result struct for flux measurements.
Definition: FluxUtilities.h:36
afw::table::SourceRecord * record
bool operator!=(FluxResultKey const &other) const
Compare the FunctorKey for equality with another, using the underlying flux and fluxSigma Keys...