DifReader Class Reference

#include <DifReader.hh>

Inheritance diagram for DifReader:

Inheritance graph
[legend]
Collaboration diagram for DifReader:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DifReader (Run &aRun, FILE *aFile, ui32 firstEventId)
unsigned int getBinData (const int nBytes)
unsigned char * getBinData (const int nBytes, unsigned char *data)
unsigned int getData (const int nBytes)
unsigned char * getData (const int nBytes, unsigned char *data)
void setDisplay ()
int Error ()
void display (const int inc=0)
void Level (const int l)
int & Level ()

Protected Types

typedef std::map< i32, i64 > BcIdDifAbsOrgMap_t

Protected Member Functions

unsigned char * initGetBits (const int bufLen, const bool binaryFile)
void finishGetBits ()
unsigned int getBit ()
unsigned int getBits (const int nBits)
int seekSyncBits (unsigned int sync, const int nBits)
int getBitBufferData (void *buffer, const int len)
void putData (const unsigned int data, const int nBytes)
void putData (const unsigned char *buf, const int nBytes)
void putBinData (const unsigned char *buf, const int nBytes)
const i64 getbcIdAbsOrg (const i32 difId, const i64 bcIdAbs)

Protected Attributes

int fileError
int displayData
int level
int line
std::ostringstream dataBuf
i64 globalTime
i64 globalTimeMilli
BcIdDifAbsOrgMap_t bcIdDifAbsOrgMap

Private Member Functions

unsigned char * getBitData ()

Private Attributes

unsigned char * bitBuffer
int bitBufCount
int bitByteIdx
int bitIdx
bool bitBinaryFile

Detailed Description

Definition at line 45 of file DifReader.hh.


Member Typedef Documentation

typedef std::map<i32, i64> DifReader::BcIdDifAbsOrgMap_t [protected]

Definition at line 95 of file DifReader.hh.


Constructor & Destructor Documentation

DifReader::DifReader ( Run aRun,
FILE *  aFile,
ui32  firstEventId 
)

Definition at line 40 of file DifReader.cpp.

00040                                                               : AcquisitionParser(aRun, aFile, firstEventId)
00041 {
00042   fileError = 0;
00043   displayData = (FILELog::ReportingLevel() >= logDEBUG) ? 1 : 0;
00044   level = 0;
00045   line = 0;
00046   bitBuffer = (unsigned char *)NULL;
00047 }; // DifReader


Member Function Documentation

unsigned int DifReader::getBinData ( const int  nBytes  ) 

Definition at line 50 of file DifReader.cpp.

Referenced by DiracReader::getAcqData(), getBitData(), DiracReader::getConfigData(), and DiracReader::getNextEvent().

00050                                                    {
00051   unsigned int result = 0;
00052   fileError = 0;
00053   for (int byte = 0; byte < nBytes; ++byte) {
00054     unsigned char data = 0;
00055     if (fread((void *)&data, sizeof(unsigned char), 1, inputFile) != 1) {
00056       //FILE_LOG(logERROR) << "getBinData : error " << errno << endl;
00057       fileError = EOF;
00058       return(0);
00059     }
00060     result = (result << 8) + data;
00061   }
00062 
00063   putData(result, nBytes);
00064   return(result);
00065 }; // DifReader.getBinData

unsigned char * DifReader::getBinData ( const int  nBytes,
unsigned char *  data 
)

Definition at line 69 of file DifReader.cpp.

00069                                                                          {
00070   unsigned int result = 0;
00071   fileError = 0;
00072   if (fread(buf, sizeof(unsigned char), nBytes, inputFile) != nBytes) {
00073     *buf = 0;
00074     FILE_LOG(logERROR) << "getBinData : error " << errno << endl;
00075     fileError = EOF;
00076     return(0);
00077   }
00078   buf[nBytes] = 0;
00079   putBinData(buf, nBytes);
00080   return(buf);
00081 }; // DifReader.getBinData

unsigned int DifReader::getData ( const int  nBytes  ) 

Definition at line 84 of file DifReader.cpp.

Referenced by MicrorocOldLabviewReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), DifSynchroReader::getAcqData(), MicrorocOldLabviewReader::getAnalogData(), getBitData(), MicrorocOldLabviewReader::getNextEvent(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DifSynchroReader::getNextEvent(), MicrorocOldLabviewReader::getScData(), MicrorocMergeReader::getScData(), Hardroc2XdaqReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), DifSynchroReader::getScData(), and MicrorocLabviewReader::getSpecificData().

