LSSTApplications  10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
LSSTDataManagementBasePackage
HeavyFootprint.h
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * Copyright 2008, 2009, 2010 LSST Corporation.
4  *
5  * This product includes software developed by the
6  * LSST Project (http://www.lsst.org/).
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the LSST License Statement and
19  * the GNU General Public License along with this program. If not,
20  * see <http://www.lsstcorp.org/LegalNotices/>.
21  */
22 
23 #if !defined(LSST_DETECTION_HEAVY_FOOTPRINT_H)
24 #define LSST_DETECTION_HEAVY_FOOTPRINT_H
25 
32 #include <algorithm>
33 #include <list>
34 #include <cmath>
35 #include <boost/cstdint.hpp>
36 #include <boost/shared_ptr.hpp>
38 
39 namespace lsst {
40 namespace afw {
41 namespace detection {
42 
43 class HeavyFootprintCtrl;
44 
48 template <typename ImagePixelT, typename MaskPixelT=lsst::afw::image::MaskPixel,
49  typename VariancePixelT=lsst::afw::image::VariancePixel>
51  public afw::table::io::PersistableFacade< HeavyFootprint<ImagePixelT,MaskPixelT,VariancePixelT> >,
52  public Footprint
53 {
54 public:
55 
67  explicit HeavyFootprint(
68  Footprint const& foot,
70  HeavyFootprintCtrl const* ctrl=NULL
71  );
72 
78  explicit HeavyFootprint(Footprint const& foot,
79  HeavyFootprintCtrl const* ctrl=NULL);
80 
84  virtual bool isHeavy() const { return true; }
85 
90 
95 
99 
103 
104  /* Returns the OR of all the mask pixels held in this HeavyFootprint. */
105  MaskPixelT getMaskBitsSet() const {
106  MaskPixelT maskbits = 0;
107  for (typename ndarray::Array<MaskPixelT,1,1>::Iterator i = _mask.begin(); i != _mask.end(); ++i) {
108  maskbits |= *i;
109  }
110  return maskbits;
111  }
112 
117 
118 protected:
119 
120  class Factory; // factory class used for persistence, public only so we can instantiate it in .cc file
121 
122  virtual std::string getPersistenceName() const;
123 
124  virtual void write(OutputArchiveHandle & handle) const;
125 
126 private:
127  HeavyFootprint() {} // private constructor, only used for persistence.
128 
132 };
133 
138 template <typename ImagePixelT, typename MaskPixelT, typename VariancePixelT>
140  Footprint const& foot,
142  HeavyFootprintCtrl const* ctrl=NULL
143  )
144 {
146 }
147 
153 template <typename ImagePixelT, typename MaskPixelT, typename VariancePixelT>
154 boost::shared_ptr<HeavyFootprint<ImagePixelT, MaskPixelT, VariancePixelT> >
156  HeavyFootprint<ImagePixelT, MaskPixelT, VariancePixelT> const& h1,
157  HeavyFootprint<ImagePixelT, MaskPixelT, VariancePixelT> const& h2
158 );
159 
160 }}}
161 
162 #endif
boost::uint16_t MaskPixel
ndarray::Array< VariancePixelT const, 1, 1 > getVarianceArray() const
void insert(lsst::afw::image::MaskedImage< ImagePixelT, MaskPixelT, VariancePixelT > &mimage) const
Represent a set of pixels of an arbitrary shape and size.
A control object for HeavyFootprints.
Definition: FootprintCtrl.h:91
ndarray::Array< VariancePixelT, 1, 1 > getVarianceArray()
io::OutputArchiveHandle OutputArchiveHandle
Definition: Persistable.h:114
ndarray::Array< ImagePixelT const, 1, 1 > getImageArray() const
A set of pixels in an Image, including those pixels&#39; actual values.
table::Key< table::Array< Kernel::Pixel > > image
Definition: FixedKernel.cc:117
ndarray::Array< VariancePixelT, 1, 1 > _variance
ndarray::Array< ImagePixelT, 1, 1 > getImageArray()
virtual void write(OutputArchiveHandle &handle) const
Write the object to one or more catalogs.
A class to manipulate images, masks, and variance as a single object.
Definition: MaskedImage.h:77
ndarray::Array< MaskPixelT, 1, 1 > getMaskArray()
ndarray::Array< MaskPixelT, 1, 1 > _mask
float VariancePixel
! default type for Masks and MaskedImage Masks
A set of pixels in an Image.
Definition: Footprint.h:62
ndarray::Array< ImagePixelT, 1, 1 > _image
double dot(HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > const &other) const
Iterator end() const
Return an Iterator to one past the end of the array.
Definition: ArrayBase.h:108
virtual std::string getPersistenceName() const
Return the unique name used to persist this object and look up its factory.
ExpressionTraits< Derived >::Iterator Iterator
Nested expression or element iterator.
ndarray::Array< MaskPixelT const, 1, 1 > getMaskArray() const
A CRTP facade class for subclasses of Persistable.
Definition: Persistable.h:182
boost::shared_ptr< HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > > mergeHeavyFootprints(HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > const &h1, HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > const &h2)
HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > makeHeavyFootprint(Footprint const &foot, lsst::afw::image::MaskedImage< ImagePixelT, MaskPixelT, VariancePixelT > const &img, HeavyFootprintCtrl const *ctrl=NULL)
Iterator begin() const
Return an Iterator to the beginning of the array.
Definition: ArrayBase.h:99