]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCPRF2D.h
Syntax corrections for HP-UX
[u/mrichter/AliRoot.git] / TPC / AliTPCPRF2D.h
1 #ifndef ALITPCPRF2D_H
2 #define ALITPCPRF2D_H
3 ////////////////////////////////////////////////
4 //  Manager class for AliTPCPRF2D                  //
5 ////////////////////////////////////////////////
6   
7
8 // include files and class forward declarations
9 //DSTEP in cm
10 //NPRF in number of interpolation points
11
12
13 #include "TObject.h"
14 #include "TMath.h"
15 class TF2;
16 class TArrayF; 
17
18 class AliTPCPRF2D : public TObject {
19 public : 
20   AliTPCPRF2D();
21   ~AliTPCPRF2D();
22
23   Float_t GetGRF(Float_t xin, Float_t yin); 
24   //return generic response function  in xin
25   Float_t GetPRF(Float_t xin, Float_t yin, Bool_t inter=kFALSE); 
26   //return PRF in point xin,yin
27   void SetY(Float_t y1, Float_t y2, Int_t nYdiv) ;
28   void DrawX(Float_t x1, Float_t x2,Float_t y, Bool_t inter=kFALSE);  
29   //draw one dimensional response for
30   //fixed y
31   // void DrawY(Float_t y1, Float_t y2,Float_t x);
32   //draw one dimensional response for fixed x
33   void Draw(Option_t *) {}
34   void Draw(Float_t x1, Float_t x2, Float_t y1, Float_t y2,
35             Bool_t inter=kFALSE, Int_t Nx=20, Int_t Ny=20);
36   //draw two dimensional PRF
37
38   void DrawDist(Float_t x1, Float_t x2, Float_t y1, Float_t y2,
39                 Bool_t inter=kFALSE, Int_t Nx=20, Int_t Ny=20, 
40                 Float_t  thr=0);
41   //draw distortion of COG method
42   //we suppose threshold equal to thr
43    
44   void SetGauss(Float_t sigmaX,Float_t sigmaY , Float_t kNorm=1);
45   //adjust PRF with GAUSIAN as generic GRF 
46   //if  direct = kTRUE then it does't convolute distribution
47   void SetCosh(Float_t sigmaX,Float_t sigmaY , Float_t kNorm=1);
48   //adjust PRF with 1/Cosh  as generic GRF
49   void  SetGati(Float_t K3X, Float_t K3Y,
50                      Float_t padDistance,
51                      Float_t kNorm=1);
52   void SetParam(TF2 * GRF,Float_t kNorm, 
53                 Float_t sigmaX=0, Float_t sigmaY=0);
54   void SetPad(Float_t width, Float_t height);
55   //set base chevron parameters
56   void SetChevron(Float_t hstep, Float_t shifty, Float_t fac);
57   //set chevron parameters   
58   void SetChParam(Float_t width, Float_t height,
59                   Float_t hstep, Float_t shifty, Float_t fac);
60   //set all geometrical parameters  
61   void SetNdiv(Int_t Ndiv){fNdiv=Ndiv;}
62   void Update();  
63 protected:
64   void Update1();  
65   Float_t GetPRFActiv(Float_t xin); //return PRF in point xin and actual y
66   Float_t  * fcharge; // field with PRF 
67   Float_t fY1;
68   Float_t fY2;
69   Int_t fNYdiv;  
70   Float_t * ffcharge;  //pointer to array of arrays
71
72 private: 
73   Double_t funParam[5];//parameters of used charge function
74   Int_t  fNPRF;      //number of interpolations point
75   Int_t  fNdiv;      //number of division to calculate integral
76   Float_t fDStep;    //element step for point 
77   Float_t fkNorm;     //normalisation factor of the charge integral
78   Float_t fInteg;     //integral of GRF on +- infinity
79   TF2 *  fGRF;        //charge distribution function
80
81   Float_t fK3X;
82   Float_t fK3Y;
83   Float_t fPadDistance;
84
85   Float_t  forigsigmaX;//sigma of original distribution;  
86   Float_t  forigsigmaY;//sigma of original distribution;  
87   Float_t fSigmaX;     //sigma of PAD response function
88   //calculated during update
89
90   //chewron parameters
91   Float_t fHeightFull;  //height of the full pad
92   Float_t fHeightS;     //height of the one step
93   Float_t fShiftY;  //shift of the step
94   Float_t fWidth;       //width of the pad
95   Float_t fK;           //k factor of the chewron
96   Float_t fActualY;          //in reality we calculate PRF only for 
97   //one fixed y
98   char  fType[5];  //charge type
99   //to make calculation faster we reduce  division
100   Float_t fDYtoWire;    //used to make PRF calculation faster in GetPRF
101   Float_t fDStepM1;     //used in GetPRFActiv
102   ClassDef(AliTPCPRF2D,1) 
103 }; 
104
105 #endif /* ALITPCPRF2D_H */
106