Index: /trunk/FACT++/src/EventBuilderWrapper.h
===================================================================
--- /trunk/FACT++/src/EventBuilderWrapper.h	(revision 13936)
+++ /trunk/FACT++/src/EventBuilderWrapper.h	(revision 13937)
@@ -916,5 +916,5 @@
     }
 
-    void SendRawData(PEVNT_HEADER */*fadhd*/, EVENT *event)
+    void SendRawData(PEVNT_HEADER *fadhd, EVENT *event)
     {
         // Currently we send any event no matter what its trigger id is...
@@ -923,32 +923,10 @@
         Time newt;
 
+        static int skip = 0;
+
         // FIXME: Only send events if the have newer run-numbers
-        if (newt<oldt+boost::posix_time::seconds(1))
-            return;
-
+        if (newt<oldt+boost::posix_time::milliseconds(skip>0 ? 200 : 1000))
+            return;
         oldt = newt;
-
-        vector<char> data(sizeof(EVENT)+event->Roi*sizeof(float)*(1440+160));
-        memcpy(data.data(), event, sizeof(EVENT));
-
-        float *vec = reinterpret_cast<float*>(data.data()+sizeof(EVENT));
-
-        DataCalib::Apply(vec, event->Adc_Data, event->StartPix, event->Roi);
-        fDimRawData.setQuality(DataCalib::GetStep());
-        fDimRawData.Update(data);
-
-        DrsCalibrate::RemoveSpikes(vec, event->Roi);
-
-        vector<float> data2(1440*4); // Mean, RMS, Max, Pos
-        DrsCalibrate::GetPixelStats(data2.data(), vec, event->Roi);
-
-        fDimEventData.setQuality(DataCalib::GetStep());
-        fDimEventData.Update(data2);
-    }
-
-    void SendFeedbackData(PEVNT_HEADER *fadhd, EVENT *event)
-    {
-        if (!DataCalib::IsValid())
-            return;
 
         // Workaround to find a valid header.....
@@ -957,5 +935,4 @@
 
         // FIMXE: Compare with target configuration
-
         const FAD::EventHeader *ptr=beg;
         for (; ptr!=end; ptr++)
@@ -963,4 +940,52 @@
             if (ptr->fStartDelimiter==0)
                 continue;
+        }
+        if (ptr==end || ptr->fStartDelimiter==0)
+            return;
+
+
+        vector<char> data(sizeof(EVENT)+event->Roi*sizeof(float)*(1440+160));
+        memcpy(data.data(), event, sizeof(EVENT));
+
+        float *vec = reinterpret_cast<float*>(data.data()+sizeof(EVENT));
+
+        DataCalib::Apply(vec, event->Adc_Data, event->StartPix, event->Roi);
+        DrsCalibrate::RemoveSpikes(vec, event->Roi);
+
+        vector<float> data2(1440*4); // Mean, RMS, Max, Pos
+        const double max = DrsCalibrate::GetPixelStats(data2.data(), vec, event->Roi);
+
+        // Maximum above roughly 5pe
+        if (ptr->IsTriggerPhys() && max<50 && skip<5)
+        {
+            skip++;
+            return;
+        }
+
+        skip = 0;
+
+        fDimRawData.setQuality(ptr->fTriggerType);
+        fDimRawData.Update(data);
+
+        fDimEventData.setQuality(ptr->fTriggerType);
+        fDimEventData.Update(data2);
+    }
+
+    void SendFeedbackData(PEVNT_HEADER *fadhd, EVENT *event)
+    {
+        if (!DataCalib::IsValid())
+            return;
+
+        // Workaround to find a valid header.....
+        const FAD::EventHeader *beg = reinterpret_cast<FAD::EventHeader*>(fadhd);
+        const FAD::EventHeader *end = reinterpret_cast<FAD::EventHeader*>(fadhd)+40;
+
+        // FIMXE: Compare with target configuration
+
+        const FAD::EventHeader *ptr=beg;
+        for (; ptr<end; ptr++)
+        {
+            if (ptr->fStartDelimiter==0)
+                continue;
 
             if (!ptr->HasTriggerLPext() && !ptr->HasTriggerLPint())
@@ -968,5 +993,5 @@
         }
 
-        if (ptr->fStartDelimiter==0)
+        if (ptr==end || ptr->fStartDelimiter==0)
             return;
 
