]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCPRF2D.h
Correct volume to medium assignment in case several media are asigned to the
[u/mrichter/AliRoot.git] / TPC / AliTPCPRF2D.h
CommitLineData
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"
20class TF2;
21class TArrayF;
22
23class AliTPCPRF2D : public TObject {
24public :
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();
68protected:
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
77private:
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