00084                                                 {
00085   unsigned int result = 0;
00086   fileError = 0;
00087   for (int byte = 0; byte < nBytes; ++byte) {
00088     int data = 0;
00089     if (fscanf(inputFile, "%2x", &data) != 1) {
00090       //FILE_LOG(logERROR) << "getData : error " << errno << endl;
00091       fileError = EOF;
00092       return 0;
00093     }
00094     if ( computeCrc ) {
00095       crc->compute(data) ; 
00096     }
00097     result = (result << 8) + data;
00098   }
00099 
00100   putData(result, nBytes);
00101   return(result);
00102 } // DifReader.getData

unsigned char * DifReader::getData ( const int  nBytes,
unsigned char *  data 
)

Definition at line 105 of file DifReader.cpp.

00105                                                                       {
00106   unsigned char *bufStr = buf;
00107   fileError = 0;
00108   for (int byte = 0; byte < nBytes; ++byte) {
00109     int data = 0;
00110     if (fscanf(inputFile, "%2x", &data) != 1) {
00111       FILE_LOG(logERROR) << "getData : error " << errno << endl;
00112       *bufStr = 0;
00113       fileError = EOF;
00114       return(0);
00115     }
00116     *bufStr++ = data;
00117 
00118       if ( computeCrc ) {
00119       crc->compute(data) ;
00120     }
00121 
00122   }
00123   *bufStr = 0;
00124   putBinData(buf, nBytes);
00125   return(buf);
00126 } // DifReader.getData

unsigned char * DifReader::getBitData (  )  [private]

Definition at line 129 of file DifReader.cpp.

Referenced by initGetBits().

00129                                      {
00130   unsigned char *res;
00131   res = (bitBinaryFile) ? getBinData(bitBufCount, bitBuffer)
00132                         : getData(bitBufCount, bitBuffer);
00133   display();
00134   return(res);
00135 } // DifReader.getBitData

unsigned char * DifReader::initGetBits ( const int  bufLen,
const bool  binaryFile 
) [protected]

Definition at line 139 of file DifReader.cpp.

Referenced by MicrorocOldLabviewReader::getScData(), MicrorocMergeReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().

00139                                                                              {
00140   bitBuffer = (unsigned char*)malloc(bufLen + 1);
00141   if (!bitBuffer) {
00142     return 0;
00143   }
00144   bitIdx = 8;
00145   bitBufCount = bufLen;
00146   bitByteIdx = 0;
00147   bitBinaryFile = binaryFile;
00148   if (!getBitData()) {
00149     FILE_LOG(logERROR) << "InitGetBits : error " << errno << endl;
00150     return 0;
00151   }
00152   return bitBuffer;
00153 } // DifReader.initGetBits

void DifReader::finishGetBits (  )  [protected]

Definition at line 157 of file DifReader.cpp.

Referenced by MicrorocOldLabviewReader::getScData(), MicrorocMergeReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().

00157                               {
00158   bitBufCount = 0;
00159   if (bitBuffer)
00160     free(bitBuffer);
00161   bitBuffer = NULL;
00162 } // DifReader.finishGetBits

unsigned int DifReader::getBit (  )  [protected]

Definition at line 167 of file DifReader.cpp.

Referenced by seekSyncBits().

00167                                {
00168   unsigned int bit = (bitBuffer[bitByteIdx] & masks[bitIdx - 1]) >> (bitIdx - 1);
00169   bitIdx--;
00170   if (!bitIdx) {
00171     bitIdx = 8;
00172     bitByteIdx++;
00173     if (bitByteIdx == bitBufCount) {
00174 //      getBitData();
00175       bitByteIdx = 0;
00176     }
00177   }
00178   return bit;
00179 } // DifReader.getBit

unsigned int DifReader::getBits ( const int  nBits  )  [protected]

Definition at line 183 of file DifReader.cpp.

Referenced by MicrorocOldLabviewReader::getScData(), MicrorocMergeReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), DifSynchroReader::getScData(), and seekSyncBits().

00183                                            {
00184   unsigned int val = 0;
00185   int i = N;
00186   unsigned int j;
00187 
00188   while (i) {
00189     j = (bitBuffer[bitByteIdx] & masks[bitIdx - 1]) >> (bitIdx - 1);
00190     bitIdx--;
00191     if (!bitIdx) {
00192       bitIdx = 8;
00193       bitByteIdx++;
00194       if (bitByteIdx == bitBufCount) {
00195 //        FILE_LOG(logERROR) << "getBits : refill buffer i = " << i << ", bitByteIdx = " << bitByteIdx << ", bitBufCount = " << bitBufCount << endl;
00196 //        getBitData();
00197         bitByteIdx = 0;
00198       }
00199     }
00200     val = (val << 1) | j;
00201     i--;
00202   }
00203   return val;
00204 } // DifReader.getBits

