00001 #pragma ident "$Id: BasicModel.hpp 2121 2009-09-03 11:32:31Z architest $"
00002
00010 #ifndef GPSTK_BASICMODEL_HPP
00011 #define GPSTK_BASICMODEL_HPP
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 #include "ProcessingClass.hpp"
00038 #include "EphemerisRange.hpp"
00039 #include "EngEphemeris.hpp"
00040 #include "XvtStore.hpp"
00041 #include "GPSEphemerisStore.hpp"
00042
00043
00044 namespace gpstk
00045 {
00048
00101 class BasicModel : public ProcessingClass
00102 {
00103 public:
00104
00108 BasicModel()
00109 : minElev(10.0), pDefaultEphemeris(NULL),
00110 defaultObservable(TypeID::C1), useTGD(false)
00111 { setInitialRxPosition(); setIndex(); };
00112
00113
00131 BasicModel( const double& aRx,
00132 const double& bRx,
00133 const double& cRx,
00134 Position::CoordinateSystem s = Position::Cartesian,
00135 GeoidModel *geoid = NULL );
00136
00137
00140 BasicModel(const Position& RxCoordinates);
00141
00142
00154 BasicModel( const Position& RxCoordinates,
00155 XvtStore<SatID>& dEphemeris,
00156 const TypeID& dObservable = TypeID::C1,
00157 const bool& applyTGD = false );
00158
00159
00166 virtual satTypeValueMap& Process( const DayTime& time,
00167 satTypeValueMap& gData )
00168 throw(ProcessingException);
00169
00170
00176 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00177 throw(ProcessingException)
00178 { Process(gData.header.epoch, gData.body); return gData; };
00179
00180
00186 virtual gnssRinex& Process(gnssRinex& gData)
00187 throw(ProcessingException)
00188 { Process(gData.header.epoch, gData.body); return gData; };
00189
00190
00193 virtual double getMinElev() const
00194 { return minElev; };
00195
00196
00199 virtual BasicModel& setMinElev(double newElevation)
00200 { minElev = newElevation; return (*this); };
00201
00202
00204 virtual TypeID getDefaultObservable() const
00205 { return defaultObservable; };
00206
00207
00212 virtual BasicModel& setDefaultObservable(const TypeID& type)
00213 { defaultObservable = type; return (*this); };
00214
00215
00218 virtual XvtStore<SatID>* getDefaultEphemeris() const
00219 { return pDefaultEphemeris; };
00220
00221
00227 virtual BasicModel& setDefaultEphemeris(XvtStore<SatID>& ephem)
00228 { pDefaultEphemeris = &ephem; return (*this); };
00229
00230
00232 Position rxPos;
00233
00234
00236 virtual int getIndex(void) const;
00237
00238
00240 virtual std::string getClassName(void) const;
00241
00242
00244 virtual ~BasicModel() {};
00245
00246
00247 protected:
00248
00249
00252 double minElev;
00253
00254
00257 XvtStore<SatID>* pDefaultEphemeris;
00258
00259
00261 TypeID defaultObservable;
00262
00263
00265 bool useTGD;
00266
00267
00273 virtual int setInitialRxPosition( const double& aRx,
00274 const double& bRx,
00275 const double& cRx,
00276 Position::CoordinateSystem s = Position::Cartesian,
00277 GeoidModel *geoid = NULL );
00278
00279
00281 virtual int setInitialRxPosition(const Position& RxCoordinates);
00282
00283
00285 virtual int setInitialRxPosition();
00286
00287
00289 virtual double getTGDCorrections( DayTime Tr,
00290 const XvtStore<SatID>& Eph,
00291 SatID sat )
00292 throw();
00293
00294
00295 private:
00296
00297
00299 static int classIndex;
00300
00301
00303 int index;
00304
00305
00307 void setIndex(void)
00308 { index = classIndex++; };
00309
00310
00311 };
00312
00313
00315
00316 }
00317
00318 #endif // GPSTK_BASICMODEL_HPP