Index: /trunk/AddOn/TAcq/acqparam_exemple.d
===================================================================
--- /trunk/AddOn/TAcq/acqparam_exemple.d	(revision 3919)
+++ /trunk/AddOn/TAcq/acqparam_exemple.d	(revision 3920)
@@ -111,4 +111,6 @@
 #  Defaut : visicalc 1024  1 1 
 visicalc 5000  2 1 
+## Activation de remplissage du DataTable des visibilites 
+## @visidtable 
 ## Choix des visibilites (Numero de paires de canaux) a calculer 
 #  @visipairs FirstPair NbPairs [OddEvenOnly]
Index: /trunk/AddOn/TAcq/brparam.cc
===================================================================
--- /trunk/AddOn/TAcq/brparam.cc	(revision 3919)
+++ /trunk/AddOn/TAcq/brparam.cc	(revision 3920)
@@ -202,8 +202,9 @@
   nmaxProc=0;
 //  --- variables de controle pour le calcul des visibilites  
-  fgdoVisiC = false;
+  fgdoVisiC=false;
   nmeanVisiC=1024;
   nbcalgrpVisiC=1;
   nthrVisiC=1;
+  fgfdtVisiC=false;
   firstpairVisiC=0;  
   nbpairsVisiC=999999999;
@@ -289,5 +290,6 @@
   nmeanVisiC=p.nmeanVisiC;         
   nbcalgrpVisiC=p.nbcalgrpVisiC;     
-  nthrVisiC=p.nthrVisiC;         
+  nthrVisiC=p.nthrVisiC;     
+  fgfdtVisiC=p.fgfdtVisiC;    
   firstpairVisiC=p.firstpairVisiC;
   nbpairsVisiC=p.nbpairsVisiC;  
@@ -379,4 +381,5 @@
     nthrVisiC=conf.IParam("visicalc",2,1);
   }
