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

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