Index: /trunk/Poubelle/archTOI.old/archeopsfile.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/archeopsfile.cc	(revision 407)
+++ /trunk/Poubelle/archTOI.old/archeopsfile.cc	(revision 408)
@@ -881,7 +881,54 @@
 }
 
+double ArcheopsFile::getMuVBolo2(int ibolo, int imesure) { // microvolts, filtre 
+  // On commence par trouver la valeur d'offset, en fittant une droite sur les soustractions
+  if (!lastBolo() || !llastBolo()) return 0;
+  block_type_reglage* reglage = lastReglage();
+  block_type_param*   param = lastParam();
+  if (!reglage) return 0;
+  if (!param) return 0;
+  double sumx=0, sumy=0, sumxy=0, sumx2=0;
+  int n=20;
+  int s = imesure % 2 ? 1 : -1;
+  for (int i=1; i<=n; i++) {
+    double x = -i;
+    double y = s*(getRawBolo(ibolo, imesure-i+1) - getRawBolo(ibolo, imesure-i))/2;
+    s = -s;
+    sumx += x;
+    sumy += y;
+    sumxy += x*y;
+    sumx2 += x*x;
+  }
+  double a = (sumxy/n - (sumx/n)*(sumy/n)) / (sumx2/n - (sumx/n)*(sumx/n));
+  double b = (sumy/n) - a*(sumx/n);
+  s = imesure % 2 ? 1 : -1;
+  double y = getRawBolo(ibolo, imesure);
+  y = y-s*b;
+  return bol_micro_volt(y,(double)param->param.bolo[ibolo].bolo_gain*gain_ampli(reglage->reglage.bolo[ibolo]));
+}
+
 double ArcheopsFile::getGainAmpli(int ibolo) {
      return gain_ampli(lastReglage()->reglage.bolo[ibolo]);
 }
+
+#define capa(uu)	((parametr.bolo[uu].bolo_bebo==10)?0.000868 * (double)parametr.bolo[uu].bolo_capa:0.001 * (double)parametr.bolo[uu].bolo_capa)		// capa en pF
+#define pt_micA(uu)	((4096. * 22. * 20.) / capa(uu) )			//  pts / micro Amperes
+
+
+#define pt_micV(uu)	(((double)parametr.bolo[uu].bolo_diviseur) / 2441.)	// pts / microvolt
+
+
+double ArcheopsFile::getDACV(int ibolo) {
+  double dacV = dac_V(lastReglage()->reglage.bolo[ibolo]);
+  param_bolo& parametr = lastParam()->param;
+  return dacV / pt_micV(ibolo);
+}
+
+double ArcheopsFile::getDACI(int ibolo) {
+  double dacI = dac_I(lastReglage()->reglage.bolo[ibolo]);
+  param_bolo& parametr = lastParam()->param;
+  return dacI / pt_micA(ibolo);
+}
+
 
 // SST, gyros...
Index: /trunk/Poubelle/archTOI.old/archeopsfile.h
===================================================================
--- /trunk/Poubelle/archTOI.old/archeopsfile.h	(revision 407)
+++ /trunk/Poubelle/archTOI.old/archeopsfile.h	(revision 408)
@@ -131,5 +131,8 @@
   long getRawBolo(int ibolo, int imesure);   // donnee brute, avec seulement soustraction offset
   double getMuVBolo(int ibolo, int imesure); // microvolts, filtre avec filtre carre
+  double getMuVBolo2(int ibolo, int imesure); // microvolts, filtre +sioux
   double getGainAmpli(int ibolo);
+  double getDACV(int ibolo); // offset en microvolt
+  double getDACI(int ibolo); // courant en picoAmps
   
   // SST, gyros, etc
Index: /trunk/Poubelle/archTOI.old/archtoi.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/archtoi.cc	(revision 407)
+++ /trunk/Poubelle/archTOI.old/archtoi.cc	(revision 408)
@@ -94,4 +94,8 @@
     allBolos=true;
   } else if (key == "#REQVERSION") {
+    if (requestVersion != "") {
+      cerr << "Error. Duplicate #REQVERSION option" << endl;
+      exit(-1);
+    }
     requestVersion = arg;
   } else if (key == "#COMMENT") {
Index: /trunk/Poubelle/archTOI.old/toiiter.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/toiiter.cc	(revision 407)
+++ /trunk/Poubelle/archTOI.old/toiiter.cc	(revision 408)
@@ -221,4 +221,6 @@
         break;
       case boloGainAmpli:
+      case boloDACV:
+      case boloDACI:
         trigMask |= block_reglage_mask;
         break;
@@ -440,4 +442,6 @@
      return file->lastBolo() != NULL;
    case boloGainAmpli:
+   case boloDACV:
+   case boloDACI:
      return file->lastReglage() != NULL;
    case sstDiode:
@@ -517,8 +521,14 @@
    case boloTens:
      return file->getMuVBolo(index, imes);
+   case boloTens2:
+     return file->getMuVBolo2(index, imes);
    case boloRaw:
      return file->getRawBolo(index, imes);
    case boloGainAmpli:
      return file->getGainAmpli(index);
+   case boloDACV:
+     return file->getDACV(index);
+   case boloDACI:
+     return file->getDACI(index);
    case sstDiode:
      return file->getSSTSignal(index, imes);
@@ -578,8 +588,12 @@
        return true;
      case boloTens:
+     case boloTens2:
        return file->blockNum() == file->getBoloBlockNum();
      case boloRaw:
        return file->blockNum() == file->getBoloBlockNum();
      case boloGainAmpli:
+       return file->blockNum() == file->getReglageBlockNum() && imes==0;
+     case boloDACI:
+     case boloDACV:
        return file->blockNum() == file->getReglageBlockNum() && imes==0;
      case sstChannel:
Index: /trunk/Poubelle/archTOI.old/toiiter.h
===================================================================
--- /trunk/Poubelle/archTOI.old/toiiter.h	(revision 407)
+++ /trunk/Poubelle/archTOI.old/toiiter.h	(revision 408)
@@ -24,4 +24,6 @@
   boloTemp,      // Kelvins, need R(T) -> N/A
   boloGainAmpli, // gain de l'ampli du bolo
+  boloDACV,      // tension de reference du DAC (microVolts)
+  boloDACI,      // courant (picoAmps)
   boloRawCN,     // compression noise on bolo raw
   boloTens2T,    // total, microVolts, avec consigne DAC
Index: /trunk/Poubelle/archTOI.old/toisvr.cc
===================================================================
--- /trunk/Poubelle/archTOI.old/toisvr.cc	(revision 407)
+++ /trunk/Poubelle/archTOI.old/toisvr.cc	(revision 408)
@@ -105,4 +105,6 @@
     else tsttoi(boloTemp)
     else tsttoi(boloGainAmpli)
+    else tsttoi(boloDACV)
+    else tsttoi(boloDACI)
     else tsttoi(boloTens2T)
     else tsttoi(boloRawCN)
@@ -202,4 +204,6 @@
     gps->FitsDump("GPSDump.fits");
     useAuxGPS(gps);
+  } else if (key == "#INCLUDE") {
+    readReq(ifstream(arg.c_str()));
   } else {
     // cerr << "*Warning, unrecognized option " << line << endl;
