casacore
Loading...
Searching...
No Matches
GaussianBeam.h
Go to the documentation of this file.
1//# Copyright (C) 1996,1997,1998,1999,2000,2001,2003
2//# Associated Universities, Inc. Washington DC, USA.
3//#
4//# This library is free software; you can redistribute it and/or modify it
5//# under the terms of the GNU Library General Public License as published by
6//# the Free Software Foundation; either version 2 of the License, or (at your
7//# option) any later version.
8//#
9//# This library is distributed in the hope that it will be useful, but WITHOUT
10//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12//# License for more details.
13//#
14//# You should have received a copy of the GNU Library General Public License
15//# along with this library; if not, write to the Free Software Foundation,
16//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
17//#
18//# Correspondence concerning AIPS++ should be addressed as follows:
19//# Internet email: aips2-request@nrao.edu.
20//# Postal address: AIPS++ Project Office
21//# National Radio Astronomy Observatory
22//# 520 Edgemont Road
23//# Charlottesville, VA 22903-2475 USA
24//#
25//# $Id: HostInfoDarwin.h 21521 2014-12-10 08:06:42Z gervandiepen $
26
27#ifndef SCIMATH_GAUSSIANBEAM_H
28#define SCIMATH_GAUSSIANBEAM_H
29
30#include <casacore/casa/aips.h>
31#include <casacore/casa/Quanta/Quantum.h>
32
33namespace casacore {
34
35// <summary>
36// Represents a Gaussian restoring beam associated with an image.
37// </summary>
38
39// <use visibility=export>
40
41// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
42// </reviewed>
43
44// <prerequisite>
45// </prerequisite>
46
47// <etymology>
48// A Gaussian Beam.
49// </etymology>
50
51// <synopsis>
52// This class represents a Gaussian restoring beam associated with
53// a deconvolved image.
54// </synopsis>
55//
56// <example>
57
58// </example>
59
60
61// <motivation>
62// Restoring beams are used many places in image analysis tasks.
63// </motivation>
64
65// <todo>
66// </todo>
67
69public:
70
71 static const GaussianBeam NULL_BEAM;
72
73 // create a beam with all quantities zero (a null beam).
75
76
77 // Construct a beam from a set of Quantities. If minor > major
78 // an exception is thrown. If any units are not angular, an
79 // exception is thrown
81 const Quantity& major, const Quantity& minor,
82 const Quantity& pa
83 );
84
85 // Construct a beam from a 3-Vector of Quantities representing
86 // the major axis, the minor axis and the position angle (in that order).
87 // If parms[1] > parms[0] (minor axis > major axis),
88 // an exception is thrown. If any units are not angular, an
89 // exception is thrown
91 const Vector<Quantity>& parms
92 );
93
95
97
99
100 Bool operator==(const GaussianBeam& other) const;
101
102 Bool operator!=(const GaussianBeam& other) const;
103
104 // returns the major axis in the same units as it had at construction
105 const Quantity& getMajor() const;
106
107 // returns the value portion of the major axis in the specified units
108 Double getMajor(const Unit& u) const;
109
110 // returns the minor axis in the same units as it had at construction
111 const Quantity& getMinor() const;
112
113 // returns the value portion of the minor axis in the specified units
114 Double getMinor(const Unit& u) const;
115
116 // returns the position angle's value as it was at construction,
117 // unless <src>unwrap</src> is True, in which case the value of the angle
118 // returned will be between -90 and 90 degrees (but with unit the same
119 // as it had when this object was constructed).
120 Quantity getPA(const Bool unwrap=True) const;
121
122 // returns the value portion of the position angle in the specified units
123 Double getPA(const Unit& u, const Bool unwrap=True) const;
124
125 // returns the beam area in the specified <src>unit</src>, which much conform to
126 // solid angle units.
127 Double getArea(const Unit& unit) const;
128
129 // is this object a null beam (ie is either its major and/or minor axis zero)?
130 Bool isNull() const;
131
132 // returns GassianBeam.
133 static const String& className();
134
136
137 void setMajorMinor(const Quantity& majAx, const Quantity& minAx);
138
139 // if unwrap=True, unwrap pa so its value lies in the range
140 // -90 to 90 degrees before setting it.
141 void setPA(const Quantity& pa, Bool unwrap=False);
142
143 static GaussianBeam fromRecord(const Record& rec);
144
145 // convert this object to a three-Vector of (major FWHM, minor FWHM, and pa).
146 // If <src>unwrap</src> is True, the returned pa will fall between -90 and +90
147 // degrees.
148 Vector<Quantity> toVector(const Bool unwrap=True) const;
149
150 // convert stored Quantities to the specified units
151 void convert(const String& majUnit, const String& minUnit,
152 const String& paUnit);
153
154protected:
156
157private:
158 static Quantity _unwrap(const Quantity& pa);
159
160};
161
162
163
164ostream &operator<<(ostream &os, const GaussianBeam& beam);
165
167
168Bool near(const GaussianBeam& left, const GaussianBeam& other,
169 const Double relWidthTol, const Quantity& absPaTol);
170
171} //# end namespace
172
173#endif
174
Double getMajor(const Unit &u) const
returns the value portion of the major axis in the specified units
Bool operator!=(const GaussianBeam &other) const
void convert(const String &majUnit, const String &minUnit, const String &paUnit)
convert stored Quantities to the specified units
static const String & className()
returns GassianBeam.
Record toRecord() const
void setMajorMinor(const Quantity &majAx, const Quantity &minAx)
Bool isNull() const
is this object a null beam (ie is either its major and/or minor axis zero)?
GaussianBeam(const GaussianBeam &other)
Double getMinor(const Unit &u) const
returns the value portion of the minor axis in the specified units
GaussianBeam(const Vector< Quantity > &parms)
Construct a beam from a 3-Vector of Quantities representing the major axis, the minor axis and the po...
static GaussianBeam fromRecord(const Record &rec)
const Quantity & getMajor() const
returns the major axis in the same units as it had at construction
Quantity getPA(const Bool unwrap=True) const
returns the position angle's value as it was at construction, unless unwrap is True,...
GaussianBeam(const Quantity &major, const Quantity &minor, const Quantity &pa)
Construct a beam from a set of Quantities.
Double getArea(const Unit &unit) const
returns the beam area in the specified unit, which much conform to solid angle units.
static Quantity _unwrap(const Quantity &pa)
Double getPA(const Unit &u, const Bool unwrap=True) const
returns the value portion of the position angle in the specified units
GaussianBeam()
create a beam with all quantities zero (a null beam).
Vector< Quantity > toVector(const Bool unwrap=True) const
convert this object to a three-Vector of (major FWHM, minor FWHM, and pa).
const Quantity & getMinor() const
returns the minor axis in the same units as it had at construction
void setPA(const Quantity &pa, Bool unwrap=False)
if unwrap=True, unwrap pa so its value lies in the range -90 to 90 degrees before setting it.
static const GaussianBeam NULL_BEAM
Bool operator==(const GaussianBeam &other) const
GaussianBeam & operator=(const GaussianBeam &other)
String: the storage and methods of handling collections of characters.
Definition String.h:225
this file contains all the compiler specific defines
Definition mainpage.dox:28
LatticeExprNode pa(const LatticeExprNode &left, const LatticeExprNode &right)
This function finds 180/pi*atan2(left,right)/2.
const Bool False
Definition aipstype.h:44
ostream & operator<<(ostream &os, const IComplex &)
Show on ostream.
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:42
const Bool True
Definition aipstype.h:43
double Double
Definition aipstype.h:55
Bool near(const GaussianBeam &left, const GaussianBeam &other, const Double relWidthTol, const Quantity &absPaTol)