Index: trunk/AddOn/TAcq/branap.cc
===================================================================
--- trunk/AddOn/TAcq/branap.cc	(revision 3704)
+++ trunk/AddOn/TAcq/branap.cc	(revision 3705)
@@ -114,5 +114,7 @@
     return 5;
   }
-  cout << " -act Action: cube3d or vis   \n"
+  cout << " -act Action: cube3d or vis or viscktt  \n"
+       << "    cube3d: create 3D fits cubes, vis: compute visibilites,  \n" 
+       << "    viscktt: compute visibilities and check TimeTag/FrameCounter"
        << " -out OutPath: Output directory name \n"
        << " -nmean NMean: Number of packet used for spectra/visibility computation \n"
Index: trunk/AddOn/TAcq/branap.h
===================================================================
--- trunk/AddOn/TAcq/branap.h	(revision 3704)
+++ trunk/AddOn/TAcq/branap.h	(revision 3705)
@@ -21,4 +21,6 @@
   int PaqSizeFromFits();
 
+  uint_8 TotalNPaquets() { return ((imax_-imin_+1)*npaqinfile_/istep_); }
+
   ostream& Print(ostream& os);
 
@@ -34,4 +36,5 @@
   uint_4 paqsize_; 
   uint_4 nzones_, npaqinzone_;
+  uint_4 npaqinfile_;    // nombre de paquets dans un fichier p
   int prtlevel_;
 };
Index: trunk/AddOn/TAcq/brfitsrd.h
===================================================================
--- trunk/AddOn/TAcq/brfitsrd.h	(revision 3704)
+++ trunk/AddOn/TAcq/brfitsrd.h	(revision 3705)
@@ -59,5 +59,5 @@
   bool rdsamefc_;  // if true, read paquets with same value of FrameCounter on different fibers
   uint_4 imin_, imax_, istep_; 
-  size_t totnbytesrd_;
+  uint_8 totnbytesrd_;
   uint_8 totsamefc_;   // nombre total de paquets avec meme framecounter  
   MiniFITSFile mff_[MAXANAFIB];
Index: trunk/AddOn/TAcq/brproc.cc
===================================================================
--- trunk/AddOn/TAcq/brproc.cc	(revision 3704)
+++ trunk/AddOn/TAcq/brproc.cc	(revision 3705)
@@ -75,4 +75,6 @@
   cout << " BRVisibilityCalculator/Info NMean= " << nmean_ << " JF1=" << jf1_ 
        << " JF2=" << jf2_ << " DJF=" << djf_ << endl;
+
+  fgcktt_=false;
 }
 
@@ -87,5 +89,30 @@
   poc << chanum_;
 
+  if (fgcktt_) {
+    cout << " BRVisibilityCalculator -  Check TimeTag done: " << endl;
+    for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)  {
+      cout << " BRTTCheck-Fiber[" << fib << "] NBadTT=" << vbadtt_[fib] 
+	   << "  NotSameTT=" << vnsamett_[fib] << endl; 
+    }
+    POutPersist pott(outpath_+"ttfcmtx.ppf");
+    pott << PPFNameTag("FC") << fcmtx_; 
+    pott << PPFNameTag("TT") << ttmtx_;     
+  }
   delete[] xnt_;
+}
+
+/* --Methode-- */
+int BRVisibilityCalculator::ActivateTimeTagCheck(uint_8 maxnpaq)
+{
+  cout << " BRVisibilityCalculator::ActivateTimeTagCheck() - TT/Fc matrix NCols=" << maxnpaq << endl;
+  mindeltatt_=memgr_.PaqSize()/2;
+  if (mindeltatt_<1) mindeltatt_=1;
+  fcmtx_.SetSize(memgr_.NbFibres(), maxnpaq);
+  ttmtx_.SetSize(memgr_.NbFibres(), maxnpaq);
+  vlasttt_.resize(memgr_.NbFibres(), 0);
+  vbadtt_.resize(memgr_.NbFibres(), 0);
+  vnsamett_.resize(memgr_.NbFibres(), 0);
+  fgcktt_=true;
+  return 0;
 }
 
@@ -134,5 +161,6 @@
   
   moyfc_ += curfc_[0];
-  moytt_ += vpaq_[0].TimeTag();
+  moytt_ += (vpaq_[0].TimeTag()-ttfirst_[0]);
+  if (fgcktt_)  CheckTimeTag();
   totnbpaq_++;
   return 0;
@@ -160,5 +188,7 @@
 	r_4 moyreal=0.;
 	r_4 moyimag=0.;
