casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MPosition.h
Go to the documentation of this file.
1 //# MPosition.h: A Measure: position on Earth
2 //# Copyright (C) 1995,1996,1997,1998,1999,2000,2002
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //#
27 //# $Id$
28 
29 #ifndef MEASURES_MPOSITION_H
30 #define MEASURES_MPOSITION_H
31 
32 //# Includes
33 #include <casacore/casa/aips.h>
37 
38 namespace casacore { //# NAMESPACE CASACORE - BEGIN
39 
40 //# Forward Declarations
41 class MPosition;
42 class MCPosition;
43 template <class M> class MeasConvert;
44 template <class M> class ArrayMeasColumn;
45 template <class M> class ScalarMeasColumn;
46 
47 //# Typedefs
48 
49 // <summary>
50 // A Measure: position on Earth
51 // </summary>
52 
53 // <use visibility=export>
54 
55 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasure" demos="">
56 // </reviewed>
57 
58 // <prerequisite>
59 // <li> <linkto class=Measure>Measure</linkto> class
60 // </prerequisite>
61 //
62 // <etymology>
63 // </etymology>
64 //
65 // <synopsis>
66 // MPosition forms derived Measure class for an instant in time.
67 // </synopsis>
68 //
69 // <example>
70 // </example>
71 //
72 // <motivation>
73 // </motivation>
74 //
75 // <todo asof="2000/06/15">
76 // <li>
77 // </todo>
78 
79 class MPosition : public MeasBase<MVPosition, MeasRef<MPosition> > {
80 
81  public:
82  //# Friends
83  // Conversion of data
84  friend class MeasConvert<MPosition>;
85 
86  //# Enumerations
87  // Types of known MPositions
88  // <note role=warning> The order defines the order in the translation
89  // matrix FromTo
90  // in the getConvert routine. Do not change the order without
91  // changing the array. Additions should be made before N_types, and
92  // an additional row and column should be coded in FromTo, and
93  // in showType().</note>
94  enum Types {
99 
100  //# Typedefs
101  // Measure value container for this class (i.e. MPosition::MVType)
103  // Measure conversion routines for this class (i.e. MPosition::MCType)
105  // Measure reference (i.e. MPosition::Ref)
107  // Measure Convert (i.e. MPosition::Convert)
109  // Measure table Columns (e.g., MPosition::ScalarColumn)
112 
113  //# Constructors
114  // <note role=tip> In the following constructors and other functions, all
115  // <em>MeasRef</em> can be replaced with simple <src>Measure::TYPE</src>
116  // where no offsets or frames are needed in the reference. </note>
117  // Default constructor; generates the ITRF centre
118  MPosition();
119  // Create from data and reference
120  // <group>
121  MPosition(const MVPosition &dt);
122  MPosition(const MVPosition &dt, const MPosition::Ref &rf);
123  MPosition(const MVPosition &dt, MPosition::Types rf);
124  MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2);
125  MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2,
126  const MPosition::Ref &rf);
127  MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2,
128  MPosition::Types rf);
129  MPosition(const Quantity &dt0, const Quantum<Vector<Double> > &dt);
130  MPosition(const Quantity &dt0, const Quantum<Vector<Double> > &dt,
131  const MPosition::Ref &rf);
132  MPosition(const Quantity &dt0, const Quantum<Vector<Double> > &dt,
133  MPosition::Types rf);
134  MPosition(const Measure *dt);
135  MPosition(const MeasValue *dt);
136  // </group>
137 
138  // <group>
139  MPosition(const MPosition &);
140  MPosition &operator=(const MPosition &);
141  // </group>
142 
143  //# Destructor
144  virtual ~MPosition();
145 
146  //# Operators
147 
148  //# General Member Functions
149  // Tell me your type
150  // <group>
151  virtual const String &tellMe() const;
152  static const String &showMe();
153  virtual uInt type() const;
154  static void assure(const Measure &in);
155  // </group>
156  // Translate reference code. The uInt version has a check for valid codes
157  // (i.e. it is a safe cast).
158  // <thrown>
159  // <li> AipsError in the uInt interface if illegal code given
160  // </thrown>
161  // <group>
162  static MPosition::Types castType(uInt tp);
163  static const String &showType(MPosition::Types tp);
164  static const String &showType(uInt tp);
165  // </group>
166  // Translate string to reference code
167  // <group>
168  static Bool getType(MPosition::Types &tp, const String &in);
169  // this one throws an exception for an unrecognized String
170  static MPosition::Types getType(const String& in);
171 
172  Bool giveMe(MPosition::Ref &mr, const String &in);
173  // </group>
174  // Set the offset in the reference (False if non-matching Measure)
175  virtual Bool setOffset(const Measure &in);
176  // Set the reference type to the specified String. False if illegal
177  // string, reference set to DEFAULT.
178  virtual Bool setRefString(const String &in);
179  // Get the default reference type
180  virtual const String &getDefaultType() const;
181  // Get a list of all known reference codes. nall returns the number in list,
182  // nextra the number of specials (like planets) that should be at
183  // end of list). typ returns the list of corresponding types.
184  // <group>
185  virtual const String* allTypes(Int &nall, Int &nextra,
186  const uInt *&typ) const;
187  static const String* allMyTypes(Int &nall, Int &nextra,
188  const uInt *&typ);
189  // </group>
190  // Check if all internal tables of types (both enum and String) are
191  // complete and correct. This function is called automatically if and when
192  // necessary.
193  // <thrown>
194  // <li> AipsError if a (programming) error in the types.
195  // </thrown>
196  // <group>
197  virtual void checkTypes() const;
198  static void checkMyTypes();
199  // </group>
200  // Get the reference type (for records, including codes like R_)
201  virtual String getRefString() const;
202  // Get my type (as Register)
203  static uInt myType();
204 
205  // Get Measure data
206  // <group>
207  Quantum<Vector<Double> > get(const Unit &inunit) const;
209  Quantum<Vector<Double> > getAngle(const Unit &inunit) const;
210  // </group>
211 
212  // Make copy
213  // <group>
214  virtual Measure *clone() const;
215  // </group>
216 
217  private:
218  //# Enumerations
219 
220  //# Data
221 
222  //# Member functions
223 
224 };
225 
226 
227 } //# NAMESPACE CASACORE - END
228 
229 #endif
MeasRef< MPosition > Ref
Measure reference (i.e.
Definition: MPosition.h:106
A Measure: position on Earth.
Definition: MPosition.h:79
int Int
Definition: aipstype.h:50
Conversion of Measures.
Definition: MDirection.h:43
static void checkMyTypes()
Quantum< Vector< Double > > getAngle() const
virtual Bool setRefString(const String &in)
Set the reference type to the specified String.
static const String & showType(MPosition::Types tp)
ScalarMeasColumn< MPosition > ScalarColumn
Measure table Columns (e.g., MPosition::ScalarColumn)
Definition: MPosition.h:110
virtual Bool setOffset(const Measure &in)
Set the offset in the reference (False if non-matching Measure)
virtual Measure * clone() const
Make copy.
Bool giveMe(MPosition::Ref &mr, const String &in)
MPosition & operator=(const MPosition &)
static MPosition::Types castType(uInt tp)
Translate reference code.
virtual uInt type() const
Get the type (== Register() of derived Measure (faster than Strings) All should have: static uInt myT...
Physical quantities within reference frame.
Definition: Measure.h:235
static void assure(const Measure &in)
Base class for all measures.
Definition: MeasBase.h:75
virtual const String & getDefaultType() const
Get the default reference type.
static const String * allMyTypes(Int &nall, Int &nextra, const uInt *&typ)
MCPosition MCType
Measure conversion routines for this class (i.e.
Definition: MPosition.h:104
defines physical units
Definition: Unit.h:189
virtual const String & tellMe() const
Tell me your type.
Base class for values in a Measure.
Definition: MeasValue.h:107
MVPosition MVType
Measure value container for this class (i.e.
Definition: MPosition.h:102
virtual void checkTypes() const
Check if all internal tables of types (both enum and String) are complete and correct.
static Bool getType(MPosition::Types &tp, const String &in)
Translate string to reference code.
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
A 3D vector in space.
Definition: MVPosition.h:113
MPosition conversion routines.
Definition: MCPosition.h:82
Types
Types of known MPositions Warning: The order defines the order in the translation matrix FromTo in t...
Definition: MPosition.h:94
static uInt myType()
Get my type (as Register)
ArrayMeasColumn< MPosition > ArrayColumn
Definition: MPosition.h:111
MeasConvert< MPosition > Convert
Measure Convert (i.e.
Definition: MPosition.h:108
virtual String getRefString() const
Get the reference type (for records, including codes like R_)
String: the storage and methods of handling collections of characters.
Definition: String.h:223
MPosition()
Tip: In the following constructors and other functions, all MeasRef can be replaced with simple Meas...
static const String & showMe()
virtual const String * allTypes(Int &nall, Int &nextra, const uInt *&typ) const
Get a list of all known reference codes.
unsigned int uInt
Definition: aipstype.h:51
#define casacore
&lt;X11/Intrinsic.h&gt; #defines true, false, casacore::Bool, and String.
Definition: X11Intrinsic.h:42