Loading...
Searching...
No Matches
MEpoch.h
Go to the documentation of this file.
//# MEpoch.h: A Measure: instant in time
//# Copyright (C) 1995,1996,1997,1998,1999,2000,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_MEPOCH_H
#define MEASURES_MEPOCH_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/measures/Measures/MeasBase.h>
#include <casacore/measures/Measures/MeasRef.h>
#include <casacore/casa/Quanta/MVEpoch.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class MEpoch;
class MCEpoch;
template <class M> class MeasConvert;
template <class M> class ArrayMeasColumn;
template <class M> class ScalarMeasColumn;
//# Typedefs
// <summary>
// A Measure: instant in time
// </summary>
// <use visibility=export>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasure" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class=Measure>Measure</linkto> class
// </prerequisite>
//
// <etymology>
// Measure and Epoch
// </etymology>
//
// <synopsis>
// MEpoch forms derived Measure class for an instant in time.
// </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>
// #include <casacore/casa/logging/LogIO.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;
// LogIO os(LogOrigin("FluxCalc_SS_JPL_Butler", "readEphem"));
// os << LogIO::DEBUG1 << " at ";
// os.output() << MEpoch::Convert(MEpoch(MVEpoch(Quantity(50237.29, "d")),
// MEpoch::Ref(MEpoch::UTC)),
// MEpoch::Ref(MEpoch::TAI))();
// os << LogIO::POST;
// </srcblock>
// Results in:
// <srcblock>
// TAI for UTC = MJD(50237.29): Epoch: 50237::06:58:06.0000 (on stdout)
// at Epoch: 50237::06:58:06.0000 (in logger)
// </srcblock>
// </example>
//
// <motivation>
// </motivation>
//
// <todo asof="2000/06/15">
// <li>
// </todo>
class MEpoch : public MeasBase<MVEpoch, MeasRef<MEpoch> > {
public:
//# Friends
friend class MeasConvert<MEpoch>;
//# Enumerations
// Types of known MEpochs
// <note role=caution> The order defines the order in the translation matrix
// in the MCEpoch class. Do not change the order without
// changing the array. Additions should be made before N_types, and
// an additional row and column should be coded in FromTo (MCEpoch), and
// in showType().</note>
enum Types {
// Local Apparent Sidereal Time
LAST,
// Local Mean Sidereal Time
LMST,
// Greenwich Mean ST1
GMST1,
// Greenwich Apparent ST
GAST,
UT1,
UT2,
UTC,
TAI,
TDT,
TCG,
TDB,
TCB,
// Number of types
N_Types,
// Reduce result to integer days
RAZE = 32,
// All extra bits
EXTRA = RAZE,
// Synonyms
IAT=TAI,
GMST=GMST1,
TT=TDT,
UT=UT1,
ET=TT,
// Default
DEFAULT=UTC
};
//# Typedefs
// Measure value container for this class (i.e. MEpoch::MVType)
typedef MVEpoch MVType;
// Measure conversion routines for this class (i.e. MEpoch::MCType)
typedef MCEpoch MCType;
// Measure reference (i.e. MEpoch::Ref)
typedef MeasRef<MEpoch> Ref;
// Measure Convert (i.e. MEpoch::Convert)
typedef MeasConvert<MEpoch> Convert;
// Measure table Columns (e.g., MEpoch::ScalarColumn)
typedef ScalarMeasColumn<MEpoch> ScalarColumn;
typedef ArrayMeasColumn<MEpoch> ArrayColumn;
//# Constructors
// <note role=tip> In the following constructors and other functions, all
// <em>MeasRef</em> can be replaced with simple <src>Measure::TYPE</src>
// where no offsets or frames are needed in the reference. </note>
// Default constructor; generates an instant at MJD 0 UTC
MEpoch();
// Create from data and reference
// <group>
MEpoch(const MVEpoch &dt);
MEpoch(const MVEpoch &dt, const MEpoch::Ref &rf);
MEpoch(const MVEpoch &dt, MEpoch::Types rf);
MEpoch(const Quantity &dt);
MEpoch(const Quantity &dt, const MEpoch::Ref &rf);
MEpoch(const Quantity &dt, MEpoch::Types rf);
MEpoch(const Measure *dt);
MEpoch(const MeasValue *dt);
// </group>
//# Destructor
virtual ~MEpoch();
//# Operators
//# General Member Functions
// Tell me your type
// <group>
virtual const String &tellMe() const;
static const String &showMe();
static void assure(const Measure &in);
// </group>
// Translate reference code. The uInt version has a check for valid codes
// (i.e. it is a safe cast).
// <thrown>
// <li> AipsError in the uInt interface if illegal code given
// </thrown>
// <group>
static MEpoch::Types castType(uInt tp);
static const String &showType(MEpoch::Types tp);
static const String &showType(uInt tp);
// </group>
// Translate string to reference code
// <group>
static Bool getType(MEpoch::Types &tp, const String &in);
Bool giveMe(MEpoch::Ref &mr, const String &in);
// </group>
// Set the offset in the reference (False if non-matching Measure)
virtual Bool setOffset(const Measure &in);
// Set the reference type to the specified String. False if illegal
// string, reference set to DEFAULT.
virtual Bool setRefString(const String &in);
// Get the default reference type
virtual const String &getDefaultType() const;
// Get a list of all known reference codes. nall returns the number in list,
// nextra the number of specials (like planets) that should be at
// end of list). typ returns the list of corresponding types.
// <group>
virtual const String* allTypes(Int &nall, Int &nextra,
const uInt *&typ) const;
static const String* allMyTypes(Int &nall, Int &nextra,
const uInt *&typ);
// </group>
// Check if all internal tables of types (both enum and String) are
// complete and correct. This function is called automatically if and when
// necessary.
// <thrown>
// <li> AipsError if a (programming) error in the types.
// </thrown>
// <group>
virtual void checkTypes() const;
static void checkMyTypes();
// </group>
// Get the reference type (for records, including codes like R_)
virtual String getRefString() const;
// Get time in specified units
Quantity get(const Unit &inunit) const;
// Create copy
// <group>
virtual Measure *clone() const;
// </group>
private:
//# Enumerations
//# Data
//# Member functions
};
} //# NAMESPACE CASACORE - END
#endif
casacore::ArrayMeasColumn
Definition ArrayMeasColumn.h:169
casacore::MCEpoch
Definition MCEpoch.h:88
casacore::MEpoch::setRefString
virtual Bool setRefString(const String &in)
Set the reference type to the specified String.
casacore::MEpoch::MEpoch
MEpoch(const MVEpoch &dt)
Create from data and reference.
casacore::MEpoch::ArrayColumn
ArrayMeasColumn< MEpoch > ArrayColumn
Definition MEpoch.h:158
casacore::MEpoch::MEpoch
MEpoch(const Measure *dt)
casacore::MEpoch::checkMyTypes
static void checkMyTypes()
casacore::MEpoch::giveMe
Bool giveMe(MEpoch::Ref &mr, const String &in)
casacore::MEpoch::Types
Types
Types of known MEpochs Caution: The order defines the order in the translation matrix in the MCEpoch...
Definition MEpoch.h:114
casacore::MEpoch::ET
@ ET
Definition MEpoch.h:142
casacore::MEpoch::LMST
@ LMST
Local Mean Sidereal Time.
Definition MEpoch.h:118
casacore::MEpoch::UT2
@ UT2
Definition MEpoch.h:124
casacore::MEpoch::RAZE
@ RAZE
Reduce result to integer days.
Definition MEpoch.h:134
casacore::MEpoch::GAST
@ GAST
Greenwich Apparent ST.
Definition MEpoch.h:122
casacore::MEpoch::N_Types
@ N_Types
Number of types.
Definition MEpoch.h:132
casacore::MEpoch::TDT
@ TDT
Definition MEpoch.h:127
casacore::MEpoch::TAI
@ TAI
Definition MEpoch.h:126
casacore::MEpoch::GMST
@ GMST
Definition MEpoch.h:139
casacore::MEpoch::UT
@ UT
Definition MEpoch.h:141
casacore::MEpoch::TCB
@ TCB
Definition MEpoch.h:130
casacore::MEpoch::GMST1
@ GMST1
Greenwich Mean ST1.
Definition MEpoch.h:120
casacore::MEpoch::IAT
@ IAT
Synonyms.
Definition MEpoch.h:138
casacore::MEpoch::EXTRA
@ EXTRA
All extra bits.
Definition MEpoch.h:136
casacore::MEpoch::UT1
@ UT1
Definition MEpoch.h:123
casacore::MEpoch::TCG
@ TCG
Definition MEpoch.h:128
casacore::MEpoch::LAST
@ LAST
Local Apparent Sidereal Time.
Definition MEpoch.h:116
casacore::MEpoch::DEFAULT
@ DEFAULT
Default.
Definition MEpoch.h:144
casacore::MEpoch::UTC
@ UTC
Definition MEpoch.h:125
casacore::MEpoch::TT
@ TT
Definition MEpoch.h:140
casacore::MEpoch::TDB
@ TDB
Definition MEpoch.h:129
casacore::MEpoch::MEpoch
MEpoch(const Quantity &dt, MEpoch::Types rf)
casacore::MEpoch::get
Quantity get(const Unit &inunit) const
Get time in specified units.
casacore::MEpoch::tellMe
virtual const String & tellMe() const
Tell me your type.
casacore::MEpoch::allMyTypes
static const String * allMyTypes(Int &nall, Int &nextra, const uInt *&typ)
casacore::MEpoch::getDefaultType
virtual const String & getDefaultType() const
Get the default reference type.
casacore::MEpoch::MEpoch
MEpoch(const Quantity &dt)
casacore::MEpoch::showType
static const String & showType(uInt tp)
casacore::MEpoch::Ref
MeasRef< MEpoch > Ref
Measure reference (i.e.
Definition MEpoch.h:153
casacore::MEpoch::~MEpoch
virtual ~MEpoch()
casacore::MEpoch::MEpoch
MEpoch(const MeasValue *dt)
casacore::MEpoch::castType
static MEpoch::Types castType(uInt tp)
Translate reference code.
casacore::MEpoch::Convert
MeasConvert< MEpoch > Convert
Measure Convert (i.e.
Definition MEpoch.h:155
casacore::MEpoch::MEpoch
MEpoch()
Tip: In the following constructors and other functions, all MeasRef can be replaced with simple Measu...
casacore::MEpoch::checkTypes
virtual void checkTypes() const
Check if all internal tables of types (both enum and String) are complete and correct.
casacore::MEpoch::assure
static void assure(const Measure &in)
casacore::MEpoch::ScalarColumn
ScalarMeasColumn< MEpoch > ScalarColumn
Measure table Columns (e.g., MEpoch::ScalarColumn).
Definition MEpoch.h:157
casacore::MEpoch::allTypes
virtual const String * allTypes(Int &nall, Int &nextra, const uInt *&typ) const
Get a list of all known reference codes.
casacore::MEpoch::MEpoch
MEpoch(const Quantity &dt, const MEpoch::Ref &rf)
casacore::MEpoch::getType
static Bool getType(MEpoch::Types &tp, const String &in)
Translate string to reference code.
casacore::MEpoch::setOffset
virtual Bool setOffset(const Measure &in)
Set the offset in the reference (False if non-matching Measure).
casacore::MEpoch::showMe
static const String & showMe()
casacore::MEpoch::clone
virtual Measure * clone() const
Create copy.
casacore::MEpoch::getRefString
virtual String getRefString() const
Get the reference type (for records, including codes like R_).
casacore::MEpoch::MVType
MVEpoch MVType
Measure value container for this class (i.e.
Definition MEpoch.h:149
casacore::MEpoch::MEpoch
MEpoch(const MVEpoch &dt, const MEpoch::Ref &rf)
casacore::MEpoch::MCType
MCEpoch MCType
Measure conversion routines for this class (i.e.
Definition MEpoch.h:151
casacore::MEpoch::showType
static const String & showType(MEpoch::Types tp)
casacore::MEpoch::MEpoch
MEpoch(const MVEpoch &dt, MEpoch::Types rf)
casacore::MVEpoch
Definition MVEpoch.h:87
casacore::MeasBase< MVEpoch, MeasRef< MEpoch > >::MeasBase
MeasBase()
casacore::MeasConvert
Definition MeasConvert.h:143
casacore::MeasRef
Definition MeasRef.h:80
casacore::MeasValue
Definition MeasValue.h:104
casacore::Measure
Definition Measure.h:232
casacore::ScalarMeasColumn
Definition ScalarMeasColumn.h:141
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::Unit
Definition Unit.h:187
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::Quantity
Quantum< Double > Quantity
Definition Quantum.h:39