00001 #ifndef PULSE_CC 00002 #define PULSE_CC 00003 00004 #include "pulse.hh" 00005 00006 namespace larlight { 00007 00008 pulse::pulse(DATA::DATA_TYPE type) : data_base(type) 00009 { 00010 if(_type!=DATA::PMTPulse_FixedWin && 00011 _type!=DATA::TPCPulse_FixedWin && 00012 _type!=DATA::PMTPulse_ThresWin && 00013 _type!=DATA::TPCPulse_ThresWin && 00014 _type!=DATA::Pulse ) { 00015 00016 Message::send(MSG::ERROR,__FUNCTION__, 00017 Form("Provided data type (%s) not supported! Reset to default.",DATA::DATA_TREE_NAME[_type].c_str())); 00018 00019 _type=DATA::Pulse; 00020 00021 } 00022 clear_data(); 00023 } 00024 00025 void pulse::clear_data() { 00026 00027 data_base::clear_data(); 00028 _disc_id=FEM::DISC_MAX; 00029 _readout_frame_number=FEM::INVALID_WORD; 00030 _readout_sample_number=FEM::INVALID_WORD; 00031 _channel_number=FEM::INVALID_CH; 00032 _ped_mean=-1; 00033 _ped_rms=-1; 00034 _charge=-1; 00035 _start_time=-1; 00036 _end_time=-1; 00037 _max_time=-1; 00038 00039 } 00040 00041 event_pulse::event_pulse(DATA::DATA_TYPE type) : std::vector<larlight::pulse>(), 00042 event_base(type) 00043 { 00044 if(_type!=DATA::PMTPulse_FixedWin && 00045 _type!=DATA::TPCPulse_FixedWin && 00046 _type!=DATA::PMTPulse_ThresWin && 00047 _type!=DATA::TPCPulse_ThresWin && 00048 _type!=DATA::Pulse ) { 00049 00050 Message::send(MSG::ERROR,__FUNCTION__, 00051 Form("Provided data type (%s) not supported! Reset to default.",DATA::DATA_TREE_NAME[_type].c_str())); 00052 00053 _type=DATA::Pulse; 00054 00055 } 00056 clear_data(); 00057 }; 00058 00059 void event_pulse::clear_data(){ 00060 00061 event_base::clear_data(); 00062 clear(); 00063 _sum_charge=-1; 00064 _sum_peak=-1; 00065 _npulse=0; 00066 00067 } 00068 00069 void event_pulse::calculate_sum(){ 00070 00071 std::vector<pulse>::const_iterator iter(this->begin()); 00072 _sum_charge=0; 00073 _sum_peak=0; 00074 _npulse=0; 00075 while(iter!=this->end()){ 00076 00077 _sum_charge+=(*iter).charge(); 00078 _sum_peak+=(*iter).pulse_peak(); 00079 _npulse++; 00080 } 00081 00082 } 00083 } 00084 #endif