source: ntrip/trunk/BNC/src/PPP/pppSatObs.h@ 10938

Last change on this file since 10938 was 10938, checked in by stuerze, 4 weeks ago

bugfix regarding ionospheric constraints

  • Property svn:keywords set to Author Date Id Rev URL;svn:eol-style=native
  • Property svn:mime-type set to text/plain
File size: 5.1 KB
Line 
1#ifndef PPPSATOBS_H
2#define PPPSATOBS_H
3
4#include <string>
5#include <map>
6#include <newmat.h>
7#include "pppInclude.h"
8#include "satObs.h"
9#include "bnctime.h"
10
11namespace BNC_PPP {
12
13 class t_pppStation;
14
15 class t_pppSatObs {
16 public:
17 t_pppSatObs(const t_satObs& satObs);
18 ~t_pppSatObs();
19 bool isValid() const {return _valid;};
20 bool isValid(t_lc LC) const;
21 t_lc rangeLC() const {return _rangeLC;};
22 bool isReference() const {return _reference;};
23 void setAsReference() {_reference = true;};
24 void resetReference() {_reference = false;};
25 const t_prn& prn() const {return _prn;}
26 const ColumnVector& xc() const {return _xcSat;}
27 const bncTime& time() const {return _time;}
28 t_irc cmpModel(const t_pppStation* station);
29 double obsValue(t_lc LC, bool* valid = 0) const;
30 double cmpValue(t_lc LC) const;
31 double cmpValueForBanc(t_lc LC) const;
32 double rho() const {return _model._rho;}
33 double sagnac() const {return _model._sagnac;}
34 double eleSat() const {return _model._eleSat;}
35 bool modelSet() const {return _model._set;}
36 void printModel() const;
37 void printObsMinusComputed() const;
38 void lcCoeff(t_lc LC,
39 std::map<t_frequency::type, double>& codeCoeff,
40 std::map<t_frequency::type, double>& phaseCoeff,
41 std::map<t_frequency::type, double>& ionoCoeff) const;
42 double lambda(t_lc LC) const;
43 double sigma(t_lc LC) const;
44 double maxRes(t_lc LC) const;
45 bool outlier() const {return _outlier;}
46 void setOutlier() {_outlier = true;}
47 void resetOutlier() {_outlier = false;}
48 void setRes(t_lc LC, double res);
49 double getRes(t_lc LC) const;
50 bool setPseudoObsIono(t_frequency::type freq, double stecRefSat);
51 void resetGIM() {_stecSat = 0.0;}
52 double getIonoCodeDelay(t_frequency::type freq) {return _model._ionoCodeDelay[freq];}
53 double getCodeBias(t_frequency::type freq) {return _model._codeBias[freq];}
54 bool hasBiases() const;
55
56 // RINEX
57 bool slip() const {
58 for (unsigned ii = 1; ii < t_frequency::max; ii++) {
59 if (_obs[ii] && _obs[ii]->_slip) {
60 return true;
61 }
62 }
63 return false;
64 }
65
66 // RTCM
67 int slipCounter() const {
68 int cnt = -1;
69 for (unsigned ii = 1; ii < t_frequency::max; ii++) {
70 if (_obs[ii] && _obs[ii]->_slipCounter > cnt) {
71 cnt = _obs[ii]->_slipCounter;
72 }
73 }
74 return cnt;
75 }
76
77 int biasJumpCounter() const {
78 int jmp = -1;
79 for (unsigned ii = 1; ii < t_frequency::max; ii++) {
80 if (_obs[ii] && _obs[ii]->_biasJumpCounter > jmp) {
81 jmp = _obs[ii]->_biasJumpCounter;
82 }
83 }
84 return jmp;
85 }
86
87 private:
88 class t_model {
89 public:
90 t_model() {reset();}
91 ~t_model() {}
92 void reset() {
93 _set = false;
94 _rho = 0.0;
95 _eleSat = 0.0;
96 _azSat = 0.0;
97 _elTx = 0.0;
98 _azTx = 0.0;
99 _recClkM = 0.0;
100 _satClkM = 0.0;
101 _sagnac = 0.0;
102 _antEcc = 0.0;
103 _tropo = 0.0;
104 _tropo0 = 0.0;
105 _tideEarth = 0.0;
106 _tideOcean = 0.0;
107 _windUp = 0.0;
108 _rel = 0.0;
109 for (unsigned ii = 0; ii < t_frequency::max; ii++) {
110 _antPCO[ii] = 0.0;
111 _codeBias[ii] = 0.0;
112 _phaseBias[ii] = 0.0;
113 _ionoCodeDelay[ii] = 0.0;
114 }
115 }
116 bool _set;
117 double _rho;
118 double _eleSat;
119 double _azSat;
120 double _elTx;
121 double _azTx;
122 double _recClkM;
123 double _satClkM;
124 double _sagnac;
125 double _antEcc;
126 double _tropo;
127 double _tropo0;
128 double _tideEarth;
129 double _tideOcean;
130 double _windUp;
131 double _rel;
132 double _antPCO[t_frequency::max];
133 double _codeBias[t_frequency::max];
134 double _phaseBias[t_frequency::max];
135 double _ionoCodeDelay[t_frequency::max];
136 };
137
138 void prepareObs(const t_satObs& satObs);
139
140 bool isBetter(const t_frqObs* aa, t_frqObs* bb, const std::string& trkModes) const;
141
142 bool _valid;
143 bool _reference;
144 t_lc _rangeLC;
145 t_prn _prn;
146 bncTime _time;
147 int _channel;
148 t_frqObs* _obs[t_frequency::max];
149 ColumnVector _xcSat;
150 ColumnVector _vvSat;
151 t_model _model;
152 bool _outlier;
153 std::map<t_lc, double> _res;
154 double _signalPropagationTime;
155 double _stecSat;
156 double _stecRefSat;
157 double _tropo0;
158 };
159
160}
161
162#endif
Note: See TracBrowser for help on using the repository browser.