00001
00014 #ifndef PULSE_HH
00015 #define PULSE_HH
00016
00017 #include "data_base.hh"
00018
00019 namespace larlight {
00024 class pulse : public data_base {
00025
00026 public:
00027
00029 pulse(DATA::DATA_TYPE type=DATA::Pulse);
00030
00032 pulse(const pulse& original) : data_base(original),
00033 _channel_number(original._channel_number),
00034 _ped_mean(original._ped_mean),
00035 _ped_rms(original._ped_rms),
00036 _pulse_peak(original._pulse_peak),
00037 _charge(original._charge),
00038 _start_time(original._start_time),
00039 _end_time(original._end_time),
00040 _max_time(original._max_time),
00041 _readout_frame_number(original._readout_frame_number),
00042 _readout_sample_number(original._readout_sample_number),
00043 _disc_id(original._disc_id)
00044 {};
00045
00047 void set_channel_number (UShort_t ch) {_channel_number=ch;};
00048
00050 void set_ped_mean (double v) {_ped_mean=v;};
00051
00053 void set_ped_rms (double v) {_ped_rms=v;};
00054
00056 void set_pulse_peak (double v) {_pulse_peak=v;};
00057
00059 void set_charge (double v) {_charge=v;};
00060
00062 void set_start_time(double v) {_start_time=v;};
00063
00065 void set_end_time(double v) {_end_time=v;};
00066
00068 void set_max_time(double v) {_max_time=v;};
00069
00071 void set_disc_id(FEM::DISCRIMINATOR id) { _disc_id=id; }
00072
00074 void set_readout_frame_number(UInt_t id) { _readout_frame_number=id; }
00075
00077 void set_readout_sample_number(UInt_t t) { _readout_sample_number=t; }
00078
00080 FEM::DISCRIMINATOR disc_id() const { return _disc_id;}
00081
00083 UInt_t readout_frame_number() const { return _readout_frame_number;}
00084
00086 UInt_t readout_sample_number() const { return _readout_sample_number;}
00087
00089 UShort_t channel_number() const {return _channel_number;};
00090
00092 double ped_mean () const { return _ped_mean;};
00093
00095 double ped_rms () const { return _ped_rms;};
00096
00098 double pulse_peak () const { return _pulse_peak;};
00099
00101 double charge () const { return _charge;};
00102
00104 double start_time () const { return _start_time;};
00105
00107 double end_time () const { return _end_time;};
00108
00110 double max_time () const { return _max_time;};
00111
00113 virtual void clear_data();
00114
00116 ~pulse(){};
00117
00118
00119 protected:
00120
00122 void init_vars();
00123
00124 UShort_t _channel_number;
00125 double _ped_mean;
00126 double _ped_rms;
00127 double _pulse_peak;
00128 double _charge;
00129 double _start_time;
00130 double _end_time;
00131 double _max_time;
00132 UInt_t _readout_frame_number;
00133 UInt_t _readout_sample_number;
00134 FEM::DISCRIMINATOR _disc_id;
00135
00137 ClassDef(pulse,4)
00139 };
00140
00145 class event_pulse : public std::vector<larlight::pulse>,
00146 public event_base {
00147
00148 public:
00149
00151 event_pulse(DATA::DATA_TYPE type=DATA::Pulse);
00152
00154 event_pulse(const event_pulse& original)
00155 : std::vector<larlight::pulse>(original),
00156 event_base(original),
00157 _sum_charge(original._sum_charge),
00158 _sum_peak(original._sum_peak),
00159 _npulse(original._npulse)
00160 {}
00161
00169 void calculate_sum();
00170
00172 double sum_charge() const {return _sum_charge;}
00173
00175 double sum_peak() const {return _sum_peak;}
00176
00178 double npulse() const {return _npulse;}
00179
00181 void set_sum_charge(double v) {_sum_charge=v;}
00182
00184 void set_sum_peak(double v) {_sum_peak=v;}
00185
00187 void set_npulse(UInt_t v) {_npulse=v;}
00188
00190 virtual void clear_data();
00191
00193 ~event_pulse(){}
00194
00195
00196 private:
00197
00199 void init_vars();
00200
00201 double _sum_charge;
00202 double _sum_peak;
00203 UInt_t _npulse;
00204
00206 ClassDef(event_pulse,2)
00208 };
00209
00210 }
00211
00212 #endif
00213