casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends
casa::MeasFrame Class Reference

Container for Measure frame. More...

#include <MeasFrame.h>

List of all members.

Public Types

enum  FrameTypes {
  EPOCH,
  POSITION,
  DIRECTION,
  VELOCITY,
  COMET
}
 Enumeration for the different farme entries possible. More...

Public Member Functions

 MeasFrame ()
 Default constructor.
 MeasFrame (const Measure &meas1)
 Construct frame with specified measures.
 MeasFrame (const Measure &meas1, const Measure &meas2)
 MeasFrame (const Measure &meas1, const Measure &meas2, const Measure &meas3)
 MeasFrame (const MeasFrame &other)
 Copy constructor (reference semantics)
MeasFrameoperator= (const MeasFrame &other)
 Copy assignment (reference semantics)
 ~MeasFrame ()
 Destructor.
Bool operator== (const MeasFrame &other) const
 Comparisons.
Bool operator!= (const MeasFrame &other) const
Bool empty () const
 Test if empty (i.e.
void set (const Measure &meas1)
 Set frame elements.
void set (const Measure &meas1, const Measure &meas2)
void set (const Measure &meas1, const Measure &meas2, const Measure &meas3)
void set (const MeasComet &meas)
void resetEpoch (Double val)
 Reset a frame element and its cached derived values.
void resetEpoch (const Vector< Double > &val)
void resetEpoch (const Quantum< Double > &val)
void resetEpoch (const Quantum< Vector< Double > > &val)
void resetEpoch (const MVEpoch &val)
void resetEpoch (const Measure &val)
void resetPosition (const Vector< Double > &val)
void resetPosition (const Quantum< Vector< Double > > &val)
void resetPosition (const MVPosition &val)
void resetPosition (const Measure &val)
void resetDirection (const Vector< Double > &val)
void resetDirection (const Quantum< Vector< Double > > &val)
void resetDirection (const MVDirection &val)
void resetDirection (const Measure &val)
void resetRadialVelocity (const Vector< Double > &val)
void resetRadialVelocity (const Quantum< Vector< Double > > &val)
void resetRadialVelocity (const MVRadialVelocity &val)
void resetRadialVelocity (const Measure &val)
void resetComet (const MeasComet &val)
const Measureepoch () const
 Get the epoch pointer (0 if not present)
const Measureposition () const
 Get the position pointer (0 if not present)
const Measuredirection () const
 Get the direction pointer (0 if not present)
const MeasureradialVelocity () const
 Get the radial velocity pointer (0 if not present)
const MeasCometcomet () const
 Get the comet pointer (0 if not present)
Bool getTDB (Double &tdb) const
 Get data from frame.
Bool getUT1 (Double &tdb) const
 Get UT1 in days.
Bool getTT (Double &tdb) const
 Get TT in days.
Bool getLong (Double &tdb) const
 Get the ITRF longitude (in rad)
Bool getLat (Double &tdb) const
 Get the ITRF latitude (in rad)
Bool getITRF (MVPosition &tdb) const
 Get the position.
Bool getRadius (Double &tdb) const
 Get the geocentric position (in m)
Bool getLatGeo (Double &tdb) const
 Get the geodetic latitude.
Bool getLAST (Double &tdb) const
 Get the LAST (in days)
Bool getLASTr (Double &tdb) const
 Get the LAST (in rad)
Bool getJ2000 (MVDirection &tdb) const
 Get J2000 coordinates (direction cosines) and its longitude/latitude (rad)
Bool getJ2000Long (Double &tdb) const
Bool getJ2000Lat (Double &tdb) const
Bool getB1950 (MVDirection &tdb) const
 Get B1950 coordinates (direction cosines)
Bool getB1950Long (Double &tdb) const
Bool getB1950Lat (Double &tdb) const
Bool getApp (MVDirection &tdb) const
 Get apparent coordinates (direction cosines)
Bool getAppLong (Double &tdb) const
Bool getAppLat (Double &tdb) const
Bool getLSR (Double &tdb) const
 Get LSR radial velocity (m/s)
Bool getCometType (uInt &tdb) const
 Get the comet table reference type.
Bool getComet (MVPosition &tdb) const
 Get the comet coordinates.

Private Member Functions

void create ()
 Create an instance of the MeasFrame class.
void fill (const Measure *in)
 Fill a MeasFrame element.
void fill (const MeasComet *in)
void makeEpoch ()
 Make full Epoch.
void makePosition ()
 Make full Position.
void makeDirection ()
 Make full Direction.
void makeRadialVelocity ()
 Make full RadialVelocity.
void makeComet ()
 Make full Comet.
void errorReset (const String &txt)
 Throw reset error.
void lock (uInt &locker)
 Lock the frame to make sure deletion occurs when needed.
void unlock (const uInt locker)
 Unlock the frame.

Private Attributes

FrameRep * rep
 
   

Friends

class MCFrame
 Machinery.
ostream & operator<< (ostream &os, MeasFrame &mf)
 Output a frame.
Bool MCFrameGetdbl (void *dmf, uInt tp, Double &result)
Bool MCFrameGetmvdir (void *dmf, uInt tp, MVDirection &result)
Bool MCFrameGetmvpos (void *dmf, uInt tp, MVPosition &result)
Bool MCFrameGetuint (void *dmf, uInt tp, uInt &result)

Detailed Description

Container for Measure frame.

Intended use:

Public interface

 <h3>Review Status</h3><dl><dt>Reviewed By:<dd>UNKNOWN<dt>Date Reviewed:<dd>before2004/08/25<dt>Test programs:<dd>tMeasure</dl> 

Prerequisite

Etymology

From Measure and Frame

Synopsis

Measurements are made in a reference frame (epoch, position, direction, ...).
The class is a container for the reference frame Measures (MEpoch etc). Since a frame will possibly be used by many different Measures, it behaves as a smart pointer, with reference rather than copy characteristics. Since it caches all its operations, it is advisable to have a 'global' MeasFrame across an execution, resetting (or setting) its values when appropriate. The frame can also contain other related information. At the moment the orbit of a solar system body (MeasComet) can be set. In future the planetary ephemeris used (e.g. DE205) and environmental information like refraction data will be added.

A MeasFrame is constructed by setting the appropriate Measures, either in a constructor, or with a set(). The input to the constructors and set are Measures.

Inside the frames automatic conversion to the most appropriate usage of its values is done (e.g. time to TBD time, position to astronomical longitude). These conversions are done only if an explicit Measure::Convert was used that needed information, e.g. the following code:

        MeasFrame frame(obser);   // obser is an MPosition
        MEpoch::Convert conv(MEpoch(12345), MEpoch::Ref(MEpoch::LAST,obser));
        MEpoch last = conv();

will set-up a state machine to convert UTC(default) to LAST in conv; the next call will do the actual conversion. During this conversion, the astronomical longitude (among others) will be needed to convert to local sidereal time. conv will ask (getLong()) this from the frame, which will calculate it (including possible other conversions) from the observatory's position specified in a frame. Any calculation done will be cached (e.g. a Nutation calculation in this case for dpsi), and used in subsequent conversions using the same frame.
Furthermore, a frame will often be regularly updated (e.g. coordinate conversion for a series of times). To make use of cached information, and to speed up as much as possible, reset...() functions are available. These reset functions accept the same range of input parameter types as the MeasConvert () operator, and will keep any determined conversion machines and related information intact, only recalculating whatever is necessary.
The actual frame calculations and interrogations are done in a separate MCFrame hidden class, which attaches itself to MeasFrame when and if necessary (see there if you are really curious).
. get...() functions can return frame measures. Only when the frame has been attached to a calculating machine *MCFrame) are these values available. This attachment is done if the frame has been actively used by a Measure::Convert engine, or if explicitly done by the MCFrame::make(MeasFrame &) static method.
Caution: An explicit (or implicit) call to MCFrame::make will load the whole conversion machinery (including Tables) into your linked module);

