pulse_reco Class Reference
[PulseRecoPulseReco]

A manager class of pulse reconstruction which acts as an analysis unit (inherits from ana_base). More...

#include <pulse_reco.hh>

Inheritance diagram for pulse_reco:

ana_base decoder_base List of all members.

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.

Detailed Description

A manager class of pulse reconstruction which acts as an analysis unit (inherits from ana_base).

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.


Member Enumeration Documentation

enum pulse_reco::PED_METHOD

enum to define ped_estimator algorithm options

Enumerator:
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.

00036                  {
00037     kHEAD = 0, 
00038     kTAIL,     
00039     kBOTH      
00040   };


Constructor & Destructor Documentation

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]

Default destructor.

Definition at line 48 of file pulse_reco.hh.

00048 {};


Member Function Documentation

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

00089 {return (wf->size() > 1000);};

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 }


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(), 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_estimator object

Definition at line 77 of file pulse_reco.hh.

Referenced by analyze().

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


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