lsst.coadd.utils
20.0.0+24334de73e
src
setCoaddEdgeBits.cc
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2008, 2009, 2010 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
30
#include <cstdint>
31
32
#include "boost/format.hpp"
33
34
#include "
lsst/pex/exceptions.h
"
35
#include "
lsst/coadd/utils/setCoaddEdgeBits.h
"
36
37
namespace
pexExcept
=
lsst::pex::exceptions
;
38
namespace
afwImage
=
lsst::afw::image
;
39
namespace
coaddUtils
=
lsst::coadd::utils
;
40
41
template
<
typename
WeightPixelT>
42
void
coaddUtils::setCoaddEdgeBits
(
43
// spell out lsst:afw::image to make Doxygen happy
44
lsst::afw::image::Mask<lsst::afw::image::MaskPixel>
&coaddMask,
45
lsst::afw::image::Image<WeightPixelT>
const
&weightMap
46
) {
47
typedef
afwImage::Mask<afwImage::MaskPixel>::x_iterator
MaskXIter;
48
typedef
typename
afwImage::Image<WeightPixelT>::const_x_iterator
WeightMapConstXIter;
49
50
if
(coaddMask.
getDimensions
() != weightMap.
getDimensions
()) {
51
throw
LSST_EXCEPT
(
pexExcept::InvalidParameterError
,
52
(boost::format(
"coaddMask and weightMap dimensions differ: %dx%d != %dx%d"
) %
53
coaddMask.
getWidth
() % coaddMask.
getHeight
() % weightMap.
getWidth
() % weightMap.
getHeight
()
54
).str());
55
}
56
57
afwImage::MaskPixel
const
edgeMask =
afwImage::Mask<afwImage::MaskPixel>::getPlaneBitMask
(
"NO_DATA"
);
58
59
// Set the pixels row by row, to avoid repeated checks for end-of-row
60
for
(
int
y
= 0, endY = weightMap.
getHeight
();
y
!= endY; ++
y
) {
61
WeightMapConstXIter weightMapPtr = weightMap.
row_begin
(
y
);
62
WeightMapConstXIter
const
weightMapEndPtr = weightMap.
row_end
(
y
);
63
MaskXIter coaddMaskPtr = coaddMask.
row_begin
(
y
);
64
for
(; weightMapPtr != weightMapEndPtr; ++weightMapPtr, ++coaddMaskPtr) {
65
if
(*weightMapPtr == 0) {
66
(*coaddMaskPtr) = (*coaddMaskPtr) | edgeMask;
67
}
68
}
69
}
70
}
71
72
//
73
// Explicit instantiations
74
//
76
#define INSTANTIATE(WEIGHTPIXEL) \
77
template void coaddUtils::setCoaddEdgeBits<WEIGHTPIXEL>( \
78
afwImage::Mask<afwImage::MaskPixel> &coaddMask, \
79
afwImage::Image<WEIGHTPIXEL> const &weightMap \
80
);
81
82
INSTANTIATE
(
double
);
83
INSTANTIATE
(
float
);
84
INSTANTIATE
(
int
);
85
INSTANTIATE
(
std::uint16_t
);
y
int y
lsst::afw::image
lsst::afw::image::Mask
lsst::afw::image::Image::row_begin
x_iterator row_begin(int y) const
INSTANTIATE
#define INSTANTIATE(FROMSYS, TOSYS)
lsst::afw::image::Mask::getHeight
int getHeight() const
lsst::afw::image::Mask::getPlaneBitMask
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
lsst::afw::image::Image::row_end
x_iterator row_end(int y) const
std::int32_t
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
exceptions.h
lsst::afw::image::Mask::getDimensions
lsst::geom::Extent2I getDimensions() const
lsst::pex::exceptions::InvalidParameterError
lsst::coadd::utils::setCoaddEdgeBits
void setCoaddEdgeBits(lsst::afw::image::Mask< lsst::afw::image::MaskPixel > &coaddMask, lsst::afw::image::Image< WeightPixelT > const &weightMap)
set edge bits of coadd mask based on weight map
Definition:
setCoaddEdgeBits.cc:42
lsst::pex::exceptions
lsst::afw::image::Image
setCoaddEdgeBits.h
lsst::coadd::utils
Definition:
addToCoadd.h:37
lsst::afw::image::Mask::getWidth
int getWidth() const
Generated on Tue Nov 3 2020 01:57:36 for lsst.coadd.utils by
1.8.18