00001 #pragma ident "$Id: MOPSWeight.hpp 2741 2011-06-22 16:37:02Z nwu $"
00002
00008 #ifndef GPSTK_MOPSWEIGHT
00009 #define GPSTK_MOPSWEIGHT
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 #include "WeightBase.hpp"
00036 #include "XvtStore.hpp"
00037 #include "GPSEphemerisStore.hpp"
00038 #include "TabularEphemerisStore.hpp"
00039 #include "EngEphemeris.hpp"
00040 #include "RinexObsHeader.hpp"
00041 #include "Position.hpp"
00042 #include "SimpleIURAWeight.hpp"
00043 #include "TropModel.hpp"
00044 #include "icd_200_constants.hpp"
00045 #include "geometry.hpp"
00046 #include <cmath>
00047 #include <vector>
00048
00049
00050 namespace gpstk
00051 {
00052
00055
00068 class MOPSWeight: WeightBase
00069 {
00070 public:
00071
00072
00074 MOPSWeight(void)
00075 { valid = false; };
00076
00077
00099 virtual int getWeights( DayTime& time,
00100 Vector<SatID>& Satellites,
00101 GPSEphemerisStore& bcEph,
00102 Vector<double>& ionoCorrections,
00103 Vector<double>& elevationVector,
00104 Vector<double>& azimuthVector,
00105 Position rxPosition,
00106 int rxClass = 2 )
00107 throw(InvalidWeights);
00108
00109
00131 virtual int getWeights( DayTime& time,
00132 Vector<SatID>& Satellites,
00133 TabularEphemerisStore& preciseEph,
00134 Vector<double>& ionoCorrections,
00135 Vector<double>& elevationVector,
00136 Vector<double>& azimuthVector,
00137 Position rxPosition,
00138 int rxClass = 2 )
00139 throw(InvalidWeights);
00140
00141
00143 Vector<double> weightsVector;
00144
00145
00148 Vector<SatID> availableSV;
00149
00150
00153 Vector<SatID> rejectedSV;
00154
00155
00157 virtual bool isValid(void)
00158 { return valid; }
00159
00160
00161 private:
00162
00163
00165 void Compute( int goodSV,
00166 SimpleIURAWeight& sIura,
00167 Vector<SatID>& Satellites,
00168 Vector<double>& ionoCorrections,
00169 Vector<double>& elevationVector,
00170 Vector<double>& azimuthVector,
00171 Position rxPosition,
00172 int rxClass )
00173 throw(InvalidWeights);
00174
00175
00178 double sigma2iono( double& ionoCorrection,
00179 double& elevation,
00180 double& azimuth,
00181 Position rxPosition )
00182 throw(InvalidWeights);
00183
00184
00185 };
00186
00187
00189
00190
00191 }
00192 #endif // GPSTK_MOPSWEIGHT