00001 #pragma ident "$Id: PreciseRange.hpp 2293 2010-02-12 18:14:16Z btolman $"
00002
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #ifndef PRECISE_EPHEMERIS_RANGE_INCLUDE
00047 #define PRECISE_EPHEMERIS_RANGE_INCLUDE
00048
00049
00050
00051 #include "DayTime.hpp"
00052 #include "Position.hpp"
00053 #include "XvtStore.hpp"
00054 #include "SatID.hpp"
00055 #include "Matrix.hpp"
00056
00057
00058 #include "AntexData.hpp"
00059 #include "SolarSystem.hpp"
00060 #include "EarthOrientation.hpp"
00061
00062
00063 namespace gpstk
00064 {
00067
00072 class PreciseRange
00073 {
00074 public:
00076 PreciseRange() {}
00077
00095 double ComputeAtTransmitTime(const DayTime& nomRecTime,
00096 const double pr,
00097 const Position& Rx,
00098 const SatID sat,
00099 const AntexData& antenna,
00100 const SolarSystem& SSEph,
00101 const EarthOrientation& EO,
00102 const XvtStore<SatID>& Eph,
00103 const bool isCOM=false)
00104 throw(Exception);
00105
00107 double ComputeAtTransmitTime(const DayTime& nomRecTime,
00108 const double pr,
00109 const Position& Rx,
00110 const SatID sat,
00111 const XvtStore<SatID>& Eph)
00112 throw(Exception)
00113 {
00114
00115
00116 SolarSystem ssdum;
00117 EarthOrientation eodum;
00118 AntexData antdummy;
00119 return ComputeAtTransmitTime(nomRecTime,pr,Rx,sat,antdummy,ssdum,eodum,Eph);
00120 }
00121
00123 double ComputeAtTransmitTime(const DayTime& nomRecTime,
00124 const double pr,
00125 const Position& Rx,
00126 const SatID sat,
00127 const AntexData& antenna,
00128 const XvtStore<SatID>& Eph)
00129 throw(Exception)
00130 {
00131
00132
00133 SolarSystem ssdummy;
00134 EarthOrientation eodum;
00135 return ComputeAtTransmitTime(nomRecTime,pr,Rx,sat,antenna,ssdummy,eodum,Eph);
00136 }
00137
00141 double rawrange;
00142
00144 double relativity, relativity2;
00145
00147 Position SatR, SatV;
00148
00150 double satclkbias, satclkdrift;
00151
00153 double elevation;
00154
00156 double azimuth;
00157
00159 double elevationGeodetic;
00160
00162 double azimuthGeodetic;
00163
00165 DayTime transmit;
00166
00168 Triple cosines;
00169
00172 double satLOSPCO,satLOSPCV;
00173
00175 Vector<double> SatPCOXYZ;
00176
00178 double Sagnac;
00179
00180
00181 };
00182
00184 double RelativityCorrection(const Position& R, const Position& V);
00185
00187
00188 }
00189
00190 #endif // PRECISE_EPHEMERIS_RANGE_INCLUDE