CMS 3D CMS Logo

EventMsgBuilder Class Reference

#include <IOPool/Streamer/interface/EventMsgBuilder.h>

List of all members.

Public Member Functions

uint32 bufferSize () const
uint8eventAddr () 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
uint8startAddress () const

Private Attributes

uint8buf_
uint8event_addr_
uint32 size_


Detailed Description

Definition at line 8 of file EventMsgBuilder.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

uint32 EventMsgBuilder::bufferSize (  )  const [inline]

Definition at line 22 of file EventMsgBuilder.h.

References size_.

00022 {return size_;}

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_;} 

void EventMsgBuilder::setEventLength ( uint32  len  ) 

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 }

void EventMsgBuilder::setOrigDataSize ( uint32  value  ) 

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 }

uint32 EventMsgBuilder::size ( void   )  const

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_; }


Member Data Documentation

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]

Definition at line 26 of file EventMsgBuilder.h.

Referenced by bufferSize().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:20:26 2009 for CMSSW by  doxygen 1.5.4