casacore
MeasTable.h
Go to the documentation of this file.
1 //# MeasTable.h: MeasTable provides Measure computing database data
2 //# Copyright (C) 1995-1999,2000-2004
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //#
27 //# $Id$
28 
29 #ifndef MEASURES_MEASTABLE_H
30 #define MEASURES_MEASTABLE_H
31 
32 //# Includes
33 #include <casacore/casa/aips.h>
34 #include <casacore/measures/Measures/MeasTableMul.h>
35 #include <casacore/measures/Measures/MeasData.h>
36 #include <casacore/measures/Measures/MPosition.h>
37 #include <casacore/measures/Measures/MDirection.h>
38 #include <casacore/measures/Measures/MFrequency.h>
39 #include <casacore/scimath/Functionals/Polynomial.h>
40 #include <casacore/casa/OS/Mutex.h>
41 #include <vector>
42 
43 namespace casacore { //# NAMESPACE CASACORE - BEGIN
44 
45 //# Forward Declarations
46 class RotMatrix;
47 class Euler;
48 
49 // <summary>
50 // MeasTable provides Measure computing database data
51 // </summary>
52 
53 // <use visibility=local>
54 
55 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasMath" demos="">
56 // </reviewed>
57 
58 // <prerequisite>
59 // <li> <linkto class=Measure>Measure</linkto> class
60 // <li> <linkto class=MeasData>MeasData</linkto> class for constant data
61 // <li> <linkto class=Aipsrc>Aipsrc</linkto> class for data placement
62 // </prerequisite>
63 //
64 // <etymology>
65 // MeasTable from Measure and Table
66 // </etymology>
67 //
68 // <synopsis>
69 // MeasTable contains the database interface for all
70 // data necessary for precession, nutation and other
71 // <linkto class=Measure>Measure</linkto> related calculations.<br>
72 // All data are obtained by calls to a method. E.g.
73 // <src> fundArg(1) </src> will provide the first fundamental argument for
74 // nutation calculations, i.e. 'l'. <br>
75 // This class contains no constructors or destructors, only static
76 // methods and (static) constants.
77 // <br> References:<br> Explanatory supplements to the Astronomical Almanac
78 // <br> C. Ron and J. Vondrak, Bull. Astron. Inst. Czechosl. 37, p96, 1986
79 // <br> M. Soma, Th. Hirayama and H. Kinoshita, Celest. Mech. 41, p389, 1988
80 // <br> V.S. Gubanov, Astron. Zh. 49, p1112, 1972
81 //
82 // Where strings are passed in as arguments (observatory names, sources), they
83 // will be case insensitive, and minimum match.
84 // </synopsis>
85 //
86 // <example>
87 // Usage examples can be found in <linkto class=Precession>Precession</linkto>
88 // </example>
89 //
90 // <motivation>
91 // To create a clean interface between the actual calculations and the
92 // methods to obtain the parameters for these calculations. Note that the
93 // tables are in general in the format and units found in the literature. This
94 // is to be able to easy check and change them. However, in the future
95 // re-arrangement could produce faster and more compact code.
96 // </motivation>
97 //
98 // <todo asof="1997/09/02">
99 // <li> more database interfaces, rather than constants
100 // </todo>
101 
102 class MeasTable {
103 
104 public:
105 
106  //# Enumerations
107  // Types to be used in different calls
108  enum Types {
109  // Planetary information
110  MERCURY = 1,
111  VENUS = 2,
112  EARTH = 3,
113  MARS = 4,
114  JUPITER = 5,
115  SATURN = 6,
116  URANUS = 7,
117  NEPTUNE = 8,
118  PLUTO = 9,
119  MOON = 10,
120  SUN = 11,
121  // Solar system barycentre
122  BARYSOLAR = 12,
123  // Earth-Moon system barycentre
124  BARYEARTH = 13,
125  // Nutations
126  NUTATION = 14,
127  // Librations
128  LIBRATION = 15,
129  // Number of types
131 
132  // Codes for JPL constants: order should be same as in MeasJPL, length less
133  // than or equal
134  enum JPLconst {
135  // Light velocity used in AU/d
137  // Solar mass (GM0)/c<sup>2</sup> in AU
139  // AU in km
140  AU,
141  // Solar radius in AU
143  // # of codes
145 
146  //# General Member Functions
147  // Selection related data
148  // <group>
149  // Are the IAU2000 precession/nutation to be used or not (IAU1984)
150  static Bool useIAU2000();
151  // If IAU2000 model, do we use the high precision 2000A model?
152  static Bool useIAU2000A();
153  // </group>
154 
155  // Precession related data
156  // <group>
157  // Get the precession-rate part of the IAU2000 precession-nutation models
158  // (which 0=dpsi (long) and 1=deps (obliquity) and 2 =0)
159  static Double precRate00(const uInt which);
160 
161  // Get the frame bias matrix for IAU2000 model.
162  static RotMatrix frameBias00();
163 
164  // Generate the precession calculation polynomials for a fixed Epoch T
165  // in the result area specified.
166  // T is given in Julian centuries since J2000.0.
167  static void
169 
170  // Generate the precession polynomials for IAU2000 system.
171  static void
173 
174  // Generate the precession polynomials for 1950 system for a fixed Epoch T
175  // in the area specified. T is given in Tropical centuries since B1850.0
176  static void
178  // </group>
179 
180  // Nutation related data
181  // <group>
182  // Generate the polynomial for the fundamental arguments (eps, l, l',
183  // F, D, omega) as a function of Julian centuries
184  // <group>
185  static const Polynomial<Double> &fundArg(uInt which);
186  static const Polynomial<Double> &fundArg1950(uInt which);
187  static const Polynomial<Double> &fundArg2000(uInt which);
188  // </group>
189 
190  // Get the planetary arguments (L, L', F, D, Om, Me, Ve, E, Ma, Ju Sa,
191  // Ur, Ne, pre)
192  static const Polynomial<Double> &planetaryArg2000(uInt which);
193 
194  // Generate the which' vector of the nutation series arguments
195  // <group>
196  static const Double* mulArg(uInt which);
197  static const Double* mulArg1950(uInt which);
198  static const Double* mulArg2000A(uInt which);
199  static const Double* mulArg2000B(uInt which);
200  static const Double* mulPlanArg2000A(uInt which);
201  // </group>
202 
203  // Generate the which' vector of the equation of equinoxes (IAU2000)
204  // complementary terms series arguments
205  static const Double* mulArgEqEqCT2000(uInt which);
206 
207  // Generate the which' vector of the nutation series multipliers
208  // at T, measured in Julian centuries since J2000.0, respectively B1900.0
209  // <group>
210  static CountedPtr<Matrix<Double> > mulSC(Double time, Double epsilon);
214  static const Double* mulPlanSC2000A(uInt which);
215  // </group>
216 
217  // Generate the which' vector of the equation of equinoxes (IAU2000)
218  // complementary terms series multipliers
219  // at T, measured in Julian centuries since J2000.0, respectively B1900.0
220  static const Double* mulSCEqEqCT2000(uInt which);
221 
222  // Get nutation angles corrections for UTC T in rad.
223  // which = 0 : dPsi as given by IERS for IAU nutation theory;
224  // = 1: dEps as same.
225  static Double dPsiEps(uInt which, Double T);
226  // </group>
227 
228  // Planetary (JPL DE) related data
229  // <group>
230  // Get the position (AU or rad) and velocity (AU/d or rad/d) for specified
231  // code at TDB T. The ephemeris to use (now DE200 or DE405) can be selected
232  // with the 'measures.jpl.ephemeris' aipsrc resource (default DE200).
234  Double T);
235  // Get the JPL DE constant indicated
236  static Double Planetary(MeasTable::JPLconst what);
237  // </group>
238 
239  // Observatory positions
240  // <group>
241  // Initialise list of all observatories from Observatories table
242  static void initObservatories();
243  // Get list of all observatories
244  static const Vector<String> &Observatories();
245  // Get position of observatory nam (False if not present)
246  static Bool Observatory(MPosition &obs, const String &nam);
247 
248  // Get _absolute_ path to AntennaResponses table of observatory
249  // <src>nam</src>. It returns False if no _valid_ path can be found or the
250  // observatory is unknown. If the observatory is known, antRespPath will
251  // be set to the entry in the AntennaResponses column of the
252  // Observatories table even if it doesn't describe a valid path; if the
253  // entry is not an absolute path, the data directory name will be
254  // prepended and validity verified.
255  static Bool AntennaResponsesPath(String &antRespPath, const String &nam);
256  // </group>
257 
258  // Source list positions
259  // <group>
260  // Initialise list of all source from Sources table
261  static void initSources();
262  // Get list of all sources
263  static const Vector<String> &Sources();
264  // Get position of source <src>nam</src> (False if not present)
265  static Bool Source(MDirection &obs, const String &nam);
266  // </group>
267 
268  // Rest frequencies
269  // <group>
270  // Initialise list from internal Table for now
271  static void initLines();
272  // Get list of all frequencies
273  static const Vector<String> &Lines();
274  // Get frequency of line name (False if not present)
275  static Bool Line(MFrequency &obs, const String &nam);
276  // </group>
277 
278  // Initialise list of IGRF data
279  static void initIGRF();
280  // Earth magnetic field (IGRF) data
281  // Get the harmonic terms for specified time (mjd)
282  static Vector<Double> IGRF(Double t);
283 
284  // Aberration related data
285  // <group>
286  // Generate the polynomial for the fundamental arguments (l1-l8, w, D, l,
287  // l', F) for the Ron/Vondrak aberration calculations as a function of
288  // Julian centuries(J2000), or the comparable ones for the Gubanov expansion
289  // (B1950).
290  // <group>
291  static const Polynomial<Double> &aberArg(uInt which);
292  static const Polynomial<Double> &aberArgDeriv(uInt which);
293  static const Polynomial<Double> &aber1950Arg(uInt which);
294  static const Polynomial<Double> &aber1950ArgDeriv(uInt which);
295  // </group>
296 
297  // Generate the 'which' vector of the aberration series arguments
298  // <group>
299  static const Double* mulAberArg(uInt which);
300  static const Double* mulAber1950Arg(uInt which);
301  static const Double* mulAberSunArg(uInt which);
302  static const Double* mulAberEarthArg(uInt which);
303  // </group>
304 
305  // Generate the 'which' vector of the aberration series multipliers
306  // at T, measured in Julian centuries since J2000.0 (or J1900.0, yes,
307  // J1900.0, for B1950).
308  // <group>
311  static const Vector<Double> &mulSunAber(uInt which);
312  static const Vector<Double> &mulEarthAber(uInt which);
313  // </group>
314 
315  // Get the E-terms of Aberration correction (0 for position, 1 for velocity)
316  // <group>
317  static const Vector<Double> &AberETerm(uInt which);
318  // </group>
319 
320  // </group>
321 
322  // Diurnal aberration factor
323  static Double diurnalAber(Double radius, Double T);
324 
325  // LSR (kinematical) velocity conversion: 0 gives J2000; 1 gives B1950.
326  // In both cases a velocity of 20.0 km/s is assumed, and a B1900 RA/Dec
327  // direction of (270,30) degrees. This value has been defined between
328  // the groups doing HI radio work in the mid 1950s.
329  static const Vector<Double> &velocityLSRK(uInt which);
330  // LSR (dynamical, IAU definition). Velocity (9,12,7) km/s in galactic
331  // coordinates. Or 16.552945 towards l,b = 53.13, +25.02 deg.
332  // 0 gives J2000, 1 gives B1950 velocities.
333  static const Vector<Double> &velocityLSR(uInt which);
334  // Velocity of LSR with respect to galactic centre. 220 km/s in direction
335  // l,b = 270, +0 deg. 0 returns J2000, 1 B1950
336  static const Vector<Double> &velocityLSRGal(uInt which);
337  // Velocity of Local Group wrt bary center (F.Ghigo): 308km/s towards
338  // l,b = 105,-7. 0 for J2000, 1 for B1950
339  static const Vector<Double> &velocityCMB(uInt which);
340  // Velocity of CMB wrt bary center (F.Ghigo): 369.5km/s towards
341  // l,b = 264.4,48.4. 0 for J2000, 1 for B1950
342 
343  static const Vector<Double> &velocityLGROUP(uInt which);
344  // Earth and Sun position related data
345  // <group>
346  // Fundamental arguments for Soma et al. methods
347  // <group>
348  static const Polynomial<Double> &posArg(uInt which);
349  // Precomputed derivative of PosArg
350  static const Polynomial<Double> &posArgDeriv(uInt which);
351  // </group>
352  // Generate the which' vector of the position series arguments
353  // <group>
354  static const Double* mulPosEarthXYArg(uInt which);
355  static const Double* mulPosEarthZArg(uInt which);
356  static const Double* mulPosSunXYArg(uInt which);
357  static const Double* mulPosSunZArg(uInt which);
358  // </group>
359 
360  // Generate the which' vector of the position series multipliers
361  // at T, measured in Julian centuries since J2000.0
362  // <group>
367  // </group>
368  // Get the rotation matrix to change position from ecliptic to rectangular
369  // for Soma et al. analytical expression
370  static const RotMatrix &posToRect();
371  // Get the rotation matrix to change position from rectangular to ecliptic
372  // for Soma et al. analytical expression
373  static const RotMatrix &rectToPos();
374  // Get the rotation matrix from galactic to supergalactic.
375  // Based on De Vaucouleurs 1976: Pole at 47.37/6.32 deg; 137.37 l0
376  // Euler angles: 90, 83.68, 47.37 degrees
377  static const RotMatrix &galToSupergal();
378  // Get the rotation matrix from ICRS to J2000/FK5.
379  // Based on the IAU 2000 resolutions (the bias matrix)
380  static const RotMatrix &ICRSToJ2000();
381  // </group>
382 
383  // Position related routines
384  // <group>
385  // Equatorial radius (0) and flattening(1) of geodetic reference spheroids
386  static Double WGS84(uInt which);
387  // </group>
388 
389  // Polar motion related routines
390  // <group>
391  // Get the polar motion (-x,-y,0)(2,1,3) angles at the given epoch
392  static Euler polarMotion(Double ut);
393  // </group>
394 
395  // Time related routines
396  // <note>
397  // WARNING given if correction not obtainable
398  // </note>
399  // <thrown>
400  // <li> AipsError if table seems to be corrupted
401  // </thrown>
402  // <group>
403  // Give TAI-UTC (in s) for MJD utc UTC
404  static Double dUTC(Double utc);
405  // UT1-UTC (in s) for MJD tai TAI
406  static Double dUT1(Double utc);
407  // TDT-TAI (in s) for MJD tai TAI. Note this is equal to TT2000-TAI
408  static Double dTAI(Double tai=0.0);
409  // TDB-TDT (in s) for MJD ut1 UT1
410  static Double dTDT(Double ut1);
411  // TCB-TDB (in s) for MJD tai TAI
412  static Double dTDB(Double tai);
413  // TCG-TT (in s) for MJD tai TAI
414  static Double dTCG(Double tai);
415  // GMST1 at MJD ut1 UT1
416  static Double GMST0(Double ut1);
417  // GMST (IAU2000) including the ERA (IAU2000 Earth Rotation Angle) in rad
418  static Double GMST00(Double ut1, Double tt);
419  // Earth Rotation Angle (IAU2000) in rad
420  static Double ERA00(Double ut1);
421  // s' (IAU2000) in rad (approximate value)
422  static Double sprime00(Double tt);
423  // UT1 at GMSD gmst1 GMST1
424  static Double GMUT0(Double gmst1);
425  // Ratio UT1/MST at MJD ut1 UT1
426  static Double UTtoST(Double ut1);
427  // </group>
428 
429 private:
430 
431  // Copy assign, NOT defined
432  MeasTable &operator=(const MeasTable &other);
433 
434  //# General member functions
435 
436  static void doInitObservatories (void*);
437  static void doInitLines (void*);
438  static void doInitSources (void*);
439  static void doInitIGRF (void*);
440 
441  // Calculate precessionCoef
442  // <group>
443  static void calcPrecesCoef(Double T, Polynomial<Double> result[3],
444  const Double coeff[3][6]);
445  static void calcPrecesCoef2000(Polynomial<Double> result[3],
446  const Double coeff[3][6]);
447  // </group>
448 
449  // Calculate fundArg
450  // <group>
451  static void calcFundArg(volatile Bool &need, Polynomial<Double> result[6],
452  const Double coeff[6][4]);
453  static void calcFundArg00(volatile Bool &need, Polynomial<Double> result[6],
454  const Double coeff[6][5]);
455  static void calcPlanArg00(volatile Bool &need,
456  Polynomial<Double> result[14],
457  const Double coeff[8][2]);
458  // </group>
459 
460 
461  //# Data
462  // Multipliers for nutation, etc.
463  // <group>
474  // </group>
475  // Observatories table data
476  // <group>
481  // </group>
482  // Spectral line table data
483  // <group>
487  // </group>
488  // Sources table data
489  // <group>
493  // </group>
494  // IGRF data
495  // <group>
499  static Double lastIGRF;
501  static Double timeIGRF;
502  static std::vector<Vector<Double> > coefIGRF;
503  static std::vector<Vector<Double> > dIGRF;
504  // </group>
505  // Aipsrc registration (for speed) of use of iau2000 and if so
506  // the 2000a version
507  // <group>
510  // </group>
511  // Mutex for thread-safety.
513 };
514 
515 
516 } //# NAMESPACE CASACORE - END
517 
518 #endif
static MeasTableMulPosSunZ theirMulPosSunZ
Definition: MeasTable.h:471
static Double dTDT(Double ut1)
TDB-TDT (in s) for MJD ut1 UT1.
A Measure: astronomical direction.
Definition: MDirection.h:174
static const Polynomial< Double > & fundArg1950(uInt which)
static void calcFundArg(volatile Bool &need, Polynomial< Double > result[6], const Double coeff[6][4])
Calculate fundArg.
static const Double * mulAber1950Arg(uInt which)
static const Vector< Double > & velocityLSRGal(uInt which)
Velocity of LSR with respect to galactic centre.
A Measure: position on Earth.
Definition: MPosition.h:79
static Vector< MFrequency > linePos
Definition: MeasTable.h:486
static const Vector< Double > & velocityLSR(uInt which)
LSR (dynamical, IAU definition).
static const Double * mulAberArg(uInt which)
Generate the &#39;which&#39; vector of the aberration series arguments.
static const Polynomial< Double > & planetaryArg2000(uInt which)
Get the planetary arguments (L, L&#39;, F, D, Om, Me, Ve, E, Ma, Ju Sa, Ur, Ne, pre)
static const Polynomial< Double > & posArgDeriv(uInt which)
Precomputed derivative of PosArg.
static uInt iau2000a_reg
Definition: MeasTable.h:509
static const Polynomial< Double > & aber1950ArgDeriv(uInt which)
static const Polynomial< Double > & aberArgDeriv(uInt which)
static Vector< String > antResponsesPath
Definition: MeasTable.h:480
TableExprNode time(const TableExprNode &node)
Definition: ExprNode.h:1744
static MeasTableMulPosSunXY theirMulPosSunXY
Definition: MeasTable.h:470
static const Vector< Double > & mulEarthAber(uInt which)
static const Double * mulPlanArg2000A(uInt which)
static MeasTableMulAber theirMulAber
Definition: MeasTable.h:468
static MutexedInit igrfMutexedInit
IGRF data.
Definition: MeasTable.h:496
static Vector< String > srcNams
Definition: MeasTable.h:491
static const Double * mulAberSunArg(uInt which)
static const RotMatrix & galToSupergal()
Get the rotation matrix from galactic to supergalactic.
static Double UTtoST(Double ut1)
Ratio UT1/MST at MJD ut1 UT1.
static const Polynomial< Double > & fundArg2000(uInt which)
Class calculating the B1950 aberration multipliers.
Definition: MeasTableMul.h:220
static Double WGS84(uInt which)
Position related routines.
Class calculating the B1950 nutation multipliers.
Definition: MeasTableMul.h:143
static CountedPtr< Matrix< Double > > mulAber1950(Double time, Double epsilon)
Class calculating the J2000B nutation multipliers.
Definition: MeasTableMul.h:189
static Double diurnalAber(Double radius, Double T)
Diurnal aberration factor.
static CountedPtr< Matrix< Double > > mulSC2000B(Double time, Double epsilon)
static void initObservatories()
Observatory positions.
static MeasTableMulSC2000B theirMulSC2000B
Definition: MeasTable.h:467
static const Polynomial< Double > & aber1950Arg(uInt which)
static const Polynomial< Double > & aberArg(uInt which)
Aberration related data.
static Bool AntennaResponsesPath(String &antRespPath, const String &nam)
Get absolute path to AntennaResponses table of observatory nam.
static void calcPlanArg00(volatile Bool &need, Polynomial< Double > result[14], const Double coeff[8][2])
Light velocity used in AU/d.
Definition: MeasTable.h:136
static void precessionCoef2000(Polynomial< Double > result[3])
Generate the precession polynomials for IAU2000 system.
static const Double * mulPosSunZArg(uInt which)
static void calcPrecesCoef2000(Polynomial< Double > result[3], const Double coeff[3][6])
static void doInitIGRF(void *)
Thread-safe initialization of global variables.
Definition: Mutex.h:161
static const Vector< String > & Observatories()
Get list of all observatories.
A 3x3 rotation matrix.
Definition: RotMatrix.h:85
static MeasTableMulSC theirMulSC
Multipliers for nutation, etc.
Definition: MeasTable.h:464
static Double ERA00(Double ut1)
Earth Rotation Angle (IAU2000) in rad.
static Euler polarMotion(Double ut)
Polar motion related routines.
static Bool useIAU2000A()
If IAU2000 model, do we use the high precision 2000A model?
static const Double * mulArgEqEqCT2000(uInt which)
Generate the which&#39; vector of the equation of equinoxes (IAU2000) complementary terms series argument...
static Double GMST00(Double ut1, Double tt)
GMST (IAU2000) including the ERA (IAU2000 Earth Rotation Angle) in rad.
Class calculating the XY earth position multipliers.
Definition: MeasTableMul.h:267
Class calculating the Z solar position multipliers.
Definition: MeasTableMul.h:253
static Double dtimeIGRF
Definition: MeasTable.h:497
A Measure: wave characteristics.
Definition: MFrequency.h:161
Types
Types to be used in different calls.
Definition: MeasTable.h:108
static uInt iau2000_reg
Aipsrc registration (for speed) of use of iau2000 and if so the 2000a version.
Definition: MeasTable.h:508
Class calculating the J2000A nutation multipliers.
Definition: MeasTableMul.h:175
static MeasTableMulAber1950 theirMulAber1950
Definition: MeasTable.h:469
static RotMatrix frameBias00()
Get the frame bias matrix for IAU2000 model.
Class calculating the XY solar position multipliers.
Definition: MeasTableMul.h:240
static Bool useIAU2000()
Selection related data.
static CountedPtr< Matrix< Double > > mulPosEarthXY(Double time, Double epsilon)
Generate the which&#39; vector of the position series multipliers at T, measured in Julian centuries sinc...
static const Double * mulArg2000A(uInt which)
static const RotMatrix & ICRSToJ2000()
Get the rotation matrix from ICRS to J2000/FK5.
Referenced counted pointer for constant data.
Definition: CountedPtr.h:86
Solar mass (GM0)/c2 in AU.
Definition: MeasTable.h:138
static MeasTableMulPosEarthXY theirMulPosEarthXY
Definition: MeasTable.h:472
static const RotMatrix & rectToPos()
Get the rotation matrix to change position from rectangular to ecliptic for Soma et al...
static Double dUTC(Double utc)
Time related routines Note: WARNING given if correction not obtainable
static Vector< String > lineNams
Definition: MeasTable.h:485
static void initLines()
Rest frequencies.
static MutexedInit srcMutexedInit
Sources table data.
Definition: MeasTable.h:490
Class calculating the Z earth position multipliers.
Definition: MeasTableMul.h:280
double Double
Definition: aipstype.h:55
static Double precRate00(const uInt which)
Precession related data.
static MutexedInit obsMutexedInit
Observatories table data.
Definition: MeasTable.h:477
static Double dPsiEps(uInt which, Double T)
Get nutation angles corrections for UTC T in rad.
static Bool Source(MDirection &obs, const String &nam)
Get position of source nam (False if not present)
static Double sprime00(Double tt)
s&#39; (IAU2000) in rad (approximate value)
Number of types.
Definition: MeasTable.h:130
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
static void doInitLines(void *)
static CountedPtr< Matrix< Double > > mulPosEarthZ(Double time, Double epsilon)
static const Double * mulPosEarthZArg(uInt which)
static const Double * mulArg(uInt which)
Generate the which&#39; vector of the nutation series arguments.
static const Double * mulPlanSC2000A(uInt which)
static Bool Observatory(MPosition &obs, const String &nam)
Get position of observatory nam (False if not present)
JPLconst
Codes for JPL constants: order should be same as in MeasJPL, length less than or equal.
Definition: MeasTable.h:134
static Double timeIGRF
Definition: MeasTable.h:501
static Vector< MDirection > srcPos
Definition: MeasTable.h:492
static CountedPtr< Matrix< Double > > mulSC1950(Double time, Double epsilon)
static Double dTDB(Double tai)
TCB-TDB (in s) for MJD tai TAI.
static const Vector< String > & Lines()
Get list of all frequencies.
static std::vector< Vector< Double > > coefIGRF
Definition: MeasTable.h:502
MeasTable provides Measure computing database data.
Definition: MeasTable.h:102
static const Double * mulArg1950(uInt which)
static Double dTAI(Double tai=0.0)
TDT-TAI (in s) for MJD tai TAI.
static void initIGRF()
Initialise list of IGRF data.
static const RotMatrix & posToRect()
Get the rotation matrix to change position from ecliptic to rectangular for Soma et al...
Wrapper around a pthreads mutex.
Definition: Mutex.h:49
static CountedPtr< Matrix< Double > > mulAber(Double time, Double epsilon)
Generate the &#39;which&#39; vector of the aberration series multipliers at T, measured in Julian centuries s...
static MutexedInit lineMutexedInit
Spectral line table data.
Definition: MeasTable.h:484
Class calculating the standard aberration multipliers.
Definition: MeasTableMul.h:204
static CountedPtr< Matrix< Double > > mulSC2000A(Double time, Double epsilon)
Solar radius in AU.
Definition: MeasTable.h:142
static Double time0IGRF
Definition: MeasTable.h:500
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 Vector< String > obsNams
Definition: MeasTable.h:478
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 MeasTableMulSC1950 theirMulSC1950
Definition: MeasTable.h:465
static CountedPtr< Matrix< Double > > mulPosSunXY(Double time, Double epsilon)
static const Double * mulSCEqEqCT2000(uInt which)
Generate the which&#39; vector of the equation of equinoxes (IAU2000) complementary terms series multipli...
static const Vector< Double > & velocityLSRK(uInt which)
LSR (kinematical) velocity conversion: 0 gives J2000; 1 gives B1950.
static Double lastIGRF
Definition: MeasTable.h:499
static const Polynomial< Double > & fundArg(uInt which)
Nutation related data.
static const Polynomial< Double > & posArg(uInt which)
Earth and Sun position related data.
static const Vector< Double > & AberETerm(uInt which)
Get the E-terms of Aberration correction (0 for position, 1 for velocity)
static const Double * mulAberEarthArg(uInt which)
static Double firstIGRF
Definition: MeasTable.h:498
static void calcFundArg00(volatile Bool &need, Polynomial< Double > result[6], const Double coeff[6][5])
static std::vector< Vector< Double > > dIGRF
Definition: MeasTable.h:503
static MeasTableMulPosEarthZ theirMulPosEarthZ
Definition: MeasTable.h:473
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 GMST0(Double ut1)
GMST1 at MJD ut1 UT1.
String: the storage and methods of handling collections of characters.
Definition: String.h:223
static const Double * mulPosEarthXYArg(uInt which)
Generate the which&#39; vector of the position series arguments.
static void doInitObservatories(void *)
static MeasTableMulSC2000A theirMulSC2000A
Definition: MeasTable.h:466
MeasTable & operator=(const MeasTable &other)
Copy assign, NOT defined.
static void doInitSources(void *)
static Vector< Double > Planetary(MeasTable::Types which, Double T)
Planetary (JPL DE) related data.
static const Vector< Double > & velocityCMB(uInt which)
Velocity of Local Group wrt bary center (F.Ghigo): 308km/s towards l,b = 105,-7.
static const Double * mulArg2000B(uInt which)
static Double GMUT0(Double gmst1)
UT1 at GMSD gmst1 GMST1.
static CountedPtr< Matrix< Double > > mulPosSunZ(Double time, Double epsilon)
static const Vector< String > & Sources()
Get list of all sources.
static Vector< MPosition > obsPos
Definition: MeasTable.h:479
static void calcPrecesCoef(Double T, Polynomial< Double > result[3], const Double coeff[3][6])
Calculate precessionCoef.
static Mutex theirMutex
Mutex for thread-safety.
Definition: MeasTable.h:512
static void initSources()
Source list positions.
static Bool Line(MFrequency &obs, const String &nam)
Get frequency of line name (False if not present)
Class calculating the standard nutation multipliers.
Definition: MeasTableMul.h:128
Earth-Moon system barycentre.
Definition: MeasTable.h:124
static CountedPtr< Matrix< Double > > mulSC(Double time, Double epsilon)
Generate the which&#39; vector of the nutation series multipliers at T, measured in Julian centuries sinc...
Solar system barycentre.
Definition: MeasTable.h:122
this file contains all the compiler specific defines
Definition: mainpage.dox:28
static const Vector< Double > & mulSunAber(uInt which)
Planetary information.
Definition: MeasTable.h:110
static Double dUT1(Double utc)
UT1-UTC (in s) for MJD tai TAI.
unsigned int uInt
Definition: aipstype.h:51
static Vector< Double > IGRF(Double t)
Earth magnetic field (IGRF) data Get the harmonic terms for specified time (mjd)
static Double dTCG(Double tai)
TCG-TT (in s) for MJD tai TAI.
static const Double * mulPosSunXYArg(uInt which)
Vector of Euler rotation angles.
Definition: Euler.h:116