RawEvent.hh
Go to the documentation of this file.00001
00007 #ifndef RawEvent_INCLUDED
00008 #define RawEvent_INCLUDED
00009
00010 #include <stdint.h>
00011 #include <vector>
00012 #include <boost/shared_ptr.hpp>
00013
00017 class RawEvent
00018 {
00019
00020 public:
00022 RawEvent(bool increment_id_counter = true);
00024 RawEvent(uint32_t event_id, uint32_t timestamp, uint32_t run_id);
00026 ~RawEvent();
00027
00029
00033 struct datablock{
00034 uint32_t datasize;
00035 uint32_t type;
00036 std::vector<unsigned char> data;
00037 datablock(uint32_t Type, uint32_t Size=0) : datasize(Size), type(Type)
00038 {data.resize(Size); }
00039 };
00043 public:
00044 enum datablock_type { CAEN_V172X=0 , MONTECARLO=1 };
00045
00047 uint32_t GetDataSize() const { return _buffer_size; }
00048
00050 size_t GetNumDataBlocks() const { return _datablocks.size(); }
00052 int AddDataBlock(uint32_t blocktype, uint32_t datasize=0);
00054 int RemoveDataBlock(size_t block_n);
00055
00057 const datablock* GetDataBlock(size_t block_n) const;
00059 unsigned char* GetRawDataBlock(size_t block_n);
00060
00062 uint32_t GetDataBlockSize(size_t block_n) const;
00064 int SetDataBlockSize(size_t block_n, uint32_t newsize);
00065
00067 uint32_t GetDataBlockType(size_t block_n) const;
00069 int SetDataBlockType(size_t block_n, uint32_t newtype);
00070
00071
00073 uint32_t GetID() const { return _event_id;}
00075 void SetID(uint32_t evid) { _event_id = evid; }
00077 uint32_t GetTimestamp() const { return _timestamp; }
00079 void SetTimestamp(uint32_t stamp) { _timestamp = stamp; }
00081 uint32_t GetRunID() const { return _run_id; }
00083 void SetRunID(uint32_t runid) { _run_id = runid; }
00084
00086 static const long GetTotalBufferSize(){ return _total_buffer_size;}
00088 static void SetEventCount(uint32_t count){ _event_count=count;}
00090 static uint32_t GetEventCount(){ return _event_count; }
00091
00092
00093 private:
00094 static const uint32_t _extra_buffer_space = 12;
00095 std::vector<datablock> _datablocks;
00096
00097 uint32_t _event_id;
00098 uint32_t _timestamp;
00099 uint32_t _run_id;
00100
00101 uint32_t _buffer_size;
00102
00103 static long _total_buffer_size;
00104 static uint32_t _event_count;
00105
00106 RawEvent(const RawEvent& right);
00107 RawEvent& operator=(const RawEvent& right);
00108 };
00109
00115 typedef boost::shared_ptr<RawEvent> RawEventPtr;
00116 #endif