lucabaldini / xpedaq

Data acquisition software for the X-ray polarimetry explorers
GNU General Public License v2.0
0 stars 0 forks source link

Data readout in full frame is plain wrong #81

Closed lucabaldini closed 8 years ago

lucabaldini commented 8 years ago

We're assuming that the length of the full frame in bytes is NWORDS = 13200 * 8 while it's really twice that value (there are 16 bytes per pixel), or possibly more if we include a header in the event (to be checked).

pDataBlock::pDataBlock(unsigned char *buffer) :
  m_rawBuffer(buffer),
  m_size(2*NWORDS),
  m_errorSummary(0)
{ 
  m_offsetVec.push_back(0);
  m_offsetVec.push_back(NWORDS);
  for (unsigned int evt = 0; evt < 2; evt ++) {
    if (header(evt) != 0xffff) {
      m_errorSummary += 1;
    }
  }
}
lucabaldini commented 8 years ago

Quick fix---we're now assuming one single event per frame, 2*NWORDS long.

diff --git a/daq/pDataBlock.cpp b/daq/pDataBlock.cpp
index 51634ba..1b4e8a7 100644
--- a/daq/pDataBlock.cpp
+++ b/daq/pDataBlock.cpp
@@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundati
 #include "pDataBlock.h"

 /*!
-  Full frame mode (exactly two events with predetermined length in the buffer).
+  Full frame mode (one event with fixed length).
 */

 pDataBlock::pDataBlock(unsigned char *buffer) :
@@ -31,12 +31,6 @@ pDataBlock::pDataBlock(unsigned char *buffer) :
   m_errorSummary(0)
 { 
   m_offsetVec.push_back(0);
-  m_offsetVec.push_back(NWORDS);
-  for (unsigned int evt = 0; evt < 2; evt ++) {
-    if (header(evt) != 0xffff) {
-      m_errorSummary += 1;
-    }
-  }
 }
lucabaldini commented 8 years ago

This is now working. I am closing the issue noting that we shall revisit this part of the code if and when we address issue #85