Loading...
Searching...
No Matches
MCEpoch.h
Go to the documentation of this file.
//# MCEpoch.h: MEpoch conversion routines
//# Copyright (C) 1995,1996,1997,1998,1999,2002
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef MEASURES_MCEPOCH_H
#define MEASURES_MCEPOCH_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/measures/Measures/MeasBase.h>
#include <casacore/measures/Measures/MeasRef.h>
#include <casacore/measures/Measures/MCBase.h>
#include <casacore/measures/Measures/MConvertBase.h>
#include <casacore/measures/Measures/MEpoch.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class MCEpoch;
class Nutation;
class String;
//# Typedefs
// <summary> MEpoch conversion routines </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasure" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class=Measure>Measure</linkto> class
// <li> <linkto class=MCBase>MCBase</linkto> base class
// <li> <linkto class=MConvertBase>overall conversion</linkto> class
// </prerequisite>
//
// <etymology>
// Measure, Convert and Epoch
// </etymology>
//
// <synopsis>
// Contains state machinery and caching for actual conversions
// </synopsis>
//
// <example>
// Convert (with all steps explicit) a UTC to an IAT time.
// <srcblock>
// #include <casacore/measures/Measures.h>
// #include <casacore/measures/Measures/MEpoch.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;
// </srcblock>
// </example>
//
// <motivation>
// </motivation>
//
// <todo asof="1998/09/21">
// <li> Nothing I know
// </todo>
class MCEpoch : public MCBase {
public:
//# Friends
friend class MeasConvert<MEpoch>;
//# Constructors
// Default constructor
MCEpoch();
//# Destructor
~MCEpoch();
//# Member functions
// Show the state of the conversion engine (mainly for debugging purposes)
static String showState();
private:
//# Enumerations
// The list of actual routines provided.
// <note role=warning> Each <src>AA_BB</src> in the list points to routine
// that can be used in the FromTo list in the getConvert routine.
// In addition the type to which each is converted should be in the
// ToRef array, again in the proper order. </note>
enum Routes {
LAST_GAST,
GAST_LAST,
LMST_GMST1,
GMST1_LMST,
GMST1_UT1,
UT1_GMST1,
GAST_UT1,
UT1_GAST,
UT1_UTC,
UTC_UT1,
UT1_UT2,
UT2_UT1,
UTC_TAI,
TAI_UTC,
TAI_TDT,
TDT_TAI,
TDT_TDB,
TDB_TDT,
TDT_TCG,
TCG_TDT,
TDB_TCB,
TCB_TDB,
N_Routes,
RAZING
};
//# Typedefs
//# Operators
//# General Member Functions
//# Enumerations
//# Cached Data
Nutation *NUTATFROM;
Nutation *NUTATTO;
//# State machine data
// Transition list
static uInt ToRef_p[N_Routes][3];
// Transition matrix
static uInt FromTo_p[MEpoch::N_Types][MEpoch::N_Types];
// Object to ensure safe multi-threaded lazy single initialization
static std::once_flag theirInitOnceFlag;
//# Constructors
// Copy constructor (not implemented)
MCEpoch(const MCEpoch &other);
// Assignment (not implemented)
MCEpoch &operator=(const MCEpoch &other);
//# Member functions
// Create conversion function pointer
virtual void getConvert(MConvertBase &mc,
const MRBase &inref,
const MRBase &outref);
// Create help structures for Measure conversion routines
virtual void initConvert(uInt which, MConvertBase &mc);
// Delete the pointers used in the MeasConvert help structure cache
virtual void clearConvert();
// Routine to convert time from one reference frame to another
virtual void doConvert(MeasValue &in,
MRBase &inref,
MRBase &outref,
const MConvertBase &mc);
// Conversion routine to cater for inheritance question
void doConvert(MVEpoch &in,
MRBase &inref,
MRBase &outref,
const MConvertBase &mc);
private:
// Fill the global state. Called using theirInitOnce.
static void doFillState();
};
} //# NAMESPACE CASACORE - END
#endif
casacore::MCBase
Definition MCBase.h:116
casacore::MCEpoch::operator=
MCEpoch & operator=(const MCEpoch &other)
Assignment (not implemented).
casacore::MCEpoch::FromTo_p
static uInt FromTo_p[MEpoch::N_Types][MEpoch::N_Types]
Transition matrix.
Definition MCEpoch.h:156
casacore::MCEpoch::initConvert
virtual void initConvert(uInt which, MConvertBase &mc)
Create help structures for Measure conversion routines.
casacore::MCEpoch::doConvert
virtual void doConvert(MeasValue &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)
Routine to convert time from one reference frame to another.
casacore::MCEpoch::showState
static String showState()
Show the state of the conversion engine (mainly for debugging purposes).
casacore::MCEpoch::doConvert
void doConvert(MVEpoch &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)
Conversion routine to cater for inheritance question.
casacore::MCEpoch::theirInitOnceFlag
static std::once_flag theirInitOnceFlag
Object to ensure safe multi-threaded lazy single initialization.
Definition MCEpoch.h:158
casacore::MCEpoch::MCEpoch
MCEpoch(const MCEpoch &other)
Copy constructor (not implemented).
casacore::MCEpoch::NUTATFROM
Nutation * NUTATFROM
Definition MCEpoch.h:149
casacore::MCEpoch::getConvert
virtual void getConvert(MConvertBase &mc, const MRBase &inref, const MRBase &outref)
Create conversion function pointer.
casacore::MCEpoch::Routes
Routes
The list of actual routines provided.
Definition MCEpoch.h:113
casacore::MCEpoch::TCB_TDB
@ TCB_TDB
Definition MCEpoch.h:135
casacore::MCEpoch::TDB_TCB
@ TDB_TCB
Definition MCEpoch.h:134
casacore::MCEpoch::UT2_UT1
@ UT2_UT1
Definition MCEpoch.h:125
casacore::MCEpoch::GMST1_LMST
@ GMST1_LMST
Definition MCEpoch.h:117
casacore::MCEpoch::TAI_TDT
@ TAI_TDT
Definition MCEpoch.h:128
casacore::MCEpoch::TDT_TDB
@ TDT_TDB
Definition MCEpoch.h:130
casacore::MCEpoch::UT1_GMST1
@ UT1_GMST1
Definition MCEpoch.h:119
casacore::MCEpoch::UT1_UTC
@ UT1_UTC
Definition MCEpoch.h:122
casacore::MCEpoch::UT1_UT2
@ UT1_UT2
Definition MCEpoch.h:124
casacore::MCEpoch::GAST_LAST
@ GAST_LAST
Definition MCEpoch.h:115
casacore::MCEpoch::UTC_TAI
@ UTC_TAI
Definition MCEpoch.h:126
casacore::MCEpoch::TDT_TCG
@ TDT_TCG
Definition MCEpoch.h:132
casacore::MCEpoch::UT1_GAST
@ UT1_GAST
Definition MCEpoch.h:121
casacore::MCEpoch::TDB_TDT
@ TDB_TDT
Definition MCEpoch.h:131
casacore::MCEpoch::TCG_TDT
@ TCG_TDT
Definition MCEpoch.h:133
casacore::MCEpoch::GAST_UT1
@ GAST_UT1
Definition MCEpoch.h:120
casacore::MCEpoch::RAZING
@ RAZING
Definition MCEpoch.h:137
casacore::MCEpoch::N_Routes
@ N_Routes
Definition MCEpoch.h:136
casacore::MCEpoch::LMST_GMST1
@ LMST_GMST1
Definition MCEpoch.h:116
casacore::MCEpoch::GMST1_UT1
@ GMST1_UT1
Definition MCEpoch.h:118
casacore::MCEpoch::TAI_UTC
@ TAI_UTC
Definition MCEpoch.h:127
casacore::MCEpoch::LAST_GAST
@ LAST_GAST
Definition MCEpoch.h:114
casacore::MCEpoch::UTC_UT1
@ UTC_UT1
Definition MCEpoch.h:123
casacore::MCEpoch::TDT_TAI
@ TDT_TAI
Definition MCEpoch.h:129
casacore::MCEpoch::doFillState
static void doFillState()
Fill the global state.
casacore::MCEpoch::NUTATTO
Nutation * NUTATTO
Definition MCEpoch.h:150
casacore::MCEpoch::~MCEpoch
~MCEpoch()
casacore::MCEpoch::clearConvert
virtual void clearConvert()
Delete the pointers used in the MeasConvert help structure cache.
casacore::MCEpoch::ToRef_p
static uInt ToRef_p[N_Routes][3]
Transition list.
Definition MCEpoch.h:154
casacore::MCEpoch::MCEpoch
MCEpoch()
Default constructor.
casacore::MConvertBase
Definition MConvertBase.h:144
casacore::MEpoch
Definition MEpoch.h:101
casacore::MEpoch::N_Types
@ N_Types
Number of types.
Definition MEpoch.h:132
casacore::MRBase
Definition MRBase.h:100
casacore::MVEpoch
Definition MVEpoch.h:87
casacore::MeasConvert
Definition MeasConvert.h:143
casacore::MeasValue
Definition MeasValue.h:104
casacore::Nutation
Definition Nutation.h:138
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::uInt
unsigned int uInt
Definition aipstype.h:49