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