LSST Applications g180d380827+78227d2bc4,g2079a07aa2+86d27d4dc4,g2305ad1205+bdd7851fe3,g2bbee38e9b+c6a8a0fb72,g337abbeb29+c6a8a0fb72,g33d1c0ed96+c6a8a0fb72,g3a166c0a6a+c6a8a0fb72,g3d1719c13e+260d7c3927,g3ddfee87b4+723a6db5f3,g487adcacf7+29e55ea757,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+9443c4b912,g62aa8f1a4b+7e2ea9cd42,g858d7b2824+260d7c3927,g864b0138d7+8498d97249,g95921f966b+dffe86973d,g991b906543+260d7c3927,g99cad8db69+4809d78dd9,g9c22b2923f+e2510deafe,g9ddcbc5298+9a081db1e4,ga1e77700b3+03d07e1c1f,gb0e22166c9+60f28cb32d,gb23b769143+260d7c3927,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e22341fd87,gbd998247f1+585e252eca,gc120e1dc64+713f94b854,gc28159a63d+c6a8a0fb72,gc3e9b769f7+385ea95214,gcf0d15dbbd+723a6db5f3,gdaeeff99f8+f9a426f77a,ge6526c86ff+fde82a80b9,ge79ae78c31+c6a8a0fb72,gee10cc3b42+585e252eca,w.2024.18
LSST Data Management Base Package
Loading...
Searching...
No Matches
FootprintCtrl.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#if !defined(LSST_DETECTION_FOOTPRINTCTRL_H)
23#define LSST_DETECTION_FOOTPRINTCTRL_H
24/*
25 * Control Footprint-related algorithms
26 */
27
28namespace lsst {
29namespace afw {
30namespace detection {
35 enum TBool { FALSE_ = false, TRUE_ = true, NONE_ }; // ternary boolean value. N.b. _XXX is reserved
36
37 static std::pair<bool, bool> makePairFromTBool(TBool const val) {
38 return (val == NONE_) ? std::make_pair(false, false) : std::make_pair(true, val == TRUE_);
39 }
40
41public:
43 : _circular(NONE_), _isotropic(NONE_), _left(NONE_), _right(NONE_), _up(NONE_), _down(NONE_) {}
44 explicit FootprintControl(bool circular, bool isotropic = false)
45 : _circular(circular ? TRUE_ : FALSE_),
46 _isotropic(isotropic ? TRUE_ : FALSE_),
47 _left(NONE_),
48 _right(NONE_),
49 _up(NONE_),
50 _down(NONE_) {}
51 explicit FootprintControl(bool left, bool right, bool up, bool down)
52 : _circular(NONE_),
53 _isotropic(NONE_),
54 _left(left ? TRUE_ : FALSE_),
55 _right(right ? TRUE_ : FALSE_),
56 _up(up ? TRUE_ : FALSE_),
57 _down(down ? TRUE_ : FALSE_) {}
58 ~FootprintControl() = default;
63
64#define DEFINE_ACCESSORS(NAME, UNAME) \
65 \
66 void grow##UNAME(bool val \
67 ) { \
68 _##NAME = val ? TRUE_ : FALSE_; \
69 } \
70 \
71 std::pair<bool, bool> is##UNAME() const { return makePairFromTBool(_##NAME); }
72
73 DEFINE_ACCESSORS(circular, Circular)
74 // DEFINE_ACCESSORS(isotropic, Isotropic) // special, as isotropic => circular
75 DEFINE_ACCESSORS(left, Left)
76 DEFINE_ACCESSORS(right, Right)
78 DEFINE_ACCESSORS(down, Down)
79
81 void growIsotropic(bool val
82 ) {
83 _circular = TRUE_;
84 _isotropic = val ? TRUE_ : FALSE_;
85 }
87 std::pair<bool, bool> isIsotropic() const { return makePairFromTBool(_isotropic); }
88
89#undef DEFINE_ACCESSORS
90private:
91 TBool _circular; // grow in all directions ( == left & right & up & down)
92 TBool _isotropic; // go to the expense of as isotropic a grow as possible
93 TBool _left, _right, _up, _down; // grow in selected directions?
94};
95
100public:
105
106 explicit HeavyFootprintCtrl(ModifySource modifySource = NONE)
107 : _modifySource(modifySource), _imageVal(0.0), _maskVal(0), _varianceVal(0.0) {}
108
114
115 ModifySource getModifySource() const { return _modifySource; }
116 void setModifySource(ModifySource modifySource) { _modifySource = modifySource; }
117
118 double getImageVal() const { return _imageVal; }
119 void setImageVal(double imageVal) { _imageVal = imageVal; }
120 long getMaskVal() const { return _maskVal; }
121 void setMaskVal(long maskVal) { _maskVal = maskVal; }
122 double getVarianceVal() const { return _varianceVal; }
123 void setVarianceVal(double varianceVal) { _varianceVal = varianceVal; }
124
125private:
126 ModifySource _modifySource;
127 double _imageVal;
128 long _maskVal;
129 double _varianceVal;
130};
131} // namespace detection
132} // namespace afw
133} // namespace lsst
134
135#endif
#define DEFINE_ACCESSORS(NAME, UNAME)
A Control Object for Footprints, controlling e.g.
void growIsotropic(bool val)
Set whether Footprint should be grown isotropically.
FootprintControl & operator=(FootprintControl const &)=default
FootprintControl & operator=(FootprintControl &&)=default
std::pair< bool, bool > isIsotropic() const
Return <isSet, Value> for isotropic grows.
FootprintControl(FootprintControl &&)=default
FootprintControl(bool left, bool right, bool up, bool down)
FootprintControl(bool circular, bool isotropic=false)
FootprintControl(FootprintControl const &)=default
A control object for HeavyFootprints.
HeavyFootprintCtrl(HeavyFootprintCtrl const &)=default
HeavyFootprintCtrl & operator=(HeavyFootprintCtrl &&)=default
void setVarianceVal(double varianceVal)
HeavyFootprintCtrl(HeavyFootprintCtrl &&)=default
HeavyFootprintCtrl(ModifySource modifySource=NONE)
HeavyFootprintCtrl & operator=(HeavyFootprintCtrl const &)=default
void setModifySource(ModifySource modifySource)
T make_pair(T... args)
ImageT val
Definition CR.cc:146