FairRoot/PandaRoot
PndEmcPSATrapDigiFilter.cxx
Go to the documentation of this file.
1 //-----------------------------------------------------------
2 //
3 // Description:
4 // Pulseshape analysis for ADC waveforms
5 // Dima Melnychuk
6 //
7 //-----------------------------------------------------------
8 
9 
10 // This Class' Header ------------------
12 #include "PndEmcWaveform.h"
13 #include "PndEmcFadcFilter.h"
14 
15 #include "TH1D.h"
16 #include "TCanvas.h"
17 
18 // Class Member definitions -----------
19 
20 PndEmcPSATrapDigiFilter::PndEmcPSATrapDigiFilter(const std::vector<Double_t> params):
21 fParams(params)
22 {}
23 
25  Process(waveform,lAmplitude,lTime);
26  if(lAmplitude > 0){
27  return 1;
28  }else{
29  return 0;
30  }
31 }
32 void PndEmcPSATrapDigiFilter::GetHit(Int_t , Double_t &energy, Double_t &time){ // i //[R.K.03/2017] unused variable(s)
33  energy = lAmplitude;
34  time = lTime;
35 }
36 void PndEmcPSATrapDigiFilter::Process(const PndEmcWaveform *waveform, Double_t &amplitude, Double_t &time)
37 {
38  const std::vector<Double_t> signal=waveform->GetSignal();
39  std::vector<Double_t> output;
40 
41  // Signal filtartion
42  Int_t rise_time=(Int_t) fParams[0]; // rise time of trapezoid (in sampling periods)
43  Int_t flat_length=(Int_t) fParams[1]; // length of the flat top period of trapezoid (in sampling periods)
44  Int_t shift=(Int_t) fParams[2]; // shift of the point to determine energy
45 
46  Int_t energy_point = rise_time+flat_length+shift-1;
47 
49  flt->SetupTrapez(rise_time,flat_length);
50  flt->Filter(signal, output);
51  delete flt;
52 
53  amplitude=output[energy_point];
54 
55  // Determination of the time is not yet implemented
56  time=0;
57 
58  return;
59 }
60 
virtual void Filter(const std::vector< Double_t > &in, std::vector< Double_t > &out) const
virtual std::vector< double > GetSignal() const
std::vector< Double_t > fParams
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
FADC FIR (finite impulse response) filter.
virtual Int_t Process(const PndEmcWaveform *waveform)
Find Hits in Waveform.
Double_t
represents a simulated waveform in an emc crystal
PndEmcPSATrapDigiFilter(const std::vector< Double_t > params)
virtual void GetHit(Int_t i, Double_t &energy, Double_t &time)
Get energy and time of hit.
void SetupTrapez(Int_t i_rise, Int_t i_flat)
Double_t energy
Definition: plot_dirc.C:15