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