Aipsrc keywords can be used for additional (highly specialised) additional internal conversion parameters.

Example

        MEpoch my_epoch(Quantity(MeasData::MJDB1950,"d")); // an epoch
        MeasFrame frame(my_epoch);      // used in a frame

Motivation

To separate the frame definition from the measure type

Definition at line 137 of file MeasFrame.h.


Member Enumeration Documentation

Enumeration for the different farme entries possible.

This can be used to find out if a certain conversion needs the frame. It will be used in a registration/notify environment to enable bypassing of some new conversion settings.

Enumerator:
EPOCH 
POSITION 
DIRECTION 
VELOCITY 
COMET 

Definition at line 158 of file MeasFrame.h.


Constructor & Destructor Documentation

Default constructor.

casa::MeasFrame::MeasFrame ( const Measure meas1)

Construct frame with specified measures.

Thrown Exceptions

casa::MeasFrame::MeasFrame ( const Measure meas1,
const Measure meas2 
)
casa::MeasFrame::MeasFrame ( const Measure meas1,
const Measure meas2,
const Measure meas3 
)

Copy constructor (reference semantics)

Destructor.


Member Function Documentation

Get the comet pointer (0 if not present)

void casa::MeasFrame::create ( ) [private]

Create an instance of the MeasFrame class.

