FairRoot/PandaRoot
Public Member Functions | Private Attributes | List of all members
PndEmcPSAParabolic Class Reference

Pulseshape analysis for ADC waveforms. More...

#include <PndEmcPSAParabolic.h>

Inheritance diagram for PndEmcPSAParabolic:
PndEmcAbsPSA

Public Member Functions

 PndEmcPSAParabolic ()
 
virtual ~PndEmcPSAParabolic ()
 
virtual void Process (const PndEmcWaveform *waveform, Double_t &amplitude, Double_t &time)
 Deprecated. Do not use. More...
 
virtual Int_t Process (const PndEmcWaveform *waveform)
 Find Hits in Waveform. More...
 
virtual void GetHit (Int_t i, Double_t &energy, Double_t &time)
 Get energy and time of hit. More...
 
void FitPeak (const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos, Int_t peakBin) const
 
void FitPeak (const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos, Int_t start, Int_t end) const
 
void FitPeak (const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos) const
 
virtual void Reset ()
 reset found hits More...
 
 ClassDef (PndEmcAbsPSA, 1)
 

Private Attributes

Double_t lAmplitude
 
Double_t lTime
 

Detailed Description

Pulseshape analysis for ADC waveforms.

Amplitude and time are determined from the simple parabolic fit by three points (maximum bin and its left and right neigbours)

Definition at line 26 of file PndEmcPSAParabolic.h.

Constructor & Destructor Documentation

PndEmcPSAParabolic::PndEmcPSAParabolic ( )
inline

Definition at line 30 of file PndEmcPSAParabolic.h.

30 {}
virtual PndEmcPSAParabolic::~PndEmcPSAParabolic ( )
inlinevirtual

Definition at line 31 of file PndEmcPSAParabolic.h.

31 {;}

Member Function Documentation

PndEmcAbsPSA::ClassDef ( PndEmcAbsPSA  ,
 
)
inherited
void PndEmcPSAParabolic::FitPeak ( const std::vector< Double_t > &  signal,
Double_t ampl,
Double_t pos,
Int_t  peakBin 
) const

Definition at line 37 of file PndEmcPSAParabolic.cxx.

References b, d, and Double_t.

Referenced by FitPeak(), and Process().

38 {
39  Int_t waveformLength=signal.size();
40 
41  ampl=pos=-1.;
42  if (peakBin>0 && peakBin<waveformLength-1)
43  {
44  long theBin(peakBin);
45 
46  Double_t pValue = signal[peakBin];
47  Double_t pPosition = Double_t(peakBin);
48 
49  Double_t leftValue = signal[theBin-1];
50  Double_t rightValue = signal[theBin+1];
51  if (leftValue<pValue && rightValue<pValue) {
52  Double_t d = 0.25*(rightValue-leftValue);
53  Double_t b = pValue-0.5*(leftValue+rightValue);
54  pValue += d*d/b;
55  pPosition += d/b;
56  }
57  ampl=pValue;
58  pos=pPosition;
59  }
60 }
TVector3 pos
TObjArray * d
TTree * b
Double_t
void PndEmcPSAParabolic::FitPeak ( const std::vector< Double_t > &  signal,
Double_t ampl,
Double_t pos,
Int_t  start,
Int_t  end 
) const

Definition at line 62 of file PndEmcPSAParabolic.cxx.

References FitPeak(), and p.

63 {
64  std::vector<Double_t>::const_iterator p;
65  p=max_element(signal.begin()+start,signal.begin()+end);
66  Int_t pPosition = distance(signal.begin(),p);
67  FitPeak(signal,ampl,pos,pPosition);
68 }
TVector3 pos
Double_t p
Definition: anasim.C:58
void FitPeak(const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos, Int_t peakBin) const
void PndEmcPSAParabolic::FitPeak ( const std::vector< Double_t > &  signal,
Double_t ampl,
Double_t pos 
) const

Definition at line 70 of file PndEmcPSAParabolic.cxx.

References FitPeak(), and p.

71 {
72  std::vector<Double_t>::const_iterator p;
73  p=max_element(signal.begin(),signal.end());
74  Int_t pPosition = distance(signal.begin(),p);
75  FitPeak(signal,ampl,pos,pPosition);
76 }
TVector3 pos
Double_t p
Definition: anasim.C:58
void FitPeak(const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos, Int_t peakBin) const
void PndEmcPSAParabolic::GetHit ( Int_t  i,
Double_t energy,
Double_t time 
)
virtual

Get energy and time of hit.

Parameters
Int_tIndex of Hit
Double_tEnergy of Hit
Double_tTime of Hit
Returns

Implements PndEmcAbsPSA.

Definition at line 32 of file PndEmcPSAParabolic.cxx.

References lAmplitude, and lTime.

32  { // i //[R.K.03/2017] unused variable(s)
34  time = lTime;
35 }
Double_t energy
Definition: plot_dirc.C:15
void PndEmcPSAParabolic::Process ( const PndEmcWaveform waveform,
Double_t amplitude,
Double_t time 
)
virtual

Deprecated. Do not use.

Parameters
PndEmcWaveform
Double_t
Double_t
Returns

Reimplemented from PndEmcAbsPSA.

Definition at line 18 of file PndEmcPSAParabolic.cxx.

References FitPeak(), and PndEmcWaveform::GetSignal().

Referenced by Process().

19 {
20  const std::vector<Double_t> signal=waveform->GetSignal();
21  FitPeak(signal, amplitude, time);
22 }
virtual std::vector< double > GetSignal() const
void FitPeak(const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos, Int_t peakBin) const
Int_t PndEmcPSAParabolic::Process ( const PndEmcWaveform waveform)
virtual

Find Hits in Waveform.

Parameters
PndEmcWaveform
Returns
Return number of hits, negative if an error occurred

Implements PndEmcAbsPSA.

Definition at line 24 of file PndEmcPSAParabolic.cxx.

References lAmplitude, lTime, and Process().

24  {
25  Process(waveform,lAmplitude,lTime);
26  if(lAmplitude > 0){
27  return 1;
28  }else{
29  return 0;
30  }
31 }
virtual void Process(const PndEmcWaveform *waveform, Double_t &amplitude, Double_t &time)
Deprecated. Do not use.
virtual void PndEmcAbsPSA::Reset ( )
inlinevirtualinherited

reset found hits

Returns

Reimplemented in PndEmcPSAFPGASampleAnalyser, and PndEmcHighLowPSA.

Definition at line 42 of file PndEmcAbsPSA.h.

42 {};

Member Data Documentation

Double_t PndEmcPSAParabolic::lAmplitude
private

Definition at line 42 of file PndEmcPSAParabolic.h.

Referenced by GetHit(), and Process().

Double_t PndEmcPSAParabolic::lTime
private

Definition at line 43 of file PndEmcPSAParabolic.h.

Referenced by GetHit(), and Process().


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