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

Public Member Functions | |
| decoder_manager () | |
| Default constructor. | |
| virtual | ~decoder_manager () |
| Default destructor. | |
| void | add_input_filename (std::string name) |
| Setter for the input filename. | |
| void | set_output_filename (std::string name) |
| Setter for the output filename. | |
| void | set_data_to_write (DATA_STRUCT::DATA_TYPE type, bool write=true) |
| void | set_format (FORMAT::INPUT_FILE fmt) |
| Setter for the input file format. | |
| void | set_decoder (algo_base *algo) |
| Setter for the decoding algorithm. | |
| void | debug_mode (bool debug) |
| Setter for the debug mode. | |
| bool | run () |
| A method to start a batch decoding process. | |
| void | reset () |
| A method to initialize members for new decoding process. | |
| void | set_read_by_block (bool doit=true) |
| A method to enable block-read for an input binary/ascii file. | |
| void | set_read_block_size (size_t n) |
| A method to set the size of block-read (in terms of number of 32-bit words. | |
| 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 | |
| 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 | initialize () |
| A method to be called before run() to initialize variables. | |
| bool | decode () |
| A method. | |
| bool | finalize () |
| A method to finalize decoding process, to be called after all is done. | |
| bool | open_file () |
| A method to open input/output files. | |
Private Attributes | |
| bool | _debug_mode |
| Debug mode boolean. | |
| std::vector< ana_base * > | _analyzers |
| A collection of analyzers to be run. | |
| std::string | _input_file |
| Input file name. | |
| std::vector< std::string > | _bin_files |
| std::vector< std::string >::iterator | _bin_file_iter |
| bin_io_handler | _fin |
| Input file I/O handler. | |
| bool | _read_by_block |
| Read a chunk of data sample from the input file if set to true. | |
| size_t | _read_block_size |
| Number of words to be read as a chunk. See _read_by_block comment for details. | |
| storage_manager * | _storage |
| Output file I/O handler. | |
| algo_base * | _decoder |
| Decoding algorithm. | |
It operates (1) binary/ascii file I/O, (2) decoding of data word, (3) creation & maintaining of data storage manager.
Definition at line 34 of file decoder_manager.hh.
| decoder_manager::decoder_manager | ( | ) |
Default constructor.
Definition at line 6 of file decoder_manager.cc.
References _debug_mode, _decoder, _fin, _input_file, _read_block_size, _read_by_block, _storage, storage_manager::get(), MSG::NORMAL, storage_manager::set_io_mode(), decoder_base::set_verbosity(), and storage_manager::WRITE.
00007 : decoder_base(), 00008 _fin(FORMAT::ASCII) 00009 { 00010 _input_file=""; 00011 _debug_mode=false; 00012 _fin=bin_io_handler(); 00013 00014 _read_block_size = 0; 00015 _read_by_block = false; 00016 00017 _storage=storage_manager::get(); 00018 _storage->set_io_mode(storage_manager::WRITE); 00019 00020 //if((_storage->input_filename()).size()==0) 00021 // _storage->set_in_filename("out.root"); 00022 00023 _decoder=0; 00024 00025 set_verbosity(MSG::NORMAL); 00026 }
| virtual decoder_manager::~decoder_manager | ( | ) | [inline, virtual] |
| void decoder_manager::add_input_filename | ( | std::string | name | ) | [inline] |
Setter for the input filename.
Definition at line 45 of file decoder_manager.hh.
References _bin_files.
Referenced by main().
00045 { _bin_files.push_back(name);};
| 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 decoder_manager::debug_mode | ( | bool | debug | ) | [inline] |
Setter for the debug mode.
Definition at line 60 of file decoder_manager.hh.
References _debug_mode.
Referenced by main().
00060 {_debug_mode=debug;};
| bool decoder_manager::decode | ( | ) | [private] |
A method.
Definition at line 95 of file decoder_manager.cc.
References _bin_file_iter, _bin_files, decoder_base::_buf, _debug_mode, _decoder, _fin, _read_block_size, _read_by_block, _storage, decoder_base::_verbosity, algo_base::check_event_quality(), bin_io_handler::close(), MSG::DEBUG, bin_io_handler::eof(), MSG::ERROR, storage_manager::get_entries(), storage_manager::get_index(), algo_base::is_event_empty(), storage_manager::next_event(), MSG::NORMAL, bin_io_handler::open(), algo_base::process_word(), bin_io_handler::read_multi_word(), bin_io_handler::read_word(), Message::send(), bin_io_handler::set_filename(), and MSG::WARNING.
Referenced by run().
00095 { 00096 00097 if(_verbosity[MSG::DEBUG]) 00098 Message::send(MSG::DEBUG,__FUNCTION__," begins..."); 00099 00100 bool status=true; 00101 PMT::word_t word = (_read_by_block) ? _fin.read_multi_word(_read_block_size) : _fin.read_word(); 00102 UInt_t ctr=0; 00103 time_t watch; 00104 while(status) { 00105 00106 if(_fin.eof()){ 00107 00108 _bin_file_iter++; 00109 if(_bin_file_iter == _bin_files.end()) break; 00110 _fin.close(); 00111 _fin.set_filename((*_bin_file_iter).c_str()); 00112 00113 if(!_fin.open()) { 00114 Message::send(MSG::ERROR,__FUNCTION__,"Failed file I/O..."); 00115 status = false; 00116 break; 00117 } 00118 word = (_read_by_block) ? _fin.read_multi_word(_read_block_size) : _fin.read_word(); 00119 } 00120 00121 status=_decoder->process_word(word); 00122 00123 /* 00124 if(status) { 00125 for(std::vector<ana_base*>::iterator iter(_analyzers.begin()); 00126 iter!=_analyzers.end(); 00127 ++iter) 00128 (*iter)->analyze(_storage); 00129 } 00130 */ 00131 00132 if(!status){ 00133 //if(_decoder->backtrace_mode()) 00134 //_decoder->backtrace(); 00135 if(_debug_mode){ 00136 Message::send(MSG::ERROR,__FUNCTION__,"Process status failure ... but continue since DEBUG mode!"); 00137 status=true; 00138 } 00139 } 00140 00141 word = (_read_by_block) ? _fin.read_multi_word(_read_block_size) : _fin.read_word(); 00142 if(_storage->get_index()==(ctr*2000)){ 00143 time(&watch); 00144 sprintf(_buf," ... processed %-6d events : %s",ctr*2000,ctime(&watch)); 00145 Message::send(MSG::NORMAL,__FUNCTION__,_buf); 00146 ctr+=1; 00147 } 00148 } 00149 00150 if(!status && !_debug_mode){ 00151 00152 Message::send(MSG::ERROR,__FUNCTION__,Form("Event loop terminated. Stored: %d events",_storage->get_entries())); 00153 00154 }else if(!(_decoder->is_event_empty())){ 00155 00156 Message::send(MSG::WARNING,__FUNCTION__,"Last event not stored by algorithm. Missing end-of-event word??"); 00157 00158 if(_decoder->check_event_quality()){ 00159 00160 Message::send(MSG::WARNING,__FUNCTION__,"Last event checksum agreed. Saving on file..."); 00161 00162 _storage->next_event(); 00163 00164 }else{ 00165 00166 Message::send(MSG::WARNING,__FUNCTION__,"Skip saving the last event..."); 00167 00168 status=false; 00169 00170 } 00171 } 00172 00173 return status; 00174 00175 }
| bool decoder_manager::finalize | ( | ) | [private] |
A method to finalize decoding process, to be called after all is done.
Definition at line 177 of file decoder_manager.cc.
References _analyzers, _decoder, _fin, _storage, decoder_base::_verbosity, bin_io_handler::close(), storage_manager::close(), MSG::DEBUG, algo_base::reset(), and Message::send().
Referenced by run().
00177 { 00178 00179 if(_verbosity[MSG::DEBUG]) 00180 Message::send(MSG::DEBUG,__FUNCTION__," begins..."); 00181 00182 for(std::vector<ana_base*>::iterator iter(_analyzers.begin()); 00183 iter!=_analyzers.end(); 00184 ++iter) 00185 (*iter)->finalize(); 00186 00187 _storage->close(); 00188 _fin.close(); 00189 00190 _decoder->reset(); 00191 00192 return true; 00193 }
| 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 decoder_manager::initialize | ( | ) | [private] |
A method to be called before run() to initialize variables.
Definition at line 44 of file decoder_manager.cc.
References _analyzers, _bin_file_iter, _bin_files, _debug_mode, _decoder, _fin, _storage, decoder_base::_verbosity, decoder_base::_verbosity_level, MSG::DEBUG, MSG::ERROR, storage_manager::is_open(), bin_io_handler::is_open(), storage_manager::is_ready_io(), storage_manager::open(), bin_io_handler::open(), Message::send(), algo_base::set_debug_mode(), bin_io_handler::set_filename(), algo_base::set_storage_ptr(), decoder_base::set_verbosity(), and MSG::WARNING.
Referenced by run().
00045 { 00046 if(_verbosity[MSG::DEBUG]) 00047 Message::send(MSG::DEBUG,__FUNCTION__," begins..."); 00048 if(!_decoder){ 00049 Message::send(MSG::ERROR,__FUNCTION__,"Algorithm not attached. Aborting."); 00050 return false; 00051 } 00052 if(!_storage){ 00053 Message::send(MSG::ERROR,__FUNCTION__,"Stoarge I/O pointer is empty."); 00054 return false; 00055 } 00056 00057 _decoder->set_debug_mode(_debug_mode); 00058 _decoder->set_verbosity(_verbosity_level); 00059 _storage->set_verbosity(_verbosity_level); 00060 _fin.set_verbosity(_verbosity_level); 00061 00062 if(_bin_files.size()) 00063 _bin_file_iter = _bin_files.begin(); 00064 00065 _fin.set_filename((*_bin_file_iter).c_str()); 00066 00067 bool status=true; 00068 // Check if a file can be opened 00069 if(_fin.is_open()) 00070 Message::send(MSG::WARNING,"Reading alrady-opened file contents!"); 00071 else if(!_fin.open()) { 00072 Message::send(MSG::ERROR,__FUNCTION__,"Failed file I/O..."); 00073 status=false; 00074 } 00075 00076 if(!_storage->is_open()) 00077 _storage->open(); 00078 00079 if(!_storage->is_ready_io()) { 00080 Message::send(MSG::ERROR,__FUNCTION__, 00081 "Error in data output stream preparation."); 00082 status=false; 00083 } 00084 00085 _decoder->set_storage_ptr(_storage); 00086 00087 for(std::vector<ana_base*>::iterator iter(_analyzers.begin()); 00088 iter!=_analyzers.end(); 00089 ++iter) 00090 status = (status && (*iter)->initialize()); 00091 00092 return status; 00093 }
| bool decoder_manager::open_file | ( | ) | [private] |
A method to open input/output files.
Definition at line 38 of file decoder_manager.cc.
References _fin, and bin_io_handler::open().
| void decoder_manager::reset | ( | ) |
A method to initialize members for new decoding process.
Definition at line 29 of file decoder_manager.cc.
References _bin_files, _fin, _storage, storage_manager::close(), storage_manager::is_open(), bin_io_handler::reset(), and storage_manager::reset().
Referenced by main().
00029 { 00030 if(_storage->is_open()) { 00031 _storage->close(); 00032 _storage->reset(); 00033 } 00034 _fin.reset(); 00035 _bin_files.clear(); 00036 }
| bool decoder_manager::run | ( | ) |
A method to start a batch decoding process.
Definition at line 195 of file decoder_manager.cc.
References decoder_base::_verbosity, MSG::DEBUG, decode(), finalize(), initialize(), and Message::send().
Referenced by main().
00195 { 00196 00197 if(_verbosity[MSG::DEBUG]) 00198 Message::send(MSG::DEBUG,__FUNCTION__," begins..."); 00199 00200 bool status=true; 00201 if(initialize()) 00202 status=decode(); 00203 return (finalize() && status); 00204 00205 }
| void decoder_manager::set_data_to_write | ( | DATA_STRUCT::DATA_TYPE | type, | |
| bool | write = true | |||
| ) | [inline] |
Definition at line 50 of file decoder_manager.hh.
References _storage, and storage_manager::set_data_to_write().
Referenced by main().
00051 {_storage->set_data_to_write(type,write);};
| void decoder_manager::set_decoder | ( | algo_base * | algo | ) | [inline] |
Setter for the decoding algorithm.
Definition at line 57 of file decoder_manager.hh.
References _decoder.
Referenced by main().
00057 {_decoder=algo;};
| void decoder_manager::set_format | ( | FORMAT::INPUT_FILE | fmt | ) | [inline] |
Setter for the input file format.
Definition at line 54 of file decoder_manager.hh.
References _fin, and bin_io_handler::set_format().
Referenced by main().
00054 {_fin.set_format(fmt);};
| void decoder_manager::set_output_filename | ( | std::string | name | ) | [inline] |
Setter for the output filename.
Definition at line 48 of file decoder_manager.hh.
References _storage, and storage_manager::set_out_filename().
Referenced by main().
00048 { _storage->set_out_filename(name);};
| void decoder_manager::set_read_block_size | ( | size_t | n | ) | [inline] |
A method to set the size of block-read (in terms of number of 32-bit words.
Note that one does not have to set this variable. If unset (=default value of 0), then it assumes the input file holds a 32-bit word at the beginning of each block that should represent # of 32-bit words to be read in that particular block.
Definition at line 77 of file decoder_manager.hh.
References _read_block_size.
00077 {_read_block_size=n;};
| void decoder_manager::set_read_by_block | ( | bool | doit = true |
) | [inline] |
A method to enable block-read for an input binary/ascii file.
Definition at line 69 of file decoder_manager.hh.
References _read_by_block.
00069 {_read_by_block=doit;};
| 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(), 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 }
std::vector<ana_base*> decoder_manager::_analyzers [private] |
A collection of analyzers to be run.
Definition at line 98 of file decoder_manager.hh.
Referenced by finalize(), and initialize().
std::vector<std::string>::iterator decoder_manager::_bin_file_iter [private] |
std::vector<std::string> decoder_manager::_bin_files [private] |
Definition at line 104 of file decoder_manager.hh.
Referenced by add_input_filename(), decode(), initialize(), and reset().
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(), 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().
bool decoder_manager::_debug_mode [private] |
Debug mode boolean.
Definition at line 96 of file decoder_manager.hh.
Referenced by debug_mode(), decode(), decoder_manager(), and initialize().
algo_base* decoder_manager::_decoder [private] |
Decoding algorithm.
Definition at line 120 of file decoder_manager.hh.
Referenced by decode(), decoder_manager(), finalize(), initialize(), and set_decoder().
bin_io_handler decoder_manager::_fin [private] |
Input file I/O handler.
Definition at line 106 of file decoder_manager.hh.
Referenced by decode(), decoder_manager(), finalize(), initialize(), open_file(), reset(), and set_format().
std::string decoder_manager::_input_file [private] |
Input file name.
Definition at line 103 of file decoder_manager.hh.
Referenced by decoder_manager().
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::waveform_sampler().
size_t decoder_manager::_read_block_size [private] |
Number of words to be read as a chunk. See _read_by_block comment for details.
Definition at line 116 of file decoder_manager.hh.
Referenced by decode(), decoder_manager(), and set_read_block_size().
bool decoder_manager::_read_by_block [private] |
Read a chunk of data sample from the input file if set to true.
A chunk can be specified as number of 32-bit words through a parameter _read_block_size. If _read_block_size is 0, then it assumes the input file holds a block size at the beginning of each I/O block.
Definition at line 113 of file decoder_manager.hh.
Referenced by decode(), decoder_manager(), and set_read_by_block().
storage_manager* decoder_manager::_storage [private] |
Output file I/O handler.
Definition at line 119 of file decoder_manager.hh.
Referenced by decode(), decoder_manager(), finalize(), initialize(), reset(), set_data_to_write(), and set_output_filename().
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(), 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(), finalize(), beamgate_debugger::finalize(), ana_processor::finalize(), 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(), 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(), initialize(), ana_processor::initialize(), bin_io_handler::read_multi_word(), bin_io_handler::read_word(), and decoder_base::set_verbosity().
1.4.7