29 #ifndef MEASURES_MEASTABLE_H
30 #define MEASURES_MEASTABLE_H
33 #include <casacore/casa/aips.h>
34 #include <casacore/measures/Measures/MeasJPL.h>
35 #include <casacore/measures/Measures/MeasTableMul.h>
36 #include <casacore/measures/Measures/MeasData.h>
37 #include <casacore/measures/Measures/MPosition.h>
38 #include <casacore/measures/Measures/MDirection.h>
39 #include <casacore/measures/Measures/MFrequency.h>
40 #include <casacore/scimath/Functionals/Polynomial.h>
41 #include <casacore/casa/OS/Mutex.h>
453 const Double coeff[3][6]);
455 const Double coeff[3][6]);
569 static std::vector<Vector<Double> >
dIGRF;
Wrapper around std::call_once.
CallOnce: func has one arg.
Referenced counted pointer for constant data.
Class calculating the B1950 aberration multipliers.
Class calculating the standard aberration multipliers.
Class calculating the XY earth position multipliers.
Class calculating the Z earth position multipliers.
Class calculating the XY solar position multipliers.
Class calculating the Z solar position multipliers.
Class calculating the B1950 nutation multipliers.
Class calculating the J2000A nutation multipliers.
Class calculating the J2000B nutation multipliers.
Class calculating the standard nutation multipliers.
static const Double * mulAber1950Arg(uInt which)
static const Vector< Double > & velocityLSRK(uInt which)
LSR (kinematical) velocity conversion: 0 gives J2000; 1 gives B1950.
static std::vector< Polynomial< Double > > calcPosArgDeriv()
static Polynomial< Double > calcGMST0()
static Double sprime00(Double tt)
s' (IAU2000) in rad (approximate value)
static const Double * mulAberSunArg(uInt which)
static void initSources()
Source list positions.
static std::vector< Polynomial< Double > > calcPosArg()
Calculate Earth and Sun position data.
static std::vector< Vector< Double > > calcVelocityLSR()
static const Polynomial< Double > & aber1950ArgDeriv(uInt which)
static void initIGRF()
Initialise list of IGRF data Called using theirIGRFInitOnce.
static Double ERA00(Double ut1)
Earth Rotation Angle (IAU2000) in rad.
static Vector< MDirection > srcPos
static CountedPtr< Matrix< Double > > mulAber(Double time, Double epsilon)
Generate the 'which' vector of the aberration series multipliers at T, measured in Julian centuries s...
static const RotMatrix & posToRect()
Get the rotation matrix to change position from ecliptic to rectangular for Soma et al.
static Double WGS84(uInt which)
Position related routines.
static const Vector< Double > & velocityLSR(uInt which)
LSR (dynamical, IAU definition).
static void doInitObservatories()
static const Polynomial< Double > & fundArg(uInt which)
Nutation related data.
static const Double * mulPosEarthXYArg(uInt which)
Generate the which' vector of the position series arguments.
static std::vector< Vector< Double > > calcMulEarthAber()
static Euler polarMotion(Double ut)
Polar motion related routines.
static Vector< Double > IGRF(Double t)
Earth magnetic field (IGRF) data Get the harmonic terms for specified time (mjd)
static RotMatrix calcICRSToJ2000()
static Double dTDB(Double tai)
TCB-TDB (in s) for MJD tai TAI.
static std::vector< Polynomial< Double > > calcAberArg()
Calculate aberration data.
static std::vector< Vector< Double > > calcVelocityLSRK()
Calculate velocity data.
static Bool Line(MFrequency &obs, const String &nam)
Get frequency of line name (False if not present)
static void calcPrecesCoef(Double T, Polynomial< Double > result[3], const Double coeff[3][6])
The calcNNN() functions are helpers to initialize function scope static variables in the NNN() caller...
static MeasTableMulPosEarthXY theirMulPosEarthXY
static Bool AntennaResponsesPath(String &antRespPath, const String &nam)
Get absolute path to AntennaResponses table of observatory nam.
static std::vector< Vector< Double > > calcAberETerm()
static const Polynomial< Double > & posArgDeriv(uInt which)
Precomputed derivative of PosArg.
static Double GMUT0(Double gmst1)
UT1 at GMSD gmst1 GMST1.
static void calcPlanetaryConstants(Double cn[MeasTable::N_JPLconst])
static CountedPtr< Matrix< Double > > mulSC2000B(Double time, Double epsilon)
static CountedPtr< Matrix< Double > > mulSC1950(Double time, Double epsilon)
static const Double * mulArg2000A(uInt which)
static RotMatrix frameBias00()
Get the frame bias matrix for IAU2000 model.
static Vector< String > srcNams
static void calcPlanetary(MeasJPL::Files *fil)
Calculate planetary data.
static Vector< Double > Planetary(MeasTable::Types which, Double T)
Planetary (JPL DE) related data.
static Vector< String > lineNams
static std::vector< Polynomial< Double > > calcAberArgDeriv()
static Bool Source(MDirection &obs, const String &nam)
Get position of source nam (False if not present)
static Double precRate00(const uInt which)
Precession related data.
static CallOnce0 theirIGRFInitOnce
IGRF data.
static Double dUT1(Double utc)
UT1-UTC (in s) for MJD tai TAI.
static const Vector< Double > & mulSunAber(uInt which)
static const RotMatrix & ICRSToJ2000()
Get the rotation matrix from ICRS to J2000/FK5.
static void doInitSources()
static std::vector< Polynomial< Double > > calcPlanArg00(const Double coeff[8][2])
static const Vector< Double > & velocityCMB(uInt which)
Velocity of Local Group wrt bary center (F.Ghigo): 308km/s towards l,b = 105,-7.
static std::vector< Vector< Double > > calcMulSunAber()
static const Vector< String > & Lines()
Get list of all frequencies.
static Statics_dUTC calc_dUTC()
static CountedPtr< Matrix< Double > > mulPosSunXY(Double time, Double epsilon)
static void precessionCoef2000(Polynomial< Double > result[3])
Generate the precession polynomials for IAU2000 system.
static const Polynomial< Double > & fundArg1950(uInt which)
static std::vector< Polynomial< Double > > calcFundArg(const Double coeff[6][4])
Calculate fundArg.
static Vector< MFrequency > linePos
static CountedPtr< Matrix< Double > > mulPosSunZ(Double time, Double epsilon)
static Double UTtoST(Double ut1)
Ratio UT1/MST at MJD ut1 UT1.
static MeasTableMulAber theirMulAber
static Bool useIAU2000A()
If IAU2000 model, do we use the high precision 2000A model? Note that an Aipsrc::reRead() is not refl...
static const Double * mulSCEqEqCT2000(uInt which)
Generate the which' vector of the equation of equinoxes (IAU2000) complementary terms series multipli...
static CallOnce0 theirSrcInitOnce
Sources table data.
static Double Planetary(MeasTable::JPLconst what)
Get the JPL DE constant indicated.
static const Double * mulPosSunXYArg(uInt which)
static Double dUTC(Double utc)
Time related routines Note: WARNING given if correction not obtainable
static CallOnce0 theirObsInitOnce
Observatories table data.
static CountedPtr< Matrix< Double > > mulAber1950(Double time, Double epsilon)
static CountedPtr< Matrix< Double > > mulSC(Double time, Double epsilon)
Generate the which' vector of the nutation series multipliers at T, measured in Julian centuries sinc...
static void initLines()
Rest frequencies.
static const Vector< Double > & velocityLSRGal(uInt which)
Velocity of LSR with respect to galactic centre.
static const Double * mulPlanSC2000A(uInt which)
static CallOnce0 theirLinesInitOnce
Spectral line table data.
static Vector< String > obsNams
static const Polynomial< Double > & posArg(uInt which)
Earth and Sun position related data.
static const Double * mulPosSunZArg(uInt which)
static const Vector< Double > & velocityLGROUP(uInt which)
Velocity of CMB wrt bary center (F.Ghigo): 369.5km/s towards l,b = 264.4,48.4.
static const Double * mulArg2000B(uInt which)
static const Polynomial< Double > & fundArg2000(uInt which)
static MeasTableMulPosSunXY theirMulPosSunXY
static Double diurnalAber(Double radius, Double T)
Diurnal aberration factor.
static Double GMST00(Double ut1, Double tt)
GMST (IAU2000) including the ERA (IAU2000 Earth Rotation Angle) in rad.
MeasTable & operator=(const MeasTable &other)
Copy assign, NOT defined.
static Polynomial< Double > calcERA00()
static Vector< String > antResponsesPath
static std::vector< Vector< Double > > coefIGRF
static const Double * mulPosEarthZArg(uInt which)
static void precessionCoef1950(Double T, Polynomial< Double > result[3])
Generate the precession polynomials for 1950 system for a fixed Epoch T in the area specified.
static const Vector< String > & Observatories()
Get list of all observatories.
static Polynomial< Double > calcGMUT0()
static CountedPtr< Matrix< Double > > mulPosEarthZ(Double time, Double epsilon)
static MeasTableMulPosSunZ theirMulPosSunZ
static Double dTCG(Double tai)
TCG-TT (in s) for MJD tai TAI.
static void initObservatories()
Observatory positions.
static Polynomial< Double > calcUTtoST()
static const Double * mulArg1950(uInt which)
static std::vector< Vector< Double > > dIGRF
static Double dTDT(Double ut1)
TDB-TDT (in s) for MJD ut1 UT1.
static std::vector< Vector< Double > > calcVelocityLSRGal()
static Bool Observatory(MPosition &obs, const String &nam)
Get position of observatory nam (False if not present)
static const Polynomial< Double > & aberArgDeriv(uInt which)
static Double dTAI(Double tai=0.0)
TDT-TAI (in s) for MJD tai TAI.
static CallOnce theirPlanetaryConstantsInitOnce
static MeasTableMulPosEarthZ theirMulPosEarthZ
static void precessionCoef(Double T, Polynomial< Double > result[3])
Generate the precession calculation polynomials for a fixed Epoch T in the result area specified.
static MeasTableMulSC2000A theirMulSC2000A
static MeasTableMulAber1950 theirMulAber1950
Types
Types to be used in different calls.
@ BARYSOLAR
Solar system barycentre.
@ BARYEARTH
Earth-Moon system barycentre.
@ MERCURY
Planetary information.
@ N_Types
Number of types.
static const Double * mulPlanArg2000A(uInt which)
static const Polynomial< Double > & planetaryArg2000(uInt which)
Get the planetary arguments (L, L', F, D, Om, Me, Ve, E, Ma, Ju Sa, Ur, Ne, pre)
static const Double * mulAberEarthArg(uInt which)
static RotMatrix calcRectToPos()
Calculate some of the rotation matrices for coordinate conversion.
static MeasTableMulSC theirMulSC
Multipliers for nutation, etc.
static const Vector< Double > & AberETerm(uInt which)
Get the E-terms of Aberration correction (0 for position, 1 for velocity)
static const Vector< String > & Sources()
Get list of all sources.
static const Vector< Double > & mulEarthAber(uInt which)
static CountedPtr< Matrix< Double > > mulSC2000A(Double time, Double epsilon)
static std::vector< Polynomial< Double > > calcAber1950Arg()
static Vector< MPosition > obsPos
static CountedPtr< Matrix< Double > > mulPosEarthXY(Double time, Double epsilon)
Generate the which' vector of the position series multipliers at T, measured in Julian centuries sinc...
static Bool useIAU2000()
Selection related data.
static CallOnce theirPlanetaryInitOnce
Planetary table data.
static void calcPrecesCoef2000(Polynomial< Double > result[3], const Double coeff[3][6])
static MeasTableMulSC1950 theirMulSC1950
static std::vector< Vector< Double > > calcVelocityLGROUP()
static void doInitLines()
static const Polynomial< Double > & aberArg(uInt which)
Aberration related data.
static Double GMST0(Double ut1)
GMST1 at MJD ut1 UT1.
static std::vector< Polynomial< Double > > calcFundArg00(const Double coeff[6][5])
static const Polynomial< Double > & aber1950Arg(uInt which)
static std::vector< Polynomial< Double > > calcAber1950ArgDeriv()
static MeasTableMulSC2000B theirMulSC2000B
static const RotMatrix & galToSupergal()
Get the rotation matrix from galactic to supergalactic.
static const Double * mulArgEqEqCT2000(uInt which)
Generate the which' vector of the equation of equinoxes (IAU2000) complementary terms series argument...
static const Double * mulArg(uInt which)
Generate the which' vector of the nutation series arguments.
static const Double * mulAberArg(uInt which)
Generate the 'which' vector of the aberration series arguments.
static Polynomial< Double > calcGMST00()
static std::vector< Vector< Double > > calcVelocityCMB()
static const RotMatrix & rectToPos()
Get the rotation matrix to change position from rectangular to ecliptic for Soma et al.
static Double dPsiEps(uInt which, Double T)
Get nutation angles corrections for UTC T in rad.
JPLconst
Codes for JPL constants: order should be same as in MeasJPL, length less than or equal.
@ RADS
Solar radius in AU.
@ GMS
Solar mass (GM0)/c2 in AU.
@ CAU
Light velocity used in AU/d.
String: the storage and methods of handling collections of characters.
this file contains all the compiler specific defines
TableExprNode time(const TableExprNode &node)
bool Bool
Define the standard types used by Casacore.
Calculate time related conversion data.