-	for(sa_size_t jjf=jf; jjf<jf+djf_; jjf++) {
+	sa_size_t jjfmx=jf+djf_;
+	if (jjfmx > vismtx_.NCols()) jjfmx=vismtx_.NCols();
+	for(sa_size_t jjf=jf; jjf<jjfmx; jjf++) {
 	  moyreal+=vismtx_(rv,jjf).real();
 	  moyimag+=vismtx_(rv,jjf).imag();
@@ -170,4 +200,33 @@
 	visdt_.AddRow(xnt_);
       }
+    }
+  }
+  return 0;
+}
+
+/* --Methode-- */
+int BRVisibilityCalculator::CheckTimeTag()
+{
+  if (totnbpaq_==0) {
+    for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++)  {
+      vlasttt_[fib]=ttfirst_[fib];
+      if (ttmtx_.NCols()>0) {
+	fcmtx_(fib,totnbpaq_) = curfc_[fib]; 
+	ttmtx_(fib,totnbpaq_) = vlasttt_[fib]; 
+      }
+    }
+    return 0;
+  }
+  for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) {
+    uint_8 ld = vpaq_[fib].TimeTag()-vlasttt_[fib];
+    uint_8 fd = vpaq_[fib].TimeTag()-ttfirst_[fib]-vpaq_[0].TimeTag()+ttfirst_[0];
+    if ( (ld < mindeltatt_) || (fd<-5) || (fd>5)) { vbadtt_[fib]++; vnsamett_[fib]++; }
+    else {
+      if (fd!=0)  vnsamett_[fib]++;
+    }
+    vlasttt_[fib]=vpaq_[fib].TimeTag();
+    if (totnbpaq_<ttmtx_.NCols()) {
+      fcmtx_(fib,totnbpaq_) = curfc_[fib]; 
+      ttmtx_(fib,totnbpaq_) = vlasttt_[fib]; 
     }
   }
Index: trunk/AddOn/TAcq/brproc.h
===================================================================
--- trunk/AddOn/TAcq/brproc.h	(revision 3704)
+++ trunk/AddOn/TAcq/brproc.h	(revision 3705)
@@ -31,7 +31,12 @@
   virtual ~BRVisibilityCalculator(); // Fait le nettoyage final , sauvegarde des objets ...
 
+  // Pour activer la verification des timetag
+  // Creation / sauvegarde d'une matrice de TimeTag / FrameCounter avec NCols=maxnpaq (nb de paquets/trigger)  
+  int ActivateTimeTagCheck(uint_8 maxnpaq);
+
 protected:
   virtual int Process(); 
   virtual int FillVisibTable(double fcm, double ttm); 
+  virtual int CheckTimeTag(); 
 
   uint_4 nmean_;  // Nombre de spectres pour le calcul des moyennes 
@@ -49,6 +54,15 @@
 
   uint_4 numfile_;
-  uint_4 totnbpaq_;
+  uint_8 totnbpaq_;
   double* xnt_;
+
+  // Variables/objets pour la verifications des timetag
+  bool fgcktt_;  // true -> checktimetag 
+  uint_8 mindeltatt_;       // difference minimum de deux timetag successifs 
+  TMatrix< uint_8 > fcmtx_; // matrices des framecounters
+  TMatrix< uint_8 > ttmtx_; // matrices des timetag 
+  vector< uint_8 > vlasttt_;  // dernieres valeurs de TimeTag / fibre
+  vector< uint_8 > vbadtt_;  // Number of bad TimeTag paquets per fiber 
+  vector< uint_8 > vnsamett_;  // Number of paquets having TimeTag <> TT_Fiber1 per fiber 
 };
 
Index: trunk/AddOn/TAcq/svv2mtx.cc
===================================================================
--- trunk/AddOn/TAcq/svv2mtx.cc	(revision 3704)
+++ trunk/AddOn/TAcq/svv2mtx.cc	(revision 3705)
@@ -248,5 +248,7 @@
 	r_4 moyreal=0.;
 	r_4 moyimag=0.;
-	for(sa_size_t jjf=jf; jjf<jf+djf_; jjf++) {
+	sa_size_t jjfmx=jf+djf_;
+	if (jjfmx > vismtx_.NCols()) jjfmx=vismtx_.NCols();
+	for(sa_size_t jjf=jf; jjf<jjfmx; jjf++) {
 	  moyreal+=vismtx_(rv,jjf).real();
 	  moyimag+=vismtx_(rv,jjf).imag();
Index: trunk/AddOn/TAcq/vismfib.cc
===================================================================
--- trunk/AddOn/TAcq/vismfib.cc	(revision 3704)
+++ trunk/AddOn/TAcq/vismfib.cc	(revision 3705)
@@ -63,4 +63,5 @@
 
     BRVisibilityCalculator proc(mmgr, par.outpath_, par.nmean_, par.freqmin_, par.freqmax_, par.nbinfreq_);
+    if (par.action_ == "viscktt")  proc.ActivateTimeTagCheck(par.TotalNPaquets());
     FitsCubeWriter wrt(mmgr, par.outpath_, par.nbloc_);
     //    BRBaseProcessor proc(mmgr);
