casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Protected Member Functions | Static Private Member Functions | List of all members
casacore::MCBase Class Referenceabstract

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

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. More...
 
virtual void initConvert (uInt which, MConvertBase &mc)=0
 Create help structures for Measure conversion routines. More...
 
virtual void clearConvert ()=0
 Delete the pointers used in the MeasConvert help structure cache. More...
 
virtual void doConvert (MeasValue &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)=0
 Routine to convert a Measure from one reference frame to another. More...
 

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. More...

 
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) More...
 

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. More...
 

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.

cout << "TAI for UTC = MJD(50237.29): " <<
MEpoch::Convert(MEpoch(MVEpoch(Quantity(50237.29, "d")),
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 

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] 
)
staticprivate

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] 
)
staticprotected

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] 
)
staticprotected

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


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