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