AliRoot Core  3dc7879 (3dc7879)
AliTPCPRF2D.h
Go to the documentation of this file.
1 #ifndef ALITPCPRF2D_H
2 #define ALITPCPRF2D_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
10 
11 #include "TObject.h"
12 
13 class TF2;
14 class TArrayF;
15 class TH1F;
16 class AliH2F;
17 class TPaveText;
18 
19 class AliTPCPRF2D : public TObject {
20 public :
21  AliTPCPRF2D();
22  virtual ~AliTPCPRF2D();
23  virtual void Update(); //recalculate tables for charge calculation
24  Float_t GetGRF(Float_t xin, Float_t yin);
25  //return generic response function in xin
26  virtual TF2 * GetGRF(){return fGRF;}
27  virtual Float_t GetPRF(Float_t xin, Float_t yin);
28  //return PRF in point xin,yin
29 
30  virtual void DrawX(Float_t x1 ,Float_t x2,Float_t y1,Float_t y2=0, Int_t N=1);
31  virtual void DrawPRF(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20);
32  //draw two dimensional PRF
33 
34  virtual void DrawDist(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20,
35  Float_t thr=0);
36  //draw distortion of COG method
37  //we suppose threshold equal to thr
38  TH1F * GenerDrawXHisto(Float_t x1, Float_t x2,Float_t y);
39  AliH2F * GenerDrawHisto(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20);
40  AliH2F * GenerDrawDistHisto(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20,
41  Float_t thr=0);
42 
43  virtual void SetPad(Float_t width, Float_t height);
44  //set base chevron parameters
45  virtual void SetChevron(Float_t hstep, Float_t shifty, Float_t fac);
46  //set chevron parameters
47  virtual void SetChParam(Float_t width, Float_t height,
48  Float_t hstep, Float_t shifty, Float_t fac);
49  //set all geometrical parameters
50  virtual void SetY(Float_t y1, Float_t y2, Int_t nYdiv) ;
51  virtual void SetChargeAngle(Float_t angle){fChargeAngle = angle;} //set angle of pad and charge distribution
52  //axes
53  virtual void SetCurrentAngle(Float_t /*angle*/){return;}
54  virtual void SetPadAngle(Float_t angle){fPadAngle = angle;} //set pad angle
55  void SetInterpolationType(Int_t interx, Int_t intery) {fInterX=interx; fInterY =intery;}
56  virtual void SetGauss(Float_t sigmaX,Float_t sigmaY , Float_t kNorm=1);
57  //adjust PRF with GAUSIAN as generic GRF
58  //if direct = kTRUE then it does't convolute distribution
59  virtual void SetCosh(Float_t sigmaX,Float_t sigmaY , Float_t kNorm=1);
60  //adjust PRF with 1/Cosh as generic GRF
61  virtual void SetGati(Float_t K3X, Float_t K3Y,
62  Float_t padDistance,
63  Float_t kNorm=1);
64  void SetParam(TF2 *const GRF,Float_t kNorm,
65  Float_t sigmaX=0, Float_t sigmaY=0);
66  void SetNdiv(Int_t Ndiv){fNdiv=Ndiv;}
67  virtual Float_t GetSigmaX() const {return fSigmaX;}
68  virtual Float_t GetSigmaY() const {return fSigmaY;}
69 
70 
71 protected:
72  void Update1();
73  virtual void UpdateSigma(); //recalculate sigma of PRF
74  Float_t GetPRFActiv(Float_t xin); //return PRF in point xin and actual y
75  Float_t * fcharge;
76  Float_t fY1;
77  Float_t fY2;
78  Int_t fNYdiv;
79  Int_t fNChargeArray;
80  Float_t * fChargeArray; //[fNChargeArray]
82 
83  void DrawComment(TPaveText * comment); //draw comments to picture
84  //chevron parameters
85  Float_t fHeightFull;
86  Float_t fHeightS;
87  Float_t fShiftY;
88  Float_t fWidth;
89  Float_t fK;
90 
91  Double_t funParam[5];
92  Int_t fNPRF;
93  Int_t fNdiv;
94  Float_t fDStep;
95  Float_t fKNorm;
96  Float_t fInteg;
97  TF2 * fGRF;
98 
99  Float_t fK3X;
100  Float_t fK3Y;
101  Float_t fPadDistance;
102 
103  Float_t fOrigSigmaX;
104  Float_t fOrigSigmaY;
105 
106  Float_t fChargeAngle;
107  Float_t fPadAngle;
108 
109  Float_t fSigmaX;
110  Float_t fSigmaY;
111  Float_t fMeanX;
112  Float_t fMeanY;
113  Int_t fInterX;
114  Int_t fInterY;
115  //calculated during update
116 
117  char fType[5];
118  Float_t fCurrentY;
119  Float_t fDYtoWire;
120  Float_t fDStepM1;
121  //
122  static const Double_t fgkDegtoRad;
123  static const Double_t fgkSQRT12;
124  static const Int_t fgkNPRF;
125 
126 private:
127  AliTPCPRF2D(const AliTPCPRF2D &prf);
128  AliTPCPRF2D &operator = (const AliTPCPRF2D &/*prf*/) {return *this;}
129 
131  ClassDef(AliTPCPRF2D,1)
133 };
134 
135 #endif /* ALITPCPRF2D_H */
Float_t fChargeAngle
'angle' of charge distribution refernce system to pad reference system
Definition: AliTPCPRF2D.h:106
Float_t fSigmaY
sigma Y of PAD response function
Definition: AliTPCPRF2D.h:110
Float_t fShiftY
shift of the step
Definition: AliTPCPRF2D.h:87
Float_t fY2
position of last virtual vire
Definition: AliTPCPRF2D.h:77
Float_t fK3X
KX parameter (only for Gati parametrization)
Definition: AliTPCPRF2D.h:99
AliTPCPRF2D & operator=(const AliTPCPRF2D &)
Definition: AliTPCPRF2D.h:128
Int_t fNYdiv
number of wires
Definition: AliTPCPRF2D.h:78
Float_t fDStepM1
! used in GetPRFActiv to make calculation faster
Definition: AliTPCPRF2D.h:120
virtual void DrawPRF(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20)
virtual void SetCurrentAngle(Float_t)
Definition: AliTPCPRF2D.h:53
Float_t fSigmaX
sigma X of PAD response function
Definition: AliTPCPRF2D.h:109
Int_t fInterX
interpolation in X
Definition: AliTPCPRF2D.h:113
static TString comment
Definition: ConfigCosmic.C:131
void DrawComment(TPaveText *comment)
virtual void UpdateSigma()
char fType[5]
charge type
Definition: AliTPCPRF2D.h:117
static const Double_t fgkDegtoRad
numeric constant
Definition: AliTPCPRF2D.h:122
Float_t fOrigSigmaY
sigma of original distribution;
Definition: AliTPCPRF2D.h:104
Int_t fNdiv
number of division to calculate integral
Definition: AliTPCPRF2D.h:93
void SetNdiv(Int_t Ndiv)
Definition: AliTPCPRF2D.h:66
virtual void DrawX(Float_t x1, Float_t x2, Float_t y1, Float_t y2=0, Int_t N=1)
Float_t fDYtoWire
! used to make PRF calculation faster in GetPRF
Definition: AliTPCPRF2D.h:119
virtual Float_t GetSigmaX() const
Definition: AliTPCPRF2D.h:67
Float_t fHeightS
height of the one step
Definition: AliTPCPRF2D.h:86
virtual void SetGati(Float_t K3X, Float_t K3Y, Float_t padDistance, Float_t kNorm=1)
Float_t fPadAngle
'angle' of the pad assymetry
Definition: AliTPCPRF2D.h:107
virtual ~AliTPCPRF2D()
Int_t fNChargeArray
Definition: AliTPCPRF2D.h:79
virtual void DrawDist(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20, Float_t thr=0)
virtual void SetChParam(Float_t width, Float_t height, Float_t hstep, Float_t shifty, Float_t fac)
virtual void SetChargeAngle(Float_t angle)
Definition: AliTPCPRF2D.h:51
Float_t fOrigSigmaX
sigma of original distribution;
Definition: AliTPCPRF2D.h:103
virtual void SetPadAngle(Float_t angle)
Definition: AliTPCPRF2D.h:54
Float_t fCurrentY
in reality we calculate PRF only for one fixed y
Definition: AliTPCPRF2D.h:118
Float_t fK
k factor of the chewron
Definition: AliTPCPRF2D.h:89
virtual void SetCosh(Float_t sigmaX, Float_t sigmaY, Float_t kNorm=1)
Float_t fMeanY
mean Y value
Definition: AliTPCPRF2D.h:112
Pad response function object in two dimesions.
Definition: AliTPCPRF2D.h:19
Float_t fPadDistance
pad anode distnce (only for Gati parametrisation)
Definition: AliTPCPRF2D.h:101
Int_t fInterY
interpolation in Y
Definition: AliTPCPRF2D.h:114
Float_t GetPRFActiv(Float_t xin)
virtual void SetPad(Float_t width, Float_t height)
TF2 * fGRF
charge distribution function
Definition: AliTPCPRF2D.h:97
virtual Float_t GetPRF(Float_t xin, Float_t yin)
virtual TF2 * GetGRF()
Definition: AliTPCPRF2D.h:26
Float_t fY1
position of first "virtual" vire
Definition: AliTPCPRF2D.h:76
AliH2F * GenerDrawDistHisto(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20, Float_t thr=0)
TH1F * GenerDrawXHisto(Float_t x1, Float_t x2, Float_t y)
Float_t fMeanX
mean X value
Definition: AliTPCPRF2D.h:111
virtual void Update()
Float_t fKNorm
normalisation factor of the charge integral
Definition: AliTPCPRF2D.h:95
Definition: AliH2F.h:16
Float_t fInteg
integral of GRF on +- infinity
Definition: AliTPCPRF2D.h:96
Float_t fK3Y
KY parameter (only for Gati parametrisation)
Definition: AliTPCPRF2D.h:100
AliH2F * GenerDrawHisto(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20)
virtual Float_t GetSigmaY() const
Definition: AliTPCPRF2D.h:68
void Update1()
void SetParam(TF2 *const GRF, Float_t kNorm, Float_t sigmaX=0, Float_t sigmaY=0)
static const Double_t fgkSQRT12
numeric constant
Definition: AliTPCPRF2D.h:123
Float_t fHeightFull
height of the full pad
Definition: AliTPCPRF2D.h:85
virtual void SetGauss(Float_t sigmaX, Float_t sigmaY, Float_t kNorm=1)
virtual void SetY(Float_t y1, Float_t y2, Int_t nYdiv)
virtual void SetChevron(Float_t hstep, Float_t shifty, Float_t fac)
static const Int_t fgkNPRF
default number of division
Definition: AliTPCPRF2D.h:124
Float_t * fcharge
! field with PRF
Definition: AliTPCPRF2D.h:75
Double_t funParam[5]
parameters of used charge function
Definition: AliTPCPRF2D.h:91
void SetInterpolationType(Int_t interx, Int_t intery)
Definition: AliTPCPRF2D.h:55
Float_t fDStep
element step for point
Definition: AliTPCPRF2D.h:94
Float_t fWidth
width of the pad
Definition: AliTPCPRF2D.h:88
Float_t * fChargeArray
pointer to array of arrays
Definition: AliTPCPRF2D.h:81
Int_t fNPRF
number of interpolations point
Definition: AliTPCPRF2D.h:92