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

Public Member Functions | |
| reco_wf () | |
| Default constructor. | |
| ~reco_wf () | |
| Default destructor. | |
| virtual bool | initialize () |
| Implementation of ana_base::initialize. | |
| virtual bool | analyze (storage_manager *data) |
| Implementation of ana_base::analyze. | |
| virtual bool | finalize () |
| Implementation of ana_base::finalize. | |
| const PMT::ch_waveform_t * | get_ch_waveform (UInt_t ch) |
| Getter for a reconstructed PMT-waveform. | |
| const std::set< UInt_t > * | get_ch_set () const |
| Getter for a set of read-out channels from data. | |
| void | set_frame_width (PMT::word_t w) |
| Setter for readout frame size. | |
| PMT::word_t | get_start_frame () const |
| Getter for the very first frame number among all in the event. | |
| PMT::word_t | get_start_slice () const |
| Getter for the very first sample number among all in the event. | |
| TH2D * | get_histo () |
| A 2D histogram generator which contains reco-ed waveform for all PMTs. | |
| 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 | |
| void | reset () |
| Initialize members. | |
| void | clear_event () |
| Clear event-wise members. | |
Private Attributes | |
| std::map< UInt_t, PMT::ch_waveform_t > | _wf_map |
| A collection of reco-ed waveforms. | |
| std::set< UInt_t > | _channels |
| A set of channel numbers. | |
| PMT::word_t | _frame_width |
| The readout frame width. | |
| PMT::word_t | _event_id |
| Event ID number. | |
| PMT::word_t | _ref_slice |
| First time slice number in the event. | |
| PMT::word_t | _ref_frame |
| First frame number in the event. | |
| TH2D * | _wf_histo |
| Histogram of reco-ed waveforms. | |
It combines multiple waveforms (if there are) into one big waveform based on sample number, frame id, and discriminator id.
Definition at line 28 of file reco_wf.hh.
| reco_wf::reco_wf | ( | ) |
Default constructor.
Definition at line 6 of file reco_wf.cc.
References _frame_width, decoder_base::_name, and reset().
00006 : _wf_histo(0) { 00007 _frame_width=4096; 00008 _name="reco_wf"; 00009 reset(); 00010 00011 }
| reco_wf::~reco_wf | ( | ) | [inline] |
| bool reco_wf::analyze | ( | storage_manager * | data | ) | [virtual] |
Implementation of ana_base::analyze.
Implements ana_base.
Definition at line 41 of file reco_wf.cc.
References decoder_base::_buf, _channels, _event_id, _frame_width, _ref_frame, _ref_slice, decoder_base::_verbosity, _wf_map, pmt_waveform::channel_frame_id(), pmt_waveform::channel_number(), clear_event(), MSG::ERROR, pmt_wf_collection::event_id(), storage_manager::get_data(), MSG::INFO, DATA_STRUCT::PMT_WF_COLLECTION, Message::send(), and pmt_waveform::timeslice().
00041 { 00042 00043 pmt_wf_collection *data = (pmt_wf_collection*)(storage->get_data(DATA_STRUCT::PMT_WF_COLLECTION)); 00044 clear_event(); 00045 00046 if(!(data->size())) 00047 return true; 00048 00049 _event_id=data->event_id(); 00050 00051 PMT::word_t rel_frame=0; 00052 PMT::word_t rel_slice=0; 00053 PMT::word_t wf_length=0; 00054 00055 // 00056 // Loop over event (collection of channel waveforms) to first 00057 // identify the maximum length of waveform vector to be stored. 00058 // 00059 std::set<size_t> skip_index; // a set of index in pmt_wf_collection array to be skipped 00060 for(size_t i=0; i<data->size(); ++i){ 00061 00062 const pmt_waveform* pmt_data = &(data->at(i)); 00063 00064 if(pmt_data->size()<1) { 00065 skip_index.insert(i); 00066 Message::send(MSG::ERROR,__FUNCTION__, 00067 Form("Detected 0-length waveform (Event=%d ... Ch.=%d)! Skipping.",data->event_id(),pmt_data->channel_number())); 00068 continue; 00069 } 00070 00071 if(!(_ref_frame) || _ref_frame>pmt_data->channel_frame_id()) 00072 _ref_frame = pmt_data->channel_frame_id(); 00073 00074 rel_frame = pmt_data->channel_frame_id() - _ref_frame; 00075 rel_slice = rel_frame * _frame_width + pmt_data->timeslice(); 00076 00077 if(!(_ref_slice) || _ref_slice>rel_slice) 00078 _ref_slice=rel_slice; 00079 00080 if(!(wf_length) || wf_length<(rel_slice+pmt_data->size())) 00081 wf_length=rel_slice+pmt_data->size(); 00082 00083 if(_channels.find(pmt_data->channel_number())==_channels.end()) 00084 _channels.insert(pmt_data->channel_number()); 00085 00086 } 00087 00088 // 00089 // Loop over again. This time create a channel waveform container 00090 // and store waveform data inside. By default set all waveform 00091 // vector contents to be 0. We write out all elements, whether data 00092 // exists or not, for the time span of the first and last received 00093 // adc count among all channels. 00094 // 00095 for(size_t i=0; i<data->size(); ++i){ 00096 00097 if(skip_index.find(i)!=skip_index.end()) continue; 00098 00099 const pmt_waveform* pmt_data = &(data->at(i)); 00100 UInt_t ch=pmt_data->channel_number(); 00101 00102 if(_wf_map.find(ch)==_wf_map.end()) 00103 _wf_map[ch]=PMT::ch_waveform_t(wf_length-_ref_slice+1,0); 00104 00105 for(size_t j=0; j<pmt_data->size(); ++j){ 00106 00107 rel_frame = pmt_data->channel_frame_id() - _ref_frame; 00108 rel_slice = rel_frame * _frame_width + pmt_data->timeslice() + j; 00109 00110 _wf_map[ch][rel_slice - _ref_slice] = pmt_data->at(j); 00111 } 00112 } 00113 00114 // 00115 // Summary report if verbosity is set 00116 // 00117 if(_verbosity[MSG::INFO]){ 00118 sprintf(_buf,"Event = %-4d ... %-2zd channels read out",data->event_id(),_channels.size()); 00119 Message::send(MSG::INFO,__FUNCTION__,_buf); 00120 } 00121 00122 return true; 00123 }
| 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 reco_wf::clear_event | ( | ) | [private] |
Clear event-wise members.
Definition at line 18 of file reco_wf.cc.
References _channels, _event_id, _ref_frame, _ref_slice, _wf_histo, and _wf_map.
Referenced by analyze(), and reset().
00018 { 00019 00020 if(_wf_histo) 00021 delete _wf_histo; 00022 _wf_histo=0; 00023 _channels.clear(); 00024 _wf_map.clear(); 00025 _ref_frame=0; 00026 _ref_slice=0; 00027 _event_id=0; 00028 }
| bool reco_wf::finalize | ( | ) | [virtual] |
Implementation of ana_base::finalize.
Implements ana_base.
Definition at line 134 of file reco_wf.cc.
| const std::set<UInt_t>* reco_wf::get_ch_set | ( | ) | const [inline] |
Getter for a set of read-out channels from data.
Definition at line 51 of file reco_wf.hh.
References _channels.
00051 {return &_channels;};
| const PMT::ch_waveform_t * reco_wf::get_ch_waveform | ( | UInt_t | ch | ) |
| TH2D * reco_wf::get_histo | ( | ) |
A 2D histogram generator which contains reco-ed waveform for all PMTs.
Definition at line 140 of file reco_wf.cc.
References _channels, _event_id, _ref_slice, _wf_histo, and _wf_map.
00140 { 00141 00142 if(_wf_histo) 00143 return _wf_histo; 00144 00145 if(_wf_map.size()==0) return 0; 00146 00147 // Create a histogram 00148 int ctr=0; 00149 for(std::set<UInt_t>::const_iterator iter(_channels.begin()); 00150 iter!=_channels.end(); 00151 ++iter){ 00152 00153 PMT::ch_waveform_t* wf=&(_wf_map[(*iter)]); 00154 00155 if(!(_wf_histo)){ 00156 // If histogram does not yet exist, create one. 00157 // This hsould be called in the 1st loop. 00158 00159 _wf_histo=new TH2D(Form("hWF_Event%05d", _event_id), 00160 Form("All waveform combined for event %-5d; ; Time-slice; ADC",_event_id), 00161 _channels.size(), 0, _channels.size(), // X-axis = channels 00162 wf->size(), _ref_slice, (_ref_slice+wf->size()) // Y-axis = time slice 00163 ); 00164 } 00165 00166 ctr++; 00167 00168 for(unsigned int index=0; index<wf->size(); index++) 00169 00170 _wf_histo->SetBinContent(ctr,index+1,(double)(wf->at(index))); 00171 00172 _wf_histo->GetXaxis()->SetBinLabel(ctr,Form("Ch. %d",(*iter))); 00173 } 00174 00175 if(_wf_histo){ 00176 _wf_histo->GetXaxis()->SetTicks("-"); 00177 _wf_histo->GetXaxis()->LabelsOption("h"); 00178 } 00179 00180 return _wf_histo; 00181 00182 }
| PMT::word_t reco_wf::get_start_frame | ( | ) | const [inline] |
Getter for the very first frame number among all in the event.
Definition at line 57 of file reco_wf.hh.
References _ref_frame.
00057 {return _ref_frame;};
| PMT::word_t reco_wf::get_start_slice | ( | ) | const [inline] |
Getter for the very first sample number among all in the event.
Definition at line 60 of file reco_wf.hh.
References _ref_slice.
00060 {return _ref_slice;};
| 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 reco_wf::initialize | ( | ) | [virtual] |
Implementation of ana_base::initialize.
Implements ana_base.
Definition at line 30 of file reco_wf.cc.
References _frame_width, MSG::ERROR, and Message::send().
00030 { 00031 00032 if(!_frame_width){ 00033 Message::send(MSG::ERROR,__FUNCTION__,"Frame width unspecified! "); 00034 return false; 00035 } 00036 00037 return true; 00038 00039 };
| void reco_wf::reset | ( | ) | [private] |
Initialize members.
Definition at line 13 of file reco_wf.cc.
References clear_event().
Referenced by reco_wf().
00013 { 00014 00015 clear_event(); 00016 }
| void reco_wf::set_frame_width | ( | PMT::word_t | w | ) | [inline] |
Setter for readout frame size.
Definition at line 54 of file reco_wf.hh.
References _frame_width.
00054 {_frame_width=w;};
| 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 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 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().
std::set<UInt_t> reco_wf::_channels [private] |
A set of channel numbers.
Definition at line 75 of file reco_wf.hh.
Referenced by analyze(), clear_event(), get_ch_set(), and get_histo().
PMT::word_t reco_wf::_event_id [private] |
Event ID number.
Definition at line 78 of file reco_wf.hh.
Referenced by analyze(), clear_event(), and get_histo().
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(), 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(), waveform_sampler::sample_waveform(), ana_base::set_output_file(), and waveform_sampler::waveform_sampler().
PMT::word_t reco_wf::_frame_width [private] |
The readout frame width.
Definition at line 76 of file reco_wf.hh.
Referenced by analyze(), initialize(), reco_wf(), and set_frame_width().
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(), storage_manager::storage_manager(), and waveform_sampler::waveform_sampler().
PMT::word_t reco_wf::_ref_frame [private] |
First frame number in the event.
Definition at line 80 of file reco_wf.hh.
Referenced by analyze(), clear_event(), and get_start_frame().
PMT::word_t reco_wf::_ref_slice [private] |
First time slice number in the event.
Definition at line 79 of file reco_wf.hh.
Referenced by analyze(), clear_event(), get_histo(), and get_start_slice().
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 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().
TH2D* reco_wf::_wf_histo [private] |
Histogram of reco-ed waveforms.
Definition at line 82 of file reco_wf.hh.
Referenced by clear_event(), and get_histo().
std::map<UInt_t,PMT::ch_waveform_t> reco_wf::_wf_map [private] |
A collection of reco-ed waveforms.
Definition at line 74 of file reco_wf.hh.
Referenced by analyze(), clear_event(), get_ch_waveform(), and get_histo().
1.4.7