+  if (conf.HasKey("visidtable"))  fgfdtVisiC=true;
   if (conf.HasKey("visipairs")) {
     firstpairVisiC=conf.IParam("visipairs",0,0);
@@ -539,5 +542,6 @@
   else os << " No monotoring thread " << endl;
   if (fgdoVisiC) {
-    os << " Visibility calculation, nbCalGrp=" << nbcalgrpVisiC << " NThr/VisCal=" << nthrVisiC << endl;
+    os << " Visibility calculation, nbCalGrp=" << nbcalgrpVisiC << " NThr/VisCal=" << nthrVisiC 
+       << ((fgfdtVisiC)?" Fill_VisiDTable":" ") << endl;
     os << " ... VisiCalc FirstPair= " << firstpairVisiC << " NbPairs= " << nbpairsVisiC 
        << ((fgpimpVisiC)?" (Odd-Even visibilities+AutoCorrel only) ":"") << endl;
Index: /trunk/AddOn/TAcq/brparam.h
===================================================================
--- /trunk/AddOn/TAcq/brparam.h	(revision 3919)
+++ /trunk/AddOn/TAcq/brparam.h	(revision 3920)
@@ -208,4 +208,5 @@
   uint_4 nbcalgrpVisiC;     // Nb d'objets/threads dans BRVisCalcGroup 
   uint_4 nthrVisiC;         // Nb de threads pour l'execution parallele ds BRVisibilityCalculator
+  bool fgfdtVisiC;          // true -> fill visibility data tables 
   uint_4 firstpairVisiC, nbpairsVisiC;  // Numero premiere visibilites, nombre de visibilites a calculer
   bool fgpimpVisiC;    // true -> calcul visibilite pair-impair + autocorrel  
Index: /trunk/AddOn/TAcq/brviscalc.cc
===================================================================
--- /trunk/AddOn/TAcq/brviscalc.cc	(revision 3919)
+++ /trunk/AddOn/TAcq/brviscalc.cc	(revision 3920)
@@ -45,4 +45,5 @@
   visdt_.AddFloatColumn("vre");
   visdt_.AddFloatColumn("vim");
+  ActivateVisDTable(); 
 
   if (nmean_ < 1)  nmean_=memgr_.NbPaquets();
@@ -65,18 +66,19 @@
 {
   if (totnbpaq_<1)   return; 
-  cout << " ~BRVisibilityCalculator - Visibility Datatable : " << endl;
-  cout << visdt_;
+  if (fgvisdt_) {
+    cout << " ~BRVisibilityCalculator - Visibility Datatable : " << endl;
+    cout << visdt_;
   
-  string filename;
-  filename = outpath_+"visdt.ppf";
-  if (nbcalc_>1) {
-    char sbuff[32];
-    sprintf(sbuff,"visdt_%d.ppf",(int)calcid_);
-    filename = outpath_+sbuff;
-  }
-  POutPersist po(filename);
-  po << visdt_;
-  if (calcid_ == 0) {
-    
+    string filename;
+    filename = outpath_+"visdt.ppf";
+    if (nbcalc_>1) {
+      char sbuff[32];
+      sprintf(sbuff,"visdt_%d.ppf",(int)calcid_);
+      filename = outpath_+sbuff;
+    }
+    POutPersist po(filename);
+    po << visdt_;
+  }
+  if (calcid_ == 0) {    
     if (fgcktt_) {
       cout << " BRVisibilityCalculator -  Check TimeTag done: TotNPaqProc= " << totnbpaq_ << endl;
@@ -306,5 +308,5 @@
 	       << totnbpaq_ << " TotMegaFLOP=" << (uint_8)TotNbMegaFLOP() << " -> VisibMtx in " << flnm << endl;
 
-	  FillVisibTable(moyfc_, moytt_);
+	  if (fgvisdt_) FillVisibTable(moyfc_, moytt_);
 	  numfile_++;
 	}
@@ -393,5 +395,5 @@
       cout << numfile_ << "-BRVisCalc[" << calcid_ << "/" << nbcalc_ << "]::Process() NPaqProc="
 	   << totnbpaq_ << " TotMegaFLOP=" << (uint_8)TotNbMegaFLOP() << " -> VisibMtx in " << flnm << endl;
-      FillVisibTable(moyfc_, moytt_);
+      if (fgvisdt_) FillVisibTable(moyfc_, moytt_);
       numfile_++;
     }
@@ -612,4 +614,10 @@
 }
 /* --Methode-- */
+void BRVisCalcGroup::ActivateVisDTable(bool fgfdt)
+{
+  for(size_t i=0; i<viscalcp_.size(); i++)
+    viscalcp_[i]->ActivateVisDTable(fgfdt);
+}
+/* --Methode-- */
 void BRVisCalcGroup::start()
 {
Index: /trunk/AddOn/TAcq/brviscalc.h
===================================================================
--- /trunk/AddOn/TAcq/brviscalc.h	(revision 3919)
+++ /trunk/AddOn/TAcq/brviscalc.h	(revision 3920)
@@ -56,4 +56,6 @@
   // Creation / sauvegarde d'une matrice de TimeTag / FrameCounter avec NCols=maxnpaq (nb de paquets/trigger)  
   int ActivateTimeTagCheck(uint_8 maxnpaq);
+  // Pour activer le remplissage du DataTable des visibilites 
+  inline void ActivateVisDTable(bool fgfdt=false)  { fgvisdt_=fgfdt;  return; }
 
   // Methode d'execution standard du thread (on redefinit la methode de BRBaseProcessor)
@@ -101,4 +103,5 @@
   //  FitsInOutFile dtfos_;
   DataTable visdt_;
+  bool fgvisdt_;   // true -> fill datatable
   uint_4 numfile_;
   uint_8 totnbpaq_;
@@ -131,4 +134,5 @@
   inline int ActivateTimeTagCheck(uint_8 maxnpaq)
   { return viscalcp_[0]->ActivateTimeTagCheck(maxnpaq); }
+  void ActivateVisDTable(bool fgfdt=false);
 
   void start();
Index: /trunk/AddOn/TAcq/mfacq.cc
===================================================================
--- /trunk/AddOn/TAcq/mfacq.cc	(revision 3919)
+++ /trunk/AddOn/TAcq/mfacq.cc	(revision 3920)
@@ -429,5 +429,5 @@
 			acpar.firstpairVisiC, acpar.nbpairsVisiC, acpar.fgpimpVisiC, acpar.nthrVisiC);
   VCGThr.SelectFreqBinning(acpar.freqminVisiC, acpar.freqmaxVisiC, acpar.nbinfreqVisiC);
-
+  VCGThr.ActivateVisDTable(acpar.fgfdtVisiC);
 
   cout << "mfacq[3] Creating   EthernetReader thread object     " << endl;
Index: /trunk/AddOn/TAcq/racquproc.cc
===================================================================
--- /trunk/AddOn/TAcq/racquproc.cc	(revision 3919)
+++ /trunk/AddOn/TAcq/racquproc.cc	(revision 3920)
@@ -181,4 +181,5 @@
   Histo* phexp[2*MAXNBFIB];
   TMatrix<r_4>* psatur[2*MAXNBFIB];  
+  TVector<uint_4>* pvsatfreq[2*MAXNBFIB];
   for(int ifib=0; ifib<2*MAXNBFIB; ifib++) {
     phist[ifib]=NULL; ph2[ifib]=NULL; phexp[ifib]=NULL; psatur[ifib]=NULL;
@@ -190,4 +191,5 @@
       phexp[lc] = new Histo(-128.5,+128.5,257);
       psatur[lc] = new TMatrix<r_4>(3,3);
+      pvsatfreq[lc] = new TVector<uint_4>(spectre_.NCols());
       *psatur[lc] = 0.;
     }
@@ -254,5 +256,5 @@
 	    else if (tbcp[j].imagI()==127) sii=1;
 	    (*psatur[lc])(sir+1,sii+1)+=1.;
-
+	    if ((sir!=0)||(sii!=0))  (*pvsatfreq[lc])(j)+=1;
 	    spectre_(lc,j) += Zmod2(tbcp[j]);
 	  }
@@ -271,4 +273,5 @@
 	    else if (tbcp[j].imagI()==127) sii=1;
 	    (*psatur[lc])(sir+1,sii+1)+=1.;
+	    if ((sir!=0)||(sii!=0))  (*pvsatfreq[lc])(j)+=1;
 
 	    spectre_(lc,j) += Zmod2(tbcp[j]);
@@ -333,10 +336,8 @@
 	  sprintf(buftag,"saturV%d",(int)lc);
 	  po << PPFNameTag(buftag) << (*psatur[lc]);
-	  cout << " Matrice Saturation Voie[" << lc << "] : " <<  (*psatur[lc]);
-	  if (nzm_[lc]>0)  { 
-	    (*psatur[lc]) /= ((r_4)nzm_[lc]*0.01);  
-	    cout << " Matrice Saturation Pourcentage Voie[" << lc << "] : " <<  (*psatur[lc]);
-	  }
 	  (*psatur[lc])=0.;
+	  sprintf(buftag,"satfreqV%d",(int)lc);
+	  po << PPFNameTag(buftag) << (*pvsatfreq[lc]);
+	  (*pvsatfreq[lc])=0;
 	}
 	nzm_[lc]=0;
@@ -389,10 +390,8 @@
 	sprintf(buftag,"saturV%d",(int)lc);
 	po << PPFNameTag(buftag) << (*psatur[lc]);
-	cout << " Matrice Saturation Voie[" << lc << "] : " <<  (*psatur[lc]);
-	if (nzm_[lc]>0)  { 
-	  (*psatur[lc]) /= ((r_4)nzm_[lc]*0.01);  
-	  cout << " Matrice Saturation Pourcentage Voie[" << lc << "] : " <<  (*psatur[lc]);
-	}
-	(*psatur[lc])=0.;
+	sprintf(buftag,"satfreqV%d",(int)lc);
+	po << PPFNameTag(buftag) << (*pvsatfreq[lc]);
+	delete psatur[lc]; 
+	delete pvsatfreq[lc];
       }
       nzm_[lc]=0;
@@ -413,12 +412,4 @@
 	 << " -> " << fracsame << " % )" << endl;
   }
-
-  for(sa_size_t lc=0; lc<2*memgr.NbFibres(); lc++) {
-    if (phist[lc]) delete phist[lc];
-    if (ph2[lc]) delete ph2[lc]; 
-    if (phexp[lc]) delete phexp[lc]; 
-    if (psatur[lc]) delete psatur[lc]; 
-  }
-
   return 0;
 }
