Update TPCCEda to write output file in parts (to avoid too big files produced in...
[u/mrichter/AliRoot.git] / TPC / AliTPCRF1D.h
1 #ifndef ALITPCRF1D_H
2 #define ALITPCRF1D_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////
9 //  Manager class for AliTPCRF1D              //
10 //////////////////////////////////////////////// 
11   
12
13 // include files and class forward declarations
14
15
16 #include "TObject.h"
17 #include "TMath.h"
18 class TF1;
19
20
21 class AliTPCRF1D : public TObject {
22 public : 
23   AliTPCRF1D(Bool_t direct=kFALSE,Int_t np=0,Float_t step=0 ); 
24   AliTPCRF1D(const AliTPCRF1D &prf);
25   AliTPCRF1D & operator = (const AliTPCRF1D &prf);
26   ~AliTPCRF1D();  
27   Float_t GetRF(Float_t xin); //return RF in point xin
28   Float_t GetGRF(Float_t xin); //return generic response function  in xin
29   void SetGauss(Float_t sigma,Float_t padWidth, Float_t kNorm);
30   //adjust RF with GAUSIAN as generic GRF 
31   //if  direct = kTRUE then it does't convolute distribution
32   void SetCosh(Float_t sigma,Float_t padWidth, Float_t kNorm);
33   void SetGati(Float_t K3, Float_t padDistance, Float_t padWidth,
34                Float_t kNorm);
35   //adjust RF with 1/Cosh  as generic GRF
36   void SetParam(TF1 * GRF,Float_t padwidth,Float_t kNorm, 
37                 Float_t sigma=0);
38   //adjust RF with general function 
39   void SetOffset(Float_t xoff) {fOffset=xoff;}
40   //set offset value 
41   Float_t GetOffset(){return fOffset;}
42   Float_t GetPadWidth(){ return fpadWidth;};       
43   //return  pad width 
44   Float_t  GetSigma(){return fSigma;}
45   //return estimated sigma of RF
46   void DrawRF(Float_t x1=-3 ,Float_t x2 =3.,Int_t N = 200);
47   //draw RF it don't delete histograms after drawing
48   /// it's on user !!!!
49   void Update();  
50   static Double_t Gamma4(Double_t x, Double_t p0, Double_t p1);
51 private: 
52   Double_t funParam[5];//parameters of used charge function
53   Int_t  fNRF;      //number of interpolations point
54   Float_t fDSTEPM1;    //element step for point
55   Float_t* fcharge; //[fNPRF] field with RF
56   Float_t  forigsigma;//sigma of original distribution;
57   Float_t fpadWidth;  //width of pad
58   Float_t fkNorm;     //normalisation factor of the charge integral
59   Float_t fInteg;     //integral of GRF on +- infinity
60   TF1 *  fGRF;        //charge distribution function
61   Float_t fSigma;     //sigma of PAD response function
62
63   Float_t fOffset;    //offset of response function (for time reponse we 
64   //have for expample shifted gauss)
65   //calculated during update
66  
67   Bool_t fDirect;     //tell us if we use directly generalfunction
68   
69   Float_t fPadDistance;   //pad to wire distance
70   char  fType[5];     //type of the parametrisation
71   static Int_t   fgNRF;//default  number of interpolation points
72   static Float_t fgRFDSTEP;//default step in cm
73   ClassDef(AliTPCRF1D,2)
74 }; 
75
76
77
78
79 #endif /* ALITPCRF1D_H */
80