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

Public Member Functions | |
| waveform_sampler () | |
| Default constructor. | |
| virtual | ~waveform_sampler () |
| Default destructor. | |
| virtual bool | initialize () |
| IMPLEMENT in waveform_sampler.cc! Initialization method to be called before the analysis event loop. | |
| virtual bool | analyze (storage_manager *storage) |
| IMPLEMENT in waveform_sampler.cc! Analyze a data event-by-event. | |
| virtual bool | finalize () |
| IMPLEMENT in waveform_sampler.cc! Finalize method to be called after all events processed. | |
| void | set_selection (pulse_selector_base *algo) |
| void | set_waveform_length (int length) |
| TH2D * | get_waveform (PMT::ch_number_t ch) |
| 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 Member Functions | |
| void | clear_event () |
| void | sample_waveform (const pmt_waveform *wf) |
Protected Attributes | |
| std::map< PMT::ch_number_t, std::map< PMT::word_t, std::set< PMT::word_t > > > | _sel_info |
| pulse_selector_base * | _selector |
| std::map< PMT::ch_number_t, TH2D * > | _hWF_map |
| int | _wf_length |
| 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 | |
Definition at line 29 of file waveform_sampler.hh.
| waveform_sampler::waveform_sampler | ( | ) |
Default constructor.
Definition at line 6 of file waveform_sampler.cc.
References ana_base::_fout, decoder_base::_name, _selector, and _wf_length.
00006 : _sel_info(), _hWF_map() 00007 { 00008 _name="waveform_sampler"; 00009 _fout=0; 00010 _selector=0; 00011 _wf_length = 0; 00012 };
| virtual waveform_sampler::~waveform_sampler | ( | ) | [inline, virtual] |
| bool waveform_sampler::analyze | ( | storage_manager * | storage | ) | [virtual] |
IMPLEMENT in waveform_sampler.cc! Analyze a data event-by-event.
Implements ana_base.
Definition at line 43 of file waveform_sampler.cc.
References _sel_info, _selector, ana_base::analyze(), clear_event(), MSG::ERROR, storage_manager::get_data(), DATA_STRUCT::PMT_WF_COLLECTION, pulse_selector_base::pulse_type(), sample_waveform(), pulse_selector_base::select_pulse(), and Message::send().
00043 { 00044 00045 pulse_collection *pulses = (pulse_collection*)(storage->get_data(_selector->pulse_type())); 00046 00047 pmt_wf_collection *wfs = (pmt_wf_collection*)(storage->get_data(DATA_STRUCT::PMT_WF_COLLECTION)); 00048 00049 if(!pulses){ 00050 00051 Message::send(MSG::ERROR,__FUNCTION__, 00052 "Necessary input pulses not found!"); 00053 00054 return false; 00055 00056 } 00057 00058 if(!wfs){ 00059 00060 Message::send(MSG::ERROR,__FUNCTION__, 00061 "Necessary input raw waveform not found!"); 00062 00063 return false; 00064 00065 } 00066 00067 clear_event(); 00068 00069 if(!(_selector->analyze(storage))) return false; 00070 00071 // 00072 // Log ch number, frame id, sample number of selected pulse 00073 // 00074 for(auto pulse : *pulses){ 00075 00076 if(!(_selector->select_pulse(&pulse))) continue; 00077 00078 PMT::ch_number_t ch = pulse.channel_number(); 00079 PMT::word_t frame = pulse.frame_id(); 00080 PMT::word_t sample = pulse.timeslice(); 00081 00082 if(_sel_info.find(ch)==_sel_info.end()) 00083 00084 _sel_info[ch] = std::map<PMT::word_t,std::set<PMT::word_t> >(); 00085 00086 if(_sel_info[ch].find(frame) == _sel_info[ch].end() ) 00087 00088 _sel_info[ch][frame] = std::set<PMT::word_t>(); 00089 00090 if(_sel_info[ch][frame].find(sample) == _sel_info[ch][frame].end()) 00091 00092 _sel_info[ch][frame].insert(sample); 00093 00094 } 00095 00096 // 00097 // Loop over waveforms that matches with the selected IDs 00098 // 00099 for(auto wf : *wfs){ 00100 00101 PMT::ch_number_t ch = wf.channel_number(); 00102 PMT::word_t frame = wf.channel_frame_id(); 00103 PMT::word_t sample = wf.timeslice(); 00104 00105 if(_sel_info.find(ch) == _sel_info.end()) continue; 00106 00107 if(_sel_info[ch].find(frame) == _sel_info[ch].end()) continue; 00108 00109 if(_sel_info[ch][frame].find(sample) == _sel_info[ch][frame].end()) continue; 00110 00111 sample_waveform(&wf); 00112 00113 } 00114 00115 /* 00116 for(pmt_wf_collection::iterator iter(wfs->begin()); 00117 iter != wfs->end(); 00118 ++iter){ 00119 00120 PMT::ch_number_t ch = (*iter).channel_number(); 00121 PMT::word_t frame = (*iter).channel_frame_id(); 00122 PMT::word_t sample = (*iter).timeslice(); 00123 00124 if(_sel_info.find(ch) == _sel_info.end()) continue; 00125 00126 if(_sel_info[ch].find(frame) == _sel_info[ch].end()) continue; 00127 00128 if(_sel_info[ch][frame].find(sample) == _sel_info[ch][frame].end()) continue; 00129 00130 sample_waveform(&(*iter)); 00131 00132 } 00133 */ 00134 00135 00136 return true; 00137 }
| 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;};
| void waveform_sampler::clear_event | ( | ) | [protected] |
Definition at line 37 of file waveform_sampler.cc.
References _sel_info.
Referenced by analyze().
00037 { 00038 00039 _sel_info.clear(); 00040 00041 }
| bool waveform_sampler::finalize | ( | ) | [virtual] |
IMPLEMENT in waveform_sampler.cc! Finalize method to be called after all events processed.
Implements ana_base.
Definition at line 164 of file waveform_sampler.cc.
References ana_base::_fout, and _hWF_map.
00164 { 00165 00166 if(_fout){ 00167 00168 _fout->cd(); 00169 00170 for(std::map<PMT::ch_number_t,TH2D*>::const_iterator iter(_hWF_map.begin()); 00171 iter!=_hWF_map.end(); 00172 ++iter){ 00173 00174 (*iter).second->Write(); 00175 00176 } 00177 00178 } 00179 00180 return true; 00181 }
| 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;};
| TH2D* waveform_sampler::get_waveform | ( | PMT::ch_number_t | ch | ) | [inline] |
| bool waveform_sampler::initialize | ( | ) | [virtual] |
IMPLEMENT in waveform_sampler.cc! Initialization method to be called before the analysis event loop.
Implements ana_base.
Definition at line 14 of file waveform_sampler.cc.
References _hWF_map, _selector, _wf_length, MSG::ERROR, and Message::send().
00014 { 00015 00016 if(!(_selector)) { 00017 00018 Message::send(MSG::ERROR,__FUNCTION__, 00019 "pulse selection algorithm has not been set! Aborting..."); 00020 00021 return false; 00022 } 00023 00024 if(_wf_length < 1) { 00025 00026 Message::send(MSG::ERROR,__FUNCTION__, 00027 "sample waveform length is set to < 1! Aborting..."); 00028 00029 return false; 00030 } 00031 00032 _hWF_map.clear(); 00033 00034 return true; 00035 }
| void waveform_sampler::sample_waveform | ( | const pmt_waveform * | wf | ) | [protected] |
Definition at line 139 of file waveform_sampler.cc.
References ana_base::_fout, _hWF_map, _selector, _wf_length, pmt_waveform::channel_number(), DATA_STRUCT::DATA_TREE_NAME, and pulse_selector_base::pulse_type().
Referenced by analyze().
00139 { 00140 00141 PMT::ch_number_t ch(wf->channel_number()); 00142 00143 int nbins = (_wf_length < (int)(wf->size())) ? _wf_length : (int)(wf->size()); 00144 00145 _fout->cd(); 00146 if(_hWF_map.find(ch)==_hWF_map.end()) { 00147 00148 TString pulse_name(Form("%s",DATA_STRUCT::DATA_TREE_NAME[_selector->pulse_type()].c_str())); 00149 pulse_name.ReplaceAll("pulse_",""); 00150 pulse_name.ReplaceAll("_window",""); 00151 00152 _hWF_map[ch] = new TH2D(Form("hWF_%s_Ch%02d",pulse_name.Data(),ch), 00153 Form("Raw Waveform Sample for Ch %d; Timeslice; ADC",ch), 00154 nbins, -0.5, ((double)nbins)-0.5, 4096, -0.5,4095.5); 00155 00156 } 00157 00158 for(int i=0; i<nbins; i++) 00159 00160 _hWF_map[ch]->Fill((double)i, (double)(wf->at(i))); 00161 00162 }
| 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 waveform_sampler::set_selection | ( | pulse_selector_base * | algo | ) | [inline] |
| 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 }
| void waveform_sampler::set_waveform_length | ( | int | length | ) | [inline] |
Definition at line 56 of file waveform_sampler.hh.
References _wf_length.
00056 {_wf_length=length;};
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(), finalize(), pulse_reco::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(), sample_waveform(), ana_base::set_output_file(), and waveform_sampler().
std::map<PMT::ch_number_t,TH2D*> waveform_sampler::_hWF_map [protected] |
Definition at line 75 of file waveform_sampler.hh.
Referenced by finalize(), get_waveform(), initialize(), and sample_waveform().
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_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().
std::map<PMT::ch_number_t,std::map<PMT::word_t,std::set<PMT::word_t> > > waveform_sampler::_sel_info [protected] |
pulse_selector_base* waveform_sampler::_selector [protected] |
Definition at line 73 of file waveform_sampler.hh.
Referenced by analyze(), initialize(), sample_waveform(), set_selection(), and waveform_sampler().
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().
int waveform_sampler::_wf_length [protected] |
Definition at line 77 of file waveform_sampler.hh.
Referenced by initialize(), sample_waveform(), set_waveform_length(), and waveform_sampler().
1.4.7