00001 #ifndef PULSE_SELECTOR_SIMPLE_CC
00002 #define PULSE_SELECTOR_SIMPLE_CC
00003
00004 #include "pulse_selector_simple.hh"
00005
00006 pulse_selector_simple::pulse_selector_simple() : pulse_selector_base() {
00007
00008 _name="pulse_selector_simple";
00009 _fout=0;
00010 reset_cuts();
00011 };
00012
00013 void pulse_selector_simple::reset_cuts() {
00014
00015 _cut_tstart_reco = std::make_pair(-1,2000);
00016 _cut_tstart = std::make_pair(-1,2000);
00017 _cut_tend = std::make_pair(-1,2000);
00018 _cut_amp = std::make_pair(-1,4096);
00019 _cut_charge = std::make_pair(-1,4096*2000);
00020 _cut_pedbase = std::make_pair(-1,4096);
00021 _cut_pedrms = std::make_pair(0,4096);
00022 _cut_channels = std::make_pair(0,PMT::INVALID_CH);
00023 _cut_frame_id = std::make_pair(0,0xffffffff);
00024 _cut_timeslice = std::make_pair(0,0xffffffff);
00025 _cut_npulse = std::make_pair(0,0xffffffff);
00026 _cut_sum_charge = std::make_pair(0,4096*2000*PMT::NUM_PMT_CHANNEL);
00027 _cut_sum_peak = std::make_pair(0,4096*PMT::NUM_PMT_CHANNEL);
00028
00029 }
00030
00031 bool pulse_selector_simple::select_pulse(const pulse_info* data){
00032
00033
00034 PMT::ch_number_t ch(data->channel_number());
00035
00036 PMT::word_t sample = data->timeslice();
00037 PMT::word_t frame = data->frame_id();
00038 double t_start = data->start_time();
00039 double t_end = data->end_time();
00040 double charge = data->charge();
00041 double amp = data->pulse_peak();
00042 double ped_base = data->ped_mean();
00043 double ped_rms = data->ped_rms();
00044 double t_start_reco = data->start_time_reco();
00045
00046
00047 if(frame < _cut_frame_id.first || _cut_frame_id.second < frame)
00048 return false;
00049 if(sample < _cut_timeslice.first || _cut_timeslice.second < sample)
00050 return false;
00051 if(ch < _cut_channels.first || _cut_channels.second < ch)
00052 return false;
00053 if(t_start_reco < _cut_tstart_reco.first || _cut_tstart_reco.second < t_start_reco)
00054 return false;
00055 if(t_start < _cut_tstart.first || _cut_tstart.second < t_start)
00056 return false;
00057 if(t_end < _cut_tend.first || _cut_tend.second < t_end)
00058 return false;
00059 if(charge < _cut_charge.first || _cut_charge.second < charge)
00060 return false;
00061 if(amp < _cut_amp.first || _cut_amp.second < amp)
00062 return false;
00063 if(ped_base < _cut_pedbase.first || _cut_pedbase.second < ped_base)
00064 return false;
00065 if(ped_rms < _cut_pedrms.first || _cut_pedrms.second < ped_rms)
00066 return false;
00067
00068 return true;
00069 }
00070
00071 #endif