Ginan
Loading...
Searching...
No Matches
acsQC.cpp File Reference

Data Structures

struct  SlipNoise
 

Functions

void traceSlipEvent (Trace &trace, const char *detector, const GObs &obs, const char *action, E_FType frq1, E_FType frq2, E_FType frq3, double value1, double value2, double threshold, E_SlipDiagReason reason)
 Emit one structured cycle-slip diagnostic trace line.
 
void traceScdiaEvent (Trace &trace, const GObs &obs, const char *action, E_FType frq1, E_FType frq2, E_FType frq3, int nf, E_FilterMode filterMode, double value1, double value2, double threshold, double amb1, double amb2, double amb3, E_SlipDiagReason reason)
 Emit a structured diagnostic line for SCDIA internals.
 
double lomThreshold (int dof)
 
bool satFreqs (E_Sys sys, E_FType &ft1, E_FType &ft2, E_FType &ft3)
 Select up to three configured frequency bands for a satellite system.
 
int obsFreqs (const GObs &obs, E_FType &ft1, E_FType &ft2, E_FType &ft3)
 Select observed frequency bands that are usable for slip detection.
 
bool slipNoise (const GObs &obs, const E_FType freqs[], int nf, SlipNoise &noise)
 Derive conservative slip-detector noise from the selected observation bands.
 
void detslp_ll (Trace &trace, ObsList &obsList)
 Detect cycle slip by reported loss of lock.
 
void detslp_gf (Trace &trace, ObsList &obsList)
 Detect cycle slip by geometry free phase jump.
 
void detslp_mw (Trace &trace, ObsList &obsList)
 Detect slip by Melbourne-Wubbena linear combination jump.
 
double mwnoise (double sigcode, double sigphase, double lam1, double lam2)
 Melbourne-Wenbunna (MW) measurement noise (m)
 
void scdia (Trace &trace, SatStat &satStat, lc_t &lc, const GObs &obs, map< int, double > &lam, double sigmaPhase, double sigmaCode, int nf, E_FilterMode filterMode, E_FType frq1, E_FType frq2, E_FType frq3)
 Single channel detection–identification–adaptation (DIA) for integer cycle slips.
 
void cycleslip2 (Trace &trace, SatStat &satStat, lc_t &lcBase, GObs &obs)
 Cycle slip detection for dual-frequency.
 
void cycleslip3 (Trace &trace, SatStat &satStat, lc_t &lc, GObs &obs)
 Cycle slip detection and repair for triple-frequency.
 
void detectslip (Trace &trace, SatStat &satStat, lc_t &lc_new, lc_t &lc_old, GObs &obs)
 Cycle slip detection and repair.
 
void clearSlips (ObsList &obsList)
 
void detectslips (Trace &trace, ObsList &obsList)
 Detect slips for multiple observations.
 

Enumerations

enum class  E_SlipDiagReason {
  NONE , RECEIVER_LLI , NO_FREQUENCY_PAIR , NO_FREQUENCIES ,
  INVALID_LC , NO_PREVIOUS_GF , NO_PREVIOUS_MW , PHASE_JUMP ,
  MW_JUMP , WITHIN_THRESHOLD , FIRST_EPOCH , TIME_GAP ,
  LOW_ELEVATION , DUAL_FREQUENCY , TRIPLE_FREQUENCY , THIRD_FREQUENCY_REACQUIRED ,
  FREQUENCY_REACQUIRED , SINGLE_FREQUENCY , MISSING_FREQUENCY_VARIANCE , INVALID_CODE_VARIANCE ,
  INVALID_PHASE_VARIANCE , VALID_VARIANCE , LOM_WITHIN_THRESHOLD , LOM_OUTLIER ,
  LAMBDA_FIXED , LAMBDA_FLOAT , KALMAN_WAITING
}
 

Enumeration Type Documentation

◆ E_SlipDiagReason

