LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
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
virtual void write(OutputArchiveHandle &handle) const
Write the object to one or more catalogs.
Represent a set of pixels of an arbitrary shape and size.
A control object for HeavyFootprints.
Definition: FootprintCtrl.h:91
double dot(HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > const &other) const
boost::uint16_t MaskPixel
ndarray::Array< VariancePixelT const, 1, 1 > getVarianceArray() const
ndarray::Array< VariancePixelT, 1, 1 > _variance
ndarray::Array< MaskPixelT const, 1, 1 > getMaskArray() const
ndarray::Array< VariancePixelT, 1, 1 > getVarianceArray()
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< ImagePixelT, 1, 1 > _image
A class to manipulate images, masks, and variance as a single object.
Definition: MaskedImage.h:77
A set of pixels in an Image.
Definition: Footprint.h:62
ndarray::Array< MaskPixelT, 1, 1 > getMaskArray()
virtual std::string getPersistenceName() const
Return the unique name used to persist this object and look up its factory.
Iterator end() const
Return an Iterator to one past the end of the array.
Definition: ArrayBase.h:108
io::OutputArchiveHandle OutputArchiveHandle
Definition: Persistable.h:114
void insert(lsst::afw::image::MaskedImage< ImagePixelT, MaskPixelT, VariancePixelT > &mimage) const
ExpressionTraits< Derived >::Iterator Iterator
Nested expression or element iterator.
float VariancePixel
! default type for Masks and MaskedImage Masks
ndarray::Array< ImagePixelT, 1, 1 > getImageArray()
A CRTP facade class for subclasses of Persistable.
Definition: Persistable.h:182
ndarray::Array< ImagePixelT const, 1, 1 > getImageArray() const
boost::shared_ptr< HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > > mergeHeavyFootprints(HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > const &h1, HeavyFootprint< ImagePixelT, MaskPixelT, VariancePixelT > const &h2)
ndarray::Array< MaskPixelT, 1, 1 > _mask
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