00001 #pragma ident "$Id: LICSDetector2.hpp 2114 2009-09-02 18:14:57Z architest $"
00002
00009 #ifndef GPSTK_LICSDETECTOR2_HPP
00010 #define GPSTK_LICSDETECTOR2_HPP
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 #include <deque>
00037 #include "ProcessingClass.hpp"
00038
00039
00040
00041 namespace gpstk
00042 {
00043
00046
00047
00127 class LICSDetector2 : public ProcessingClass
00128 {
00129 public:
00130
00132 LICSDetector2() : obsType(TypeID::LI), lliType1(TypeID::LLI1),
00133 lliType2(TypeID::LLI2), resultType1(TypeID::CSL1),
00134 resultType2(TypeID::CSL2), deltaTMax(61.0),
00135 satThreshold(0.08), timeConst(60.0), useLLI(true),
00136 maxBufferSize(12)
00137 { setIndex(); };
00138
00139
00148 LICSDetector2( const double& satThr,
00149 const double& tc,
00150 const double& dtMax = 61.0,
00151 const bool& use = true );
00152
00153
00161 virtual satTypeValueMap& Process( const DayTime& epoch,
00162 satTypeValueMap& gData,
00163 const short& epochflag = 0 )
00164 throw(ProcessingException);
00165
00166
00167
00171 virtual double getDeltaTMax() const
00172 { return deltaTMax; };
00173
00174
00180 virtual LICSDetector2& setDeltaTMax(const double& maxDelta);
00181
00182
00186 virtual double getSatThreshold() const
00187 { return satThreshold; };
00188
00189
00198 virtual LICSDetector2& setSatThreshold(const double& satThr);
00199
00200
00202 virtual double getTimeConst() const
00203 { return timeConst; };
00204
00205
00212 virtual LICSDetector2& setTimeConst(const double& tc);
00213
00214
00216 virtual bool getUseLLI() const
00217 { return useLLI; };
00218
00219
00225 virtual LICSDetector2& setUseLLI(const bool& use)
00226 { useLLI = use; return (*this); };
00227
00228
00231 virtual double getMaxBufferSize() const
00232 { return maxBufferSize; };
00233
00234
00242 virtual LICSDetector2& setMaxBufferSize(const int& maxBufSize);
00243
00244
00250 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00251 throw(ProcessingException)
00252 { Process(gData.header.epoch, gData.body); return gData; };
00253
00254
00260 virtual gnssRinex& Process(gnssRinex& gData)
00261 throw(ProcessingException);
00262
00263
00265 virtual int getIndex(void) const;
00266
00267
00269 virtual std::string getClassName(void) const;
00270
00271
00273 virtual ~LICSDetector2() {};
00274
00275
00276 private:
00277
00278
00280 TypeID obsType;
00281
00282
00284 TypeID lliType1;
00285
00286
00288 TypeID lliType2;
00289
00290
00292 TypeID resultType1;
00293
00294
00296 TypeID resultType2;
00297
00298
00301 double deltaTMax;
00302
00303
00305 double satThreshold;
00306
00307
00309 double timeConst;
00310
00311
00314 bool useLLI;
00315
00316
00318 int maxBufferSize;
00319
00320
00322 static const int minBufferSize;
00323
00324
00326 struct filterData
00327 {
00328
00329 filterData()
00330 {};
00331
00332 std::deque<DayTime> LIEpoch;
00333 std::deque<double> LIBuffer;
00334 };
00335
00336
00338 std::map<SatID, filterData> LIData;
00339
00340
00351 virtual double getDetection( const DayTime& epoch,
00352 const SatID& sat,
00353 typeValueMap& tvMap,
00354 const short& epochflag,
00355 const double& li,
00356 const double& lli1,
00357 const double& lli2 );
00358
00359
00361 static int classIndex;
00362
00363
00365 int index;
00366
00367
00369 void setIndex(void)
00370 { index = classIndex++; };
00371
00372
00373 };
00374
00375
00377
00378 }
00379
00380 #endif // GPSTK_LICSDETECTOR2_HPP