LSST Applications g0f08755f38+82efc23009,g12f32b3c4e+e7bdf1200e,g1653933729+a8ce1bb630,g1a0ca8cf93+50eff2b06f,g28da252d5a+52db39f6a5,g2bbee38e9b+37c5a29d61,g2bc492864f+37c5a29d61,g2cdde0e794+c05ff076ad,g3156d2b45e+41e33cbcdc,g347aa1857d+37c5a29d61,g35bb328faa+a8ce1bb630,g3a166c0a6a+37c5a29d61,g3e281a1b8c+fb992f5633,g414038480c+7f03dfc1b0,g41af890bb2+11b950c980,g5fbc88fb19+17cd334064,g6b1c1869cb+12dd639c9a,g781aacb6e4+a8ce1bb630,g80478fca09+72e9651da0,g82479be7b0+04c31367b4,g858d7b2824+82efc23009,g9125e01d80+a8ce1bb630,g9726552aa6+8047e3811d,ga5288a1d22+e532dc0a0b,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+37c5a29d61,gcf0d15dbbd+2acd6d4d48,gd7358e8bfb+778a810b6e,gda3e153d99+82efc23009,gda6a2b7d83+2acd6d4d48,gdaeeff99f8+1711a396fd,ge2409df99d+6b12de1076,ge79ae78c31+37c5a29d61,gf0baf85859+d0a5978c5a,gf3967379c6+4954f8c433,gfb92a5be7c+82efc23009,gfec2e1e490+2aaed99252,w.2024.46
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