pulse_selector_simple.cc

Go to the documentation of this file.
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     // Check if this pulse passes the criteria
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

Generated on Mon Apr 7 15:35:12 2014 for MyProject by  doxygen 1.4.7