00001
00015 #ifndef PMTFIFO_HH
00016 #define PMTFIFO_HH
00017
00018 #include "data_base.hh"
00019 #include "fifo.hh"
00020
00021 namespace larlight {
00022
00027 class pmtfifo : public fifo {
00028
00029 public:
00030
00032 pmtfifo();
00033
00035 pmtfifo(const pmtfifo& original)
00036 : fifo::fifo(original)
00037
00038 { _disc_id = original._disc_id; }
00039
00041 pmtfifo(UShort_t ch,
00042 UInt_t frame,
00043 UInt_t sample,
00044 UChar_t module_address,
00045 UChar_t module_id,
00046 FEM::DISCRIMINATOR disc,
00047 DATA::DATA_TYPE type,
00048 std::vector<UShort_t> wf) : fifo::fifo(ch,
00049 frame,
00050 sample,
00051 module_address,
00052 module_id,
00053 type,
00054 wf)
00055
00056 { _disc_id = disc; }
00057
00059 void set_disc_id (FEM::DISCRIMINATOR id) {_disc_id=id;}
00060
00062 FEM::DISCRIMINATOR disc_id() const {return _disc_id;}
00063
00065 virtual void clear_data();
00066
00068 ~pmtfifo(){}
00069
00070
00071 protected:
00072
00074 virtual void init_vars();
00075
00076 FEM::DISCRIMINATOR _disc_id;
00077
00079 ClassDef(pmtfifo,5)
00081 };
00082
00083
00088 class event_pmtfifo : public std::vector<larlight::pmtfifo>, public event_base {
00089
00090 public:
00091
00093 event_pmtfifo(DATA::DATA_TYPE type=DATA::PMTFIFO);
00094
00096 event_pmtfifo(const event_pmtfifo& original)
00097 : std::vector<larlight::pmtfifo>(original),
00098 event_base(original),
00099 _event_number(original._event_number),
00100 _event_frame_number(original._event_frame_number),
00101 _module_address(original._module_address),
00102 _module_id(original._module_id),
00103 _fem_trig_frame_number(original._fem_trig_frame_number),
00104 _fem_trig_sample_number(original._fem_trig_sample_number),
00105 _checksum(original._checksum),
00106 _nwords(original._nwords)
00107 {}
00108
00110 ~event_pmtfifo(){}
00111
00113 void set_event_number(UInt_t n) { _event_number = n; }
00114
00116 void set_event_frame_number(UInt_t n) {_event_frame_number=n;}
00117
00119 void set_module_address(UChar_t n) {_module_address=n;}
00120
00122 void set_module_id(UChar_t id) {_module_id=id;}
00123
00125 void set_checksum(UInt_t sum) {_checksum=sum;}
00126
00128 void set_nwords(UInt_t n) {_nwords=n;}
00129
00131 void set_fem_trig_frame_number(UInt_t n) {_fem_trig_frame_number=n;}
00132
00134 void set_fem_trig_sample_number(UInt_t n) {_fem_trig_sample_number=n;}
00135
00137 UInt_t event_number() const { return _event_number;}
00138
00140 UInt_t event_frame_number() const {return _event_frame_number;}
00141
00143 UChar_t module_address() const {return _module_address;}
00144
00146 UChar_t module_id() const {return _module_id;}
00147
00149 UInt_t checksum() const {return _checksum;}
00150
00152 UInt_t nwords() const {return _nwords;}
00153
00155 UInt_t fem_trig_frame_number() const {return _fem_trig_frame_number;}
00156
00158 inline UInt_t fem_trig_sample_number_RAW() const {return _fem_trig_sample_number;}
00159
00161 inline UInt_t fem_trig_sample_number_2MHz() const {return _fem_trig_sample_number;}
00162
00164 inline UInt_t fem_trig_sample_number_16MHz() const {return _fem_trig_sample_number*8;}
00165
00167 inline UInt_t fem_trig_sample_number_64MHz() const {return _fem_trig_sample_number*32;}
00168
00170 virtual void clear_data();
00171
00172
00173 protected:
00174
00175 virtual void init_vars();
00177 UInt_t _event_number;
00178 UInt_t _event_frame_number;
00179 UChar_t _module_address;
00180 UChar_t _module_id;
00181
00182 UInt_t _fem_trig_frame_number;
00183 UInt_t _fem_trig_sample_number;
00184
00185 UInt_t _checksum;
00186 UInt_t _nwords;
00187
00189 ClassDef(event_pmtfifo,6)
00191 };
00192 }
00193 #endif
00194
00196