#include <pulse_reco.hh>
Inheritance diagram for pulse_reco:

Public Types | |
| kHEAD = 0 | |
| Use first N samples. | |
| kTAIL | |
| Use last N samples. | |
| kBOTH | |
| Calculate both and use the one with smaller RMS. | |
| enum | PED_METHOD { kHEAD = 0, kTAIL, kBOTH } |
| enum to define ped_estimator algorithm options More... | |
Public Member Functions | |
| pulse_reco () | |
| Default constructor. | |
| ~pulse_reco () | |
| Default destructor. | |
| virtual bool | initialize () |
| Implementation of ana_base::initialize method. | |
| virtual bool | analyze (storage_manager *storage) |
| Implementation of ana_base::analyze method. | |
| virtual bool | finalize () |
| Implementation of ana_base::finalize method. | |
| void | add_reco_algo (preco_algo_base *algo) |
| A method to set pulse reconstruction algorithm. | |
| void | set_ped_algo (PED_METHOD type) |
| A method to set a choice of pedestal estimation method. | |
| void | set_ped_nsample_cosmic (size_t n) |
| A method to set # of ADC samples to be used for a cosmic readout. | |
| void | set_ped_nsample_beam (size_t n) |
| A method to set # of ADC samples to be used for a beam readout. | |
| void | set_output_file (TFile *fout) |
| A setter for analysis output file poitner. | |
| void | set_verbosity (MSG::Level level) |
| Setter for the verbosity level. | |
| MSG::Level | get_verbosity () const |
| Getter for the verbosity level. | |
| const std::string | class_name () const |
| Getter for the class name. | |
Protected Attributes | |
| TFile * | _fout |
| Analysis output file pointer. | |
| char | _buf [200] |
| char buffer for message manipulation | |
| bool | _verbosity [MSG::MSG_TYPE_MAX] |
| holder for enabled message levels | |
| MSG::Level | _verbosity_level |
| holder for specified verbosity level | |
| std::string | _name |
| class name holder | |
Private Member Functions | |
| bool | is_beam (const pmt_waveform *wf) |
| A method to judge whether the subject waveform corresponds to a beam readout or not. | |
Private Attributes | |
| std::vector< preco_algo_base * > | _reco_algo_v |
| pulse reconstruction algorithm pointer | |
| ped_estimator | _ped_algo |
| ped_estimator object | |
| size_t | _ped_nsample_cosmic |
| # samples to be used for pedestal estimation of cosmic readout | |
| size_t | _ped_nsample_beam |
| # samples to be used for pedestal estimation of beam readout | |
| PED_METHOD | _ped_method |
| Enum value to be set by a user for the pedestal estimation method. | |
This class executes various pulse reconstruction algorithm which inherits from preco_algo_base. Refer to analyze() function implementation to check how a pulse reconstruction algorithm is called.
Definition at line 31 of file pulse_reco.hh.
enum to define ped_estimator algorithm options
| kHEAD | Use first N samples. |
| kTAIL | Use last N samples. |
| kBOTH | Calculate both and use the one with smaller RMS. |
Definition at line 36 of file pulse_reco.hh.
| pulse_reco::pulse_reco | ( | ) |
Default constructor.
Definition at line 7 of file pulse_reco.cc.
References decoder_base::_name, _ped_method, _ped_nsample_beam, _ped_nsample_cosmic, _reco_algo_v, and kHEAD.
00007 : ana_base(), _reco_algo_v(), _ped_algo(){ 00008 //*************************************************************** 00009 00010 _reco_algo_v.clear(); 00011 00012 _ped_nsample_cosmic = 1; 00013 00014 _ped_nsample_beam = 8; 00015 00016 _ped_method = kHEAD; 00017 00018 _name="pulse_reco"; 00019 00020 };
| pulse_reco::~pulse_reco | ( | ) | [inline] |
| void pulse_reco::add_reco_algo | ( | preco_algo_base * | algo | ) | [inline] |
A method to set pulse reconstruction algorithm.
Definition at line 60 of file pulse_reco.hh.
References _reco_algo_v.
Referenced by main().
00060 { _reco_algo_v.push_back(algo); };
| bool pulse_reco::analyze | ( | storage_manager * | storage | ) | [virtual] |
Implementation of ana_base::analyze method.
Implements ana_base.
Definition at line 38 of file pulse_reco.cc.
References _ped_algo, _ped_method, _ped_nsample_beam, _ped_nsample_cosmic, _reco_algo_v, ped_estimator::compute_pedestal(), pmt_wf_collection::event_id(), storage_manager::get_data(), is_beam(), kBOTH, kHEAD, kTAIL, ped_estimator::mean(), pulse_collection::npulse(), DATA_STRUCT::PMT_WF_COLLECTION, Message::send(), pulse_info::set_channel_frame_id(), pulse_info::set_channel_number(), pulse_info::set_charge(), pulse_info::set_disc_id(), pulse_info::set_end_time(), pulse_info::set_max_time(), pulse_collection::set_npulse(), pulse_info::set_ped_mean(), pulse_info::set_ped_rms(), pulse_info::set_pulse_peak(), pulse_info::set_start_time(), pulse_collection::set_sum_charge(), pulse_collection::set_sum_peak(), ped_estimator::sigma(), pulse_collection::sum_charge(), pulse_collection::sum_peak(), and MSG::WARNING.
00038 { 00039 //*************************************************************** 00040 00041 pmt_wf_collection *waveforms = (pmt_wf_collection*)(storage->get_data(DATA_STRUCT::PMT_WF_COLLECTION)); 00042 00043 bool status = true; 00044 00045 for(pmt_wf_collection::iterator iter(waveforms->begin()); 00046 iter!=waveforms->end(); 00047 ++iter){ 00048 00049 // 00050 // Step 0: skipe 0-length waveform with a warning message 00051 // 00052 if((*iter).size()<1){ 00053 00054 Message::send(MSG::WARNING,__PRETTY_FUNCTION__, 00055 Form("Found 0-length waveform vector! Skipping Event = %d, Ch. = %d ...", 00056 waveforms->event_id(), (*iter).channel_number())); 00057 continue; 00058 } 00059 00060 // 00061 // Step 1: apply pedestal estimation 00062 // 00063 double ped_mean = 0; 00064 double sigma = 0; 00065 // Figure out whether this is a beam readout or not 00066 size_t ped_nsample = ( is_beam(&(*iter)) ? _ped_nsample_beam : _ped_nsample_cosmic); 00067 00068 switch(_ped_method){ 00069 00070 case kHEAD: 00071 00072 _ped_algo.compute_pedestal(&(*iter), 0, ped_nsample); 00073 00074 ped_mean = _ped_algo.mean(); 00075 00076 sigma = _ped_algo.sigma(); 00077 00078 break; 00079 00080 case kTAIL: 00081 00082 _ped_algo.compute_pedestal(&(*iter), ((*iter).size()-ped_nsample), ped_nsample); 00083 00084 ped_mean = _ped_algo.mean(); 00085 00086 sigma = _ped_algo.sigma(); 00087 00088 break; 00089 00090 case kBOTH: 00091 00092 _ped_algo.compute_pedestal(&(*iter), 0, ped_nsample); 00093 00094 ped_mean = _ped_algo.mean(); 00095 00096 sigma = _ped_algo.sigma(); 00097 00098 _ped_algo.compute_pedestal(&(*iter), ((*iter).size()-ped_nsample), ped_nsample); 00099 00100 if( sigma > _ped_algo.sigma() ) { 00101 00102 ped_mean = _ped_algo.mean(); 00103 00104 sigma = _ped_algo.sigma(); 00105 00106 } 00107 00108 break; 00109 } 00110 00111 // 00112 // Step 2: apply reco algos 00113 // 00114 for(auto reco_algo : _reco_algo_v){ 00115 00116 reco_algo->set_ped_mean(ped_mean); 00117 00118 reco_algo->set_ped_rms (sigma); 00119 00120 status = status && reco_algo->reco(&(*iter)); 00121 00122 // 00123 // Step 3: loop over reconstructed pulse ane store. 00124 // 00125 pulse_collection *pulses = (pulse_collection*)(storage->get_data(reco_algo->storage_type())); 00126 00127 for(size_t i=0; i < reco_algo->get_npulse(); ++i) { 00128 00129 // Fill output data product for waveform-wise info 00130 pulse_info pulse; 00131 00132 pulse.set_timeslice ( (*iter).timeslice() ); 00133 pulse.set_channel_number ( (*iter).channel_number() ); 00134 pulse.set_channel_frame_id ( (*iter).channel_frame_id() ); 00135 pulse.set_disc_id ( (*iter).disc_id() ); 00136 00137 pulse.set_ped_mean ( reco_algo->ped_mean() ); 00138 pulse.set_ped_rms ( reco_algo->ped_rms() ); 00139 pulse.set_charge ( reco_algo->get_pulse(i)->area ); 00140 pulse.set_pulse_peak ( reco_algo->get_pulse(i)->peak ); 00141 pulse.set_start_time ( reco_algo->get_pulse(i)->t_start ); 00142 pulse.set_max_time ( reco_algo->get_pulse(i)->t_max ); 00143 pulse.set_end_time ( reco_algo->get_pulse(i)->t_end ); 00144 00145 pulses->push_back(pulse); 00146 00147 // Accumulate event-wise charge/amplitude sum 00148 pulses->set_sum_charge ( pulses->sum_charge() + reco_algo->get_pulse(i)->area); 00149 pulses->set_sum_peak ( pulses->sum_peak() + reco_algo->get_pulse(i)->peak); 00150 pulses->set_npulse ( pulses->npulse() + 1 ); 00151 00152 } // end of reco-ed pulse loop 00153 } // end of reco algorithm loop 00154 } // end of PMT waveform loop 00155 00156 return status; 00157 00158 }
| const std::string decoder_base::class_name | ( | ) | const [inline, inherited] |
Getter for the class name.
Definition at line 46 of file decoder_base.hh.
References decoder_base::_name.
00046 {return _name;};
| bool pulse_reco::finalize | ( | ) | [virtual] |
Implementation of ana_base::finalize method.
Implements ana_base.
Definition at line 161 of file pulse_reco.cc.
References ana_base::_fout.
00161 { 00162 //*************************************************************** 00163 00164 _fout->cd(); 00165 00166 return true; 00167 00168 }
| MSG::Level decoder_base::get_verbosity | ( | ) | const [inline, inherited] |
Getter for the verbosity level.
Definition at line 43 of file decoder_base.hh.
References decoder_base::_verbosity_level.
00043 {return _verbosity_level;};
| bool pulse_reco::initialize | ( | ) | [virtual] |
Implementation of ana_base::initialize method.
Implements ana_base.
Definition at line 23 of file pulse_reco.cc.
References _reco_algo_v, MSG::ERROR, and Message::send().
00023 { 00024 //*************************************************************** 00025 00026 if(!(_reco_algo_v.size())) { 00027 00028 Message::send(MSG::ERROR,__PRETTY_FUNCTION__,"Pulse reconstruction algorithm not set!"); 00029 00030 return false; 00031 } 00032 00033 return true; 00034 00035 }
| bool pulse_reco::is_beam | ( | const pmt_waveform * | wf | ) | [inline, private] |
A method to judge whether the subject waveform corresponds to a beam readout or not.
Definition at line 89 of file pulse_reco.hh.
Referenced by analyze().
| void ana_base::set_output_file | ( | TFile * | fout | ) | [inline, inherited] |
A setter for analysis output file poitner.
Definition at line 46 of file ana_base.hh.
References ana_base::_fout.
00046 {_fout=fout;};
| void pulse_reco::set_ped_algo | ( | PED_METHOD | type | ) | [inline] |
A method to set a choice of pedestal estimation method.
Definition at line 63 of file pulse_reco.hh.
References _ped_method.
Referenced by main().
00063 { _ped_method = type; };
| void pulse_reco::set_ped_nsample_beam | ( | size_t | n | ) | [inline] |
A method to set # of ADC samples to be used for a beam readout.
Definition at line 69 of file pulse_reco.hh.
References _ped_nsample_beam.
00069 { _ped_nsample_beam = n; };
| void pulse_reco::set_ped_nsample_cosmic | ( | size_t | n | ) | [inline] |
A method to set # of ADC samples to be used for a cosmic readout.
Definition at line 66 of file pulse_reco.hh.
References _ped_nsample_cosmic.
Referenced by main().
00066 { _ped_nsample_cosmic = n; };
| void decoder_base::set_verbosity | ( | MSG::Level | level | ) | [inherited] |
Setter for the verbosity level.
Reimplemented in ana_processor.
Definition at line 11 of file decoder_base.cc.
References decoder_base::_verbosity, decoder_base::_verbosity_level, MSG::DEBUG, MSG::ERROR, MSG::INFO, MSG::MSG_TYPE_MAX, MSG::NORMAL, and MSG::WARNING.
Referenced by algo_slow_readout_decoder::algo_slow_readout_decoder(), compare_content(), decoder_base::decoder_base(), decoder_manager::decoder_manager(), decoder_manager::initialize(), main(), xmit_event_search::run(), bin_word_search::run(), and ana_processor::set_verbosity().
00011 { 00012 00013 _verbosity_level=level; 00014 00015 for(size_t i=(size_t)(MSG::DEBUG); i<(size_t)(MSG::MSG_TYPE_MAX); ++i) 00016 _verbosity[i]=false; 00017 00018 switch(level){ 00019 case MSG::DEBUG: 00020 _verbosity[MSG::DEBUG]=true; 00021 case MSG::INFO: 00022 _verbosity[MSG::INFO]=true; 00023 case MSG::NORMAL: 00024 _verbosity[MSG::NORMAL]=true; 00025 case MSG::WARNING: 00026 _verbosity[MSG::WARNING]=true; 00027 case MSG::ERROR: 00028 _verbosity[MSG::ERROR]=true; 00029 case MSG::MSG_TYPE_MAX: 00030 break; 00031 } 00032 00033 }
char decoder_base::_buf[200] [protected, inherited] |
char buffer for message manipulation
Definition at line 46 of file decoder_base.hh.
Referenced by reco_wf::analyze(), pulse_viewer::analyze(), algo_slow_readout_decoder::check_event_quality(), storage_manager::close(), bin_io_handler::close(), decoder_manager::decode(), algo_slow_readout_decoder::decode_ch_word(), algo_pmt_xmit::decode_ch_word(), algo_slow_readout_decoder::decode_event_header(), pulse_viewer::get_waveform(), ana_processor::initialize(), pulse_viewer::next_pulse(), storage_manager::open(), bin_io_handler::open(), storage_manager::prepare_tree(), pulse_viewer::previous_pulse(), algo_slow_readout_decoder::print_adc_values(), algo_tpc_xmit::process_ch_word(), algo_slow_readout_decoder::process_ch_word(), algo_pmt_xmit::process_ch_word(), algo_fem_decoder_base::process_fem_header(), algo_xmit_decoder::process_header(), algo_slow_readout_decoder::process_header(), algo_slow_readout_decoder::process_word(), bin_io_handler::read_multi_word(), bin_io_handler::read_word(), and ana_processor::run().
TFile* ana_base::_fout [protected, inherited] |
Analysis output file pointer.
Definition at line 46 of file ana_base.hh.
Referenced by ana_base::ana_base(), waveform_sampler::finalize(), finalize(), pulse_analyzer::finalize(), pmtbaseline_ana::finalize(), pmtbaseline::finalize(), led_pulse_analyzer::finalize(), beamgate_debugger::finalize(), pulse_analyzer::initialize(), pmt_slow_encoder::pmt_slow_encoder(), pmtbaseline::pmtbaseline(), pmtbaseline_ana::pmtbaseline_ana(), pulse_selector_base::pulse_selector_base(), pulse_selector_simple::pulse_selector_simple(), waveform_sampler::sample_waveform(), ana_base::set_output_file(), and waveform_sampler::waveform_sampler().
std::string decoder_base::_name [protected, inherited] |
class name holder
Definition at line 53 of file decoder_base.hh.
Referenced by algo_base::algo_base(), algo_fem_decoder_base::algo_fem_decoder_base(), algo_fixed_window::algo_fixed_window(), algo_slow_readout_decoder::algo_slow_readout_decoder(), algo_threshold::algo_threshold(), algo_tpc_huffman::algo_tpc_huffman(), algo_trig_decoder::algo_trig_decoder(), ana_base::ana_base(), ana_processor::ana_processor(), beamgate_debugger::beamgate_debugger(), bin_io_handler::bin_io_handler(), decoder_base::class_name(), led_pulse_analyzer::led_pulse_analyzer(), led_pulse_selector::led_pulse_selector(), pmt_slow_encoder::pmt_slow_encoder(), pmtbaseline::pmtbaseline(), pmtbaseline_ana::pmtbaseline_ana(), preco_algo_base::preco_algo_base(), pulse_analyzer::pulse_analyzer(), pulse_reco(), pulse_selector_base::pulse_selector_base(), pulse_selector_simple::pulse_selector_simple(), pulse_viewer::pulse_viewer(), reco_wf::reco_wf(), storage_manager::storage_manager(), and waveform_sampler::waveform_sampler().
ped_estimator pulse_reco::_ped_algo [private] |
PED_METHOD pulse_reco::_ped_method [private] |
Enum value to be set by a user for the pedestal estimation method.
Definition at line 86 of file pulse_reco.hh.
Referenced by analyze(), pulse_reco(), and set_ped_algo().
size_t pulse_reco::_ped_nsample_beam [private] |
# samples to be used for pedestal estimation of beam readout
Definition at line 83 of file pulse_reco.hh.
Referenced by analyze(), pulse_reco(), and set_ped_nsample_beam().
size_t pulse_reco::_ped_nsample_cosmic [private] |
# samples to be used for pedestal estimation of cosmic readout
Definition at line 80 of file pulse_reco.hh.
Referenced by analyze(), pulse_reco(), and set_ped_nsample_cosmic().
std::vector<preco_algo_base*> pulse_reco::_reco_algo_v [private] |
pulse reconstruction algorithm pointer
Definition at line 69 of file pulse_reco.hh.
Referenced by add_reco_algo(), analyze(), initialize(), and pulse_reco().
bool decoder_base::_verbosity[MSG::MSG_TYPE_MAX] [protected, inherited] |
holder for enabled message levels
Definition at line 51 of file decoder_base.hh.
Referenced by reco_wf::analyze(), algo_slow_readout_decoder::check_event_quality(), storage_manager::close(), decoder_manager::decode(), algo_slow_readout_decoder::decode_ch_word(), algo_pmt_xmit::decode_ch_word(), algo_slow_readout_decoder::decode_event_header(), algo_fem_decoder_base::decode_fem_header(), algo_trig_decoder::decode_trigger_words(), decoder_manager::finalize(), beamgate_debugger::finalize(), ana_processor::finalize(), decoder_manager::initialize(), beamgate_debugger::initialize(), ana_processor::initialize(), storage_manager::open(), beamgate_debugger::prepare_histo(), storage_manager::prepare_tree(), algo_tpc_xmit::process_ch_word(), algo_tpc_huffman::process_ch_word(), algo_slow_readout_decoder::process_ch_word(), algo_pmt_xmit::process_ch_word(), algo_tpc_xmit::process_event_last_word(), algo_pmt_xmit::process_event_last_word(), algo_fem_decoder_base::process_fem_header(), algo_pmt_xmit::process_fem_last_word(), algo_xmit_decoder::process_header(), algo_slow_readout_decoder::process_header(), algo_fem_decoder_base::process_word(), bin_io_handler::read_multi_word(), storage_manager::reset(), beamgate_debugger::reset(), ana_processor::reset(), decoder_manager::run(), ana_processor::run(), decoder_base::set_verbosity(), algo_tpc_xmit::store_event(), and algo_pmt_xmit::store_event().
MSG::Level decoder_base::_verbosity_level [protected, inherited] |
holder for specified verbosity level
Definition at line 52 of file decoder_base.hh.
Referenced by pulse_viewer::analyze(), decoder_base::get_verbosity(), pulse_viewer::initialize(), decoder_manager::initialize(), ana_processor::initialize(), bin_io_handler::read_multi_word(), bin_io_handler::read_word(), and decoder_base::set_verbosity().
1.4.7