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)
|
MeasFrame & | operator= (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 Measure * | epoch () const |
| Get the epoch pointer (0 if not present)
|
const Measure * | position () const |
| Get the position pointer (0 if not present)
|
const Measure * | direction () const |
| Get the direction pointer (0 if not present)
|
const Measure * | radialVelocity () const |
| Get the radial velocity pointer (0 if not present)
|
const MeasComet * | comet () 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) |
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:
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
Motivation
To separate the frame definition from the measure type
Definition at line 137 of file MeasFrame.h.