diff --git a/Projects/ComptonTelescope/online/mfm.bin b/Projects/ComptonTelescope/online/mfm.bin
deleted file mode 100644
index 0348b762dca3bb4c1d25130d81fe84c9a4a43ed4..0000000000000000000000000000000000000000
Binary files a/Projects/ComptonTelescope/online/mfm.bin and /dev/null differ
diff --git a/Projects/ComptonTelescope/online/src/DecodeD.cpp b/Projects/ComptonTelescope/online/src/DecodeD.cpp
index ab53fce82bc754f021030b859fbf9843acc25093..a7434f50e4fd47042145184e700c5ef5f6b28958 100644
--- a/Projects/ComptonTelescope/online/src/DecodeD.cpp
+++ b/Projects/ComptonTelescope/online/src/DecodeD.cpp
@@ -36,6 +36,10 @@ void DecodeD::setTree(const char* filename)
   t1->SetBranchAddress("sample", &event.sample);
   t1->SetBranchAddress("cm_data", &event.cm_data);
   t1->SetBranchAddress("timestamp", &event.timestamp);
+  #if __EVENTTYPE__ == frame_t && __EVENTTYPE__ != newframe_t
+  t1->SetBranchAddress("chain", &event.chain);
+  t1->SetBranchAddress("nb_asic", &event.nb_asic);
+  #endif
 }
 
 void DecodeD::setRaw()
@@ -88,7 +92,8 @@ long int DecodeD::getTime()
   return event.timestamp;
 }
 
-newframe_t* DecodeD::getEvent()
+//newframe_t* DecodeD::getEvent()
+__EVENTTYPE__* DecodeD::getEvent()
 {
   return &event;
 }
@@ -100,6 +105,7 @@ void DecodeD::decodeEvent()
     case D_ROOT:
       if (cursor < length) {
         t1->GetEntry(cursor);
+        #if __EVENTTYPE__ == newframe_t && __EVENTTYPE__ != frame_t
         for (int i = 0; i < 2; i++) { // 2 faces
           for (int j = 0; j < NBDETECTORS; j++) {
             if (event.chip_data[i][j]) { // Test if data is present
@@ -113,7 +119,7 @@ void DecodeD::decodeEvent()
             } // end Test
           } // end loop on detectors
         } // end loop on faces 
-
+        #endif
         cursor++;
       }
       break;
@@ -147,17 +153,28 @@ void DecodeD::Dump()
       return;
   }
   cout << "Timestamp: " << event.timestamp << endl;
