casacore::MCBase Class Reference

Base for specific measure conversions. More...

#include <MCBase.h>

Inheritance diagram for casacore::MCBase:
casacore::MCBaseline casacore::MCDirection casacore::MCDoppler casacore::MCEarthMagnetic casacore::MCEpoch casacore::MCFrequency casacore::MCPosition casacore::MCRadialVelocity casacore::MCuvw

List of all members.

Public Types

enum  Routes { N_Routes }
 

Each derived class should have a list of routines to be called:.

More...

Public Member Functions

virtual ~MCBase ()
virtual void getConvert (MConvertBase &mc, const MRBase &inref, const MRBase &outref)=0
 All these functions are called by Measure::Convert classes only.
virtual void initConvert (uInt which, MConvertBase &mc)=0
 Create help structures for Measure conversion routines.
virtual void clearConvert ()=0
 Delete the pointers used in the MeasConvert help structure cache.
virtual void doConvert (MeasValue &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)=0
 Routine to convert a Measure from one reference frame to another.

Static Protected Member Functions

static void makeState (uInt *state, const uInt ntyp, const uInt nrout, const uInt list[][3])
 The following routines create a state transition matrix from a list of all defined transitions.
static String showState (uInt *state, const uInt ntyp, const uInt nrout, const uInt list[][3])
 Return a fromatted String with matrix information (based on < 100 types).

Static Private Member Functions

static Bool findState (uInt &len, uInt *state, uInt *mcnt, Bool &okall, Bool *visit, const uInt *tcnt, const uInt *tree, const uInt &in, const uInt &out, const uInt ntyp, const uInt nrout, const uInt list[][3])
 Routine to find the shortest route between two points.

Detailed Description

Base for specific measure conversions.

Intended use:

Internal

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Test programs:
tMeasure

Prerequisite

Etymology

Measure, Conversion and Base

Synopsis

MCBase forms the base for the individual state machines doing actual conversions between frames. (see e.g. MCEpoch )

It also has a static routine to calculate the state transition table based on a list of transitions. The makeState() method find the shortest route (weighted if necessary) for a given list of state transitions.

The user of the Measure classes has no direct interaction with this class.

Example

Convert (with all steps explicit) a UTC to an IAT time.

 #include <casacore/measures/Measures.h>
 #include <casacore/measures/Measures/MCEpoch.h>
 cout << "TAI for UTC = MJD(50237.29): " <<
 MEpoch::Convert(MEpoch(MVEpoch(Quantity(50237.29, "d")),
 MEpoch::Ref(MEpoch::UTC)),
 MEpoch::Ref(MEpoch::TAI))() <<
 endl;

To get a static state transition matrix:

 static Bool made = False;              // set not yet done
 enum types {                           // states
 A=0, B, C, D, E, ntyp };
 enum routes {                          // routes
 A_B, B_C, B_D, C_D, C_E,
 D_C, C_B, B_A, D_B, E_C, nrout };
 static uInt list [nrout][3] = {                // description. The third number
 {A, B, 0},                     // is a penalty hop to weight
 {B, C, 0},                     // against using this route
 {B, D, 0},
 {C, D, 0},
 {C, E, 0},
 {D, C, 0},
 {C, B, 0},
 {B, A, 0},
 {D, B, 0},
 {E, C, 0} };
 static uInt state[ntyp][ntyp]; // the resultant transition matrix
 // diagonal == nrout
 // Make the state machine
 MCBase::makeState(state[0], ntyp, nrout, routes);
 made = True;

Motivation

To have specific conversion bases

To Do

Definition at line 119 of file MCBase.h.


Member Enumeration Documentation

Each derived class should have a list of routines to be called:.

Enumerator:
N_Routes 

Reimplemented in casacore::MCBaseline, casacore::MCDirection, casacore::MCDoppler, casacore::MCEarthMagnetic, casacore::MCEpoch, casacore::MCFrequency, casacore::MCPosition, casacore::MCRadialVelocity, and casacore::MCuvw.

Definition at line 134 of file MCBase.h.


Constructor & Destructor Documentation

virtual casacore::MCBase::~MCBase (  )  [virtual]

Member Function Documentation

virtual void casacore::MCBase::clearConvert (  )  [pure virtual]
virtual void casacore::MCBase::doConvert ( MeasValue in,
MRBase inref,
MRBase outref,
const MConvertBase mc 
) [pure virtual]
static Bool casacore::MCBase::findState ( uInt len,
uInt state,
uInt mcnt,
Bool okall,
Bool visit,
const uInt tcnt,
const uInt tree,
const uInt in,
const uInt out,
const uInt  ntyp,
const uInt  nrout,
const uInt  list[][3] 
) [static, private]

Routine to find the shortest route between two points.

virtual void casacore::MCBase::getConvert ( MConvertBase mc,
const MRBase inref,
const MRBase outref 
) [pure virtual]
virtual void casacore::MCBase::initConvert ( uInt  which,
MConvertBase mc 
) [pure virtual]
static void casacore::MCBase::makeState ( uInt state,
const uInt  ntyp,
const uInt  nrout,
const uInt  list[][3] 
) [static, protected]

The following routines create a state transition matrix from a list of all defined transitions.

It uses the following information:

  • nrout: the number of transitions; numbered 0, ..\.
  • ntyp: the number of states
  • list: a [nrout][3] list of input and output transition type of transition and a penalty hop number (<100)
  • state: a [ntyp][ntyp] transition matrix with diagonal elements set to nrout.

Routine to make the transition table if necessary

static String casacore::MCBase::showState ( uInt state,
const uInt  ntyp,
const uInt  nrout,
const uInt  list[][3] 
) [static, protected]

Return a fromatted String with matrix information (based on < 100 types).


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1