CARMA C++
Astrometry.h
Go to the documentation of this file.
1 #ifndef SZA_UTIL_ASTROMETRY_H
2 #define SZA_UTIL_ASTROMETRY_H
3 
11 #include "carma/szautil/Angle.h"
12 #include "carma/szautil/HourAngle.h"
13 #include "carma/szautil/DecAngle.h"
14 
15 namespace sza {
16  namespace util {
17 
18  class QuadraticInterpolator;
19 
20  class Astrometry {
21  public:
22 
23  struct Date {
24  int year_;
25  int month_;
26  int day_;
27  int hour_;
28  int min_;
29  int sec_;
30  int nsec_;
31  };
32 
36  Astrometry();
37 
41  virtual ~Astrometry();
42 
49  void extendUt1Utc(double mjd, double ut1utc);
50 
58  void extendEqnEqx(double tt, double eqneqx);
59 
65  double getUt1Utc(double mjd);
66 
73  double getEqnEqx(double tt);
74 
79  bool canBracket(double mjdUtc);
80 
104  static HourAngle mjdUtcToLst(double mjdUtc, Angle longitude,
105  double ut1Utc, double eqnEqx);
106 
110  HourAngle mjdUtcToLst(double mjdUtc, Angle longitude);
111 
124  static double mjdUtcToMjdTt(double mjdUtc);
125  static Date mjdUtcToCalendarDate(double mjdUtc);
126 
127  static void meanToApparentPlace(HourAngle& meanRa, DecAngle& meanDec, TimeVal& date, double equinox,
128  HourAngle& apparentRa, DecAngle& apparentDec);
129 
130  static void j2000ToApparentPlace(HourAngle& meanRa, DecAngle& meanDec, TimeVal& date,
131  HourAngle& apparentRa, DecAngle& apparentDec);
132 
133  static void apparentToMeanPlace(HourAngle& apparentRa, DecAngle& apparentDec, TimeVal& date,
134  double equinox,
135  HourAngle& meanRa, DecAngle& meanDec);
136 
137  static void apparentToJ2000Place(HourAngle& apparentRa, DecAngle& apparentDec, TimeVal& date,
138  HourAngle& meanRa, DecAngle& meanDec);
139 
140  static void b1950ToJ2000(HourAngle& raB1950, DecAngle& decB1950, HourAngle& raJ2000, DecAngle& decJ2000);
141 
142  static void j2000ToB1950(HourAngle& raJ2000, DecAngle& decJ2000, HourAngle& raB1950, DecAngle& decB1950);
143 
144  static Angle angularSeparation(HourAngle ra1, DecAngle dec1, HourAngle ra2, DecAngle dec2);
145 
146  private:
147 
148  static const double secondsPerDay_;
149  static const double pi_;
150  static const double twopi_;
151 
155  QuadraticInterpolator* ut1Utc_;
156 
160  QuadraticInterpolator* eqnEqx_;
161 
162  }; // End class Astrometry
163 
164  } // End namespace util
165 } // End namespace sza
166 
167 
168 
169 #endif // End #ifndef SZA_UTIL_ASTROMETRY_H