Index: /trunk/BNC/src/combination/bnccomb.cpp
===================================================================
--- /trunk/BNC/src/combination/bnccomb.cpp	(revision 6156)
+++ /trunk/BNC/src/combination/bnccomb.cpp	(revision 6157)
@@ -357,5 +357,5 @@
     // ---------------------
     cmbCorr* newCorr  = new cmbCorr();
-    newCorr->_prn     = clkCorr._prn;
+    newCorr->_prn     = prn;
     newCorr->_time    = clkCorr._time;
     newCorr->_iod     = clkCorr._iod;
@@ -490,5 +490,5 @@
     while (itCorr.hasNext()) {
       cmbCorr* corr = itCorr.next();
-      if (corr->acName == AC->name) {
+      if (corr->_acName == AC->name) {
         AC->numObs += 1;
         if (AC->name == _masterOrbitAC) {
@@ -532,5 +532,5 @@
   }
 
-  QMap<QString, t_corr*> resCorr;
+  QMap<QString, cmbCorr*> resCorr;
 
   // Perform the actual Combination using selected Method
@@ -553,5 +553,5 @@
       if (pp->type == cmbParam::clkSat) {
         if (resCorr.find(pp->prn) != resCorr.end()) {
-          resCorr[pp->prn]->dClk = pp->xx / t_CST::c;
+          resCorr[pp->prn]->_dClk = pp->xx / t_CST::c;
         }
       }
@@ -578,5 +578,5 @@
 ////////////////////////////////////////////////////////////////////////////
 t_irc bncComb::processEpoch_filter(QTextStream& out,
-                                   QMap<QString, t_corr*>& resCorr,
+                                   QMap<QString, cmbCorr*>& resCorr,
                                    ColumnVector& dx) {
 
@@ -628,5 +628,5 @@
     out << _resTime.datestr().c_str() << " " << _resTime.timestr().c_str()
         << " Maximum Residuum " << maxRes << ' '
-        << corrs()[maxResIndex-1]->acName << ' ' << corrs()[maxResIndex-1]->prn;
+        << corrs()[maxResIndex-1]->_acName << ' ' << corrs()[maxResIndex-1]->_prn;
 
     if (maxRes > _MAXRES) {
@@ -634,6 +634,6 @@
         cmbParam* pp = _params[iPar-1];
         if (pp->type == cmbParam::offACSat            && 
-            pp->AC   == corrs()[maxResIndex-1]->acName &&
-            pp->prn  == corrs()[maxResIndex-1]->prn) { 
+            pp->AC   == corrs()[maxResIndex-1]->_acName &&
+            pp->prn  == corrs()[maxResIndex-1]->_prn) { 
           QQ_sav.Row(iPar)    = 0.0;
           QQ_sav.Column(iPar) = 0.0;
@@ -658,11 +658,11 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncComb::printResults(QTextStream& out,
-                           const QMap<QString, t_corr*>& resCorr) {
-
-  QMapIterator<QString, t_corr*> it(resCorr);
+                           const QMap<QString, cmbCorr*>& resCorr) {
+
+  QMapIterator<QString, cmbCorr*> it(resCorr);
   while (it.hasNext()) {
     it.next();
-    t_corr* corr = it.value();
-    const t_eph* eph = corr->eph;
+    cmbCorr* corr = it.value();
+    const t_eph* eph = corr->_eph;
     if (eph) {
       ColumnVector xc(4);
@@ -673,7 +673,7 @@
           << _resTime.timestr().c_str() << " ";
       out.setFieldWidth(3);
-      out << "Full Clock " << corr->prn << " " << corr->iod << " ";
+      out << "Full Clock " << corr->_prn << " " << corr->_iod << " ";
       out.setFieldWidth(14);
-      out << (xc(4) + corr->dClk) * t_CST::c << endl;
+      out << (xc(4) + corr->_dClk) * t_CST::c << endl;
       out.setFieldWidth(0);
     }
@@ -686,5 +686,5 @@
 // Send results to RTNet Decoder and directly to PPP Client
 ////////////////////////////////////////////////////////////////////////////
-void bncComb::dumpResults(const QMap<QString, t_corr*>& resCorr) {
+void bncComb::dumpResults(const QMap<QString, cmbCorr*>& resCorr) {
 
   QString     outLines;
@@ -699,12 +699,12 @@
                    year, month, day, hour, minute, sec);
 
-  QMapIterator<QString, t_corr*> it(resCorr);
+  QMapIterator<QString, cmbCorr*> it(resCorr);
   while (it.hasNext()) {
     it.next();
-    t_corr* corr = it.value();
+    cmbCorr* corr = it.value();
 
     ColumnVector xc(4);
     ColumnVector vv(3);
-    corr->eph->getCrd(_resTime, xc, vv, false);
+    corr->_eph->getCrd(_resTime, xc, vv, false);
     
     // Correction Phase Center --> CoM
@@ -713,11 +713,11 @@
     if (_antex) {
       double Mjd = _resTime.mjd() + _resTime.daysec()/86400.0;
-      if (_antex->satCoMcorrection(corr->prn, Mjd, xc.Rows(1,3), dx) != success) {
+      if (_antex->satCoMcorrection(corr->_prn, Mjd, xc.Rows(1,3), dx) != success) {
         dx = 0;
-        cout << "antenna not found " << corr->prn.toAscii().data() << endl;
-      }
-    }
-    
-    outLines += corr->prn;
+        cout << "antenna not found " << corr->_prn.toAscii().data() << endl;
+      }
+    }
+    
+    outLines += corr->_prn;
     QString hlp;
     hlp.sprintf(" APC 3 %15.4f %15.4f %15.4f"
@@ -740,15 +740,15 @@
                  "   %10.5f INTERNAL",
                  messageType, updateInt, _resTime.gpsw(), _resTime.gpssec(),
-                 corr->prn.toAscii().data(),
-                 corr->iod,
-                 corr->dClk * t_CST::c,
-                 corr->rao[0],
-                 corr->rao[1],
-                 corr->rao[2],
-                 corr->dotDClk * t_CST::c,
-                 corr->dotRao[0],
-                 corr->dotRao[1],
-                 corr->dotRao[2],
-                 corr->dotDotDClk * t_CST::c);
+                 corr->_prn.toAscii().data(),
+                 corr->_iod,
+                 corr->_dClk * t_CST::c,
+                 corr->_orbCorr->_xr[0],
+                 corr->_orbCorr->_xr[1],
+                 corr->_orbCorr->_xr[2],
+                 0.0,
+                 corr->_orbCorr->_dotXr[0],
+                 corr->_orbCorr->_dotXr[1],
+                 corr->_orbCorr->_dotXr[2],
+                 0.0);
     corrLines << line;
 
@@ -767,5 +767,5 @@
   // Send new Corrections to PPP etc.
   // --------------------------------
-  emit newCorrections(corrLines);
+  ////  emit newCorrections(corrLines);
 }
 
@@ -774,5 +774,5 @@
 t_irc bncComb::createAmat(Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP,
                           const ColumnVector& x0, 
-                          QMap<QString, t_corr*>& resCorr) {
+                          QMap<QString, cmbCorr*>& resCorr) {
 
   unsigned nPar = _params.size();
@@ -799,18 +799,18 @@
   while (itCorr.hasNext()) {
     cmbCorr* corr = itCorr.next();
-    QString  prn  = corr->prn;
+    QString  prn  = corr->_prn;
 
     ++iObs;
 
-    if (corr->acName == _masterOrbitAC && resCorr.find(prn) == resCorr.end()) {
-      resCorr[prn] = new t_corr(*corr);
+    if (corr->_acName == _masterOrbitAC && resCorr.find(prn) == resCorr.end()) {
+      resCorr[prn] = new cmbCorr(*corr);
     }
 
     for (int iPar = 1; iPar <= _params.size(); iPar++) {
       cmbParam* pp = _params[iPar-1];
-      AA(iObs, iPar) = pp->partial(corr->acName, prn);
-    }
-
-    ll(iObs) = corr->dClk * t_CST::c - DotProduct(AA.Row(iObs), x0);
+      AA(iObs, iPar) = pp->partial(corr->_acName, prn);
+    }
+
+    ll(iObs) = corr->_dClk * t_CST::c - DotProduct(AA.Row(iObs), x0);
   }
 
@@ -864,5 +864,5 @@
 ////////////////////////////////////////////////////////////////////////////
 t_irc bncComb::processEpoch_singleEpoch(QTextStream& out,
-                                        QMap<QString, t_corr*>& resCorr,
+                                        QMap<QString, cmbCorr*>& resCorr,
                                         ColumnVector& dx) {
 
@@ -882,11 +882,11 @@
     while (it.hasNext()) {
       cmbCorr* corr = it.next();
-      QString  prn  = corr->prn;
+      QString  prn  = corr->_prn;
       bool foundMaster = false;
       QVectorIterator<cmbCorr*> itHlp(corrs());
       while (itHlp.hasNext()) {
         cmbCorr* corrHlp = itHlp.next();
-        QString  prnHlp  = corrHlp->prn;
-        QString  ACHlp   = corrHlp->acName;
+        QString  prnHlp  = corrHlp->_prn;
+        QString  ACHlp   = corrHlp->_acName;
         if (ACHlp == _masterOrbitAC && prn == prnHlp) {
           foundMaster = true;
@@ -907,6 +907,6 @@
     while (itCorr.hasNext()) {
       cmbCorr* corr = itCorr.next();
-      QString  prn  = corr->prn;
-      QString  AC   = corr->acName;
+      QString  prn  = corr->_prn;
+      QString  AC   = corr->_acName;
       if (numObsPrn.find(prn) == numObsPrn.end()) {
         numObsPrn[prn]  = 1;
@@ -990,5 +990,5 @@
     out << _resTime.datestr().c_str() << " " << _resTime.timestr().c_str()
         << " Maximum Residuum " << maxRes << ' '
-        << corrs()[maxResIndex-1]->acName << ' ' << corrs()[maxResIndex-1]->prn;
+        << corrs()[maxResIndex-1]->_acName << ' ' << corrs()[maxResIndex-1]->_prn;
 
     if (maxRes > _MAXRES) {
@@ -1005,7 +1005,7 @@
         out << _resTime.datestr().c_str() << ' ' 
             << _resTime.timestr().c_str() << " "
-            << corr->acName << ' ' << corr->prn;
+            << corr->_acName << ' ' << corr->_prn;
         out.setFieldWidth(6);
-        out << " dClk = " << corr->dClk * t_CST::c << " res = " << vv[ii] << endl;
+        out << " dClk = " << corr->_dClk * t_CST::c << " res = " << vv[ii] << endl;
         out.setFieldWidth(0);
       }
@@ -1029,21 +1029,21 @@
   while (im.hasNext()) {
     cmbCorr* corr = im.next();
-    QString  prn  = corr->prn;
+    QString  prn  = corr->_prn;
     if      (_eph.find(prn) == _eph.end()) {
-      out << "checkOrbit: missing eph (not found) " << corr->prn << endl;
+      out << "checkOrbit: missing eph (not found) " << corr->_prn << endl;
       delete corr;
       im.remove();
     }
-    else if (corr->eph == 0) {
-      out << "checkOrbit: missing eph (zero) " << corr->prn << endl;
+    else if (corr->_eph == 0) {
+      out << "checkOrbit: missing eph (zero) " << corr->_prn << endl;
       delete corr;
       im.remove();
     }
     else {
-      if ( corr->eph == _eph[prn]->last || corr->eph == _eph[prn]->prev ) {
+      if ( corr->_eph == _eph[prn]->last || corr->_eph == _eph[prn]->prev ) {
         switchToLastEph(_eph[prn]->last, corr);
       }
       else {
-        out << "checkOrbit: missing eph (deleted) " << corr->prn << endl;
+        out << "checkOrbit: missing eph (deleted) " << corr->_prn << endl;
         delete corr;
         im.remove();
@@ -1061,12 +1061,12 @@
     while (it.hasNext()) {
       cmbCorr* corr = it.next();
-      QString  prn  = corr->prn;
+      QString  prn  = corr->_prn;
       if (meanRao.find(prn) == meanRao.end()) {
         meanRao[prn].ReSize(4);
-        meanRao[prn].Rows(1,3) = corr->rao;
+        meanRao[prn].Rows(1,3) = corr->_orbCorr->_xr;
         meanRao[prn](4)        = 1; 
       }
       else {
-        meanRao[prn].Rows(1,3) += corr->rao;
+        meanRao[prn].Rows(1,3) += corr->_orbCorr->_xr;
         meanRao[prn](4)        += 1; 
       }
@@ -1085,16 +1085,16 @@
     while (it.hasNext()) {
       cmbCorr* corr = it.next();
-      QString  prn  = corr->prn;
+      QString  prn  = corr->_prn;
       if (meanRao[prn](4) != 0) {
         meanRao[prn] /= meanRao[prn](4);
         meanRao[prn](4) = 0;
       }
-      corr->diffRao = corr->rao - meanRao[prn].Rows(1,3);
+      corr->_diffRao = corr->_orbCorr->_xr - meanRao[prn].Rows(1,3);
       if (maxDiff.find(prn) == maxDiff.end()) {
         maxDiff[prn] = corr;
       }
       else {
-        double normMax = maxDiff[prn]->diffRao.norm_Frobenius();
-        double norm    = corr->diffRao.norm_Frobenius();
+        double normMax = maxDiff[prn]->_diffRao.norm_Frobenius();
+        double norm    = corr->_diffRao.norm_Frobenius();
         if (norm > normMax) {
           maxDiff[prn] = corr;
@@ -1113,5 +1113,5 @@
     while (im.hasNext()) {
       cmbCorr* corr = im.next();
-      QString  prn  = corr->prn;
+      QString  prn  = corr->_prn;
       if      (numCorr[prn] < 2) {
         delete corr;
@@ -1119,13 +1119,13 @@
       }
       else if (corr == maxDiff[prn]) {
-        double norm = corr->diffRao.norm_Frobenius();
+        double norm = corr->_diffRao.norm_Frobenius();
         if (norm > MAX_DISPLACEMENT) {
           out << _resTime.datestr().c_str()    << " "
               << _resTime.timestr().c_str()    << " "
               << "Orbit Outlier: " 
-              << corr->acName.toAscii().data() << " " 
-              << prn.toAscii().data()          << " "
-              << corr->iod                     << " " 
-              << norm                          << endl;
+              << corr->_acName.toAscii().data() << " " 
+              << prn.toAscii().data()           << " "
+              << corr->_iod                     << " " 
+              << norm                           << endl;
           delete corr;
           im.remove();
@@ -1139,17 +1139,4 @@
     }
   }
-
-  return success;
-}
-
-// 
-////////////////////////////////////////////////////////////////////////////
-t_irc bncComb::mergeOrbitCorr(const cmbCorr* orbitCorr, cmbCorr* clkCorr) {
-
-  clkCorr->iod       = orbitCorr->iod; // is it always correct?
-  clkCorr->eph       = orbitCorr->eph; 
-  clkCorr->tRao      = orbitCorr->tRao;
-  clkCorr->rao       = orbitCorr->rao;
-  clkCorr->dotRao    = orbitCorr->dotRao;
 
   return success;
@@ -1185,5 +1172,5 @@
     while (it.hasNext()) {
       cmbCorr* corr = it.next();
-      if (acName == corr->acName) {
+      if (acName == corr->_acName) {
         delete corr;
         it.remove();
Index: /trunk/BNC/src/combination/bnccomb.h
===================================================================
--- /trunk/BNC/src/combination/bnccomb.h	(revision 6156)
+++ /trunk/BNC/src/combination/bnccomb.h	(revision 6157)
@@ -75,13 +75,14 @@
       delete _clkCorr;
     }
-    t_prn        _prn;
+    QString      _prn;
     bncTime      _time;
     int          _iod;
     const t_eph* _eph;
-    t_orbCorr*   _orbCorr;
-    t_clkCorr*   _clkCorr;
-    QString      _acName;
+    t_orbCorr*   _orbCorr; // used for input
+    t_clkCorr*   _clkCorr; // used for input
+    QString      _acName; 
+    double       _dClk;    // used for output
     ColumnVector _diffRao;
-    QString ID() {return _acName + "_" + QString(_prn.toString().c_str());}
+    QString ID() {return _acName + "_" + _prn;}
   };
 
@@ -109,5 +110,5 @@
   void  switchToLastEph(const t_eph* lastEph, cmbCorr* corr);
   t_irc checkOrbits(QTextStream& out);
-  t_irc mergeOrbitCorr(const cmbCorr* orbitCorr, cmbCorr* clkCorr);
+  QVector<cmbCorr*>& corrs() {return _buffer[_resTime].corrs;}
 
   QList<cmbAC*>                          _ACs;
Index: /trunk/BNC/src/satObs.h
===================================================================
--- /trunk/BNC/src/satObs.h	(revision 6156)
+++ /trunk/BNC/src/satObs.h	(revision 6157)
@@ -59,5 +59,8 @@
 class t_orbCorr {
  public:
-  t_orbCorr();
+  t_orbCorr() {
+    _xr.ReSize(3);    _xr    = 0.0;
+    _dotXr.ReSize(3); _dotXr = 0.0;
+  }
   t_orbCorr(const std::string& str);
   t_prn          prn() const {return _prn;}
@@ -69,6 +72,6 @@
   bncTime        _time;
   char           _system;
-  double         _xr[3];
-  double         _dotXr[3]; 
+  ColumnVector   _xr;
+  ColumnVector   _dotXr; 
 };
 
