#ifndef FILTER_H #define FILTER_H #include #include #include "ppp.h" #include "parlist.h" #include "bnctime.h" #include "t_prn.h" namespace BNC { class t_parlist; class t_obsPool; class t_satObs; class t_filter { public: t_filter(); ~t_filter(); t_irc processEpoch(t_obsPool* obsPool); const ColumnVector& x() const {return _xFlt;} const SymmetricMatrix& Q() const {return _QFlt;} int numSat() const {return _numSat;} double PDOP() const {return _dop.P;} double GDOP() const {return _dop.G;} private: class t_slip { public: t_slip() { _slip = false; _obsSlipCounter = -1; _biasJumpCounter = -1; } bool _slip; int _obsSlipCounter; int _biasJumpCounter; }; class t_dop { public: t_dop() {reset();} void reset() {P = T = G = 0.0;} double P; double T; double G; }; t_irc processLC(const std::vector& LCs, std::vector& obsVector); t_irc detectCycleSlips(const std::vector& LCs, const std::vector& obsVector); t_irc resetAmb(t_prn prn, const std::vector& obsVector, SymmetricMatrix* QSav = 0, ColumnVector* xSav = 0); void cmpDOP(const std::vector& LCs, const Matrix& AA); bncTime _epoTime; t_parlist* _parlist; SymmetricMatrix _QFlt; ColumnVector _xFlt; ColumnVector _x0; t_slip _slips[t_prn::MAXPRN+1]; int _numSat; t_dop _dop; }; } #endif