casa
$Rev:20696$
|
Base for specific measure conversions. More...
#include <MCBase.h>
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]) |
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. |
Base for specific measure conversions.
Internal
<h3>Review Status</h3><dl><dt>Reviewed By:<dd>UNKNOWN<dt>Date Reviewed:<dd>before2004/08/25<dt>Test programs:<dd>tMeasure</dl>
Measure, Conversion and Base
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.
Convert (with all steps explicit) a UTC to an IAT time.
#include <measures/Measures.h> #include <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;
To have specific conversion bases
enum casa::MCBase::Routes |
Each derived class should have a list of routines to be called:
Reimplemented in casa::MCDoppler, casa::MCFrequency, casa::MCEpoch, casa::MCRadialVelocity, casa::MCDirection, casa::MCEarthMagnetic, casa::MCuvw, casa::MCBaseline, and casa::MCPosition.
virtual casa::MCBase::~MCBase | ( | ) | [virtual] |
virtual void casa::MCBase::clearConvert | ( | ) | [pure virtual] |
Delete the pointers used in the MeasConvert help structure cache.
Implemented in casa::MCDirection, casa::MCEarthMagnetic, casa::MCuvw, casa::MCBaseline, casa::MCEpoch, casa::MCFrequency, casa::MCRadialVelocity, casa::MCDoppler, and casa::MCPosition.
virtual void casa::MCBase::doConvert | ( | MeasValue & | in, |
MRBase & | inref, | ||
MRBase & | outref, | ||
const MConvertBase & | mc | ||
) | [pure virtual] |
Routine to convert a Measure from one reference frame to another.
Implemented in casa::MCDirection, casa::MCEarthMagnetic, casa::MCuvw, casa::MCBaseline, casa::MCEpoch, casa::MCFrequency, casa::MCRadialVelocity, casa::MCDoppler, and casa::MCPosition.
static Bool casa::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 casa::MCBase::getConvert | ( | MConvertBase & | mc, |
const MRBase & | inref, | ||
const MRBase & | outref | ||
) | [pure virtual] |
All these functions are called by Measure::Convert classes only.
Create conversion state machine list
Implemented in casa::MCDirection, casa::MCEarthMagnetic, casa::MCuvw, casa::MCBaseline, casa::MCEpoch, casa::MCFrequency, casa::MCRadialVelocity, casa::MCDoppler, and casa::MCPosition.
virtual void casa::MCBase::initConvert | ( | uInt | which, |
MConvertBase & | mc | ||
) | [pure virtual] |
Create help structures for Measure conversion routines.
Implemented in casa::MCDirection, casa::MCEarthMagnetic, casa::MCuvw, casa::MCBaseline, casa::MCEpoch, casa::MCFrequency, casa::MCRadialVelocity, casa::MCDoppler, and casa::MCPosition.
static void casa::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:
Routine to make the transition table if necessary
static String casa::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)