Index: trunk/FACT++/src/DataWriteFits.cc
===================================================================
--- trunk/FACT++/src/DataWriteFits.cc	(revision 17325)
+++ trunk/FACT++/src/DataWriteFits.cc	(revision 17329)
@@ -2,5 +2,5 @@
 
 #include "HeadersFAD.h"
-#include "FAD.h"
+#include "EventBuilder.h"
 #include "Converter.h"
 
@@ -10,5 +10,10 @@
 DataWriteFits::~DataWriteFits()
 {
-    Close();
+    if (fFile.IsOpen())
+    {
+        WriteFooter();
+        fFile.Close();
+    }
+
     delete fConv;
 }
@@ -187,8 +192,8 @@
     fTstop[0]  = 0;
 
-    memset(fTriggerCounter.data(), 0, fTriggerCounter.size()*sizeof(uint32_t));
+    fTriggerCounter.fill(0);
 
     //Last but not least, add header keys that will be updated when closing the file
-    return WriteFooter(NULL);
+    return WriteFooter();
 }
 
@@ -198,25 +203,12 @@
 //! @param e the pointer to the EVENT
 //
-bool DataWriteFits::WriteEvt(const EVENT &e)
+bool DataWriteFits::WriteEvt(const EVT_CTRL2 &evt)
 {
     if (!fFile.AddRow())
         return false;
 
-    if (e.TriggerType && !(e.TriggerType & FAD::EventHeader::kAll))
-        fTriggerCounter[0]++;
-    else  if ((e.TriggerType&FAD::EventHeader::kPedestal) && !(e.TriggerType&FAD::EventHeader::kTIM))
-        fTriggerCounter[1]++;
-    else if (e.TriggerType & FAD::EventHeader::kLPext)
-        fTriggerCounter[2]++;
-    else if (e.TriggerType & (FAD::EventHeader::kTIM|FAD::EventHeader::kPedestal))
-        fTriggerCounter[3]++;
-    else if (e.TriggerType & FAD::EventHeader::kLPint)
-        fTriggerCounter[4]++;
-    else if (e.TriggerType & FAD::EventHeader::kExt1)
-        fTriggerCounter[5]++;
-    else if (e.TriggerType & FAD::EventHeader::kExt2)
-        fTriggerCounter[6]++;
-    else
-        fTriggerCounter[7]++;
+    fTriggerCounter = evt.runCtrl->triggerCounter;
+
+    const EVENT &e = *evt.fEvent;
 
     memcpy(fTstop, &e.PCTime, 2*sizeof(uint32_t));
@@ -232,5 +224,5 @@
 }
 
