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