source: ntrip/trunk/BNC/combination/bnccomb.h@ 3553

Last change on this file since 3553 was 3553, checked in by mervart, 12 years ago
File size: 2.8 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 signals:
41 void newMessage(QByteArray msg, bool showOnScreen);
42
43 private:
44
45 enum e_method{singleEpoch, filter};
46
47 class cmbAC {
48 public:
49 cmbAC() {
50 weight = 0.0;
51 numObs = 0;
52 }
53 ~cmbAC() {}
54 QString mountPoint;
55 QString name;
56 double weight;
57 unsigned numObs;
58 };
59
60 class cmbCorr : public t_corr {
61 public:
62 QString acName;
63 ColumnVector diffRao;
64 };
65
66 class cmbEpoch {
67 public:
68 cmbEpoch() {}
69 ~cmbEpoch() {
70 QVectorIterator<cmbCorr*> it(corrs);
71 while (it.hasNext()) {
72 delete it.next();
73 }
74 }
75 bncTime tt() const {
76 if (corrs.size() > 0) {
77 return corrs[0]->tt;
78 }
79 else {
80 return bncTime();
81 }
82 }
83 QVector<cmbCorr*> corrs;
84 };
85
86 void processEpoch();
87 t_irc processEpoch_filter(QTextStream& out,
88 QMap<QString, t_corr*>& resCorr,
89 ColumnVector& dx);
90 t_irc processEpoch_singleEpoch(QTextStream& out,
91 QMap<QString, t_corr*>& resCorr,
92 ColumnVector& dx);
93 t_irc createAmat(Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP,
94 const ColumnVector& x0, QMap<QString, t_corr*>& resCorr);
95 void dumpResults(const QMap<QString, t_corr*>& resCorr);
96 void printResults(QTextStream& out, const QMap<QString, t_corr*>& resCorr);
97 void switchToLastEph(const t_eph* lastEph, t_corr* corr);
98 t_irc checkOrbits(QTextStream& out);
99
100 QVector<cmbCorr*>& corrs() {return _buffer[_resTime.longSec()].corrs;}
101
102 QList<cmbAC*> _ACs;
103 bncTime _resTime;
104 QVector<cmbParam*> _params;
105 QMap<unsigned long, cmbEpoch> _buffer;
106 bncRtnetDecoder* _rtnetDecoder;
107 SymmetricMatrix _QQ;
108 QByteArray _log;
109 bncAntex* _antex;
110 double _MAXRES;
111 QString _masterOrbitAC;
112 unsigned _masterMissingEpochs;
113 e_method _method;
114 bool _useGlonass;
115};
116
117#endif
Note: See TracBrowser for help on using the repository browser.