Loading...
Searching...
No Matches
MPosition.h
Go to the documentation of this file.
//# MPosition.h: A Measure: position on Earth
//# Copyright (C) 1995,1996,1997,1998,1999,2000,2002
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef MEASURES_MPOSITION_H
#define MEASURES_MPOSITION_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/measures/Measures/MeasBase.h>
#include <casacore/measures/Measures/MeasRef.h>
#include <casacore/casa/Quanta/MVPosition.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class MPosition;
class MCPosition;
template <class M> class MeasConvert;
template <class M> class ArrayMeasColumn;
template <class M> class ScalarMeasColumn;
//# Typedefs
// <summary>
// A Measure: position on Earth
// </summary>
// <use visibility=export>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasure" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class=Measure>Measure</linkto> class
// </prerequisite>
//
// <etymology>
// </etymology>
//
// <synopsis>
// MPosition forms derived Measure class for an instant in time.
// </synopsis>
//
// <example>
// </example>
//
// <motivation>
// </motivation>
//
// <todo asof="2000/06/15">
// <li>
// </todo>
class MPosition : public MeasBase<MVPosition, MeasRef<MPosition> > {
public:
//# Friends
// Conversion of data
friend class MeasConvert<MPosition>;
//# Enumerations
// Types of known MPositions
// <note role=warning> The order defines the order in the translation
// matrix FromTo
// in the getConvert routine. Do not change the order without
// changing the array. Additions should be made before N_types, and
// an additional row and column should be coded in FromTo, and
// in showType().</note>
enum Types {
ITRF,
WGS84,
N_Types,
DEFAULT=ITRF};
//# Typedefs
// Measure value container for this class (i.e. MPosition::MVType)
typedef MVPosition MVType;
// Measure conversion routines for this class (i.e. MPosition::MCType)
typedef MCPosition MCType;
// Measure reference (i.e. MPosition::Ref)
typedef MeasRef<MPosition> Ref;
// Measure Convert (i.e. MPosition::Convert)
typedef MeasConvert<MPosition> Convert;
// Measure table Columns (e.g., MPosition::ScalarColumn)
typedef ScalarMeasColumn<MPosition> ScalarColumn;
typedef ArrayMeasColumn<MPosition> ArrayColumn;
//# Constructors
// <note role=tip> In the following constructors and other functions, all
// <em>MeasRef</em> can be replaced with simple <src>Measure::TYPE</src>
// where no offsets or frames are needed in the reference. </note>
// Default constructor; generates the ITRF centre
MPosition();
// Create from data and reference
// <group>
MPosition(const MVPosition &dt);
MPosition(const MVPosition &dt, const MPosition::Ref &rf);
MPosition(const MVPosition &dt, MPosition::Types rf);
MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2);
MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2,
const MPosition::Ref &rf);
MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2,
MPosition::Types rf);
MPosition(const Quantity &dt0, const Quantum<Vector<Double> > &dt);
MPosition(const Quantity &dt0, const Quantum<Vector<Double> > &dt,
const MPosition::Ref &rf);
MPosition(const Quantity &dt0, const Quantum<Vector<Double> > &dt,
MPosition::Types rf);
MPosition(const Measure *dt);
MPosition(const MeasValue *dt);
// </group>
// <group>
MPosition(const MPosition &);
MPosition &operator=(const MPosition &);
// </group>
//# Destructor
virtual ~MPosition();
//# Operators
//# General Member Functions
// Tell me your type
// <group>
virtual const String &tellMe() const;
static const String &showMe();
static void assure(const Measure &in);
// </group>
// Translate reference code. The uInt version has a check for valid codes
// (i.e. it is a safe cast).
// <thrown>
// <li> AipsError in the uInt interface if illegal code given
// </thrown>
// <group>
static MPosition::Types castType(uInt tp);
static const String &showType(MPosition::Types tp);
static const String &showType(uInt tp);
// </group>
// Translate string to reference code
// <group>
static Bool getType(MPosition::Types &tp, const String &in);
// this one throws an exception for an unrecognized String
static MPosition::Types getType(const String& in);
Bool giveMe(MPosition::Ref &mr, const String &in);
// </group>
// Set the offset in the reference (False if non-matching Measure)
virtual Bool setOffset(const Measure &in);
// Set the reference type to the specified String. False if illegal
// string, reference set to DEFAULT.
virtual Bool setRefString(const String &in);
// Get the default reference type
virtual const String &getDefaultType() const;
// Get a list of all known reference codes. nall returns the number in list,
// nextra the number of specials (like planets) that should be at
// end of list). typ returns the list of corresponding types.
// <group>
virtual const String* allTypes(Int &nall, Int &nextra,
const uInt *&typ) const;
static const String* allMyTypes(Int &nall, Int &nextra,
const uInt *&typ);
// </group>
// Check if all internal tables of types (both enum and String) are
// complete and correct. This function is called automatically if and when
// necessary.
// <thrown>
// <li> AipsError if a (programming) error in the types.
// </thrown>
// <group>
virtual void checkTypes() const;
static void checkMyTypes();
// </group>
// Get the reference type (for records, including codes like R_)
virtual String getRefString() const;
// Get Measure data
// <group>
Quantum<Vector<Double> > get(const Unit &inunit) const;
Quantum<Vector<Double> > getAngle() const;
Quantum<Vector<Double> > getAngle(const Unit &inunit) const;
// </group>
// Make copy
// <group>
virtual Measure *clone() const;
// </group>
private:
//# Enumerations
//# Data
//# Member functions
};
} //# NAMESPACE CASACORE - END
#endif
casacore::ArrayMeasColumn
Definition ArrayMeasColumn.h:169
casacore::MCPosition
Definition MCPosition.h:78
casacore::MPosition::MPosition
MPosition()
Tip: In the following constructors and other functions, all MeasRef can be replaced with simple Measu...
casacore::MPosition::getDefaultType
virtual const String & getDefaultType() const
Get the default reference type.
casacore::MPosition::getType
static Bool getType(MPosition::Types &tp, const String &in)
Translate string to reference code.
casacore::MPosition::MPosition
MPosition(const Quantity &dt0, const Quantum< Vector< Double > > &dt, const MPosition::Ref &rf)
casacore::MPosition::getType
static MPosition::Types getType(const String &in)
this one throws an exception for an unrecognized String
casacore::MPosition::assure
static void assure(const Measure &in)
casacore::MPosition::get
Quantum< Vector< Double > > get(const Unit &inunit) const
Get Measure data.
casacore::MPosition::Types
Types
Types of known MPositions Warning: The order defines the order in the translation matrix FromTo in t...
Definition MPosition.h:91
casacore::MPosition::ITRF
@ ITRF
Definition MPosition.h:92
casacore::MPosition::DEFAULT
@ DEFAULT
Definition MPosition.h:95
casacore::MPosition::N_Types
@ N_Types
Definition MPosition.h:94
casacore::MPosition::WGS84
@ WGS84
Definition MPosition.h:93
casacore::MPosition::ArrayColumn
ArrayMeasColumn< MPosition > ArrayColumn
Definition MPosition.h:108
casacore::MPosition::MPosition
MPosition(const MVPosition &dt)
Create from data and reference.
casacore::MPosition::giveMe
Bool giveMe(MPosition::Ref &mr, const String &in)
casacore::MPosition::MPosition
MPosition(const MPosition &)
casacore::MPosition::allMyTypes
static const String * allMyTypes(Int &nall, Int &nextra, const uInt *&typ)
casacore::MPosition::checkMyTypes
static void checkMyTypes()
casacore::MPosition::~MPosition
virtual ~MPosition()
casacore::MPosition::MPosition
MPosition(const MeasValue *dt)
casacore::MPosition::MCType
MCPosition MCType
Measure conversion routines for this class (i.e.
Definition MPosition.h:101
casacore::MPosition::showType
static const String & showType(MPosition::Types tp)
casacore::MPosition::tellMe
virtual const String & tellMe() const
Tell me your type.
casacore::MPosition::allTypes
virtual const String * allTypes(Int &nall, Int &nextra, const uInt *&typ) const
Get a list of all known reference codes.
casacore::MPosition::operator=
MPosition & operator=(const MPosition &)
casacore::MPosition::getAngle
Quantum< Vector< Double > > getAngle(const Unit &inunit) const
casacore::MPosition::MPosition
MPosition(const Quantity &dt0, const Quantum< Vector< Double > > &dt)
casacore::MPosition::getRefString
virtual String getRefString() const
Get the reference type (for records, including codes like R_).
casacore::MPosition::Convert
MeasConvert< MPosition > Convert
Measure Convert (i.e.
Definition MPosition.h:105
casacore::MPosition::castType
static MPosition::Types castType(uInt tp)
Translate reference code.
casacore::MPosition::checkTypes
virtual void checkTypes() const
Check if all internal tables of types (both enum and String) are complete and correct.
casacore::MPosition::Ref
MeasRef< MPosition > Ref
Measure reference (i.e.
Definition MPosition.h:103
casacore::MPosition::MPosition
MPosition(const Quantity &dt0, const Quantum< Vector< Double > > &dt, MPosition::Types rf)
casacore::MPosition::MVType
MVPosition MVType
Measure value container for this class (i.e.
Definition MPosition.h:99
casacore::MPosition::setOffset
virtual Bool setOffset(const Measure &in)
Set the offset in the reference (False if non-matching Measure).
casacore::MPosition::showMe
static const String & showMe()
casacore::MPosition::showType
static const String & showType(uInt tp)
casacore::MPosition::ScalarColumn
ScalarMeasColumn< MPosition > ScalarColumn
Measure table Columns (e.g., MPosition::ScalarColumn).
Definition MPosition.h:107
casacore::MPosition::setRefString
virtual Bool setRefString(const String &in)
Set the reference type to the specified String.
casacore::MPosition::MPosition
MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2)
casacore::MPosition::clone
virtual Measure * clone() const
Make copy.
casacore::MPosition::MPosition
MPosition(const MVPosition &dt, const MPosition::Ref &rf)
casacore::MPosition::MPosition
MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2, MPosition::Types rf)
casacore::MPosition::MPosition
MPosition(const Measure *dt)
casacore::MPosition::getAngle
Quantum< Vector< Double > > getAngle() const
casacore::MPosition::MPosition
MPosition(const Quantity &dt, const Quantity &dt1, const Quantity &dt2, const MPosition::Ref &rf)
casacore::MPosition::MPosition
MPosition(const MVPosition &dt, MPosition::Types rf)
casacore::MVPosition
Definition MVPosition.h:111
casacore::MeasBase< MVPosition, MeasRef< MPosition > >::MeasBase
MeasBase()
casacore::MeasConvert
Definition MeasConvert.h:143
casacore::MeasRef
Definition MeasRef.h:80
casacore::MeasValue
Definition MeasValue.h:104
casacore::Measure
Definition Measure.h:232
casacore::Quantum
Definition Quantum.h:269
casacore::ScalarMeasColumn
Definition ScalarMeasColumn.h:141
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::Unit
Definition Unit.h:187
casacore::Vector
Definition Vector.h:82
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::Quantity
Quantum< Double > Quantity
Definition Quantum.h:39