#include <IOPool/Streamer/interface/EventMsgBuilder.h>
Public Member Functions | |
uint32 | bufferSize () const |
uint8 * | eventAddr () const |
EventMsgBuilder (void *buf, uint32 size, uint32 run, uint32 event, uint32 lumi, uint32 outModId, std::vector< bool > &l1_bits, uint8 *hlt_bits, uint32 hlt_bit_count) | |
uint32 | headerSize () const |
void | setEventLength (uint32 len) |
void | setOrigDataSize (uint32) |
uint32 | size () const |
uint8 * | startAddress () const |
Private Attributes | |
uint8 * | buf_ |
uint8 * | event_addr_ |
uint32 | size_ |
Definition at line 8 of file EventMsgBuilder.h.
EventMsgBuilder::EventMsgBuilder | ( | void * | buf, | |
uint32 | size, | |||
uint32 | run, | |||
uint32 | event, | |||
uint32 | lumi, | |||
uint32 | outModId, | |||
std::vector< bool > & | l1_bits, | |||
uint8 * | hlt_bits, | |||
uint32 | hlt_bit_count | |||
) |
Definition at line 5 of file EventMsgBuilder.cc.
References buf_, convert(), edmNew::copy(), EventHeader::event_, event_addr_, h, i, EventHeader::lumi_, EventHeader::outModId_, EventHeader::protocolVersion_, EventHeader::run_, setEventLength(), and v.
00008 : 00009 buf_((uint8*)buf),size_(size) 00010 { 00011 EventHeader* h = (EventHeader*)buf_; 00012 h->protocolVersion_ = 7; 00013 convert(run,h->run_); 00014 convert(event,h->event_); 00015 convert(lumi,h->lumi_); 00016 convert(outModId,h->outModId_); 00017 uint8* pos = buf_ + sizeof(EventHeader); 00018 00019 // l1 count 00020 uint32 l1_count = l1_bits.size(); 00021 convert(l1_count, pos); 00022 pos = pos + sizeof(uint32); 00023 00024 // set the l1 00025 uint32 l1_sz = l1_bits.size(); 00026 if (l1_sz != 0) l1_sz = 1 + ((l1_sz-1)/8); 00027 00028 uint8* pos_end = pos + l1_sz; 00029 memset(pos,0x00, pos_end-pos); // clear the bits 00030 for(std::vector<bool>::size_type i = 0; i < l1_bits.size(); ++i) { 00031 uint8 v = l1_bits[i] ? 1 : 0; 00032 pos[i/8] |= (v << (i&0x07)); 00033 } 00034 pos = pos_end; 00035 00036 // hlt count 00037 convert(hlt_bit_count, pos); 00038 pos = pos + sizeof(uint32); 00039 00040 uint32 hlt_sz = hlt_bit_count; 00041 if (hlt_sz != 0) hlt_sz = 1+ ((hlt_sz-1)/4); 00042 00043 // copy the hlt bits over 00044 pos = std::copy(hlt_bits, hlt_bits+hlt_sz, pos); 00045 event_addr_ = pos + sizeof(char_uint32); 00046 setEventLength(0); 00047 }
uint32 EventMsgBuilder::bufferSize | ( | ) | const [inline] |
uint8* EventMsgBuilder::eventAddr | ( | ) | const [inline] |
Definition at line 19 of file EventMsgBuilder.h.
References event_addr_.
00019 { return event_addr_; }
uint32 EventMsgBuilder::headerSize | ( | ) | const [inline] |
Definition at line 20 of file EventMsgBuilder.h.
References buf_, and event_addr_.
Referenced by StreamerOutputIndexFile::write().
00020 {return event_addr_-buf_;}
Definition at line 55 of file EventMsgBuilder.cc.
References buf_, convert(), Header::EVENT, event_addr_, h, and EventHeader::header_.
Referenced by EventMsgBuilder().
00056 { 00057 convert(len,event_addr_-sizeof(char_uint32)); 00058 EventHeader* h = (EventHeader*)buf_; 00059 new (&h->header_) Header(Header::EVENT,event_addr_-buf_+len); 00060 }
Definition at line 49 of file EventMsgBuilder.cc.
References buf_, convert(), h, and EventHeader::origDataSize_.
00050 { 00051 EventHeader* h = (EventHeader*)buf_; 00052 convert(value,h->origDataSize_); 00053 }
Definition at line 62 of file EventMsgBuilder.cc.
References buf_, HeaderView::size(), and v.
Referenced by edm::FUShmOutputModule::doOutputEvent().
00063 { 00064 HeaderView v(buf_); 00065 return v.size(); 00066 }
uint8* EventMsgBuilder::startAddress | ( | ) | const [inline] |
Definition at line 17 of file EventMsgBuilder.h.
References buf_.
Referenced by edm::StreamerFileWriter::doOutputEvent(), edm::FUShmOutputModule::doOutputEvent(), StreamerOutputFile::write(), and StreamerOutputIndexFile::write().
00017 { return buf_; }
uint8* EventMsgBuilder::buf_ [private] |
Definition at line 25 of file EventMsgBuilder.h.
Referenced by EventMsgBuilder(), headerSize(), setEventLength(), setOrigDataSize(), size(), and startAddress().
uint8* EventMsgBuilder::event_addr_ [private] |
Definition at line 27 of file EventMsgBuilder.h.
Referenced by eventAddr(), EventMsgBuilder(), headerSize(), and setEventLength().
uint32 EventMsgBuilder::size_ [private] |