00001 #pragma ident "$Id: LICSDetector.hpp 1308 2008-07-22 20:01:04Z architest $"
00002
00008 #ifndef LICSDETECTOR_HPP
00009 #define LICSDETECTOR_HPP
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 "ProcessingClass.hpp"
00036
00037
00038
00039 namespace gpstk
00040 {
00041
00044
00045
00103 class LICSDetector : public ProcessingClass
00104 {
00105 public:
00106
00108 LICSDetector() : obsType(TypeID::LI), lliType1(TypeID::LLI1),
00109 lliType2(TypeID::LLI2), resultType1(TypeID::CSL1),
00110 resultType2(TypeID::CSL2), deltaTMax(61.0),
00111 minThreshold(0.04), LIDrift(0.002), useLLI(true)
00112 { setIndex(); };
00113
00114
00122 LICSDetector( const double& mThr,
00123 const double& drift,
00124 const double& dtMax = 61.0,
00125 const bool& use = true);
00126
00127
00135 virtual satTypeValueMap& Process( const DayTime& epoch,
00136 satTypeValueMap& gData,
00137 const short& epochflag = 0 )
00138 throw(ProcessingException);
00139
00140
00141
00145 virtual double getDeltaTMax() const
00146 { return deltaTMax; };
00147
00148
00154 virtual LICSDetector& setDeltaTMax(const double& maxDelta);
00155
00156
00160 virtual double getMinThreshold() const
00161 { return minThreshold; };
00162
00163
00170 virtual LICSDetector& setMinThreshold(const double& mThr);
00171
00172
00174 virtual double getLIDrift() const
00175 { return LIDrift; };
00176
00177
00182 virtual LICSDetector& setLIDrift(const double& drift);
00183
00184
00186 virtual bool getUseLLI() const
00187 { return useLLI; };
00188
00189
00195 virtual LICSDetector& setUseLLI(const bool& use)
00196 { useLLI = use; return (*this); };
00197
00198
00204 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00205 throw(ProcessingException)
00206 { Process(gData.header.epoch, gData.body); return gData; };
00207
00208
00214 virtual gnssRinex& Process(gnssRinex& gData)
00215 throw(ProcessingException);
00216
00217
00219 virtual int getIndex(void) const;
00220
00221
00223 virtual std::string getClassName(void) const;
00224
00225
00227 virtual ~LICSDetector() {};
00228
00229
00230 private:
00231
00232
00234 TypeID obsType;
00235
00236
00238 TypeID lliType1;
00239
00240
00242 TypeID lliType2;
00243
00244
00246 TypeID resultType1;
00247
00248
00250 TypeID resultType2;
00251
00252
00255 double deltaTMax;
00256
00257
00259 double minThreshold;
00260
00261
00263 double LIDrift;
00264
00265
00268 bool useLLI;
00269
00270
00272 struct filterData
00273 {
00274
00275 filterData() : formerEpoch(DayTime::BEGINNING_OF_TIME),
00276 windowSize(0), formerLI(0.0), formerBias(0.0),
00277 formerDeltaT(1.0)
00278 {};
00279
00280 DayTime formerEpoch;
00281 int windowSize;
00282 double formerLI;
00283 double formerBias;
00284 double formerDeltaT;
00285 };
00286
00287
00289 std::map<SatID, filterData> LIData;
00290
00291
00302 virtual double getDetection( const DayTime& epoch,
00303 const SatID& sat,
00304 typeValueMap& tvMap,
00305 const short& epochflag,
00306 const double& li,
00307 const double& lli1,
00308 const double& lli2 );
00309
00310
00312 static int classIndex;
00313
00314
00316 int index;
00317
00318
00320 void setIndex(void)
00321 { index = classIndex++; };
00322
00323
00324 };
00325
00327
00328 }
00329 #endif // LICSDETECTOR_HPP