Index: /trunk/FACT++/src/EventBuilder.cc
===================================================================
--- /trunk/FACT++/src/EventBuilder.cc	(revision 16530)
+++ /trunk/FACT++/src/EventBuilder.cc	(revision 16531)
@@ -58,10 +58,10 @@
 bool runWrite(const EVT_CTRL2 &evt);
 void runClose();
-void applyCalib(const shared_ptr<EVT_CTRL2> &evt);
+void applyCalib(const EVT_CTRL2 &evt, const size_t &size);
 void factOut(int severity, const char *message);
 void factReportIncomplete (uint64_t rep);
 void gotNewRun(RUN_CTRL2 &run);
 void runFinished();
-void factStat(GUI_STAT gj);
+void factStat(const GUI_STAT &gj);
 bool eventCheck(const EVT_CTRL2 &evt);
 void debugHead(void *buf);
@@ -702,4 +702,5 @@
 
     // different sort in FAD board.....
+    EVENT *event = evt->fEvent;
     for (int px = 0; px < 9; px++)
     {
@@ -712,7 +713,7 @@
             const int pixS = i*36 + drs*9 + px;
 
-            evt->fEvent->StartPix[pixS] = pixC;
-
-            memcpy(evt->fEvent->Adc_Data + pixS*roi, &rBuf.S[src+4], roi * 2);
+            event->StartPix[pixS] = pixC;
+
+            memcpy(event->Adc_Data + pixS*roi, &rBuf.S[src+4], roi * 2);
 
             src += 4+pixR;
@@ -727,11 +728,11 @@
             if (pixR > roi)
             {
-                evt->fEvent->StartTM[tmS] = (pixC + pixR - roi) % 1024;
-
-                memcpy(evt->fEvent->Adc_Data + tmS*roi + NPIX*roi, &rBuf.S[src - roi], roi * 2);
+                event->StartTM[tmS] = (pixC + pixR - roi) % 1024;
+
+                memcpy(event->Adc_Data + tmS*roi + NPIX*roi, &rBuf.S[src - roi], roi * 2);
             }
             else
             {
-                evt->fEvent->StartTM[tmS] = -1;
+                event->StartTM[tmS] = -1;
             }
         }
@@ -788,5 +789,12 @@
 // ==========================================================================
 
-Queue<shared_ptr<EVT_CTRL2>> processingQueue1(bind(&applyCalib, placeholders::_1));
+void proc1(const shared_ptr<EVT_CTRL2> &);
+
+Queue<shared_ptr<EVT_CTRL2>> processingQueue1(bind(&proc1, placeholders::_1));
+
+void proc1(const shared_ptr<EVT_CTRL2> &evt)
+{
+    applyCalib(*evt, processingQueue1.size());
+}
 
 // If this is not convenient anymore, it could be replaced by
@@ -873,16 +881,25 @@
     if (evt->valid())
     {
-        evt->fEvent->Errors[0] = evt->Errors[0];
-        evt->fEvent->Errors[1] = evt->Errors[1];
-        evt->fEvent->Errors[2] = evt->Errors[2];
-        evt->fEvent->Errors[3] = evt->Errors[3];
-
-        evt->fEvent->PCTime = evt->time.tv_sec;
-        evt->fEvent->PCUsec = evt->time.tv_usec;
-
-        evt->fEvent->NumBoards = evt->nBoard;
+        EVENT *event = evt->fEvent;
+
+        // This is already done in initMemory()
+        //event->Roi         = evt->runCtrl->roi0;
+        //event->RoiTM       = evt->runCtrl->roi8;
+        //event->EventNum    = evt->evNum;
+        //event->TriggerNum  = evt->trgNum;
+        //event->TriggerType = evt->trgTyp;
+
+        event->NumBoards = evt->nBoard;
+
+        event->Errors[0] = evt->Errors[0];
+        event->Errors[1] = evt->Errors[1];
+        event->Errors[2] = evt->Errors[2];
+        event->Errors[3] = evt->Errors[3];
+
+        event->PCTime    = evt->time.tv_sec;
+        event->PCUsec    = evt->time.tv_usec;
 
         for (int ib=0; ib<NBOARDS; ib++)
-            evt->fEvent->BoardTime[ib] = evt->FADhead[ib].time;
+            event->BoardTime[ib] = evt->FADhead[ib].time;
 
         if (!eventCheck(*evt))
@@ -1300,12 +1317,4 @@
         // ==================================================================
 
-        gj.bufNew = evtCtrl.size();      //# incomplete events in buffer
-        gj.bufEvt = primaryQueue.size(); //# complete events in buffer
-        gj.bufTot = gj.bufNew+gj.bufEvt; //# total events currently in buffer
-        if (gj.bufNew>gj.maxEvt)         //# maximum events in buffer past cycle
-            gj.maxEvt = gj.bufNew;
-
-        // ==================================================================
-
         const time_t actTime = time(NULL);
         if (actTime == gi_SecTime)
@@ -1347,7 +1356,12 @@
         // =================================================================
 
-        gj.bufTot = Memory::max_inuse/MAX_TOT_MEM;
-        gj.usdMem = Memory::max_inuse;
-        gj.totMem = Memory::allocated;
+        gj.bufNew   = evtCtrl.size();            //# incomplete events in buffer
+        gj.bufEvt   = primaryQueue.size();       //# complete events in buffer
+        gj.bufWrite = secondaryQueue.size();     //# complete events in buffer
+        gj.bufProc  = processingQueue1.size();   //# complete events in buffer
+        gj.bufTot   = Memory::max_inuse/MAX_TOT_MEM;
+        gj.usdMem   = Memory::max_inuse;
+        gj.totMem   = Memory::allocated;
+        gj.maxMem   = g_maxMem;
 
         gj.deltaT = 1000; // temporary, must be improved
@@ -1370,5 +1384,4 @@
 
         Memory::max_inuse = 0;
-        gj.maxEvt = 0;
 
         for (int ib=0; ib<NBOARDS; ib++)
@@ -1433,17 +1446,10 @@
 
     memset(gi_NumConnect, 0, NBOARDS*sizeof(*gi_NumConnect));
-    memset(gj.numConn,    0, NBOARDS*sizeof(*gj.numConn));
-    memset(gj.totBytes,   0, NBOARDS*sizeof(*gj.totBytes));
-
-    gj.bufTot   = gj.maxEvt = gj.xxxEvt = 0;
-    gj.maxMem   = gj.xxxMem = 0;
+
+    memset(&gj, 0, sizeof(GUI_STAT));
 
     gj.usdMem   = Memory::inuse;
     gj.totMem   = Memory::allocated;
-
-    gj.bufNew   = gj.bufEvt = 0;
-    gj.evtSkip  = gj.evtWrite = gj.evtErr = 0;
-    gj.readStat = gj.procStat = gj.writStat = 0;
-
+    gj.maxMem   = g_maxMem;
 
 
