source: ntrip/trunk/BNC/src/combination/bnccomb.h@ 6155

Last change on this file since 6155 was 6155, checked in by mervart, 8 years ago
File size: 3.5 KB
Line 
1
2#ifndef BNCCOMB_H
3#define BNCCOMB_H
4
5#include <fstream>
6#include <newmat.h>
7#include "bncephuser.h"
8#include "satObs.h"
9
10class bncRtnetDecoder;
11class bncSP3;
12class bncAntex;
13
14class bncComb : public bncEphUser {
15 Q_OBJECT
16 public:
17 bncComb();
18 virtual ~bncComb();
19 int nStreams() const {return _ACs.size();}
20
21 public slots:
22 void slotProviderIDChanged(QString mountPoint);
23 void slotNewOrbCorrections(QList<t_orbCorr> orbCorrections);
24 void slotNewClkCorrections(QList<t_clkCorr> clkCorrections);
25
26 signals:
27 void newMessage(QByteArray msg, bool showOnScreen);
28 void newClkCorrections(QList<t_clkCorr> clkCorrections);
29 void newOrbCorrections(QList<t_orbCorr> orbCorrections);
30
31 private:
32 enum e_method{singleEpoch, filter};
33
34 class cmbParam {
35 public:
36 enum parType {offACgps, offACglo, offACSat, clkSat};
37 cmbParam(parType type_, int index_, const QString& ac_, const QString& prn_);
38 ~cmbParam();
39 double partial(const QString& AC_, const QString& prn_);
40 QString toString() const;
41 parType type;
42 int index;
43 QString AC;
44 QString prn;
45 double xx;
46 double sig0;
47 double sigP;
48 bool epoSpec;
49 const t_eph* eph;
50 };
51
52 class cmbAC {
53 public:
54 cmbAC() {
55 weight = 0.0;
56 numObs = 0;
57 }
58 ~cmbAC() {}
59 QString mountPoint;
60 QString name;
61 double weight;
62 unsigned numObs;
63 };
64
65 class cmbCorr {
66 public:
67 cmbCorr() {
68 _eph = 0;
69 _iod = 0;
70 _orbCorr = 0;
71 _clkCorr = 0;
72 }
73 ~cmbCorr() {
74 delete _orbCorr;
75 delete _clkCorr;
76 }
77 t_prn _prn;
78 bncTime _time;
79 int _iod;
80 const t_eph* _eph;
81 t_orbCorr* _orbCorr;
82 t_clkCorr* _clkCorr;
83 QString _acName;
84 ColumnVector _diffRao;
85 QString ID() {return _acName + "_" + QString(_prn.toString().c_str());}
86 };
87
88 class cmbEpoch {
89 public:
90 cmbEpoch() {}
91 ~cmbEpoch() {
92 QVectorIterator<cmbCorr*> it(corrs);
93 while (it.hasNext()) {
94 delete it.next();
95 }
96 }
97 QVector<cmbCorr*> corrs;
98 };
99
100 void processEpoch();
101 t_irc processEpoch_filter(QTextStream& out, QMap<QString, cmbCorr*>& resCorr,
102 ColumnVector& dx);
103 t_irc processEpoch_singleEpoch(QTextStream& out, QMap<QString, cmbCorr*>& resCorr,
104 ColumnVector& dx);
105 t_irc createAmat(Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP,
106 const ColumnVector& x0, QMap<QString, cmbCorr*>& resCorr);
107 void dumpResults(const QMap<QString, cmbCorr*>& resCorr);
108 void printResults(QTextStream& out, const QMap<QString, cmbCorr*>& resCorr);
109 void switchToLastEph(const t_eph* lastEph, cmbCorr* corr);
110 t_irc checkOrbits(QTextStream& out);
111 t_irc mergeOrbitCorr(const cmbCorr* orbitCorr, cmbCorr* clkCorr);
112
113 QList<cmbAC*> _ACs;
114 bncTime _resTime;
115 QVector<cmbParam*> _params;
116 QMap<bncTime, cmbEpoch> _buffer;
117 bncRtnetDecoder* _rtnetDecoder;
118 SymmetricMatrix _QQ;
119 QByteArray _log;
120 bncAntex* _antex;
121 double _MAXRES;
122 QString _masterOrbitAC;
123 unsigned _masterMissingEpochs;
124 e_method _method;
125 bool _useGlonass;
126 int _cmbSampl;
127 QMap<QString, QMap<t_prn, t_orbCorr> > _orbCorrections;
128};
129
130#endif
Note: See TracBrowser for help on using the repository browser.