enum class E_SlipDiagReason
strong
Enumerator
NONE 
RECEIVER_LLI 
NO_FREQUENCY_PAIR 
NO_FREQUENCIES 
INVALID_LC 
NO_PREVIOUS_GF 
NO_PREVIOUS_MW 
PHASE_JUMP 
MW_JUMP 
WITHIN_THRESHOLD 
FIRST_EPOCH 
TIME_GAP 
LOW_ELEVATION 
DUAL_FREQUENCY 
TRIPLE_FREQUENCY 
THIRD_FREQUENCY_REACQUIRED 
FREQUENCY_REACQUIRED 
SINGLE_FREQUENCY 
MISSING_FREQUENCY_VARIANCE 
INVALID_CODE_VARIANCE 
INVALID_PHASE_VARIANCE 
VALID_VARIANCE 
LOM_WITHIN_THRESHOLD 
LOM_OUTLIER 
LAMBDA_FIXED 
LAMBDA_FLOAT 
KALMAN_WAITING 

Function Documentation

◆ clearSlips()

void clearSlips ( ObsList & obsList)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cycleslip2()

void cycleslip2 ( Trace & trace,
SatStat & satStat,
lc_t & lcBase,
GObs & obs )

Cycle slip detection for dual-frequency.

Parameters
traceTrace to output to
satStatPersistant satellite status parameters
lcBaseLinear combinations
obsNavigation object for this satellite
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cycleslip3()

void cycleslip3 ( Trace & trace,
SatStat & satStat,
lc_t & lc,
GObs & obs )

Cycle slip detection and repair for triple-frequency.

Parameters
traceTrace to output to
satStatPersistant satellite status parameters
lcLinear combinations
obsNavigation object for this satellite
Here is the call graph for this function:
Here is the caller graph for this function:

◆ detectslip()

void detectslip ( Trace & trace,
SatStat & satStat,
lc_t & lc_new,
lc_t & lc_old,
GObs & obs )

Cycle slip detection and repair.

Parameters
traceTrace to output to
satStatPersistant satellite status parameters
lc_newLinear combination for this epoch
lc_oldLinear combination from previous epoch
obsNavigation object for this satellite
Here is the call graph for this function:
Here is the caller graph for this function:

◆ detectslips()

void detectslips ( Trace & trace,
ObsList & obsList )

Detect slips for multiple observations.

Parameters
traceTrace to output to
obsListList of observations to detect slips within
Here is the call graph for this function:
Here is the caller graph for this function:

◆ detslp_gf()

void detslp_gf ( Trace & trace,
ObsList & obsList )

Detect cycle slip by geometry free phase jump.

Parameters
traceTrace to output to
obsListList of observations to detect slips within
Here is the call graph for this function:
Here is the caller graph for this function:

◆ detslp_ll()

void detslp_ll ( Trace & trace,
ObsList & obsList )

Detect cycle slip by reported loss of lock.

Parameters
traceTrace to output to
obsListList of observations to detect slips within
Here is the call graph for this function:
Here is the caller graph for this function:

◆ detslp_mw()

void detslp_mw ( Trace & trace,
ObsList & obsList )

Detect slip by Melbourne-Wubbena linear combination jump.

Parameters
traceTrace to output to
obsListList of observations to detect slips within
Here is the call graph for this function:
Here is the caller graph for this function:

◆ lomThreshold()

double lomThreshold ( int dof)
Here is the caller graph for this function:

◆ mwnoise()

double mwnoise ( double sigcode,
double sigphase,
double lam1,
double lam2 )

Melbourne-Wenbunna (MW) measurement noise (m)

Parameters
sigcodeCode noise
sigphasePhase noise
lam1L1 wavelength
lam2L2 wavelength
Here is the call graph for this function:
Here is the caller graph for this function:

◆ obsFreqs()

int obsFreqs ( const GObs & obs,
E_FType & ft1,
E_FType & ft2,
E_FType & ft3 )

Select observed frequency bands that are usable for slip detection.

This helper is intentionally stricter than satFreqs(): it still honours configured code priorities, but only returns frequency bands that are present in the current observation, have a non-zero representative phase measurement, and have a non-zero wavelength available in the satellite navigation data.