Get the direction pointer (0 if not present)

Test if empty (i.e.

no measure filled in)

const Measure* casa::MeasFrame::epoch ( ) const

Get the epoch pointer (0 if not present)

void casa::MeasFrame::errorReset ( const String txt) [private]

Throw reset error.

void casa::MeasFrame::fill ( const Measure in) [private]

Fill a MeasFrame element.

void casa::MeasFrame::fill ( const MeasComet in) [private]

Get apparent coordinates (direction cosines)

Get B1950 coordinates (direction cosines)

Get the comet coordinates.

Get the comet table reference type.

Get the position.

Get J2000 coordinates (direction cosines) and its longitude/latitude (rad)

Get the LAST (in days)

Get the LAST (in rad)

Get the ITRF latitude (in rad)

Get the geodetic latitude.

Get the ITRF longitude (in rad)

Get LSR radial velocity (m/s)

Get the geocentric position (in m)

Get data from frame.

Only available if appropriate measures are set, and the frame is in a calculating state.

Get TDB in days

Get TT in days.

Get UT1 in days.

void casa::MeasFrame::lock ( uInt locker) [private]

Lock the frame to make sure deletion occurs when needed.

void casa::MeasFrame::makeComet ( ) [private]

Make full Comet.

void casa::MeasFrame::makeDirection ( ) [private]

Make full Direction.

void casa::MeasFrame::makeEpoch ( ) [private]

Make full Epoch.

void casa::MeasFrame::makePosition ( ) [private]

Make full Position.

Make full RadialVelocity.

Bool casa::MeasFrame::operator!= ( const MeasFrame other) const
MeasFrame& casa::MeasFrame::operator= ( const MeasFrame other)

Copy assignment (reference semantics)

Bool casa::MeasFrame::operator== ( const MeasFrame other) const

Comparisons.

Get the position pointer (0 if not present)

Get the radial velocity pointer (0 if not present)

void casa::MeasFrame::resetComet ( const MeasComet val)
void casa::MeasFrame::resetDirection ( const Vector< Double > &  val)

Reset a frame element and its cached derived values.

Thrown Exceptions

void casa::MeasFrame::resetEpoch ( const Vector< Double > &  val)
void casa::MeasFrame::resetEpoch ( const Quantum< Double > &  val)
void casa::MeasFrame::resetEpoch ( const Quantum< Vector< Double > > &  val)
void casa::MeasFrame::resetEpoch ( const MVEpoch val)
void casa::MeasFrame::resetEpoch ( const Measure val)
void casa::MeasFrame::resetPosition ( const Vector< Double > &  val)
void casa::MeasFrame::resetPosition ( const Quantum< Vector< Double > > &  val)
void casa::MeasFrame::resetPosition ( const Measure val)
void casa::MeasFrame::set ( const Measure meas1)

Set frame elements.

Thrown Exceptions

void casa::MeasFrame::set ( const Measure meas1,
const Measure meas2 
)
void casa::MeasFrame::set ( const Measure meas1,
const Measure meas2,
const Measure meas3 
)
void casa::MeasFrame::set ( const MeasComet meas)
void casa::MeasFrame::unlock ( const uInt  locker) [private]

Unlock the frame.


Friends And Related Function Documentation

friend class MCFrame [friend]

Machinery.

Definition at line 146 of file MeasFrame.h.

Bool MCFrameGetdbl ( void *  dmf,
uInt  tp,
Double result 
) [friend]
Bool MCFrameGetmvdir ( void *  dmf,
uInt  tp,
MVDirection result 
) [friend]
Bool MCFrameGetmvpos ( void *  dmf,
uInt  tp,
MVPosition result 
) [friend]
Bool MCFrameGetuint ( void *  dmf,
uInt  tp,
uInt result 
) [friend]
ostream& operator<< ( ostream &  os,
MeasFrame mf 
) [friend]

Output a frame.


Member Data Documentation

FrameRep* casa::MeasFrame::rep [private]

   

Representation of MeasFrame

Definition at line 297 of file MeasFrame.h.


The documentation for this class was generated from the following file: