00001
00014 #ifndef PMT_WAVEFORM_HH
00015 #define PMT_WAVEFORM_HH
00016
00017 #include "data_base.hh"
00018
00023 class pmt_waveform : public std::vector<PMT::ch_adc_t>,
00024 public data_base {
00025
00026 public:
00027
00029 pmt_waveform(PMT::ch_number_t ch = PMT::INVALID_CH,
00030 PMT::word_t ch_frame = PMT::INVALID_WORD,
00031 PMT::DISCRIMINATOR disc_id = PMT::DISC_MAX,
00032 PMT::word_t timeslice = PMT::INVALID_WORD,
00033 size_t len=0)
00034 : std::vector<PMT::ch_adc_t>(len),
00035 data_base(),
00036 _channel_number(ch),
00037 _channel_frame_id(ch_frame),
00038 _timeslice(timeslice),
00039 _disc_id(disc_id)
00040 {};
00041
00043 pmt_waveform(const pmt_waveform& original)
00044 : std::vector<PMT::ch_adc_t>(original),
00045 data_base(original),
00046 _channel_number(original._channel_number),
00047 _channel_frame_id(original._channel_frame_id),
00048 _timeslice(original._timeslice),
00049 _disc_id(original._disc_id)
00050 {};
00051
00053 void set_channel_number (PMT::ch_number_t ch) {_channel_number=ch;};
00054
00056 void set_channel_frame_id (PMT::word_t id) {_channel_frame_id=id;};
00057
00059 void set_disc_id (PMT::DISCRIMINATOR id) {_disc_id=id;};
00060
00062 void set_timeslice (PMT::word_t t) {_timeslice=t;};
00063
00065 PMT::ch_number_t channel_number() const {return _channel_number;};
00066
00068 PMT::word_t channel_frame_id() const {return _channel_frame_id;};
00069
00071 PMT::DISCRIMINATOR disc_id() const {return _disc_id;};
00072
00074 PMT::word_t timeslice() const {return _timeslice;};
00075
00077 virtual void clear_data();
00078
00080 ~pmt_waveform(){};
00081
00082
00083 private:
00084
00086 void init_vars();
00087
00088 PMT::ch_number_t _channel_number;
00089 PMT::word_t _channel_frame_id;
00090 PMT::word_t _timeslice;
00091 PMT::DISCRIMINATOR _disc_id;
00092
00094 ClassDef(pmt_waveform,3)
00096 };
00097
00098
00099
00104 class pmt_wf_collection : public std::vector<pmt_waveform>,
00105 public data_base {
00106
00107 public:
00108
00110 pmt_wf_collection(size_t len = 0) :
00111 std::vector<pmt_waveform>(len),
00112 data_base()
00113 {};
00114
00116 pmt_wf_collection(const pmt_wf_collection& original)
00117 : std::vector<pmt_waveform>(original),
00118 data_base(original),
00119 _event_id(original._event_id),
00120 _event_frame_id(original._event_frame_id),
00121 _module_address(original._module_address),
00122 _module_id(original._module_id),
00123 _channel_header_count(original._channel_header_count),
00124 _checksum(original._checksum),
00125 _nwords(original._nwords)
00126 {};
00127
00129 ~pmt_wf_collection(){};
00130
00132 void set_event_id(PMT::word_t id) {_event_id=id;};
00133
00135 void set_event_frame_id(PMT::word_t id) {_event_frame_id=id;};
00136
00138 void set_module_address(PMT::word_t id) {_module_address=id;};
00139
00141 void set_module_id(PMT::word_t id) {_module_id=id;};
00142
00144 void set_channel_header_count(size_t n) {_channel_header_count=n;};
00145
00147 void set_checksum(PMT::word_t sum) {_checksum=sum;};
00148
00150 void set_nwords(PMT::word_t n) {_nwords=n;};
00151
00153 void set_trigger_frame_id(PMT::word_t id) {_trigger_frame_id=id;};
00154
00156 void set_trigger_timeslice(PMT::word_t n) {_trigger_timeslice=n;};
00157
00159 PMT::word_t event_id() const {return _event_id;};
00160
00162 PMT::word_t event_frame_id() const {return _event_frame_id;};
00163
00165 PMT::word_t module_address() const {return _module_address;};
00166
00168 PMT::word_t module_id() const {return _module_id;};
00169
00171 size_t channel_header_count() const {return _channel_header_count;};
00172
00174 PMT::word_t checksum() const {return _checksum;};
00175
00177 PMT::word_t nwords() const {return _nwords;};
00178
00180 PMT::word_t trigger_frame_id() const {return _trigger_frame_id;};
00181
00183 PMT::word_t trigger_timeslice() const {return _trigger_timeslice;};
00184
00186 virtual void clear_data();
00187
00188
00189 private:
00190
00191 void init_vars();
00193
00194 PMT::word_t _event_id;
00195 PMT::word_t _event_frame_id;
00196 PMT::word_t _module_address;
00197 PMT::word_t _module_id;
00198 size_t _channel_header_count;
00199
00200 PMT::word_t _trigger_frame_id;
00201 PMT::word_t _trigger_timeslice;
00202
00203 PMT::word_t _checksum;
00204 PMT::word_t _nwords;
00205
00207 ClassDef(pmt_wf_collection,3)
00209 };
00210
00211 #endif
00212