int DifReader::seekSyncBits ( unsigned int  sync,
const int  nBits 
) [protected]

Definition at line 210 of file DifReader.cpp.

00210                                                           {
00211   unsigned int val, val1;
00212   unsigned int maxi = 0xFFFFFFFF;
00213 
00214   while (bitIdx != 8) {
00215     val = getBit();
00216 //    if () // error case
00217 //      return 0;
00218   }
00219 
00220   val = getBits(N);
00221 //  if () // error case
00222 //    return 0;
00223 
00224   while ((val & maxi) != sync) {
00225     val <<= 8;
00226     val1 = getBits(8);
00227 //    if () // error case
00228 //      return 0;
00229     val |= val1;
00230   }
00231   return 1;
00232 } // DifReader.seekSyncBits

int DifReader::getBitBufferData ( void *  buffer,
const int  len 
) [protected]

Definition at line 235 of file DifReader.cpp.

00235                                                            {
00236   if (len < bitByteIdx) {
00237     memcpy(buffer, bitBuffer, len);
00238     bitByteIdx -= len;
00239     memcpy(bitBuffer, bitBuffer + len, bitByteIdx);
00240     return len;
00241   }
00242   else {
00243     int lg = bitByteIdx;
00244     memcpy(buffer, bitBuffer, bitByteIdx);
00245     bitByteIdx = 0;
00246     return lg;
00247   }
00248 } // DifReader.getBitBufferData

void DifReader::setDisplay (  )  [inline]

Definition at line 76 of file DifReader.hh.

00076 { displayData = 1; };

int DifReader::Error (  )  [inline]

Definition at line 77 of file DifReader.hh.

00077 { return fileError; };

void DifReader::display ( const int  inc = 0  ) 

Definition at line 288 of file DifReader.cpp.

Referenced by MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), DiracReader::getAcqData(), getBitData(), DiracReader::getConfigData(), MicrorocOldLabviewReader::getNextEvent(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), DifSynchroReader::getNextEvent(), MicrorocOldLabviewReader::getScData(), MicrorocMergeReader::getScData(), Hardroc2XdaqReader::getScData(), Hardroc2LabviewReader::getScData(), Hardroc1Reader::getScData(), and DifSynchroReader::getScData().

00288                                      {
00289   line++;
00290   if (inc < 0) {
00291     level += inc;
00292     if (level < 0) level = 0;
00293   }
00294   if (dataBuf.str().length() != 0) {
00295     FILE_LOG(logDEBUG) << "----display-----: " <<  setfill(' ') << setw(level * 2) << "" << dataBuf.str() << endl;
00296   }
00297   if (inc > 0)
00298     level += inc;
00299   dataBuf.str("");
00300 } // DifReader.display

void DifReader::Level ( const int  l  )  [inline]

Definition at line 79 of file DifReader.hh.

00079 { level = l; };

int& DifReader::Level (  )  [inline]

Definition at line 80 of file DifReader.hh.

Referenced by MicrorocXDaqReader::getNextEvent(), MicrorocOldLabviewReader::getNextEvent(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), and DifSynchroReader::getNextEvent().

00080 { return(level); };

void DifReader::putData ( const unsigned int  data,
const int  nBytes 
) [protected]

Definition at line 251 of file DifReader.cpp.

Referenced by getBinData(), getData(), and MicrorocXDaqReader::getSpecificData().

00251                                                                    {
00252   if (!displayData)
00253     return;
00254   dataBuf << hex << setw(nBytes * 2) << setfill('0') << result;
00255   if (nBytes > 1)
00256     dataBuf << " ";
00257 //  display();
00258 } // DifReader.putData

void DifReader::putData ( const unsigned char *  buf,
const int  nBytes 
) [protected]

Definition at line 261 of file DifReader.cpp.

00261                                                                   {
00262   if (!displayData)
00263     return;
00264   if (nBytes > 4)
00265     dataBuf << "("<< dec << nBytes << "):";
00266   dataBuf << buf;
00267   if (nBytes > 1)
00268     dataBuf << " ";
00269 //  display();
00270 } // DifReader.putData

void DifReader::putBinData ( const unsigned char *  buf,
const int  nBytes 
) [protected]

Definition at line 273 of file DifReader.cpp.

Referenced by getBinData(), and getData().

00273                                                                      {
00274   if (!displayData)
00275     return;
00276   if (nBytes > 4)
00277     dataBuf << "(" << dec << nBytes << "):";
00278   for (int byte = 0; byte < nBytes; byte++) {
00279     dataBuf << hex << setw(2) << setfill('0') << (int)(*buf);
00280     buf++;
00281   }
00282   if (nBytes > 1)
00283     dataBuf << " ";
00284 //  display();
00285 } // DifReader.putBinData

