Index: trunk/BNC/src/orbComp/sp3Comp.cpp
===================================================================
--- trunk/BNC/src/orbComp/sp3Comp.cpp	(revision 10125)
+++ trunk/BNC/src/orbComp/sp3Comp.cpp	(revision 10127)
@@ -225,5 +225,5 @@
     for (map<t_prn, double>::iterator it = dc.begin(); it != dc.end(); it++) {
       const t_prn& prn = it->first;
-      std::string sys; sys.assign(1, prn.system());
+      stringstream all; all << prn.system() << 99;
       if (satIndex(clkSats, prn) != -1) {
         int  index = epochs.size() + satIndex(clkSats, prn);
@@ -233,7 +233,7 @@
           dcRed[prn] = dc[prn] - dr.find(prn)->second[0]; // clock minus radial component
           stat[prn.toString()]._dcRedMean += dcRed[prn];
-          stat[sys           ]._dcRedMean += dcRed[prn];
+          stat[all.str()     ]._dcRedMean += dcRed[prn];
           stat[prn.toString()]._nc        += 1;
-          stat[sys           ]._nc        += 1;
+          stat[all.str()     ]._nc        += 1;
         }
       }
@@ -380,5 +380,5 @@
     for (map<t_prn, ColumnVector>::const_iterator it = dr.begin(); it != dr.end(); it++) {
       const t_prn&  prn = it->first;
-      std::string sys; sys.assign(1, prn.system());
+      stringstream all; all << prn.system() << 99;
       if (!excludeSat(prn)) {
         const ColumnVector& rao = it->second;
@@ -390,7 +390,7 @@
         }
         stat[prn.toString()]._rao += SP(rao, rao); // Schur product
-        stat[sys           ]._rao += SP(rao, rao);
+        stat[all.str()     ]._rao += SP(rao, rao);
         stat[prn.toString()]._nr  += 1;
-        stat[sys           ]._nr  += 1;
+        stat[all.str()     ]._nr  += 1;
         if (dc.find(prn) != dc.end() && dcRed.find(prn) != dc.end()) {
           double clkRes    = dc.find(prn)->second;
@@ -401,11 +401,11 @@
           }
           stat[prn.toString()]._dcRMS     += clkRes * clkRes;
-          stat[sys           ]._dcRMS     += clkRes * clkRes;
+          stat[all.str()     ]._dcRMS     += clkRes * clkRes;
           stat[prn.toString()]._dcRedRMS  += clkResRed * clkResRed;
-          stat[sys           ]._dcRedRMS  += clkResRed * clkResRed;
+          stat[all.str()     ]._dcRedRMS  += clkResRed * clkResRed;
           stat[prn.toString()]._dcRedSig  += (clkResRed - stat[prn.toString()]._dcRedMean) *
                                              (clkResRed - stat[prn.toString()]._dcRedMean);
-          stat[sys           ]._dcRedSig  += (clkResRed - stat[sys           ]._dcRedMean) *
-                                             (clkResRed - stat[sys           ]._dcRedMean);
+          stat[all.str()     ]._dcRedSig  += (clkResRed - stat[all.str()     ]._dcRedMean) *
+                                             (clkResRed - stat[all.str()     ]._dcRedMean);
         }
         else {
@@ -432,5 +432,5 @@
     const string& prn  = it->first;
     t_stat&       stat = it->second;
-    std::string sys; sys.assign(1, prn[0]);
+    stringstream all; all << prn[0] << 99;
     if (stat._nr > 0) {
       stat._rao[0] = sqrt(stat._rao[0] / stat._nr);
@@ -438,77 +438,32 @@
       stat._rao[2] = sqrt(stat._rao[2] / stat._nr);
       stat._rao3DRMS = stat._rao.NormFrobenius();
-      if (prn != sys) {
-        (_summaryOnly) ? out << "     " << prn << ' ' :
+      // orbit values in millimeter
+      if (prn != all.str()) {
+        (_summaryOnly) ? out << "     "  << prn << ' ':
                          out << "!     " << prn << ' ';
       }
-      // orbit values in millimeters
-      if (prn != sys) {
-        out << setw(10) << setprecision(1) << stat._rao[0]   * 1e3 << ' '
-            << setw(10) << setprecision(1) << stat._rao[1]   * 1e3 << ' '
-            << setw(10) << setprecision(1) << stat._rao[2]   * 1e3 << ' '
-            << setw(10) << setprecision(1) << stat._rao3DRMS * 1e3 << ' '
-            << setw( 7) << stat._nr << " ";
-      }
+      else {
+        (_summaryOnly) ? out << "     "   << QString("%1  ").arg(all.str()[0]).toStdString() << " ":
+                         out << "!     "  << QString("%1  ").arg(all.str()[0]).toStdString() << " ";
+      }
+      out << setw(10) << setprecision(1) << stat._rao[0]   * 1e3 << ' '
+          << setw(10) << setprecision(1) << stat._rao[1]   * 1e3 << ' '
+          << setw(10) << setprecision(1) << stat._rao[2]   * 1e3 << ' '
+          << setw(10) << setprecision(1) << stat._rao3DRMS * 1e3 << ' '
+          << setw( 7) << stat._nr << " ";
+      // clock values in nano seconds
       if (stat._nc > 0) {
         stat._dcRMS    = sqrt(stat._dcRMS    / stat._nc);
         stat._dcRedRMS = sqrt(stat._dcRedRMS / stat._nc);
         stat._dcRedSig = sqrt(stat._dcRedSig / stat._nc);
-        // clock values in nano seconds
-        if (prn != sys) {
-          out << setw(10) << setprecision(2) << stat._dcRMS    / t_CST::c * 1e9 << ' '
-              << setw(10) << setprecision(2) << stat._dcRedRMS / t_CST::c * 1e9 << ' '
-              << setw(10) << setprecision(2) << stat._dcRedSig / t_CST::c * 1e9 << ' '
-              << setw( 9) << stat._nc << " "
-              << setw( 9) << setprecision(2) << stat._offset / t_CST::c * 1e9;
-        }
-      }
-      else {
-        if  (prn != sys) {
-//          out << "  .       .    ";
-        }
-      }
-      if (prn != sys) {
-        out << "\n";
-      }
-    }
-  }
-  // Print Total
-  // ------------
-  out << "!\n! Mean";
-  out << "\n! -----------------------------------------------------------------------------------------------------------------\n";
-  out << "!\n!    GNSS   radialRMS   alongRMS    outRMS     3DRMS      nOrb    clkRMS    clkRedRMS   clkRedSig   nClk "
-          "\n!              [mm]       [mm]        [mm]      [mm]      [-]      [ns]        [ns]        [ns]      [-] "
-          "\n! -----------------------------------------------------------------------------------------------------------------";
-  for (map<string, t_stat>::iterator it = stat.begin(); it != stat.end(); it++) {
-    const string& prn  = it->first;
-    t_stat&       stat = it->second;
-    std::string sys; sys.assign(1, prn[0]);
-    if (stat._nr > 0) {
-      if (prn == sys) {
-        (_summaryOnly) ? out << "\n       "   << sys << " " :
-                         out << "\n!       "  << sys << " ";
-      }
-      // orbit values in millimeters
-      if (prn == sys) {
-        out << setw(10) << setprecision(1) << stat._rao[0]   * 1e3 << ' '
-            << setw(10) << setprecision(1) << stat._rao[1]   * 1e3 << ' '
-            << setw(10) << setprecision(1) << stat._rao[2]   * 1e3 << ' '
-            << setw(10) << setprecision(1) << stat._rao3DRMS * 1e3 << ' '
-            << setw( 7) << stat._nr << " ";
-      }
-      if (stat._nc > 0) {
-        // clock values in nano seconds
-        if (prn == sys) {
-          out << setw(10) << setprecision(2) << stat._dcRMS    / t_CST::c * 1e9 << ' '
-              << setw(10) << setprecision(2) << stat._dcRedRMS / t_CST::c * 1e9 << ' '
-              << setw(10) << setprecision(2) << stat._dcRedSig / t_CST::c * 1e9 << ' '
-              << setw( 9) << stat._nc << " ";
-        }
-      }
-      else {
-        if (prn == sys) {
-//          out << "  .       .    ";
-        }
-      }
+        out << setw(10) << setprecision(2) << stat._dcRMS    / t_CST::c * 1e9 << ' '
+            << setw(10) << setprecision(2) << stat._dcRedRMS / t_CST::c * 1e9 << ' '
+            << setw(10) << setprecision(2) << stat._dcRedSig / t_CST::c * 1e9 << ' '
+            << setw( 9) << stat._nc << " ";
+        if (prn != all.str()) {
+          out << setw( 9) << setprecision(2) << stat._offset / t_CST::c * 1e9;
+        }
+      }
+      out << "\n";
     }
   }
