#include <LICSDetector2.hpp>
Inheritance diagram for LICSDetector2:


This class is meant to be used with the GNSS data structures objects found in "DataStructures" class.
A typical way to use this class follows:
RinexObsStream rin("ebre0300.02o"); gnssRinex gRin; ComputeLI getLI; LICSDetector2 markCSLI; while(rin >> gRin) { gRin >> getLI >> markCSLI; }
The "LICSDetector2" object will visit every satellite in the GNSS data structure that is "gRin" and will decide if a cycle slip has happened in the given observable.
The algorithm will use LI observables, and the LLI1 and LLI2 indexes. The result (a 1 if a cycle slip is found, 0 otherwise) will be stored in the data structure both as the CSL1 and CSL2 indexes.
This algorithm will take a set of samples (between 5 and 12 by default) and will build a 2nd order fitting curve using a least mean squares adjustment method. Then, the current LI bias with respect to this fitting curve is computed, and the result compared with a time-varying threshold value.
Such threshold value is computed using an exponential function with a given saturation threshold and time constant. The maximum interval of time allowed between two successive epochs is also used as criterion for cycle slip detection.
The default values for threshold computing are carefully tuned, so you must not change them without a very good reason.
On the other hand, it is very important that you adjust the maximum time interval to your sampling rate. This time interval is 61 seconds by default, which is appropriate for 30 seconds per sample RINEX observation files.
When used with the ">>" operator, this class returns the same incoming data structure with the cycle slip indexes inserted along their corresponding satellites. Be warned that if a given satellite does not have the observations required, it will be summarily deleted from the data structure.
Be aware that some combinations of cycle slips in L1 and L2 may result in a false negative when using a cycle slip detector based on LI. Therefore, to be on the safe side you should complement this with another kind of detector, such as one based on the Melbourne-Wubbena combination.
Given that this cycle slip detector needs a given ammount of samples in order to start working, it will declare cycle slips when its buffers don't have enough data. The minimum buffer size is 5 samples by default, so every time this detector starts, or when it finds a cycle slip, there will tipically be at least four successive epochs when cycle slips are declared.
Therefore, and taking into account that this detector is often used in combination with SatArcMarker objects, you must adjust the unstable period in those objects in order to match the feeding buffer time of this type of detectors.
Definition at line 127 of file LICSDetector2.hpp.
Public Member Functions | |
| LICSDetector2 () | |
| Default constructor, setting default parameters. | |
| LICSDetector2 (const double &satThr, const double &tc, const double &dtMax=61.0, const bool &use=true) | |
| Common constructor. | |
| virtual satTypeValueMap & | Process (const DayTime &epoch, satTypeValueMap &gData, const short &epochflag=0) throw (ProcessingException) |
| Returns a satTypeValueMap object, adding the new data generated when calling this object. | |
| virtual double | getDeltaTMax () const |
| Method to get the maximum interval of time allowed between two successive epochs, in seconds. | |
| virtual LICSDetector2 & | setDeltaTMax (const double &maxDelta) |
| Method to set the maximum interval of time allowed between two successive epochs. | |
| virtual double | getSatThreshold () const |
| Method to get the saturation threshold for cycle slip detection, in meters. | |
| virtual LICSDetector2 & | setSatThreshold (const double &satThr) |
| Method to set the saturation threshold for cycle slip detection, in meters. | |
| virtual double | getTimeConst () const |
| Method to get threshold time constant, in seconds. | |
| virtual LICSDetector2 & | setTimeConst (const double &tc) |
| Method to set threshold time constant, in seconds. | |
| virtual bool | getUseLLI () const |
| Method to know if the LLI check is enabled or disabled. | |
| virtual LICSDetector2 & | setUseLLI (const bool &use) |
| Method to set whether the LLI indexes will be used as an aid or not. | |
| virtual double | getMaxBufferSize () const |
| Method to get the maximum buffer size for data, in samples. | |
| virtual LICSDetector2 & | setMaxBufferSize (const int &maxBufSize) |
| Method to set the maximum buffer size for data, in samples. | |
| virtual gnssSatTypeValue & | Process (gnssSatTypeValue &gData) throw (ProcessingException) |
| Returns a gnnsSatTypeValue object, adding the new data generated when calling this object. | |
| virtual gnssRinex & | Process (gnssRinex &gData) throw (ProcessingException) |
| Returns a gnnsRinex object, adding the new data generated when calling this object. | |
| virtual int | getIndex (void) const |
| Returns an index identifying this object. | |
| virtual std::string | getClassName (void) const |
| Returns a string identifying this object. | |
| virtual | ~LICSDetector2 () |
| Destructor. | |
|
|
Default constructor, setting default parameters.
Definition at line 132 of file LICSDetector2.hpp. |
|
||||||||||||||||||||
|
Common constructor.
Definition at line 63 of file LICSDetector2.cpp. References LICSDetector2::setDeltaTMax(), LICSDetector2::setSatThreshold(), and LICSDetector2::setTimeConst(). |
|
|
Destructor.
Definition at line 273 of file LICSDetector2.hpp. |
|
|
Returns a string identifying this object.
Implements ProcessingClass. Definition at line 48 of file LICSDetector2.cpp. |
|
|
Method to get the maximum interval of time allowed between two successive epochs, in seconds.
Definition at line 171 of file LICSDetector2.hpp. |
|
|
Returns an index identifying this object.
Implements ProcessingClass. Definition at line 43 of file LICSDetector2.cpp. |
|
|
Method to get the maximum buffer size for data, in samples.
Definition at line 231 of file LICSDetector2.hpp. |
|
|
Method to get the saturation threshold for cycle slip detection, in meters.
Definition at line 186 of file LICSDetector2.hpp. |
|
|
Method to get threshold time constant, in seconds.
Definition at line 202 of file LICSDetector2.hpp. |
|
|
Method to know if the LLI check is enabled or disabled.
Definition at line 216 of file LICSDetector2.hpp. |
|
|
Returns a gnnsRinex object, adding the new data generated when calling this object.
Implements ProcessingClass. Definition at line 287 of file LICSDetector2.cpp. References GPSTK_THROW. |
|
|
Returns a gnnsSatTypeValue object, adding the new data generated when calling this object.
Implements ProcessingClass. Definition at line 250 of file LICSDetector2.hpp. |
|
||||||||||||||||
|
Returns a satTypeValueMap object, adding the new data generated when calling this object.
Definition at line 85 of file LICSDetector2.cpp. References GPSTK_THROW, and gpstk::SatIDSet. |
|
|
Method to set the maximum interval of time allowed between two successive epochs.
Definition at line 191 of file LICSDetector2.cpp. Referenced by LICSDetector2::LICSDetector2(). |
|
|
Method to set the maximum buffer size for data, in samples.
Definition at line 264 of file LICSDetector2.cpp. |
|
|
Method to set the saturation threshold for cycle slip detection, in meters.
Definition at line 215 of file LICSDetector2.cpp. Referenced by LICSDetector2::LICSDetector2(). |
|
|
Method to set threshold time constant, in seconds.
Definition at line 239 of file LICSDetector2.cpp. Referenced by LICSDetector2::LICSDetector2(). |
|
|
Method to set whether the LLI indexes will be used as an aid or not.
Definition at line 225 of file LICSDetector2.hpp. |
1.3.9.1