Loading...
Searching...
No Matches
MCFrequency.h
Go to the documentation of this file.
//# MCFrequency.h: MFrequency conversion routines
//# Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003
//# 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_MCFREQUENCY_H
#define MEASURES_MCFREQUENCY_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/MFrequency.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class MCFrequency;
class MDoppler;
class MVPosition;
class MVDirection;
class Aberration;
class String;
//# Typedefs
// <summary> MFrequency 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 Frequency
// </etymology>
//
// <synopsis>
// Contains state machinery and caching for actual conversions
// </synopsis>
//
// <example>
// Get the Doppler shift for an oberved HI frequency of 1380 MHz
// <srcblock>
// #include <casacore/measures/Measures.h>
// #include <casacore/measures/Measures/MDoppler.h>
// #include <casacore/measures/Measures/MFrequency.h>
// cout << "Redshift for 1380 MHz: " <<
// MDoppler::Convert( MFrequency( Quantity(1380., "MHz"),
// MFrequency::TOPO).toDoppler(QC::HI),
// MDoppler::Z)() << endl;
// </srcblock>
// </example>
//
// <motivation>
// </motivation>
//
// <todo asof="2003/03/03">
// </todo>
class MCFrequency : public MCBase {
public:
//# Friends
// Conversion of data
friend class MeasConvert<MFrequency>;
//# Constructors
// Default constructor
MCFrequency();
//# Destructor
~MCFrequency();
//# 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 {
LSRD_BARY,
BARY_LSRD,
BARY_GEO,
GEO_TOPO,
GEO_BARY,
TOPO_GEO,
LSRD_GALACTO,
GALACTO_LSRD,
LSRK_BARY,
BARY_LSRK,
BARY_LGROUP,
LGROUP_BARY,
BARY_CMB,
CMB_BARY,
REST_LSRK,
LSRK_REST,
N_Routes };
//# Typedefs
//# Operators
//# General Member Functions
//# Enumerations
//# Cached Data
MVPosition *MVPOS1;
MVDirection *MVDIR1;
Aberration *ABERFROM;
Aberration *ABERTO;
//# State machine data
// Transition list
static uInt ToRef_p[N_Routes][3];
// Transition matrix
static uInt FromTo_p[MFrequency::N_Types][MFrequency::N_Types];
// Object to ensure safe multi-threaded lazy single initialization
static std::once_flag theirInitOnceFlag;
//# Constructors
// Copy constructor (not implemented)
MCFrequency(const MCFrequency &other);
// Assignment (not implemented)
MCFrequency &operator=(const MCFrequency &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 frequency 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(MVFrequency &in,
MRBase &inref,
MRBase &outref,
const MConvertBase &mc);
private:
// Fill the global state. Called using theirInitOnce.
static void doFillState();
};
} //# NAMESPACE CASACORE - END
#endif
casacore::Aberration
Definition Aberration.h:108
casacore::MCBase
Definition MCBase.h:116
casacore::MCFrequency::ToRef_p
static uInt ToRef_p[N_Routes][3]
Transition list.
Definition MCFrequency.h:149
casacore::MCFrequency::initConvert
virtual void initConvert(uInt which, MConvertBase &mc)
Create help structures for Measure conversion routines.
casacore::MCFrequency::operator=
MCFrequency & operator=(const MCFrequency &other)
Assignment (not implemented).
casacore::MCFrequency::MVPOS1
MVPosition * MVPOS1
Definition MCFrequency.h:142
casacore::MCFrequency::getConvert
virtual void getConvert(MConvertBase &mc, const MRBase &inref, const MRBase &outref)
Create conversion function pointer.
casacore::MCFrequency::doFillState
static void doFillState()
Fill the global state.
casacore::MCFrequency::ABERTO
Aberration * ABERTO
Definition MCFrequency.h:145
casacore::MCFrequency::doConvert
virtual void doConvert(MeasValue &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)
Routine to convert frequency from one reference frame to another.
casacore::MCFrequency::theirInitOnceFlag
static std::once_flag theirInitOnceFlag
Object to ensure safe multi-threaded lazy single initialization.
Definition MCFrequency.h:153
casacore::MCFrequency::Routes
Routes
The list of actual routines provided.
Definition MCFrequency.h:114
casacore::MCFrequency::LGROUP_BARY
@ LGROUP_BARY
Definition MCFrequency.h:126
casacore::MCFrequency::N_Routes
@ N_Routes
Definition MCFrequency.h:131
casacore::MCFrequency::REST_LSRK
@ REST_LSRK
Definition MCFrequency.h:129
casacore::MCFrequency::LSRD_BARY
@ LSRD_BARY
Definition MCFrequency.h:115
casacore::MCFrequency::BARY_CMB
@ BARY_CMB
Definition MCFrequency.h:127
casacore::MCFrequency::BARY_GEO
@ BARY_GEO
Definition MCFrequency.h:117
casacore::MCFrequency::BARY_LSRD
@ BARY_LSRD
Definition MCFrequency.h:116
casacore::MCFrequency::LSRD_GALACTO
@ LSRD_GALACTO
Definition MCFrequency.h:121
casacore::MCFrequency::GALACTO_LSRD
@ GALACTO_LSRD
Definition MCFrequency.h:122
casacore::MCFrequency::BARY_LGROUP
@ BARY_LGROUP
Definition MCFrequency.h:125
casacore::MCFrequency::GEO_TOPO
@ GEO_TOPO
Definition MCFrequency.h:118
casacore::MCFrequency::BARY_LSRK
@ BARY_LSRK
Definition MCFrequency.h:124
casacore::MCFrequency::LSRK_REST
@ LSRK_REST
Definition MCFrequency.h:130
casacore::MCFrequency::TOPO_GEO
@ TOPO_GEO
Definition MCFrequency.h:120
casacore::MCFrequency::GEO_BARY
@ GEO_BARY
Definition MCFrequency.h:119
casacore::MCFrequency::LSRK_BARY
@ LSRK_BARY
Definition MCFrequency.h:123
casacore::MCFrequency::CMB_BARY
@ CMB_BARY
Definition MCFrequency.h:128
casacore::MCFrequency::clearConvert
virtual void clearConvert()
Delete the pointers used in the MeasConvert help structure cache.
casacore::MCFrequency::showState
static String showState()
Show the state of the conversion engine (mainly for debugging purposes).
casacore::MCFrequency::MCFrequency
MCFrequency(const MCFrequency &other)
Copy constructor (not implemented).
casacore::MCFrequency::MVDIR1
MVDirection * MVDIR1
Definition MCFrequency.h:143
casacore::MCFrequency::~MCFrequency
~MCFrequency()
casacore::MCFrequency::ABERFROM
Aberration * ABERFROM
Definition MCFrequency.h:144
casacore::MCFrequency::MCFrequency
MCFrequency()
Default constructor.
casacore::MCFrequency::doConvert
void doConvert(MVFrequency &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)
Conversion routine to cater for inheritance question.
casacore::MCFrequency::FromTo_p
static uInt FromTo_p[MFrequency::N_Types][MFrequency::N_Types]
Transition matrix.
Definition MCFrequency.h:151
casacore::MConvertBase
Definition MConvertBase.h:144
casacore::MDoppler
Definition MDoppler.h:131
casacore::MFrequency
Definition MFrequency.h:158
casacore::MFrequency::N_Types
@ N_Types
Definition MFrequency.h:183
casacore::MRBase
Definition MRBase.h:100
casacore::MVDirection
Definition MVDirection.h:105
casacore::MVFrequency
Definition MVFrequency.h:95
casacore::MVPosition
Definition MVPosition.h:111
casacore::MeasConvert
Definition MeasConvert.h:143
casacore::MeasValue
Definition MeasValue.h:104
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