00001 #include "PerReadoutEvent/PerReadoutHeader.h" 00002 00003 #include "PerReadoutEvent/PerReadout.h" 00004 00005 #include "DaqReadoutFormat/ByteBuffer.h" 00006 #include "EventReadoutFormat/EventReadout.h" 00007 #include "Event/DaqPmtCrate.h" 00008 00009 using DayaBay::DaqPmtCrate; 00010 using DybDaq::ByteBuffer; 00011 using DybDaq::EventReadout; 00012 00013 PerReadoutHeader::PerReadoutHeader():PerHeaderObject(), 00014 readout(0) 00015 { 00016 } 00017 00018 PerReadoutHeader::~PerReadoutHeader() 00019 { 00020 if (readout) { 00021 delete readout; readout = 0; 00022 } 00023 } 00024 00025 PerDaqPmtCrate PerReadoutHeader::daqPmtCrate(bool deepCopy) const { 00026 std::vector<unsigned int>& rawData = readout->rawEvent; 00027 unsigned int capacity = rawData.size() * ByteBuffer::BYTES_IN_INT; 00028 char* buffer; 00029 if (deepCopy) { 00030 buffer = new char[capacity]; 00031 memcpy(buffer, 00032 &(rawData[0]), 00033 capacity); 00034 } else { 00035 buffer = (char*)(&(rawData[0])); 00036 } 00037 ByteBuffer* byteBuffer = new ByteBuffer(buffer, 00038 capacity); 00039 EventReadout* eventReadout = new EventReadout(*byteBuffer); 00040 byteBuffer->release(); 00041 return PerDaqPmtCrate(eventReadout); 00042 }