00001
00015 #ifndef FIFO_HH
00016 #define FIFO_HH
00017
00018 #include "data_base.hh"
00019
00020 namespace larlight {
00021
00026 class fifo : public std::vector<UShort_t>,
00027 public data_base {
00028
00029 public:
00030
00032 fifo(DATA::DATA_TYPE type=DATA::FIFO);
00033
00035 fifo(const fifo& original)
00036 : std::vector<UShort_t>(original),
00037 data_base(original),
00038 _channel_number(original._channel_number),
00039 _module_address(original._module_address),
00040 _module_id(original._module_id),
00041 _readout_frame_number(original._readout_frame_number),
00042 _readout_sample_number(original._readout_sample_number)
00043 {}
00044
00046 fifo(UShort_t ch,
00047 UInt_t frame,
00048 UInt_t sample,
00049 UChar_t module_address,
00050 UChar_t module_id,
00051 DATA::DATA_TYPE type,
00052 std::vector<UShort_t> wf) : std::vector<UShort_t>(wf),
00053 data_base(type),
00054 _channel_number(ch),
00055 _module_address(module_address),
00056 _module_id(module_id),
00057 _readout_frame_number(frame),
00058 _readout_sample_number(sample)
00059 {}
00060
00061
00063 void set_channel_number (UShort_t ch) {_channel_number=ch;}
00064
00066 void set_readout_frame_number (UInt_t id) {_readout_frame_number=id;}
00067
00069 void set_readout_sample_number (UInt_t t) {_readout_sample_number=t;}
00070
00072 void set_module_address(UChar_t n) { _module_address = n;}
00073
00075 void set_module_id(UChar_t n) { _module_id = n;}
00076
00078 UInt_t readout_frame_number() const {return _readout_frame_number;}
00079
00081 UInt_t readout_sample_number_RAW() const { return _readout_sample_number; }
00082
00084 inline UInt_t readout_sample_number_2MHz() const
00085 {return (_type==DATA::PMTFIFO ? _readout_sample_number/32 : _readout_sample_number ); }
00086
00088 inline UInt_t readout_sample_number_16MHz() const
00089 {return (_type==DATA::PMTFIFO ? _readout_sample_number/4 : _readout_sample_number*8 ); }
00090
00092 inline UInt_t readout_sample_number_64MHz() const
00093 {return (_type==DATA::PMTFIFO ? _readout_sample_number : _readout_sample_number*32 ); }
00094
00096 UShort_t channel_number() const {return _channel_number;}
00097
00099 UChar_t module_address() const { return _module_address; }
00100
00102 UChar_t module_id() const {return _module_id;}
00103
00105 virtual void clear_data();
00106
00108 ~fifo(){}
00109
00110
00111 protected:
00112
00114 virtual void init_vars();
00115
00116 UShort_t _channel_number;
00117 UChar_t _module_address;
00118 UChar_t _module_id;
00119 UInt_t _readout_frame_number;
00120 UInt_t _readout_sample_number;
00121
00123 ClassDef(fifo,5)
00125 };
00126
00127
00132 class event_fifo : public std::vector<larlight::fifo>, public event_base {
00133
00134 public:
00135
00137 event_fifo(DATA::DATA_TYPE type=DATA::FIFO);
00138
00140 event_fifo(const event_fifo& original)
00141 : std::vector<larlight::fifo>(original),
00142 event_base(original),
00143 _event_number(original._event_number),
00144 _event_frame_number(original._event_frame_number),
00145 _module_address(original._module_address),
00146 _module_id(original._module_id),
00147 _fem_trig_frame_number(original._fem_trig_frame_number),
00148 _fem_trig_sample_number(original._fem_trig_sample_number),
00149 _checksum(original._checksum),
00150 _nwords(original._nwords)
00151 {}
00152
00154 ~event_fifo(){}
00155
00157 void set_event_number(UInt_t n) { _event_number = n; }
00158
00160 void set_event_frame_number(UInt_t n) {_event_frame_number=n;}
00161
00163 void set_module_address(UChar_t n) {_module_address=n;}
00164
00166 void set_module_id(UChar_t id) {_module_id=id;}
00167
00169 void set_checksum(UInt_t sum) {_checksum=sum;}
00170
00172 void set_nwords(UInt_t n) {_nwords=n;}
00173
00175 void set_fem_trig_frame_number(UInt_t n) {_fem_trig_frame_number=n;}
00176
00178 void set_fem_trig_sample_number(UInt_t n) {_fem_trig_sample_number=n;}
00179
00181 UInt_t event_number() const { return _event_number;}
00182
00184 UInt_t event_frame_number() const {return _event_frame_number;}
00185
00187 UChar_t module_address() const {return _module_address;}
00188
00190 UChar_t module_id() const {return _module_id;}
00191
00193 UInt_t checksum() const {return _checksum;}
00194
00196 UInt_t nwords() const {return _nwords;}
00197
00199 UInt_t fem_trig_frame_number() const {return _fem_trig_frame_number;}
00200
00202 inline UInt_t fem_trig_sample_number_RAW() const {return _fem_trig_sample_number;}
00203
00205 inline UInt_t fem_trig_sample_number_2MHz() const {return _fem_trig_sample_number;}
00206
00208 inline UInt_t fem_trig_sample_number_16MHz() const {return _fem_trig_sample_number*8;}
00209
00211 inline UInt_t fem_trig_sample_number_64MHz() const {return _fem_trig_sample_number*32;}
00212
00214 virtual void clear_data();
00215
00216
00217 protected:
00218
00219 virtual void init_vars();
00221 UInt_t _event_number;
00222 UInt_t _event_frame_number;
00223 UChar_t _module_address;
00224 UChar_t _module_id;
00225
00226 UInt_t _fem_trig_frame_number;
00227 UInt_t _fem_trig_sample_number;
00228
00229 UInt_t _checksum;
00230 UInt_t _nwords;
00231
00233 ClassDef(event_fifo,6)
00235 };
00236 }
00237 #endif
00238
00240