Index: trunk/BNC/src/rinex/reqcanalyze.h
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.h	(revision 6269)
+++ trunk/BNC/src/rinex/reqcanalyze.h	(revision 6270)
@@ -34,19 +34,47 @@
 class t_polarPoint;
 
-class t_availData {
+class t_qcObs {
  public:
-  QVector<double> _L1ok;
-  QVector<double> _L2ok;
-  QVector<double> _L1slip;
-  QVector<double> _L2slip;
-  QVector<double> _L1gap;
-  QVector<double> _L2gap;
-  QVector<double> _eleDeg;
-  QVector<double> _eleTim;
+  t_qcObs() {
+    _hasL1    = false;
+    _hasL2    = false;
+    _slipL1   = false;
+    _slipL2   = false;
+    _gapL1    = false;
+    _gapL2    = false;
+    _slotSet  = false;
+    _slotNum  = 0;
+    _MP1      = 0.0;
+    _MP2      = 0.0;
+    _SNR1     = 0.0;
+    _SNR2     = 0.0;
+  }
+  t_irc set(const t_satObs& obs);
+  double _eleDeg;
+  double _azDeg;
+  bool   _hasL1;
+  bool   _hasL2;
+  bool   _slipL1;
+  bool   _slipL2;
+  bool   _gapL1;
+  bool   _gapL2;
+  bool   _slotSet;
+  int    _slotNum;
+  double _MP1;
+  double _MP2;
+  double _SNR1;
+  double _SNR2;
 };
 
-class t_prnStat {
+class t_qcEpo {
  public:
-  t_prnStat() {
+  bncTime              _epoTime;
+  double               _PDOP;
+  QMap<t_prn, t_qcObs> _qcObs;
+};
+
+class t_qcSat {
+ public:
+  t_qcSat() {
     _numObs          = 0;
     _numSlipsFlagged = 0;
@@ -60,22 +88,17 @@
 };
 
-class t_obsStat {
+class t_qcFile {
  public:
-  void reset() {
-    _mjdX24.clear();
-    _numSat.clear();
-    _PDOP.clear();
-    _prnStat.clear();
-  }
-  QVector<double> _mjdX24;
-  QVector<double> _numSat;
-  QVector<double> _PDOP;
-  bncTime         _startTime;
-  bncTime         _endTime;
-  QString         _antennaName;
-  QString         _markerName;
-  QString         _receiverType;
-  double          _interval;
-  QMap<t_prn, t_prnStat> _prnStat;
+  t_qcFile() {clear();}
+  void clear() {_qcSat.clear(); _qcEpo.clear();}
+  bncTime              _startTime;
+  bncTime              _endTime;
+  QString              _antennaName;
+  QString              _markerName;
+  QString              _receiverType;
+  double               _interval;
+  QMap<t_prn, t_qcSat> _qcSat;
+  QVector<t_qcEpo>     _qcEpo;
+  QVector<t_qcEpo>     _qcEpoSampled;
 };
 
@@ -85,4 +108,5 @@
  public:
   t_reqcAnalyze(QObject* parent);
+  virtual void run();
 
  protected:
@@ -91,94 +115,34 @@
  signals:
   void finished();
-  void dspSkyPlot(const QString&, 
-                  const QByteArray&, 
-                  QVector<t_polarPoint*>*, 
-                  const QByteArray&, 
-                  QVector<t_polarPoint*>*,
-                  const QByteArray&, double);
 
-  void dspAvailPlot(const QString&, const QByteArray&);
-   
- private slots:
-  void slotDspSkyPlot(const QString& fileName, 
-                      const QByteArray& title1, 
-                      QVector<t_polarPoint*>* data1, 
-                      const QByteArray& title2, 
-                      QVector<t_polarPoint*>* data2,
-                      const QByteArray& scaleTitle, double maxValue);
+ private:
+  void   analyzeFile(t_rnxObsFile* obsFile);
 
-  void slotDspAvailPlot(const QString& fileName, const QByteArray& title);
+  void   updateQcSat(const t_qcObs& qcObs, t_qcSat& qcSat);
 
- public:
-  virtual void run();
- 
- private:
-  class t_oneObs {
-   public:
-    t_oneObs(int GPSWeek, double GPSWeeks) {
-      _GPSWeek  = GPSWeek;
-      _GPSWeeks = GPSWeeks;
-      _hasL1    = false;
-      _hasL2    = false;
-      _slipL1   = false;
-      _slipL2   = false;
-      _MP1      = 0.0;
-      _MP2      = 0.0;
-      _SNR1     = 0.0;
-      _SNR2     = 0.0;
-      _slotSet  = false;
-    }
-    int    _GPSWeek;
-    double _GPSWeeks;
-    bool   _hasL1;
-    bool   _hasL2;
-    bool   _slipL1;
-    bool   _slipL2;
-    double _MP1;
-    double _MP2;
-    double _SNR1;
-    double _SNR2;
-    bool   _slotSet;
-  };
+  t_irc  setQcObs(const t_satObs& satObs, t_qcObs& qcObs);
 
-  class t_allObs {
-   public:
-    t_allObs() {}
-    ~t_allObs() {
-      for (int ii = 0; ii < _oneObsVec.size(); ii++) {
-        delete _oneObsVec[ii];
-      }
-    }
-    t_irc addObs(const t_satObs& obs, int slotNum);
-    QVector<t_oneObs*> _oneObsVec;
-  };
+  void   preparePlotData(const t_rnxObsFile* obsFile);
 
-  void analyzeFile(t_rnxObsFile* obsFile);
-  void preparePlotData(const t_prn& prn, const ColumnVector& xyzSta, 
-                       double obsInterval,
-                       QVector<t_polarPoint*>* dataMP1, 
-                       QVector<t_polarPoint*>* dataMP2,
-                       QVector<t_polarPoint*>* dataSNR1, 
-                       QVector<t_polarPoint*>* dataSNR2);
-  void prepareObsStat(unsigned iEpo, double obsInterval,
-                      const ColumnVector& xyzSta);
   double cmpDOP(const ColumnVector& xyzSta) const;
-  void printReport(QVector<t_polarPoint*>* dataMP1, 
-                   QVector<t_polarPoint*>* dataMP2,
-                   QVector<t_polarPoint*>* dataSNR1, 
-                   QVector<t_polarPoint*>* dataSNR2);
 
-  QString                  _logFileName;
-  QFile*                   _logFile;
-  QTextStream*             _log;
-  QStringList              _obsFileNames;
-  QVector<t_rnxObsFile*>   _rnxObsFiles;
-  QStringList              _navFileNames;
-  QVector<t_eph*>          _ephs;
-  t_rnxObsFile::t_rnxEpo*  _currEpo;
-  QMap<t_prn, t_allObs>    _allObsMap;
-  QMap<t_prn, t_availData> _availDataMap;
-  t_obsStat                _obsStat;
-  QMutex                   _mutex;
+  void   dspSkyPlot(const QString& fileName, const QByteArray& title1, 
+                    QVector<t_polarPoint*>* data1, const QByteArray& title2, 
+                    QVector<t_polarPoint*>* data2, const QByteArray& scaleTitle, double maxValue);
+
+  void   dspAvailPlot(const QString& fileName, const QByteArray& title);
+
+  void   printReport();
+
+  QString                 _logFileName;
+  QFile*                  _logFile;
+  QTextStream*            _log;
+  QStringList             _obsFileNames;
+  QVector<t_rnxObsFile*>  _rnxObsFiles;
+  QStringList             _navFileNames;
+  QVector<t_eph*>         _ephs;
+  t_rnxObsFile::t_rnxEpo* _currEpo;
+  t_qcFile                _qcFile;
+  QMutex                  _mutex;
 };
 