This prevents GF/MW/PDE slip checks from evaluating assumed frequency bands when an epoch is missing one of the configured signals.

Parameters
[in]obsObservation to inspect.
[out]ft1First observed usable frequency, or NONE.
[out]ft2Second observed usable frequency, or NONE.
[out]ft3Third observed usable frequency, or NONE.
Returns
Number of usable observed frequencies written to the output parameters, from 0 to 3.
Here is the caller graph for this function:

◆ satFreqs()

bool satFreqs ( E_Sys sys,
E_FType & ft1,
E_FType & ft2,
E_FType & ft3 )

Select up to three configured frequency bands for a satellite system.

This is the legacy frequency selector used by several modelling paths outside slip detection. It follows acsConfig.code_priorities[sys] and converts the first unique codes into frequency bands, but it does not inspect a particular observation to confirm that measurements are present.

The outputs retain historical defaults (F1, F2, F5) when priorities are incomplete. Do not use this helper when the algorithm must know which frequencies are actually observed at the current epoch; use obsFreqs() for slip detection.

Parameters
[in]sysSatellite system.
[out]ft1First configured frequency band.
[out]ft2Second configured frequency band.
[out]ft3Third configured frequency band.
Returns
false only when no code priorities exist for sys; true otherwise.
Here is the caller graph for this function:

◆ scdia()

void scdia ( Trace & trace,
SatStat & satStat,
lc_t & lc,
const GObs & obs,
map< int, double > & lam,
double sigmaPhase,
double sigmaCode,
int nf,
E_FilterMode filterMode,
E_FType frq1,
E_FType frq2,
E_FType frq3 )

Single channel detection–identification–adaptation (DIA) for integer cycle slips.

Parameters
traceTrace to output to
satStatPersistant satellite status parameters
lcLinear combinations
obsObservation context for diagnostics
lamSignal wavelength map
sigmaPhasePhase noise
sigmaCodeCode noise
nfNumber of frequencies
filterModeLSQ/Kalman filter flag
Here is the call graph for this function:
Here is the caller graph for this function:

◆ slipNoise()

bool slipNoise ( const GObs & obs,
const E_FType freqs[],
int nf,
SlipNoise & noise )

Derive conservative slip-detector noise from the selected observation bands.

Slip detection chooses concrete observed frequencies with obsFreqs(). The corresponding noise values must come from those same bands; using an arbitrary first signal can pass zero or invalid variances into PDE/SCDIA and produce NaNs in trace output.

This helper requires each selected band to have finite, positive code and phase variance. It then uses the largest selected variance for each observable type as a conservative single-noise input to the current PDE/SCDIA equations.

Parameters
[in]obsObservation containing selected signals.
[in]freqsSelected frequency bands.
[in]nfNumber of selected frequencies to validate.
[out]noiseDerived standard deviations, or failure reason.
Returns
true when all selected bands have usable variances.
Here is the caller graph for this function:

◆ traceScdiaEvent()

void traceScdiaEvent ( Trace & trace,
const GObs & obs,
const char * action,
E_FType frq1,
E_FType frq2,
E_FType frq3,
int nf,
E_FilterMode filterMode,
double value1,
double value2,
double threshold,
double amb1,
double amb2,
double amb3,
E_SlipDiagReason reason )

Emit a structured diagnostic line for SCDIA internals.

PDE-SCDIA-DIAG is intentionally separate from PDE-CS-DIAG so existing detector-routing summaries remain stable while SCDIA outcomes become machine-readable.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ traceSlipEvent()

void traceSlipEvent ( Trace & trace,
const char * detector,
const GObs & obs,
const char * action,
E_FType frq1,
E_FType frq2,
E_FType frq3,
double value1,
double value2,
double threshold,
E_SlipDiagReason reason )

Emit one structured cycle-slip diagnostic trace line.

These lines are intended to make detector decisions auditable without changing the detector result. They are emitted at trace level 2 with stable key=value fields so trace files can be summarised with simple text tools.

Here is the call graph for this function:
Here is the caller graph for this function: