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

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