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

Pulseshape analysis for ADC waveforms. More...

#include <PndEmcPSAParabolicBaseline.h>

Inheritance diagram for PndEmcPSAParabolicBaseline:
PndEmcAbsPSA

Public Member Functions

 PndEmcPSAParabolicBaseline (Int_t baselength=0)
 
virtual ~PndEmcPSAParabolicBaseline ()
 
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
 
void GetBaseline (const std::vector< Double_t > &signal, Double_t &baseline) const
 
virtual void Reset ()
 reset found hits More...
 
 ClassDef (PndEmcAbsPSA, 1)
 

Private Member Functions

 ClassDef (PndEmcPSAParabolicBaseline, 1)
 

Private Attributes

Int_t lBaselength
 
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 PndEmcPSAParabolicBaseline.h.

Constructor & Destructor Documentation

PndEmcPSAParabolicBaseline::PndEmcPSAParabolicBaseline ( Int_t  baselength = 0)
inline

Definition at line 30 of file PndEmcPSAParabolicBaseline.h.

virtual PndEmcPSAParabolicBaseline::~PndEmcPSAParabolicBaseline ( )
inlinevirtual

Definition at line 31 of file PndEmcPSAParabolicBaseline.h.

31 {;}

Member Function Documentation

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

Definition at line 42 of file PndEmcPSAParabolicBaseline.cxx.

References b, d, and Double_t.

Referenced by FitPeak(), and Process().

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

Definition at line 67 of file PndEmcPSAParabolicBaseline.cxx.

References FitPeak(), and p.

68 {
69  std::vector<Double_t>::const_iterator p;
70  p=max_element(signal.begin()+start,signal.begin()+end);
71  Int_t pPosition = distance(signal.begin(),p);
72  FitPeak(signal,ampl,pos,pPosition);
73 }
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 PndEmcPSAParabolicBaseline::FitPeak ( const std::vector< Double_t > &  signal,
Double_t ampl,
Double_t pos 
) const

Definition at line 75 of file PndEmcPSAParabolicBaseline.cxx.

References FitPeak(), and p.

76 {
77  std::vector<Double_t>::const_iterator p;
78  p=max_element(signal.begin(),signal.end());
79  Int_t pPosition = distance(signal.begin(),p);
80  FitPeak(signal,ampl,pos,pPosition);
81 }
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 PndEmcPSAParabolicBaseline::GetBaseline ( const std::vector< Double_t > &  signal,
Double_t baseline 
) const

Definition at line 82 of file PndEmcPSAParabolicBaseline.cxx.

References i, lBaselength, and p.

Referenced by Process().

83 {
84  std::vector<Double_t>::const_iterator p;
85  p = signal.begin();
86  baseline = 0;
87  for(Int_t i =0; i<lBaselength;i++){
88  baseline += *p++;
89  }
90  baseline/=lBaselength;
91 }
Double_t p
Definition: anasim.C:58
Int_t i
Definition: run_full.C:25
void PndEmcPSAParabolicBaseline::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 37 of file PndEmcPSAParabolicBaseline.cxx.

References lAmplitude, and lTime.

37  { //i //[R.K.03/2017] unused variable(s)
39  time = lTime;
40 }
Double_t energy
Definition: plot_dirc.C:15
void PndEmcPSAParabolicBaseline::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 19 of file PndEmcPSAParabolicBaseline.cxx.

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

Referenced by Process().

20 {
21  const std::vector<Double_t> signal=waveform->GetSignal();
22  FitPeak(signal, amplitude, time);
23  Double_t baseline;
24  GetBaseline(signal,baseline);
25 // std::cout << "amplitude: " << amplitude << " baseline: " << baseline << std::endl;
26  amplitude -= baseline;
27 }
virtual std::vector< double > GetSignal() const
Double_t
void GetBaseline(const std::vector< Double_t > &signal, Double_t &baseline) const
void FitPeak(const std::vector< Double_t > &signal, Double_t &ampl, Double_t &pos, Int_t peakBin) const
Int_t PndEmcPSAParabolicBaseline::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 29 of file PndEmcPSAParabolicBaseline.cxx.

References lAmplitude, lTime, and Process().

29  {
30  Process(waveform,lAmplitude,lTime);
31  if(lAmplitude > 0){
32  return 1;
33  }else{
34  return 0;
35  }
36 }
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 PndEmcPSAParabolicBaseline::lAmplitude
private

Definition at line 45 of file PndEmcPSAParabolicBaseline.h.

Referenced by GetHit(), and Process().

Int_t PndEmcPSAParabolicBaseline::lBaselength
private

Definition at line 44 of file PndEmcPSAParabolicBaseline.h.

Referenced by GetBaseline().

Double_t PndEmcPSAParabolicBaseline::lTime
private

Definition at line 46 of file PndEmcPSAParabolicBaseline.h.

Referenced by GetHit(), and Process().


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