+  #if __EVENTTYPE__ == frame_t && __EVENTTYPE__ != newframe_t
+  cout << "Chain: " << event.chain << " - Asic: " << event.nb_asic << endl;
+  cout << "Chip data: " << event.chip_data << " Analog trigger: " << event.analog_trigger << " seu: " << event.seu << " Channel status: " << event.ch_status << " cm data: " << event.cm_data << endl;
+  cout << "Samples: ";
+  for (int k = 0; k<NBSTRIPS; k++) {
+    cout << event.sample[k] << " ";
+  }
+  cout << endl;
+  #endif
+  #if __EVENTTYPE__ != frame_t && __EVENTTYPE__ == newframe_t
   cout << "Chip data\tanalog trigger\tseu\tchannel status\tref channel\tcm data" << endl;
   for (int i = 0; i < 2; i++) {
-    for (int j = 0; j < 8; j++) {
+    for (int j = 0; j < NBDETECTORS; j++) {
       cout << (int)event.chip_data[i][j] << "\t" << (int)event.analog_trigger[i][j] << "\t" << (int)event.seu[i][j] << "\t" << (int)event.ch_status[i][j] << "\t" << (int)event.ref_channel[i][j] << "\t" << (int)event.cm_data[i][j] << endl;
       cout << "Samples: ";
-      for (int k = 0; k<32; k++) {
+      for (int k = 0; k<NBSTRIPS; k++) {
         cout << event.sample[i][j][k] << " ";
       }
       cout << endl;
     }
   }
+  #endif
 }
 
 
diff --git a/Projects/ComptonTelescope/online/src/DecodeD.h b/Projects/ComptonTelescope/online/src/DecodeD.h
index ded08672ee7245278d543a5673a06efc834da698..5e6479fd445702e5801d0ad66a8fcf73693dce26 100644
--- a/Projects/ComptonTelescope/online/src/DecodeD.h
+++ b/Projects/ComptonTelescope/online/src/DecodeD.h
@@ -1,6 +1,10 @@
 #ifndef DECODED_H
 #define DECODED_H
 
+//#define __EVENTTYPE__ frame_t // To read data before conversion
+#define __EVENTTYPE__ newframe_t // To read data after conversion
+
+
 // General C++ librairies
 #include <iostream>
 #include <fstream>
@@ -48,7 +52,8 @@ class DecodeD
     bool verbose;
     Datatype datatype;
     long int cursor;
-    newframe_t event;
+    __EVENTTYPE__ event;
+    //newframe_t event;
 
     // For root data
     TTree* t1;
@@ -76,7 +81,8 @@ class DecodeD
     int getStripNbr(const int i);
     double getEnergy(const int i);
     long int getTime();
-    newframe_t* getEvent();
+    __EVENTTYPE__* getEvent();
+    //newframe_t* getEvent();
     // One may add a few getters here and deprecate getEvent to avoid requiring the class user to know the newframe_t struct
     
     void decodeEvent();
diff --git a/Projects/ComptonTelescope/online/src/online_coinc.cpp b/Projects/ComptonTelescope/online/src/online_coinc.cpp
index cc3b04e84f28d6259b1e94615bb7897109271fb1..b3fb244cd3b894e744bd9b81a1a24eb0cb57ae72 100644
--- a/Projects/ComptonTelescope/online/src/online_coinc.cpp
+++ b/Projects/ComptonTelescope/online/src/online_coinc.cpp
@@ -17,13 +17,13 @@
 #include "DecodeT.h"
 
 #define __TEST_ZONE__
-#undef __TEST_ZONE__
+//#undef __TEST_ZONE__
 
 #define __CIRCULAR_TREE__
 #undef __CIRCULAR_TREE__
 
 #define __USE_CUTG__
-#undef __USE_CUTG__
+//#undef __USE_CUTG__
 
 // C++ headers
 #include <iostream>
@@ -109,7 +109,7 @@ int main(int argc, char** argv)
   DecodeR* DR = new DecodeR(false); // Instantiates DecodeR object reading calorimeter data flux
   DecodeT* DT = new DecodeT(false); // Instantiates DecodeT object reading trigger data flux
   DecodeD* DD = new DecodeD(false); // Instantiates DecodeD object reading DSSSD(s) data flux
-  newframe_t* event;
+//  newframe_t* event;
   //DD -> setTree("/disk/proto-data/data/20210304_run2/bb7_3309-7_cs137_20210304_14h35_conv.root");
   DD -> setTree("/disk/proto-data/data/20210305_run3/bb7_3309-7_cs137_20210305_14h53_conv.root");
   int dlen = DD -> getLength();
@@ -122,7 +122,7 @@ int main(int argc, char** argv)
 
   // Open data files
   ifstream iros, itrig;
-  cout << "Loading data files ";
+  cout << "Loading data files " << std::flush;
 
   itrig.open("/disk/proto-data/data/20210305_run3/mfm_trigger_20210305_run3.raw", ios::binary);
   itrig.seekg(0, ios::end);
@@ -131,7 +131,7 @@ int main(int argc, char** argv)
   char* tbuff = new char[tlen];
   itrig.read(tbuff, tlen);
   itrig.close();
-  cout << "... ";
+  cout << "... " << std::flush;
 
   iros.open("/disk/proto-data/data/20210305_run3/mfm_rosmap_20210305_run3.raw", ios::binary);
   iros.seekg(0, ios::end);
@@ -252,9 +252,55 @@ int main(int argc, char** argv)
   } else {// non reset search mode
 
     c = 0;
-
+    
     DR -> setRaw(rbuff);
     DR -> decodeBlobMFM();
+
+#ifdef __TEST_ZONE__
+  cout << "Entering test zone." << endl;
+  DD -> setTree("/disk/proto-data/data/20210305_run3/bb7_3309-7_cs137_20210305_14h53.root");
+  #if 0
+    int lblength = 50;
+    char* lb = new char[lblength];
+    for (int j = 0; j<lblength; j++) {lb[j] = ' ';}
+    while (DR -> getCursor() < rlen) {
+      if (i%10000==0) {
+        for (int j = 0; j<lblength; j++) {
+          if ((int) lblength * DR -> getCursor() / rlen > j)
+            {lb[j] = '#';} }
+        cout << "\r[" << lb << "] " << i << ": " << DR -> getCursor() << "/" << rlen << "\r" << std::flush;
+      }
+      m_NPDetectorManager->ClearEventPhysics();
+      m_NPDetectorManager->ClearEventData();
+      ccamData -> SetCTCalorimeter(1, 4, DR->getPixelNumber(), DR->getTime(), DR->getData(), pixelNumber);
+      ccamData -> SetResetCount(cr);
+      m_NPDetectorManager->BuildPhysicalEvent();
+      m_OutputTree->Fill();
+      m_NPDetectorManager->CheckSpectraServer();
+      i++;
+      DR -> decodeBlobMFM();
+    }
+  #endif
+    DD -> decodeEvent();
+    int td = DD -> getTime();
+    int hist[10] = {0};
+    int c = 0;
+    while (DD->getCursor() < dlen) {
+      DD -> decodeEvent();
+      if (td == DD -> getTime()) {
+        c++;
+      } else {
+        hist[c]++; c = 0;
+        td = DD -> getTime();
+      }
+//      cout << DD -> getTime() - td << ",";
+//      cout << DD -> getTime() << " " << td << " : " << DD -> getTime() - td << endl;
+    }
+    for (int i = 0; i<10; i++) {
+      cout << hist[i] << ", ";
+    }
+    cout << endl;
+#else
     DD -> rewind();
     DD -> decodeEvent();
 
@@ -268,12 +314,12 @@ int main(int argc, char** argv)
   #ifndef __TEST_ZONE__
         if (td-tr > 20 and td-tr < 120) { // That one is the real one
   #else
-        if (td-tr > -1000  and td-tr < 1000) {
+        if (td-tr > -1000  and td-tr < 0) {
   #endif
           //DR -> Dump();
           //DD -> Dump();
           c++;
-          cout << cc << " " << c << "(" << cr << ", " << cd << ") : " << tr << " " << td << "\n";
+          cout << cc << " " << c /*<< "(" << cr << ", " << cd << ") : " << tr << " " << td*/ << "\n";
           // Clear raw and physics data
           m_NPDetectorManager->ClearEventPhysics();
           m_NPDetectorManager->ClearEventData();
@@ -290,7 +336,6 @@ int main(int argc, char** argv)
           if (ccamPhys->EventMultiplicity > 0) {
   #ifdef __USE_CUTG__
             if (mcut->IsInside(ccamPhys->Half_Energy[0], ccamPhys->Calor_E[0])) {
-              //cout << "c" << endl;
               cc++;
               m_OutputTree->Fill();
             }
@@ -299,13 +344,11 @@ int main(int argc, char** argv)
             cc++;
   #endif
           }
-          //cout << "c" << endl;
   
           // check spectra
           m_NPDetectorManager->CheckSpectraServer();
           //cout << "d" << endl;
         }
-  //#endif
         if (td < tr) {
           DD -> decodeEvent();
         } else {
@@ -328,6 +371,7 @@ int main(int argc, char** argv)
       i++;
     
     } // End of main loop
+#endif
   } // End of mode if
 
   delete DR;