LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
coadd_utils
20.0.0
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
Definition:
SpanSet.cc:49
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition:
imageAlgorithm.dox:1
lsst::afw::image::Mask< lsst::afw::image::MaskPixel >
pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition:
history.py:174
lsst::afw::image::ImageBase::row_begin
x_iterator row_begin(int y) const
Return an x_iterator to the start of the y'th row.
Definition:
ImageBase.h:438
INSTANTIATE
#define INSTANTIATE(FROMSYS, TOSYS)
Definition:
Detector.cc:484
lsst::afw::image::ImageBase::getHeight
int getHeight() const
Return the number of rows in the image.
Definition:
ImageBase.h:335
lsst::afw::image::Mask::getPlaneBitMask
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
Return the bitmask corresponding to a vector of plane names OR'd together.
Definition:
Mask.cc:379
image
afw::table::Key< afw::table::Array< ImagePixelT > > image
Definition:
HeavyFootprint.cc:216
lsst::afw::image::ImageBase::row_end
x_iterator row_end(int y) const
Return an x_iterator to the end of the y'th row.
Definition:
ImageBase.h:441
std::int32_t
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition:
Exception.h:48
lsst::afw::image::ImageBase::getDimensions
lsst::geom::Extent2I getDimensions() const
Return the image's size; useful for passing to constructors.
Definition:
ImageBase.h:393
lsst::pex::exceptions::InvalidParameterError
Reports invalid arguments.
Definition:
Runtime.h:66
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
Definition:
Exception.h:37
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition:
Image.h:58
setCoaddEdgeBits.h
lsst::coadd::utils
Definition:
addToCoadd.h:37
exceptions.h
lsst::afw::image::ImageBase::getWidth
int getWidth() const
Return the number of columns in the image.
Definition:
ImageBase.h:333
Generated on Wed Jun 24 2020 18:10:06 for LSSTApplications by
1.8.18