26#ifndef MEASURES_MEASTABLE_H
27#define MEASURES_MEASTABLE_H
30#include <casacore/casa/aips.h>
31#include <casacore/measures/Measures/MeasJPL.h>
32#include <casacore/measures/Measures/MeasTableMul.h>
33#include <casacore/measures/Measures/MeasData.h>
34#include <casacore/measures/Measures/MPosition.h>
35#include <casacore/measures/Measures/MDirection.h>
36#include <casacore/measures/Measures/MFrequency.h>
37#include <casacore/scimath/Functionals/Polynomial.h>
451 const Double coeff[3][6]);
453 const Double coeff[3][6]);
567 static std::vector<Vector<Double>>
dIGRF;
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 std::vector< Vector< Double > > calcVelocityLSRGal()
static std::vector< Polynomial< Double > > calcPosArg()
Calculate Earth and Sun position data.
static const Polynomial< Double > & aber1950Arg(uInt which)
static Double sprime00(Double tt)
s' (IAU2000) in rad (approximate value)
static void initSources()
Source list positions.
static std::vector< Polynomial< Double > > calcPosArgDeriv()
static const Double * mulArg(uInt which)
Generate the which' vector of the nutation series arguments.
static std::vector< Vector< Double > > calcVelocityLGROUP()
static std::vector< Polynomial< Double > > calcFundArg(const Double coeff[6][4])
Calculate fundArg.
static std::once_flag theirPlanetaryInitOnceFlag
Planetary table data.
static void initIGRF()
Initialise list of IGRF data Called using theirIGRFInitOnce.
static const Polynomial< Double > & aber1950ArgDeriv(uInt which)
static const Vector< String > & Observatories()
Get list of all observatories.
static Double ERA00(Double ut1)
Earth Rotation Angle (IAU2000) in rad.
static Vector< MDirection > srcPos
static Double WGS84(uInt which)
Position related routines.
static std::shared_ptr< Matrix< Double > > mulPosEarthXY(Double time, Double epsilon)
Generate the which' vector of the position series multipliers at T, measured in Julian centuries sinc...
static void doInitObservatories()
static Vector< Double > IGRF(Double t)
Earth magnetic field (IGRF) data Get the harmonic terms for specified time (mjd)
static const Double * mulAberSunArg(uInt which)
static Euler polarMotion(Double ut)
Polar motion related routines.
static const Polynomial< Double > & fundArg(uInt which)
Nutation related data.
static RotMatrix calcICRSToJ2000()
static Double dTDB(Double tai)
TCB-TDB (in s) for MJD tai TAI.
static std::shared_ptr< Matrix< Double > > mulSC(Double time, Double epsilon)
Generate the which' vector of the nutation series multipliers at T, measured in Julian centuries sinc...
static const Polynomial< Double > & fundArg2000(uInt which)
static const Polynomial< Double > & aberArg(uInt which)
Aberration related 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 const Double * mulArg2000B(uInt which)
static Double GMUT0(Double gmst1)
UT1 at GMSD gmst1 GMST1.
static void calcPlanetaryConstants(Double cn[MeasTable::N_JPLconst])
static std::shared_ptr< Matrix< Double > > mulSC2000A(Double time, Double epsilon)
static Polynomial< Double > calcUTtoST()
static Vector< Double > Planetary(MeasTable::Types which, Double T)
Planetary (JPL DE) related data.
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 const Double * mulPosEarthZArg(uInt which)
static std::vector< Polynomial< Double > > calcAberArgDeriv()
static Vector< String > lineNams
static std::vector< Vector< Double > > calcVelocityLSR()
static Bool Source(MDirection &obs, const String &nam)
Get position of source nam (False if not present)
static std::vector< Polynomial< Double > > calcAber1950ArgDeriv()
static const Vector< Double > & velocityLSRGal(uInt which)
Velocity of LSR with respect to galactic centre.
static std::shared_ptr< Matrix< Double > > mulAber(Double time, Double epsilon)
Generate the 'which' vector of the aberration series multipliers at T, measured in Julian centuries s...
static Double precRate00(const uInt which)
Precession related data.
static Double dUT1(Double utc)
UT1-UTC (in s) for MJD tai TAI.
static void doInitSources()
static const Vector< Double > & velocityLSR(uInt which)
LSR (dynamical, IAU definition).
static const Polynomial< Double > & posArgDeriv(uInt which)
Precomputed derivative of PosArg.
static std::vector< Polynomial< Double > > calcPlanArg00(const Double coeff[8][2])
static Statics_dUTC calc_dUTC()
static const Double * mulArg2000A(uInt which)
static void precessionCoef2000(Polynomial< Double > result[3])
Generate the precession polynomials for IAU2000 system.
static Vector< MFrequency > linePos
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 Double UTtoST(Double ut1)
Ratio UT1/MST at MJD ut1 UT1.
static const Vector< Double > & velocityLSRK(uInt which)
LSR (kinematical) velocity conversion: 0 gives J2000; 1 gives B1950.
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 std::once_flag theirObsInitOnceFlag
Observatories table data.
static const Double * mulAberArg(uInt which)
Generate the 'which' vector of the aberration series arguments.
static std::vector< Vector< Double > > calcMulSunAber()
static Double Planetary(MeasTable::JPLconst what)
Get the JPL DE constant indicated.
static Double dUTC(Double utc)
Time related routines Note: WARNING given if correction not obtainable
static Polynomial< Double > calcGMUT0()
static std::vector< Vector< Double > > calcAberETerm()
static void initLines()
Rest frequencies.
static const RotMatrix & ICRSToJ2000()
Get the rotation matrix from ICRS to J2000/FK5.
static std::shared_ptr< Matrix< Double > > mulSC1950(Double time, Double epsilon)
static const Polynomial< Double > & fundArg1950(uInt which)
static Vector< String > obsNams
static const Double * mulPlanSC2000A(uInt which)
static MeasTableMulPosSunXY theirMulPosSunXY
static Double diurnalAber(Double radius, Double T)
Diurnal aberration factor.
static std::once_flag theirSrcInitOnceFlag
Sources table data.
static Double GMST00(Double ut1, Double tt)
GMST (IAU2000) including the ERA (IAU2000 Earth Rotation Angle) in rad.
static const RotMatrix & posToRect()
Get the rotation matrix to change position from ecliptic to rectangular for Soma et al.
static std::shared_ptr< Matrix< Double > > mulSC2000B(Double time, Double epsilon)
static const Vector< Double > & mulEarthAber(uInt which)
static Vector< String > antResponsesPath
static std::vector< Vector< Double > > coefIGRF
static const Vector< String > & Lines()
Get list of all frequencies.
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 Polynomial< Double > calcGMST0()
static std::once_flag theirLinesInitOnceFlag
Spectral line table data.
static MeasTableMulPosSunZ theirMulPosSunZ
static Double dTCG(Double tai)
TCG-TT (in s) for MJD tai TAI.
static void initObservatories()
Observatory positions.
static std::vector< Polynomial< Double > > calcFundArg00(const Double coeff[6][5])
static const RotMatrix & galToSupergal()
Get the rotation matrix from galactic to supergalactic.
static std::shared_ptr< Matrix< Double > > mulAber1950(Double time, Double epsilon)
static const RotMatrix & rectToPos()
Get the rotation matrix to change position from rectangular to ecliptic for Soma et al.
static std::vector< Vector< Double > > dIGRF
static Double dTDT(Double ut1)
TDB-TDT (in s) for MJD ut1 UT1.
static Bool Observatory(MPosition &obs, const String &nam)
Get position of observatory nam (False if not present)
static Double dTAI(Double tai=0.0)
TDT-TAI (in s) for MJD tai TAI.
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 std::once_flag theirIGRFInitOnceFlag
IGRF data.
static MeasTableMulSC2000A theirMulSC2000A
static Polynomial< Double > calcGMST00()
static std::once_flag theirPlanetaryConstantsInitOnceFlag
static MeasTableMulAber1950 theirMulAber1950
static std::shared_ptr< Matrix< Double > > mulPosSunZ(Double time, Double epsilon)
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)
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 Polynomial< Double > calcERA00()
static const Vector< Double > & velocityCMB(uInt which)
Velocity of Local Group wrt bary center (F.Ghigo): 308km/s towards l,b = 105,-7.
static RotMatrix calcRectToPos()
Calculate some of the rotation matrices for coordinate conversion.
static MeasTableMulSC theirMulSC
Multipliers for nutation, etc.
MeasTable & operator=(const MeasTable &other)
Copy assign, NOT defined.
static const Double * mulPosEarthXYArg(uInt which)
Generate the which' vector of the position series arguments.
static const Vector< Double > & mulSunAber(uInt which)
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 Polynomial< Double > & aberArgDeriv(uInt which)
static const Double * mulArg1950(uInt which)
static std::shared_ptr< Matrix< Double > > mulPosSunXY(Double time, Double epsilon)
static std::shared_ptr< Matrix< Double > > mulPosEarthZ(Double time, Double epsilon)
static std::vector< Polynomial< Double > > calcAber1950Arg()
static const Double * mulArgEqEqCT2000(uInt which)
Generate the which' vector of the equation of equinoxes (IAU2000) complementary terms series argument...
static Vector< MPosition > obsPos
static Bool useIAU2000()
Selection related data.
static void calcPrecesCoef2000(Polynomial< Double > result[3], const Double coeff[3][6])
static const Double * mulAberEarthArg(uInt which)
static const Polynomial< Double > & posArg(uInt which)
Earth and Sun position related data.
static const Double * mulSCEqEqCT2000(uInt which)
Generate the which' vector of the equation of equinoxes (IAU2000) complementary terms series multipli...
static MeasTableMulSC1950 theirMulSC1950
static std::vector< Vector< Double > > calcVelocityLSRK()
Calculate velocity data.
static void doInitLines()
static Double GMST0(Double ut1)
GMST1 at MJD ut1 UT1.
static MeasTableMulSC2000B theirMulSC2000B
static const Double * mulPlanArg2000A(uInt which)
static std::vector< Polynomial< Double > > calcAberArg()
Calculate aberration data.
static std::vector< Vector< Double > > calcVelocityCMB()
static const Double * mulPosSunZArg(uInt which)
static std::vector< Vector< Double > > calcMulEarthAber()
static const Double * mulPosSunXYArg(uInt which)
static const Double * mulAber1950Arg(uInt which)
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.