LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
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