-bool DataWriteFits::WriteFooter(const RUN_TAIL */*rt*/)
+bool DataWriteFits::WriteFooter()
 {
     try
@@ -288,10 +280,12 @@
 //! @param rt the pointer to the RUN_TAIL data structure
 //
-bool DataWriteFits::Close(const RUN_TAIL *rt)
+bool DataWriteFits::Close(const EVT_CTRL2 &evt)
 {
     if (!fFile.IsOpen())
         return false;
 
-    WriteFooter(rt);
+    // Just for safety
+    fTriggerCounter = evt.triggerCounter;
+    WriteFooter();
 
     fFile.Close();
Index: trunk/FACT++/src/DataWriteFits.h
===================================================================
--- trunk/FACT++/src/DataWriteFits.h	(revision 17325)
+++ trunk/FACT++/src/DataWriteFits.h	(revision 17329)
@@ -23,5 +23,5 @@
         void WriteKey(const string &name, const int idx, const T &value, const string &comment);
 
-    bool WriteFooter(const RUN_TAIL *rt);
+    bool WriteFooter();
 
     virtual int GetDrsStep() const { return -1; }
@@ -36,6 +36,6 @@
 
     bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
-    bool WriteEvt(const EVENT &e);
-    bool Close(const RUN_TAIL *rt = 0);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
 };
 
Index: trunk/FACT++/src/DataWriteFits2.cc
===================================================================
--- trunk/FACT++/src/DataWriteFits2.cc	(revision 17325)
+++ trunk/FACT++/src/DataWriteFits2.cc	(revision 17329)
@@ -4,5 +4,5 @@
 
 #include "HeadersFAD.h"
-#include "FAD.h"
+#include "EventBuilder.h"
 
 #include "externals/factofits.h"
@@ -156,8 +156,7 @@
     fTstop[1] = 0;
 
-    memset(fTriggerCounter.data(), 0, fTriggerCounter.size()*sizeof(uint32_t));
-
-    //Last but not least, add header keys that will be updated when closing the file
-    WriteFooter(NULL);
+    fTriggerCounter.fill(0);
+
+    WriteFooter();
 
     fFile->WriteTableHeader("Events");
@@ -248,25 +247,12 @@
 //! @param e the pointer to the EVENT
 //
-bool DataWriteFits2::WriteEvt(const EVENT &e)
-{
-    if (e.TriggerType && !(e.TriggerType & FAD::EventHeader::kAll))
-        fTriggerCounter[0]++;
-    else  if ((e.TriggerType&FAD::EventHeader::kPedestal) && !(e.TriggerType&FAD::EventHeader::kTIM))
-        fTriggerCounter[1]++;
-    else if (e.TriggerType & FAD::EventHeader::kLPext)
-        fTriggerCounter[2]++;
-    else if (e.TriggerType & (FAD::EventHeader::kTIM|FAD::EventHeader::kPedestal))
-        fTriggerCounter[3]++;
-    else if (e.TriggerType & FAD::EventHeader::kLPint)
-        fTriggerCounter[4]++;
-    else if (e.TriggerType & FAD::EventHeader::kExt1)
-        fTriggerCounter[5]++;
-    else if (e.TriggerType & FAD::EventHeader::kExt2)
-        fTriggerCounter[6]++;
-    else
-        fTriggerCounter[7]++;
-
-    fTstop[0] = e.PCTime;
-    fTstop[1] = e.PCUsec;
+bool DataWriteFits2::WriteEvt(const EVT_CTRL2 &evt)
+{
+    fTriggerCounter = evt.runCtrl->triggerCounter;
+
+    fTstop[0] = evt.time.tv_sec;
+    fTstop[1] = evt.time.tv_usec;
+
+    const EVENT &e = *evt.fEvent;
 
     const int realRoiTM = (e.RoiTM > e.Roi) ? e.Roi : 0;
@@ -294,5 +280,5 @@
 }
 
-void DataWriteFits2::WriteFooter(const RUN_TAIL */*rt*/)
+void DataWriteFits2::WriteFooter()
 {
     //FIXME shouldn't we convert start and stop time to MjD first ?
@@ -330,5 +316,5 @@
 //! @param rt the pointer to the RUN_TAIL data structure
 //
-bool DataWriteFits2::Close(const RUN_TAIL *rt)
+bool DataWriteFits2::Close(const EVT_CTRL2 &evt)
 {
     if (!fFile->is_open())
@@ -340,5 +326,8 @@
     try
     {
-        WriteFooter(rt);
+        // Just for safety
+        fTriggerCounter = evt.triggerCounter;
+
+        WriteFooter();
     }
     catch (const exception &e)
Index: trunk/FACT++/src/DataWriteFits2.h
===================================================================
--- trunk/FACT++/src/DataWriteFits2.h	(revision 17325)
+++ trunk/FACT++/src/DataWriteFits2.h	(revision 17329)
@@ -20,5 +20,5 @@
 
     void WriteHeader(const RUN_HEAD &h, const FAD::RunDescription &d);
-    void WriteFooter(const RUN_TAIL *rt);
+    void WriteFooter();
 
     virtual int GetDrsStep() const { return -1; }
@@ -29,6 +29,6 @@
 
     bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
-    bool WriteEvt(const EVENT &e);
-    bool Close(const RUN_TAIL *rt = 0);
+    bool WriteEvt(const EVT_CTRL2 &e);
+    bool Close(const EVT_CTRL2 &);
 
     Time GetTstart() const { return Time(fTstart[0], fTstart[1]); }
