#ifndef BNCCOMB_H #define BNCCOMB_H #include #include "bncephuser.h" class cmbCaster; class cmbParam { public: enum parType {AC_offset, Sat_offset, clk}; cmbParam(parType typeIn, int indexIn, const QString& acIn, const QString& prnIn); ~cmbParam(); double partial(const QString& acIn, t_corr* corr); QString toString() const; parType type; int index; QString AC; QString prn; double xx; int iod; }; class bncComb : public bncEphUser { Q_OBJECT public: bncComb(); ~bncComb(); void processCorrLine(const QString& staID, const QString& line); int nStreams() const {return _ACs.size();} signals: void newMessage(QByteArray msg, bool showOnScreen); private: class cmbEpoch { public: cmbEpoch(const QString& name) {acName = name;} ~cmbEpoch() { QMapIterator it(corr); while (it.hasNext()) { it.next(); delete it.value(); } } QString acName; bncTime time; QMap corr; // Corrections (key is PRN) }; class cmbAC { public: cmbAC() {} ~cmbAC() { QListIterator it(epochs); while (it.hasNext()) { delete it.next(); } } QString mountPoint; QString name; double weight; QQueue epochs; // List of Epochs with Corrections }; void processEpochs(const QList& epochs); void dumpResults(const bncTime& resTime, const QMap& resCorr); void printResults(QTextStream& out, const bncTime& resTime, const QMap& resCorr); void switchToLastEph(const QString& ACname, const t_eph* lastEph, const t_eph* prevEph, t_corr* newCorr); QMap _ACs; // Analytical Centers (key is mountpoint) bncTime _processedBeforeTime; cmbCaster* _caster; QVector _params; double _sigACOff; double _sigSatOff; double _sigClk; SymmetricMatrix _QQ; QByteArray _log; }; #endif