lsst.meas.algorithms  21.0.0-10-gbfb87ad6+9dea0fece6
CoaddBoundedField.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_ALGORITHMS_CoaddBoundedField_h_INCLUDED
25 #define LSST_MEAS_ALGORITHMS_CoaddBoundedField_h_INCLUDED
26 
27 #include "lsst/geom/Box.h"
29 #include "lsst/afw/geom/SkyWcs.h"
31 
32 namespace lsst {
33 namespace meas {
34 namespace algorithms {
35 
39  PTR(afw::geom::polygon::Polygon const) validPolygon_, double weight_ = 1.0)
40  : field(field_), wcs(wcs_), validPolygon(validPolygon_), weight(weight_) {}
41 
48  bool operator==(CoaddBoundedFieldElement const& rhs) const;
49 
51  bool operator!=(CoaddBoundedFieldElement const& rhs) const { return !(*this == rhs); };
52 
56  double weight;
57 };
58 
59 class CoaddBoundedField : public afw::table::io::PersistableFacade<CoaddBoundedField>,
61 public:
64 
66  ElementVector const& elements);
67 
69  ElementVector const& elements, double default_);
70 
72  double evaluate(geom::Point2D const& position) const override;
73 
76 
78  double getDefault() const { return _default; };
79 
81  ElementVector getElements() const { return _elements; };
82 
86  virtual bool isPersistable() const noexcept override { return true; }
87 
88  // Factory used to read CoaddPsf from an InputArchive; defined only in the source file.
89  class Factory;
90 
91  PTR(afw::math::BoundedField) operator*(double const scale) const override;
92 
94  bool operator==(BoundedField const& rhs) const override;
95 
96 protected:
97  // See afw::table::io::Persistable::getPersistenceName
98  std::string getPersistenceName() const override;
99 
100  // See afw::table::io::Persistable::getPythonModule
101  std::string getPythonModule() const override;
102 
103  // See afw::table::io::Persistable::write
104  void write(OutputArchiveHandle& handle) const override;
105 
106 private:
107  bool _throwOnMissing; // instead of using _default, raise an exception
108  double _default; // when none of the elements contribute at a point, return this value
109  PTR(afw::geom::SkyWcs const) _coaddWcs; // coordinate system this field is defined in
110  ElementVector _elements; // vector of constituent fields being coadded
111 
112  std::string toString() const override {
114  os << "CoaddBoundedField with " << _elements.size() << " elements, default " << _default;
115  return os.str();
116  }
117 };
118 
119 } // namespace algorithms
120 } // namespace meas
121 } // namespace lsst
122 
123 #endif // !LSST_MEAS_ALGORITHMS_CoaddBoundedField_h_INCLUDED
afw::table::Key< int > coaddWcs
afw::table::Key< double > default_
geom::Box2D bbox
std::ostream * os
#define PTR(...)
BoundedField(BoundedField const &)=default
io::OutputArchiveHandle OutputArchiveHandle
double getDefault() const
Get the default value.
virtual bool isPersistable() const noexcept override
Return true if the CoaddBoundedField persistable (always true).
ElementVector getElements() const
Get the elements vector.
void write(OutputArchiveHandle &handle) const override
CoaddBoundedField(geom::Box2I const &bbox, boost::shared_ptr< afw::geom::SkyWcs const > coaddWcs, ElementVector const &elements)
std::shared_ptr< afw::geom::SkyWcs const > getCoaddWcs() const
Get the coaddWcs.
std::string getPythonModule() const override
double evaluate(geom::Point2D const &position) const override
boost::shared_ptr< afw::math::BoundedField > operator*(double const scale) const override
bool operator==(BoundedField const &rhs) const override
BoundedFields (of the same sublcass) are equal if their bounding boxes and parameters are equal.
std::string getPersistenceName() const override
Factory
Struct used to hold one Exposure's data in a CoaddBoundedField.
CoaddBoundedFieldElement(boost::shared_ptr< afw::math::BoundedField > field_, boost::shared_ptr< afw::geom::SkyWcs const > wcs_, boost::shared_ptr< afw::geom::polygon::Polygon const > validPolygon_, double weight_=1.0)
boost::shared_ptr< afw::geom::SkyWcs const > wcs
bool operator!=(CoaddBoundedFieldElement const &rhs) const
Elements are equal if all their components are equal.
boost::shared_ptr< afw::geom::polygon::Polygon const > validPolygon
boost::shared_ptr< afw::math::BoundedField > field
bool operator==(CoaddBoundedFieldElement const &rhs) const
Elements are equal if all their components are equal.