#include <BUEvent.h>
Public Member Functions | |
BUEvent (unsigned int buResourceId, unsigned int bufferSize=0x400000) | |
unsigned int | bufferSize () const |
unsigned int | buResourceId () const |
void | dump () |
unsigned int | evtNumber () const |
unsigned int | evtSize () const |
unsigned char * | fedAddr (unsigned int i) const |
unsigned int | fedId (unsigned int i) const |
unsigned int | fedSize (unsigned int i) const |
void | initialize (unsigned int evtNumber) |
unsigned int | nFed () const |
bool | writeFed (unsigned int id, unsigned char *data, unsigned int size) |
bool | writeFedHeader (unsigned int i) |
bool | writeFedTrailer (unsigned int i) |
virtual | ~BUEvent () |
Static Public Member Functions | |
static bool | computeCrc () |
static void | setComputeCrc (bool computeCrc) |
Private Attributes | |
unsigned char * | buffer_ |
unsigned int | bufferSize_ |
unsigned int | buResourceId_ |
unsigned int | evtNumber_ |
unsigned int | evtSize_ |
unsigned int * | fedId_ |
unsigned int * | fedPos_ |
unsigned int * | fedSize_ |
unsigned int | nFed_ |
Static Private Attributes | |
static bool | computeCrc_ = true |
BUEvent::BUEvent | ( | unsigned int | buResourceId, |
unsigned int | bufferSize = 0x400000 |
||
) |
Definition at line 41 of file BUEvent.cc.
References buffer_, bufferSize(), fedId_, fedPos_, and fedSize_.
: buResourceId_(buResourceId) , evtNumber_(0xffffffff) , evtSize_(0) , bufferSize_(bufferSize) , nFed_(0) , fedId_(0) , fedPos_(0) , fedSize_(0) , buffer_(0) { fedId_ = new unsigned int[1024]; fedPos_ = new unsigned int[1024]; fedSize_= new unsigned int[1024]; buffer_ = new unsigned char[bufferSize]; }
BUEvent::~BUEvent | ( | ) | [virtual] |
unsigned int evf::BUEvent::bufferSize | ( | ) | const [inline] |
Definition at line 30 of file BUEvent.h.
References bufferSize_.
Referenced by BUEvent().
{ return bufferSize_; }
unsigned int evf::BUEvent::buResourceId | ( | ) | const [inline] |
Definition at line 27 of file BUEvent.h.
References buResourceId_.
Referenced by evf::BU::createMsgChain().
{ return buResourceId_; }
static bool evf::BUEvent::computeCrc | ( | ) | [inline, static] |
Definition at line 36 of file BUEvent.h.
References computeCrc_.
Referenced by setComputeCrc(), and writeFedTrailer().
{ return computeCrc_; }
void BUEvent::dump | ( | void | ) |
Definition at line 153 of file BUEvent.cc.
References evtNumber(), fedAddr(), fedId(), fedSize(), groupFilesInBlocks::fout, i, j, and nFed().
{ ostringstream oss; oss<<"/tmp/autobu_evt"<<evtNumber()<<".dump"; ofstream fout(oss.str().c_str()); fout.fill('0'); fout<<"#\n# evt "<<evtNumber()<<"\n#\n"<<endl; for (unsigned int i=0;i<nFed();i++) { if (fedSize(i)==0) continue; fout<<"# fedid "<<fedId(i)<<endl; unsigned char* addr=fedAddr(i); for (unsigned int j=0;j<fedSize(i);j++) { fout<<setiosflags(ios::right)<<setw(2)<<hex<<(int)(*addr)<<dec; if ((j+1)%8) fout<<" "; else fout<<endl; ++addr; } fout<<endl; } fout.close(); }
unsigned int evf::BUEvent::evtNumber | ( | ) | const [inline] |
Definition at line 28 of file BUEvent.h.
References evtNumber_.
Referenced by evf::BU::createMsgChain(), dump(), and writeFedHeader().
{ return evtNumber_; }
unsigned int evf::BUEvent::evtSize | ( | ) | const [inline] |
Definition at line 29 of file BUEvent.h.
References evtSize_.
Referenced by evf::BU::sending().
{ return evtSize_; }
unsigned char * BUEvent::fedAddr | ( | unsigned int | i | ) | const |
Definition at line 146 of file BUEvent.cc.
References buffer_, and fedPos_.
Referenced by evf::BU::createMsgChain(), dump(), writeFed(), writeFedHeader(), and writeFedTrailer().
unsigned int evf::BUEvent::fedId | ( | unsigned int | i | ) | const [inline] |
Definition at line 32 of file BUEvent.h.
Referenced by evf::BU::createMsgChain(), dump(), and writeFedHeader().
unsigned int evf::BUEvent::fedSize | ( | unsigned int | i | ) | const [inline] |
Definition at line 33 of file BUEvent.h.
Referenced by evf::BU::createMsgChain(), dump(), and writeFedTrailer().
void BUEvent::initialize | ( | unsigned int | evtNumber | ) |
Definition at line 74 of file BUEvent.cc.
References evtNumber_, evtSize_, and nFed_.
Referenced by evf::BU::generateEvent().
{ evtNumber_=evtNumber & 0xFFFFFF; // 24 bits only available in the FED headers evtSize_=0; nFed_=0; }
unsigned int evf::BUEvent::nFed | ( | ) | const [inline] |
static void evf::BUEvent::setComputeCrc | ( | bool | computeCrc | ) | [inline, static] |
Definition at line 37 of file BUEvent.h.
References computeCrc(), and computeCrc_.
Referenced by evf::BU::actionPerformed(), and evf::BU::BU().
{ computeCrc_=computeCrc; }
bool BUEvent::writeFed | ( | unsigned int | id, |
unsigned char * | data, | ||
unsigned int | size | ||
) |
Definition at line 83 of file BUEvent.cc.
References bufferSize_, gather_cfg::cout, evtSize_, fedAddr(), fedId_, fedPos_, fedSize_, nFed_, and findQualityFiles::size.
Referenced by evf::BU::generateEvent().
{ if (evtSize_+size > bufferSize_) { cout<<"BUEvent::writeFed() ERROR: buffer overflow."<<endl; return false; } if (nFed_==1024) { cout<<"BUEvent::writeFed() ERROR: too many feds (max=1024)."<<endl; return false; } fedId_[nFed_] =id; fedPos_[nFed_] =evtSize_; fedSize_[nFed_]=size; if (0!=data) memcpy(fedAddr(nFed_),data,size); ++nFed_; evtSize_+=size; return true; }
bool BUEvent::writeFedHeader | ( | unsigned int | i | ) |
Definition at line 106 of file BUEvent.cc.
References gather_cfg::cout, fedh_struct::eventid, evtNumber(), FED_SOID_MASK, fedAddr(), fedId(), nFed_, and fedh_struct::sourceid.
Referenced by evf::BU::generateEvent().
bool BUEvent::writeFedTrailer | ( | unsigned int | i | ) |
Definition at line 123 of file BUEvent.cc.
References evf::compute_crc(), computeCrc(), fedt_struct::conscheck, gather_cfg::cout, fedt_struct::eventsize, FED_CRCS_SHIFT, fedAddr(), fedSize(), and nFed_.
Referenced by evf::BU::generateEvent().
{ if (i>=nFed_) { cout<<"BUEvent::writeFedTrailer() ERROR: invalid fed index '"<<i<<"'."<<endl; return false; } fedt_t *fedTrailer=(fedt_t*)(fedAddr(i)+fedSize(i)-sizeof(fedt_t)); fedTrailer->eventsize =fedSize(i); fedTrailer->eventsize/=8; //wc in fed trailer in 64bit words fedTrailer->eventsize|=0xa0000000; fedTrailer->conscheck =0x0; if (BUEvent::computeCrc()) { unsigned short crc=evf::compute_crc(fedAddr(i),fedSize(i)); fedTrailer->conscheck=(crc<<FED_CRCS_SHIFT); } return true; }
unsigned char* evf::BUEvent::buffer_ [private] |
Definition at line 54 of file BUEvent.h.
Referenced by BUEvent(), fedAddr(), and ~BUEvent().
unsigned int evf::BUEvent::bufferSize_ [private] |
Definition at line 49 of file BUEvent.h.
Referenced by bufferSize(), and writeFed().
unsigned int evf::BUEvent::buResourceId_ [private] |
Definition at line 46 of file BUEvent.h.
Referenced by buResourceId().
bool BUEvent::computeCrc_ = true [static, private] |
Definition at line 56 of file BUEvent.h.
Referenced by computeCrc(), and setComputeCrc().
unsigned int evf::BUEvent::evtNumber_ [private] |
Definition at line 47 of file BUEvent.h.
Referenced by evtNumber(), and initialize().
unsigned int evf::BUEvent::evtSize_ [private] |
Definition at line 48 of file BUEvent.h.
Referenced by evtSize(), initialize(), and writeFed().
unsigned int* evf::BUEvent::fedId_ [private] |
Definition at line 51 of file BUEvent.h.
Referenced by BUEvent(), fedId(), writeFed(), and ~BUEvent().
unsigned int* evf::BUEvent::fedPos_ [private] |
Definition at line 52 of file BUEvent.h.
Referenced by BUEvent(), fedAddr(), writeFed(), and ~BUEvent().
unsigned int* evf::BUEvent::fedSize_ [private] |
Definition at line 53 of file BUEvent.h.
Referenced by BUEvent(), fedSize(), writeFed(), and ~BUEvent().
unsigned int evf::BUEvent::nFed_ [private] |
Definition at line 50 of file BUEvent.h.
Referenced by initialize(), nFed(), writeFed(), writeFedHeader(), and writeFedTrailer().