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]) |
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. |
Base for specific measure conversions.
Internal
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 <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;
To have specific conversion bases
Definition at line 119 of file MCBase.h.
Each derived class should have a list of routines to be called:.
Reimplemented in casacore::MCBaseline, casacore::MCDirection, casacore::MCDoppler, casacore::MCEarthMagnetic, casacore::MCEpoch, casacore::MCFrequency, casacore::MCPosition, casacore::MCRadialVelocity, and casacore::MCuvw.
virtual casacore::MCBase::~MCBase | ( | ) | [virtual] |
virtual void casacore::MCBase::clearConvert | ( | ) | [pure virtual] |
Delete the pointers used in the MeasConvert help structure cache.
Implemented in casacore::MCBaseline, casacore::MCDirection, casacore::MCDoppler, casacore::MCEarthMagnetic, casacore::MCEpoch, casacore::MCFrequency, casacore::MCPosition, casacore::MCRadialVelocity, and casacore::MCuvw.
virtual void casacore::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 casacore::MCBaseline, casacore::MCDirection, casacore::MCDoppler, casacore::MCEarthMagnetic, casacore::MCEpoch, casacore::MCFrequency, casacore::MCPosition, casacore::MCRadialVelocity, and casacore::MCuvw.
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] |
All these functions are called by Measure::Convert classes only.
Create conversion state machine list
Implemented in casacore::MCBaseline, casacore::MCDirection, casacore::MCDoppler, casacore::MCEarthMagnetic, casacore::MCEpoch, casacore::MCFrequency, casacore::MCPosition, casacore::MCRadialVelocity, and casacore::MCuvw.
virtual void casacore::MCBase::initConvert | ( | uInt | which, | |
MConvertBase & | mc | |||
) | [pure virtual] |
Create help structures for Measure conversion routines.
Implemented in casacore::MCBaseline, casacore::MCDirection, casacore::MCDoppler, casacore::MCEarthMagnetic, casacore::MCEpoch, casacore::MCFrequency, casacore::MCPosition, casacore::MCRadialVelocity, and casacore::MCuvw.
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:
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).