waveform_sampler Class Reference
[AnalysisAnalysis]

User custom analysis class made by kazuhiro. More...

#include <waveform_sampler.hh>

Inheritance diagram for waveform_sampler:

ana_base decoder_base List of all members.

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

Detailed Description

User custom analysis class made by kazuhiro.

Definition at line 29 of file waveform_sampler.hh.


Constructor & Destructor Documentation

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]

Default destructor.

Definition at line 37 of file waveform_sampler.hh.

00037 {};


Member Function Documentation

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]

Definition at line 58 of file waveform_sampler.hh.

References _hWF_map.

00058                                        { 
00059 
00060     if(_hWF_map.find(ch)==_hWF_map.end()) return 0; 
00061     return _hWF_map[ch];
00062 
00063   };

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]

Definition at line 54 of file waveform_sampler.hh.

References _selector.

00054 {_selector=algo;};

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;};


Member Data Documentation

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]

Definition at line 71 of file waveform_sampler.hh.

Referenced by analyze(), and clear_event().

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().


The documentation for this class was generated from the following files:
Generated on Mon Apr 7 15:35:13 2014 for MyProject by  doxygen 1.4.7