const i64 DifReader::getbcIdAbsOrg ( const i32  difId,
const i64  bcIdAbs 
) [protected]

Definition at line 303 of file DifReader.cpp.

Referenced by MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), and DiracReader::getAcqData().

00303                                                                      {
00304   BcIdDifAbsOrgMap_t::iterator it = bcIdDifAbsOrgMap.find(difId);
00305   if (it == bcIdDifAbsOrgMap.end()) {
00306     FILE_LOG(logDEBUG)   << "    set bc origin (dif 0x" << hex << difId << dec << ")=" << bcIdAbs << endl;
00307     bcIdDifAbsOrgMap[difId] = bcIdAbs;
00308     return(bcIdAbs);
00309   }
00310   return(it->second);
00311 } // DifReader.getbcIdAbsOrg


Member Data Documentation

unsigned char* DifReader::bitBuffer [private]

Definition at line 56 of file DifReader.hh.

Referenced by DifReader(), finishGetBits(), getBit(), getBitBufferData(), getBitData(), getBits(), and initGetBits().

int DifReader::bitBufCount [private]

Definition at line 57 of file DifReader.hh.

Referenced by finishGetBits(), getBit(), getBitData(), getBits(), and initGetBits().

int DifReader::bitByteIdx [private]

Definition at line 58 of file DifReader.hh.

Referenced by getBit(), getBitBufferData(), getBits(), and initGetBits().

int DifReader::bitIdx [private]

Definition at line 59 of file DifReader.hh.

Referenced by getBit(), getBits(), initGetBits(), and seekSyncBits().

bool DifReader::bitBinaryFile [private]

Definition at line 60 of file DifReader.hh.

Referenced by getBitData(), and initGetBits().

int DifReader::fileError [protected]

Definition at line 80 of file DifReader.hh.

Referenced by MicrorocMergeReader::decodeData(), DifReader(), Error(), MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), DifSynchroReader::getAcqData(), getBinData(), getData(), MicrorocOldLabviewReader::getNextEvent(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), DifSynchroReader::getNextEvent(), MicrorocOldLabviewReader::getScData(), MicrorocMergeReader::getScData(), and MicrorocXDaqReader::getSpecificData().

int DifReader::displayData [protected]

Definition at line 85 of file DifReader.hh.

Referenced by DifReader(), putBinData(), putData(), and setDisplay().

int DifReader::level [protected]

Definition at line 86 of file DifReader.hh.

Referenced by DifReader(), display(), and Level().

int DifReader::line [protected]

Definition at line 87 of file DifReader.hh.

Referenced by DifReader(), display(), MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), MicrorocOldLabviewReader::getAnalogData(), MicrorocOldLabviewReader::getScData(), and MicrorocOldLabviewReader::MicrorocOldLabviewReader().

std::ostringstream DifReader::dataBuf [protected]

Definition at line 88 of file DifReader.hh.

Referenced by display(), putBinData(), and putData().

i64 DifReader::globalTime [protected]

Definition at line 93 of file DifReader.hh.

Referenced by MicrorocOldLabviewReader::getAcqData(), MicrorocMergeReader::getAcqData(), Hardroc2XdaqReader::getAcqData(), Hardroc2LabviewReader::getAcqData(), Hardroc1Reader::getAcqData(), MicrorocXDaqReader::getNextEvent(), MicrorocOldLabviewReader::getNextEvent(), MicrorocLabviewReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), DifSynchroReader::getNextEvent(), Hardroc1Reader::getScData(), MicrorocReader::newHit(), Hardroc2Reader::newHit(), Hardroc1Reader::newHit(), DiracReader::newHit(), MicrorocReader::reset(), Hardroc2Reader::reset(), and Hardroc1Reader::reset().

i64 DifReader::globalTimeMilli [protected]

Definition at line 94 of file DifReader.hh.

Referenced by MicrorocOldLabviewReader::getNextEvent(), and MicrorocLabviewReader::getNextEvent().

BcIdDifAbsOrgMap_t DifReader::bcIdDifAbsOrgMap [protected]

Definition at line 96 of file DifReader.hh.

Referenced by getbcIdAbsOrg(), MicrorocXDaqReader::getNextEvent(), MicrorocOldLabviewReader::getNextEvent(), MicrorocLabviewReader::getNextEvent(), Hardroc2XdaqReader::getNextEvent(), Hardroc2LabviewReader::getNextEvent(), Hardroc1Reader::getNextEvent(), DiracReader::getNextEvent(), and DifSynchroReader::getNextEvent().


The documentation for this class was generated from the following files:
Generated on Mon Jan 7 13:18:10 2013 for MicromegasFramework by  doxygen 1.4.7