1 //_________________________________________________________________________
\r
2 // Procedure of fast altro fitting
\r
4 //*-- Author: Aleksei Pavlinov; IHEP, Protvino, Russia & WSU, Detroit, USA
\r
6 #ifndef ALICALOFASTALTROFITV0_H
\r
7 #define ALICALOFASTALTROFITV0_H
\r
8 /* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
\r
9 * See cxx source for full Copyright notice */
\r
12 /* History of svn commits
\r
17 // --- ROOT system ---
\r
23 class AliCaloFastAltroFitv0 : public TNamed {
\r
27 AliCaloFastAltroFitv0();
\r
28 AliCaloFastAltroFitv0(const char* name, const char* title,
\r
29 const Double_t sig=1.3, const Double_t tau=2.35, const Double_t n=2.);
\r
30 virtual ~AliCaloFastAltroFitv0();
\r
32 virtual void FastFit(Int_t* t, Int_t* y, Int_t nPoints, Double_t sig, Double_t tau,
\r
33 Double_t n, Double_t ped, Double_t tMax);
\r
35 void FastFit(TH1F* h, Double_t sig, Double_t tau,
\r
36 Double_t n, Double_t ped, Double_t tMax);
\r
39 void SetSig(const Double_t sig) {fSig = sig;}
\r
40 void SetTau(const Double_t tau) {fTau = tau;}
\r
41 void SetN(const Double_t n) {fN = n;}
\r
42 void SetParameters(const Double_t sig, const Double_t tau, const Double_t n)
\r
43 {fSig = sig; fTau = tau; fN = n;}
\r
45 Double_t GetSig() const {return fSig;}
\r
46 Double_t GetTau() const {return fTau;}
\r
47 Double_t GetN() const {return fN;}
\r
48 Double_t GetPed() const {return fPed;}
\r
50 Double_t GetEnergy() const {return fAmp;}
\r
51 Double_t GetAmp() const {return GetEnergy();}
\r
52 Double_t GetAmpErr() const {return fAmpErr;}
\r
53 Double_t GetTime() const {return fT0;}
\r
54 Double_t GetT0() const {return GetTime();}
\r
55 Double_t GetT0Err() const {return fT0Err;}
\r
56 Double_t GetChi2() const {return fChi2;}
\r
57 Int_t GetNDF() const {return fNDF;}
\r
58 Int_t GetNfit() const {return fNfit;}
\r
59 Int_t GetNoFit() const {return fNoFit;}
\r
61 void GetFitResult(Double_t &, Double_t &eamp, Double_t &t0, Double_t &et0,
\r
62 Double_t &chi2,Int_t &ndf) const;
\r
63 void GetFittedPoints(Int_t &nfit, Double_t* ar[2]) const;
\r
66 TCanvas* DrawFastFunction(); // *MENU*
\r
67 static Double_t StdResponseFunction(const Double_t *x, const Double_t *par);
\r
69 static void CutRightPart(Int_t *t,Int_t *y,Int_t nPoints, Double_t tMax, Int_t &ii);
\r
70 static void DeductPedestal(Int_t* t, Int_t* y, Int_t nPointsIn, Double_t ped, Double_t tau,
\r
71 Double_t* tn, Double_t* yn, Int_t &nPointsOut);
\r
73 static void FastFit(const Double_t* t, const Double_t* y, const Int_t nPoints,
\r
74 const Double_t sig, const Double_t tau,
\r
75 Double_t &, Double_t &eamp, Double_t &t0, Double_t &et0, Double_t &chi2);
\r
76 static Bool_t QuadraticRoots(const Double_t a, const Double_t b, const Double_t c,
\r
77 Double_t &x1, Double_t &x2);
\r
78 static void Amplitude(const Double_t* t, const Double_t* y, const Int_t nPoints,
\r
79 const Double_t sig, const Double_t tau,
\r
80 Double_t t0, Double_t &, Double_t &chi2);
\r
81 static void CalculateParsErrors(const Double_t* t, const Double_t* y, const Int_t nPoints,
\r
82 const Double_t sig, const Double_t tau,
\r
83 Double_t &, Double_t &t0, Double_t &eamp, Double_t &et0);
\r
85 Double_t fSig; // error in amplitude - used in chi2 calculation
\r
86 Double_t fTau; // first fixed parameter od fitting function (should be - filter time response
\r
87 Double_t fN; // second fixed parameter od fitting function (should be positive)
\r
88 Double_t fPed; // pedestal
\r
90 Double_t fAmp; // amplitude
\r
91 Double_t fAmpErr; // amplitude error
\r
92 Double_t fT0; // time
\r
93 Double_t fT0Err; // time error
\r
94 Double_t fChi2; // chi square
\r
95 Int_t fNDF; // number degree of freedom
\r
96 Int_t fNoFit; // no solution for square equation
\r
99 Int_t fNfit; //! number points for fit
\r
100 Double_t* fTfit; //! points for fit after selection - time bins
\r
101 Double_t* fAmpfit; //! - amplitudes
\r
103 TF1* fStdFun; //! function for drawing
\r
106 AliCaloFastAltroFitv0(const AliCaloFastAltroFitv0 &obj);
\r
107 AliCaloFastAltroFitv0& operator= (const AliCaloFastAltroFitv0 &obj);
\r
109 ClassDef(AliCaloFastAltroFitv0,1) // Class for fast altro fitting
\r
112 #endif // ALICALOFASTALTROFITV0_H
\r