Index: /trunk/Poubelle/archTOI.old/archeopsfile.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/archeopsfile.cc	(revision 431)
+++ /trunk/Poubelle/archTOI.old/archeopsfile.cc	(revision 432)
@@ -900,5 +900,5 @@
   int expo = data[iExp] & 0xf;
   int noise = 1 << expo;
-  return (noise << 1)/double(nb_coups);
+  return (noise << 1)/double(nb_coups)/2.;
 }
 
@@ -1039,5 +1039,5 @@
   int expo = data[iExp] & 0xf;
   int noise = 1 << expo;
-  return noise;
+  return noise/2.;
 }
 
Index: /trunk/Poubelle/archTOI.old/archparam.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/archparam.cc	(revision 431)
+++ /trunk/Poubelle/archTOI.old/archparam.cc	(revision 432)
@@ -12,5 +12,6 @@
 ArchParam::AcqParam::AcqParam() 
 : tBlock0   (1376.8358818),
-  perEch    (0.005836818076)
+  perEch    (0.005836818076),
+  utcOrigin (1376.5)
 {}
 
@@ -30,4 +31,5 @@
   cout << "   tBlock0      " << acq.tBlock0    << "\n";
   cout << "   perEch       " << acq.perEch     << "\n";
+  cout << "   utcOrigin    " << acq.utcOrigin  << "\n";
   cout << " **GEOM\n";
   cout << " **SST\n";
Index: /trunk/Poubelle/archTOI.old/archparam.h
===================================================================
--- /trunk/Poubelle/archTOI.old/archparam.h	(revision 431)
+++ /trunk/Poubelle/archTOI.old/archparam.h	(revision 432)
@@ -9,4 +9,5 @@
     double tBlock0;  // MJD du bloc numero zero...
     double perEch;   // periode d''echantillonage en secondes 
+    double utcOrigin;
     AcqParam(); 
   };
Index: /trunk/Poubelle/archTOI.old/archtoi.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/archtoi.cc	(revision 431)
+++ /trunk/Poubelle/archTOI.old/archtoi.cc	(revision 432)
@@ -54,4 +54,5 @@
   format = ascii_fmt;
   undef  = "#";
+  undefV = -99999;
   allBolos = false;
   fptr = NULL;
