Fast ALTRO fit (A.Pavlinov)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSFastAltroFit.h
1 #ifndef ALIPHOSFASTALTROFIT_H
2 #define ALIPHOSFASTALTROFIT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5 /* $Id: $ */
6
7 /* History of svn commits
8  * $Log$
9  */
10
11
12 //_________________________________________________________________________
13 //  Procedure of fast altro fitting     
14 //                  
15 //*-- Author:  Aleksei Pavlinov; IHEP, Protvino, Russia
16
17 #include <TNamed.h>
18 #include <TArrayD.h>
19 // --- ROOT system ---
20
21 class AliPHOSFastAltroFit : public TNamed {
22
23 public:
24
25   AliPHOSFastAltroFit();
26   AliPHOSFastAltroFit(const char* name, const char* title, const Double_t tau);
27   virtual ~AliPHOSFastAltroFit(); 
28
29   void SetTau(const Double_t tau) {fTau = tau;}
30
31   void FastFit(Int_t* t, Int_t* y, Int_t n, Double_t sig, Double_t tau, Double_t ped);
32
33   void GetFitResult(Double_t &amp, Double_t &eamp, Double_t &t0, Double_t &et0, Double_t &chi2,
34                  Int_t &fNDF);
35   Double_t GetSig()    const {return fSig;}
36   Double_t GetTau()    const {return fTau;}
37   Double_t GetN()      const {return fN;}
38   Double_t GetAmp()    const {return fAmp;}
39   Double_t GetAmpErr() const {return fAmpErr;}
40   Double_t GetT0()     const {return fT0;}
41   Double_t GetT0Err()  const {return fT0Err;}
42   Double_t GetChi2()   const {return fChi2;}
43   Double_t GetNDF()    const {return fNDF;}
44
45   static void DeductPedestal(Int_t* t, Int_t* y, Int_t n, Double_t ped, Double_t tau, 
46   Double_t* tn, Double_t* yn, Int_t &nn);
47   static void FastFit(Double_t* t, Double_t* y, Int_t n, Double_t sig, Double_t tau,
48   Double_t &amp, Double_t &eamp, Double_t &t0, Double_t &et0, Double_t &chi2);
49   static Bool_t QuadraticRoots(Double_t a, Double_t b, Double_t c, Double_t &x1, Double_t &x2);
50   static void Amplitude(Double_t* t, Double_t* y, Int_t n, Double_t sig, Double_t tau, 
51   Double_t t0, Double_t &amp, Double_t &chi2);
52   static void CalculateParsErrors(Double_t* t, Double_t* y, Int_t n, Double_t sig, Double_t tau,
53                                  Double_t &amp, Double_t &t0, Double_t &eamp, Double_t &et0);
54
55  protected:
56   Double_t fSig;
57   Double_t fTau; // filter time response
58   Double_t fN;   // order of function (equal 2)
59
60   Double_t fAmp;
61   Double_t fAmpErr;
62   Double_t fT0;
63   Double_t fT0Err;
64   Double_t fChi2;
65   Int_t    fNDF;
66
67   ClassDef(AliPHOSFastAltroFit,1) // Class for fast altro fitting
68 };
69
70 #endif // ALIPHOSFASTALTROFIT_H