//----------------------------------------------------------- // 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) // //----------------------------------------------------------- #ifndef EMCPSAPARABOLICBASELINE_HH #define EMCPSAPARABOLICBASELINE_HH // Base Class Headers ---------------- #include #include "PndEmcAbsPSA.h" #include "TObject.h" class PndEmcWaveform; /** * @brief 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) * @ingroup PndEmc */ class PndEmcPSAParabolicBaseline: public PndEmcAbsPSA { public: // Constructors/Destructors --------- PndEmcPSAParabolicBaseline(Int_t baselength =0):lBaselength(baselength){} virtual ~PndEmcPSAParabolicBaseline(){;} virtual void Process(const PndEmcWaveform * waveform, Double_t &litude, Double_t &time); virtual Int_t Process(const PndEmcWaveform *waveform); virtual void GetHit(Int_t i, Double_t &energy, Double_t &time); void FitPeak(const std::vector & signal, Double_t& ampl, Double_t& pos,Int_t peakBin) const; void FitPeak(const std::vector & signal, Double_t& ampl, Double_t& pos, Int_t start, Int_t end) const; void FitPeak(const std::vector & signal, Double_t& ampl, Double_t& pos) const; void GetBaseline(const std::vector &signal,Double_t &baseline)const; private: Int_t lBaselength; Double_t lAmplitude; Double_t lTime; ClassDef(PndEmcPSAParabolicBaseline,1); }; #endif