@@ -92,4 +93,6 @@
   } else if (key == "#UNDEF") {
     undef=arg;
+    if (undef[0] >= '0' && undef[0] <= '9')
+      undefV = atoi(undef.c_str());
   } else if (key == "#ALLBOLOS") {
     allBolos=true;
@@ -316,4 +319,8 @@
 
 void ArchTOI::outValue_F(int icolumn, double value, bool notdef) {
+  if (notdef && undef != "#") {
+    notdef = false;
+    value = undefV;
+  }
   if (notdef) {
     fits_write_col_null(fptr, icolumn+1, fitsLine, 1, 1, &fitsStatus); 
Index: /trunk/Poubelle/archTOI.old/archtoi.h
===================================================================
--- /trunk/Poubelle/archTOI.old/archtoi.h	(revision 431)
+++ /trunk/Poubelle/archTOI.old/archtoi.h	(revision 432)
@@ -38,4 +38,5 @@
   fmt format;
   string undef;
+  double undefV;
   bool allBolos; // tous les bolos dans le header. Sinon seulement bolos transmis.
   
Index: /trunk/Poubelle/archTOI.old/templocator.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/templocator.cc	(revision 431)
+++ /trunk/Poubelle/archTOI.old/templocator.cc	(revision 432)
@@ -172,4 +172,13 @@
 }
 
+double TempLocator::getAlphaCenter(int sampleNum) {
+  return getAlphaBolo(sampleNum, 11);
+}
+
+double TempLocator::getDeltaCenter(int sampleNum) {
+  return getDeltaBolo(sampleNum, 11);
+}
+
+
 
 
Index: /trunk/Poubelle/archTOI.old/templocator.h
===================================================================
--- /trunk/Poubelle/archTOI.old/templocator.h	(revision 431)
+++ /trunk/Poubelle/archTOI.old/templocator.h	(revision 432)
@@ -19,4 +19,6 @@
   double getAlphaBolo(int sampleNum, int ibolo);
   double getDeltaBolo(int sampleNum, int ibolo);
+  double getAlphaCenter(int sampleNum);
+  double getDeltaCenter(int sampleNum);
   
   void getAltAzBolo(int sampleNum, int ibolo, double& elv, double& az);
Index: /trunk/Poubelle/archTOI.old/toiiter.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/toiiter.cc	(revision 431)
+++ /trunk/Poubelle/archTOI.old/toiiter.cc	(revision 432)
@@ -36,4 +36,9 @@
  tStart = -9.e99;
  tEnd   = 9.e99;
+ utcStart = -9.e99;
+ utcEnd   = 9.e99;
+ 
+ sStart = -999999999;
+ sEnd   =  999999999;
  
  //tBlock0 = -1;
@@ -61,7 +66,13 @@
   if (x.initDone && x.curFile != x.files.end()) curFile = files.find(*(x.curFile));
   isOnBoardRecorder = x.isOnBoardRecorder;
-  imes = x.imes;
-  tStart = x.tStart;
-  tEnd = x.tEnd;
+  imes   = x.imes;
+  
+  tStart   = x.tStart;
+  tEnd     = x.tEnd;
+  utcStart = x.utcStart;
+  utcEnd   = x.utcEnd;
+  sStart   = x.sStart;
+  sEnd     = x.sEnd;
+  
   trigMask = x.trigMask;
   infos = x.infos;   
@@ -108,4 +119,12 @@
  if (initDone) return;
  initDone = true;
+ if (utcStart > 0) {
+   double t = (utcStart/24.) + archParam.acq.utcOrigin;
+   if (t > tStart) tStart=t;
+ }
+ if (utcEnd > 0) {
+   double t = (utcEnd/24.) + archParam.acq.utcOrigin;
+   if (t < tEnd) tEnd=t;
+ }
  // On a soit un repertoire, soit une liste de fichiers....
   if (directory == "") {
@@ -215,17 +234,16 @@
     if ((*i).triggering) {
       switch ((*i).kind) {
-      case boloTens:
-      case boloTens2:
-      case boloRaw:
-      case boloRawCN:
-      case boloTensCN:
+      case boloMuV:
+      case boloMuV2:
+      case boloRawMuV:
+      case boloRawMuVCN:
         trigMask |= block_bolo_mask;
         break;
-      case boloTens2T:
+      case boloMuV2T:
       case boloRes:
       case boloTemp:
          trigMask |= block_bolo_mask | block_reglage_mask;
         break;
-     case dilDAC:
+      case dilDAC:
       case dilSwitch:
         trigMask |= block_dilution_mask;
@@ -241,5 +259,5 @@
         trigMask |= block_gps_mask;
         break;
-      case azimutBolo:
+      case azimuthBolo:
         trigMask |= block_bolo_mask;
         //file->needSSTProcessMask(SSTHandler::findPeriod);
@@ -263,5 +281,5 @@
         break;
       case gyroRaw:
-      case gyroTens:
+      case gyroV:
         trigMask |= block_gyro_mask;
         break;
@@ -269,8 +287,10 @@
         trigMask |= block_gyro_mask; // $CHECK$ + info to calibrate gyros
         break;
-      case alphaAxis:
-      case deltaAxis:
+      case alphaRotAxis:
+      case deltaRotAxis:
       case alphaSst:
       case deltaSst:
+      case alphaFPAxis:
+      case deltaFPAxis:
       case alphaBolo:
       case deltaBolo:
@@ -278,4 +298,8 @@
         //file->needSSTProcessMask(SSTHandler::findAxis);
         //trigMask |= block_sst_mask;
+        break;
+      case alphaZenith:
+      case deltaZenith:
+        trigMask |= block_gps_mask;
         break;
       }
@@ -323,10 +347,10 @@
     double smp = file1stSamp[*i];
     double t   = archParam.acq.tBlock0 + smp * archParam.acq.perEch/86400.;
-    if (t>tEnd) {  // premier echantillon apres tEnd
+    if (t>tEnd || smp>sEnd) {  // premier echantillon apres tEnd
      files.erase(*i);
      prev = "";
      continue;
     }
-    if (t<tStart) { // premier echantillon avant tStart -> on vire le precedent si existe
+    if (t<tStart || smp<sStart) { // premier echantillon avant tStart -> on vire le precedent si existe
       if (prev != "") {
         files.erase(prev);
@@ -436,5 +460,6 @@
    TOIKind kind = infos[column].kind;
    if (auxGPS && 
-       (kind == longitude || kind == latitude || kind == altitude || kind == tsid)) {
+       (kind == longitude || kind == latitude || kind == altitude || kind == tsid ||
+        kind == alphaZenith || kind == deltaZenith)) {
          double dummy;
          return auxGPS->getLocation(getMJD(), dummy, dummy, dummy) == 0;
@@ -448,14 +473,14 @@
    case internalTime:
    case mjd:
+   case mutc:
      return true;
-   case boloTens:
-   case boloTens2:
-   case boloTens2T:
+   case boloMuV:
+   case boloMuV2:
+   case boloMuV2T:
    case boloRes:
-   case boloRawCN:
+   case boloRawMuVCN:
      if (imes==0 && file->llastBolo()==NULL) return false;
      return file->lastBolo() != NULL;
-   case boloTensCN:
-   case boloRaw:
+   case boloRawMuV:
      return file->lastBolo() != NULL;
    case boloGainAmpli:
@@ -480,5 +505,5 @@
    }
    case gyroRaw:
-   case gyroTens:
+   case gyroV:
    case gyroSpeed:
      return (file->lastGyro() != NULL);
@@ -487,4 +512,6 @@
    case longitude:
    case latitude:
+   case alphaZenith:
+   case deltaZenith:
      return file->hasGPSPos();
    case altitude:
@@ -492,7 +519,9 @@
    case tsid:
      return file->hasGPSPos();
-   case azimutBolo:
-   case alphaAxis:
-   case deltaAxis:
+   case azimuthBolo:
+   case alphaRotAxis:
+   case deltaRotAxis:
+   case alphaFPAxis:
+   case deltaFPAxis:
    case alphaBolo:
    case deltaBolo:
@@ -525,4 +554,5 @@
            return tSid.getLST(getMJD());
          }
+         
    }
    if (rawIter) {
@@ -540,13 +570,13 @@
    case mjd:
      return getMJD();
-   case boloTens:
+   case mutc:
+     return (getMJD()-archParam.acq.utcOrigin)*24.;
+   case boloMuV:
      return file->getMuVBolo(index, imes);
-   case boloTens2:
+   case boloMuV2:
      return file->getMuVBolo2(index, imes);
-   case boloRaw:
+   case boloRawMuV:
      return file->getRawBolo(index, imes);
-   case boloRawCN:
-     return file->getRawBoloCN(index, imes);
-   case boloTensCN:
+   case boloRawMuVCN:
      return file->getMuVBoloCN(index, imes);
    case boloGainAmpli:
@@ -556,5 +586,5 @@
    case boloDACI:
      return file->getDACI(index);
-   case boloTens2T:
+   case boloMuV2T:
      return file->getMuVBolo2T(index, imes);
    case boloRes:
@@ -582,5 +612,5 @@
    case gyroRaw:
      return file->getGyroRaw(index, imes);
-   case gyroTens:
+   case gyroV:
      return file->getGyroTens(index, imes);
    case gyroSpeed:
@@ -597,7 +627,11 @@
      tSid.setLongitude(file->getGPSLong());
      return tSid.getLST(getMJD());
-   case azimutBolo:
-   case alphaAxis:
-   case deltaAxis: 
+   case azimuthBolo:
+   case alphaRotAxis:
+   case deltaRotAxis: 
+   case alphaFPAxis:
+   case deltaFPAxis: 
+   case alphaZenith:
+   case deltaZenith: 
    case alphaBolo:
    case deltaBolo: {
@@ -614,9 +648,13 @@
         tempLocator.setEarthPos(lon, lat);
         tempLocator.setTSid(ts);
-        if ((kind) == alphaAxis) return tempLocator.getAlphaZenith();
-        if ((kind) == deltaAxis) return tempLocator.getDeltaZenith();
-        if ((kind) == azimutBolo) return tempLocator.getAzimutBolo(getSampleIndex(),index);
+        if ((kind) == alphaRotAxis) return tempLocator.getAlphaZenith();
+        if ((kind) == deltaRotAxis) return tempLocator.getDeltaZenith();
+        if ((kind) == alphaZenith) return tempLocator.getAlphaZenith();
+        if ((kind) == deltaZenith) return tempLocator.getDeltaZenith();
+        if ((kind) == azimuthBolo) return tempLocator.getAzimutBolo(getSampleIndex(),index);
         if ((kind) == alphaBolo) return tempLocator.getAlphaBolo(getSampleIndex(),index);
         if ((kind) == deltaBolo) return tempLocator.getDeltaBolo(getSampleIndex(),index);
+        if ((kind) == alphaFPAxis) return tempLocator.getAlphaCenter(getSampleIndex());
+        if ((kind) == deltaFPAxis) return tempLocator.getDeltaCenter(getSampleIndex());
         return 0;
      }
@@ -640,14 +678,14 @@
      case internalTime:
      case mjd:
+     case mutc:
      case tsid:
        return true;
-     case boloTens:
-     case boloTens2:
-     case boloTens2T:
+     case boloMuV:
+     case boloMuV2:
+     case boloMuV2T:
      case boloRes:
        return file->blockNum() == file->getBoloBlockNum();
-     case boloRaw:
-     case boloRawCN:
-     case boloTensCN:
+     case boloRawMuV:
+     case boloRawMuVCN:
        return file->blockNum() == file->getBoloBlockNum();
      case boloGainAmpli:
@@ -670,5 +708,5 @@
        return file->blockNum() == file->getSSTCompBlockNum();
      case gyroRaw:
-     case gyroTens:
+     case gyroV:
      case gyroSpeed:
        return file->blockNum() == file->getGyroBlockNum();
@@ -681,11 +719,15 @@
      case altitude:
        return file->blockNum() == file->getGPSBlockNum() && imes==0;
-     case azimutBolo:
+     case azimuthBolo:
      case alphaBolo:
      case deltaBolo:
+     case alphaZenith:
+     case deltaZenith:
+     case alphaFPAxis:
+     case deltaFPAxis:
        return true; // $CHECK$ with SSTHandler
-     case alphaAxis:
+     case alphaRotAxis:
        return true; // $CHECK$ with SSTHandler
-     case deltaAxis:
+     case deltaRotAxis:
        return true; // $CHECK$ with SSTHandler
    }
Index: /trunk/Poubelle/archTOI.old/toiiter.h
===================================================================
--- /trunk/Poubelle/archTOI.old/toiiter.h	(revision 431)
+++ /trunk/Poubelle/archTOI.old/toiiter.h	(revision 432)
@@ -17,18 +17,19 @@
   sampleNum,     // Numero d''echantillon (timer interne transputer)
   internalTime,  // temps transputer depuis debut manip, en secondes.
-  mjd,           // UTC (en jours, MJD = JD - 2450000). index=0 : premier bloc GPS. 1: + sioux.
-  boloTens,      // tension en microVolts, filtree avec filtre carre indexe par bolometre
-  boloTens2,     // tension en microVolts, avec soustraction offset filtre
-  boloRaw,       // tension brute en microVolts, non filtree indexe par bolometre, sans chgt signe
+  mjd,           // UTC (en jours, MJD = JD - 2450000).
+  mutc,          // UTC en heure, avec soustraction d'origine
+  boloMuV,       // tension en microVolts, filtree avec filtre carre indexe par bolometre
+  boloMuV2,      // tension en microVolts, avec soustraction offset filtre
+  boloRawMuV,    // tension brute en microVolts, non filtree indexe par bolometre, sans chgt signe
   boloTemp,      // Kelvins, need R(T) -> N/A
-  boloGainAmpli, // gain de l'ampli du bolo
   boloDACV,      // tension de reference du DAC (microVolts)
   boloDACI,      // courant (microAmps)
-  boloRawCN,     // compression noise on bolo raw
-  boloTensCN,    // compression noise on bolo (microVolts), no filter
-  boloTens2T,    // total, microVolts, avec consigne DAC
+  boloRawMuVCN,  // compression noise on bolo (microVolts), no filter
+  boloMuV2T,     // total, microVolts, avec consigne DAC
   boloRes,       // Resistance, ohms
+  boloGainAmpli, //
   dilDAC,        // dilution DAC, index = 0-47
   dilSwitch,     // dilution, mot de 32 bits
+  serviceTemp,   // service temperature, K
   sstDiode,      // signal brut SST, indice = diode, 0-45
   sstChannel,    // signal brut SST, indice = canal, 0-47
@@ -40,5 +41,5 @@
   sstStarT,      // temps d''une eventuelle etoile,            <0 si moins de i+1 etoiles
   gyroRaw,       // valeur brute du gyro, index = 0,1,2
-  gyroTens,      // tension gyro, V, index = 0,1,2
+  gyroV,         // tension gyro, V, index = 0,1,2
   gyroSpeed,     // vitesse gyro, deg/s, index = 0,1,2, calibree...
   gpsTime,       // temps fourni par GPS
@@ -47,9 +48,13 @@
   altitude,      // position ballon, m
   tsid,          // temps sideral en secondes
-  azimutBolo,    // azimut 
-  alphaAxis,     // 
-  deltaAxis,     //
+  azimuthBolo,   // azimut 
+  alphaRotAxis,  // 
+  deltaRotAxis,  //
+  alphaZenith,   // 
+  deltaZenith,   //
   alphaSst,      // 
   deltaSst,      //
+  alphaFPAxis,   //
+  deltaFPAxis,   //
   alphaBolo,     // sur le ciel, indexe par bolometre
   deltaBolo      // sur le ciel, indexe par bolometre
@@ -117,5 +122,7 @@
    int imes;
    
-   double tStart, tEnd;
+   double tStart, tEnd;      // MJD
+   double utcStart, utcEnd;  // UTC, will be converted towards tStart tEnd at init
+   long   sStart, sEnd;      // samplenum
    
    //double tBlock0;  // MJD du bloc numero zero...
Index: /trunk/Poubelle/archTOI.old/toisvr.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/toisvr.cc	(revision 431)
+++ /trunk/Poubelle/archTOI.old/toisvr.cc	(revision 432)
@@ -36,8 +36,19 @@
 
   
-void TOISvr::setTimeInterval(double tStart, double tEnd) {
+void TOISvr::setMJDInterval(double tStart, double tEnd) {
   if (tStart>0) iter.tStart = tStart;
   if (tEnd>0)   iter.tEnd = tEnd;
 }
+
+void TOISvr::setUTCInterval(double tStart, double tEnd) {
+  if (tStart>0) iter.utcStart = tStart;
+  if (tEnd>0)   iter.utcEnd = tEnd;
+}
+
+void TOISvr::setSNInterval(long tStart, long tEnd) {
+  if (tStart>0) iter.sStart = tStart;
+  if (tEnd>0)   iter.sEnd = tEnd;
+}
+
 
 void TOISvr::setUnderSample(int n) {
@@ -110,7 +121,8 @@
     else tsttoi(internalTime)
     else tsttoi(mjd)
-    else tsttoi(boloTens)
-    else tsttoi(boloTens2)
-    else tsttoi(boloRaw)
+    else tsttoi(mutc)
+    else tsttoi(boloMuV)
+    else tsttoi(boloMuV2)
+    else tsttoi(boloRawMuV)
     else tsttoi(boloRes)
     else tsttoi(boloTemp)
@@ -118,9 +130,9 @@
     else tsttoi(boloDACV)
     else tsttoi(boloDACI)
-    else tsttoi(boloTens2T)
-    else tsttoi(boloRawCN)
-    else tsttoi(boloTensCN)
+    else tsttoi(boloMuV2T)
+    else tsttoi(boloRawMuVCN)
     else tsttoi(dilDAC)
     else tsttoi(dilSwitch)
+    else tsttoi(serviceTemp)
     else tsttoi(sstDiode)
     else tsttoi(sstChannel)
@@ -132,5 +144,5 @@
     else tsttoi(sstStarT)
     else tsttoi(gyroRaw)
-    else tsttoi(gyroTens)
+    else tsttoi(gyroV)
     else tsttoi(gyroSpeed)
     else tsttoi(gpsTime)
@@ -139,9 +151,13 @@
     else tsttoi(altitude)
     else tsttoi(tsid)
-    else tsttoi(azimutBolo)
-    else tsttoi(alphaAxis)
-    else tsttoi(deltaAxis)
+    else tsttoi(azimuthBolo)
+    else tsttoi(alphaRotAxis)
+    else tsttoi(deltaRotAxis)
     else tsttoi(alphaSst)
     else tsttoi(deltaSst)
+    else tsttoi(alphaZenith)
+    else tsttoi(deltaZenith)
+    else tsttoi(alphaFPAxis)
+    else tsttoi(deltaFPAxis)
     else tsttoi(alphaBolo)
     else tsttoi(deltaBolo)
@@ -150,9 +166,11 @@
       return false;
     }
-    if (kind  == sampleNum || kind == mjd) notrig = true;
+    if (kind  == sampleNum || kind == mjd || kind == mutc) notrig = true;
     string toiname = keyw.substr(1); 
     while (args != "") {
       if (args[0] == ' ') {
-        args = args.substr(args.find_first_not_of(' '));
+        x = args.find_first_not_of(' ');
+        if (x==string::npos) break;
+        args = args.substr(x);
         if (args == "") break;
       }
@@ -196,8 +214,16 @@
     arg = arg.substr(arg.find_first_not_of(' '));
   }
-  if (key == "#TRANGE") {
+  if (key == "#MJDRANGE") {
     double tmin, tmax;
     sscanf(arg.c_str(), "%lg %lg", &tmin, &tmax);
-    setTimeInterval(tmin, tmax);
+    setMJDInterval(tmin, tmax);
+  } else if (key == "#UTCRANGE") {
+    double tmin, tmax;
+    sscanf(arg.c_str(), "%lg %lg", &tmin, &tmax);
+    setUTCInterval(tmin, tmax);
+  } else if (key == "#SNRANGE") {
+    long tmin, tmax;
+    sscanf(arg.c_str(), "%ld %ld", &tmin, &tmax);
+    setSNInterval(tmin, tmax);
   } else if (key == "#PATH") {
     setDirectory(arg);
@@ -212,4 +238,8 @@
     sscanf(arg.c_str(), "%lg", &t0);
     archParam.acq.tBlock0 = t0;
+  } else if (key == "#UTCORIGIN") {
+    double t0;
+    sscanf(arg.c_str(), "%lg", &t0);
+    archParam.acq.utcOrigin = t0;
   } else if (key == "#PERECH") {
     double t0;
@@ -235,4 +265,5 @@
   processRequest("#MJD0 1376.8358818");
   processRequest("#PERECH 0.005836818076");
+  processRequest("#UTCORIGIN 1376.5");
   processRequest("#ASIGPS ASI_GPS_archeops1999.ascii");
   processRequest("#COMMENT Archtoi -- 23 september 1999 -- Eric Aubourg CEA/DAPNIA");
Index: /trunk/Poubelle/archTOI.old/toisvr.h
===================================================================
--- /trunk/Poubelle/archTOI.old/toisvr.h	(revision 431)
+++ /trunk/Poubelle/archTOI.old/toisvr.h	(revision 432)
@@ -27,5 +27,7 @@
   void useAuxGPS(AuxGPS* gps);
   
-  void setTimeInterval(double tStart, double tEnd);
+  void setMJDInterval(double tStart, double tEnd);
+  void setUTCInterval(double tStart, double tEnd);
+  void setSNInterval(long sStart, long sEnd);
   void setUnderSample(int n);
   
