All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | List of all members
pmtana::PulseRecoManager Class Reference

#include <PulseRecoManager.h>

Public Member Functions

 PulseRecoManager ()
 Default constructor. More...
 
bool Reconstruct (const pmtana::Waveform_t &) const
 Implementation of ana_base::analyze method. More...
 
void AddRecoAlgo (pmtana::PMTPulseRecoBase *algo, PMTPedestalBase *ped_algo=nullptr)
 A method to set pulse reconstruction algorithm. More...
 
void SetDefaultPedAlgo (pmtana::PMTPedestalBase *algo)
 A method to set a choice of pedestal estimation method. More...
 

Private Attributes

std::vector< std::pair
< pmtana::PMTPulseRecoBase
*, pmtana::PMTPedestalBase * > > 
_reco_algo_v
 pulse reconstruction algorithm pointer More...
 
PMTPedestalBase_ped_algo
 ped_estimator object More...
 

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 PMTPulseRecoBase Refer to analyze() function implementation to check how a pulse reconstruction algorithm is called.

Definition at line 34 of file PulseRecoManager.h.

Constructor & Destructor Documentation

pmtana::PulseRecoManager::PulseRecoManager ( )

Default constructor.

Definition at line 17 of file PulseRecoManager.cxx.

17  : _ped_algo(nullptr)
18  //*******************************************************
19  {
20  _reco_algo_v.clear();
21  }
PMTPedestalBase * _ped_algo
ped_estimator object
std::vector< std::pair< pmtana::PMTPulseRecoBase *, pmtana::PMTPedestalBase * > > _reco_algo_v
pulse reconstruction algorithm pointer

Member Function Documentation

void pmtana::PulseRecoManager::AddRecoAlgo ( pmtana::PMTPulseRecoBase algo,
PMTPedestalBase ped_algo = nullptr 
)

A method to set pulse reconstruction algorithm.

Definition at line 24 of file PulseRecoManager.cxx.

26  {
27  if(!algo) throw OpticalRecoException("Invalid PulseReco algorithm!");
28 
29  _reco_algo_v.push_back(std::make_pair(algo,ped_algo));
30  }
std::vector< std::pair< pmtana::PMTPulseRecoBase *, pmtana::PMTPedestalBase * > > _reco_algo_v
pulse reconstruction algorithm pointer
bool pmtana::PulseRecoManager::Reconstruct ( const pmtana::Waveform_t wf) const

Implementation of ana_base::analyze method.

Definition at line 41 of file PulseRecoManager.cxx.

43  {
44  if(_reco_algo_v.empty() && !_ped_algo)
45 
46  throw OpticalRecoException("No Pulse/Pedestal reconstruction to run!");
47 
48  bool ped_status = true;
49 
50  if(_ped_algo)
51 
52  ped_status = _ped_algo->Evaluate(wf);
53 
54  bool pulse_reco_status = ped_status;
55 
56  for(auto& algo_pair : _reco_algo_v) {
57 
58  auto& pulse_algo = algo_pair.first;
59  auto& ped_algo = algo_pair.second;
60 
61  if(ped_algo) {
62 
63  ped_status = ped_status && ped_algo->Evaluate(wf);
64 
65  pulse_reco_status = ( ped_status &&
66  pulse_reco_status &&
67  pulse_algo->Reconstruct( wf, ped_algo->Mean(), ped_algo->Sigma() )
68  );
69 
70  } else {
71 
72  if( !_ped_algo ) {
73  std::stringstream ss;
74  ss << "No pedestal algorithm available for pulse algo " << pulse_algo->Name();
75  throw OpticalRecoException(ss.str());
76  }
77 
78  pulse_reco_status = ( pulse_reco_status &&
79  pulse_algo->Reconstruct( wf, _ped_algo->Mean(), _ped_algo->Sigma() )
80  );
81  }
82  }
83 
84  return pulse_reco_status;
85 
86  }
double Mean(size_t i) const
Getter of the pedestal mean value.
bool Evaluate(const pmtana::Waveform_t &wf)
Method to compute a pedestal.
double Sigma(size_t i) const
Getter of the pedestal standard deviation.
PMTPedestalBase * _ped_algo
ped_estimator object
std::vector< std::pair< pmtana::PMTPulseRecoBase *, pmtana::PMTPedestalBase * > > _reco_algo_v
pulse reconstruction algorithm pointer
void pmtana::PulseRecoManager::SetDefaultPedAlgo ( pmtana::PMTPedestalBase algo)

A method to set a choice of pedestal estimation method.

Definition at line 33 of file PulseRecoManager.cxx.

35  {
36  if(!algo) throw OpticalRecoException("Invalid Pedestal algorithm!");
37  _ped_algo = algo;
38  }
PMTPedestalBase * _ped_algo
ped_estimator object

Member Data Documentation

PMTPedestalBase* pmtana::PulseRecoManager::_ped_algo
private

ped_estimator object

Definition at line 56 of file PulseRecoManager.h.

std::vector<std::pair<pmtana::PMTPulseRecoBase*,pmtana::PMTPedestalBase*> > pmtana::PulseRecoManager::_reco_algo_v
private

pulse reconstruction algorithm pointer

Definition at line 53 of file PulseRecoManager.h.


The documentation for this class was generated from the following files: