AliTPCcalibTimeGain.cxx - Adding the Gamma conversion selected electorns
[u/mrichter/AliRoot.git] / TPC / AliTPCGGVoltError.h
1 #ifndef ALI_TPCGG_VOLT_ERROR_H
2 #define ALI_TPCGG_VOLT_ERROR_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // _________________________________________________________________
8 //
9 // Begin_Html
10 //   <h2> AliTPCGGVoltError class   </h2>         
11 //   The class calculates the electric field and the resulting space point distortions 
12 //   due a Gating Grid (GG) voltage error. It uses the analytical solution for such a problem. 
13 //   <p>
14 //   The input is the effective GG voltage residual in respect to the ideal setting. The effective 
15 //   residual voltage can be set via the functions SetDeltaVGGx. Note that this effective 
16 //   voltage-residuals are approx. a factor 0.9 lower than the actual difference in the setting 
17 //   of the GG due to the fact that the voltage on the GG is partially screened by the wire 
18 //   structure. The calculation has to be performed with the observable effective voltage difference.
19 //   <p>
20 //   Unfortunately, the class is not capable of calculation the $dz$ offset due to possible changes 
21 //   of the drift velocity in dependence of the electric field. The special case of the numerical 
22 //   approximation (AliTPCBoundaryVoltError), which is capable of calculating the same effect, should 
23 //   be used for this purpose. 
24 // End_Html
25 //
26 // Begin_Macro(source) 
27 //   {
28 //   gROOT->SetStyle("Plain"); gStyle->SetPalette(1);
29 //   TCanvas *c2 = new TCanvas("c2","c2",500,300); 
30 //   AliTPCGGVoltError gg;
31 //   gg.SetDeltaVGGA(-40); gg.SetDeltaVGGC(-40); // 40 Volt offset
32 //   gg.InitGGVoltErrorDistortion();
33 //   gg.SetOmegaTauT1T2(0,1,1); // B=0
34 //   gg.CreateHistoDRinZR(0)->Draw("surf2"); 
35 //   return c2;
36 //   } 
37 // End_Macro
38 //
39 // Begin_Html
40 //   <p>
41 //   Date: 27/04/2010  <br>
42 //   Authors: Jim Thomas, Stefan Rossegger, Magnus Mager   
43 // End_Html 
44 // _________________________________________________________________
45
46
47 #include "AliTPCCorrection.h"
48
49 class AliTPCGGVoltError : public AliTPCCorrection {
50 public:
51   AliTPCGGVoltError();
52   virtual ~AliTPCGGVoltError();
53
54   // initialization and update functions
55   virtual void Init();
56   virtual void Update(const TTimeStamp &timeStamp);
57
58   // common setters and getters for ExB
59   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
60     fT1=t1; fT2=t2;
61     const Double_t wt0=t2*omegaTau;     fC0=1./(1.+wt0*wt0);
62     const Double_t wt1=t1*omegaTau;     fC1=wt1/(1.+wt1*wt1);
63   };
64
65   void SetC0C1(Double_t c0,Double_t c1) {fC0=c0;fC1=c1;} // CAUTION: USE WITH CARE
66   Float_t GetC0() const {return fC0;}
67   Float_t GetC1() const {return fC1;}
68
69   // setters and getters for GG
70   void SetDeltaVGGA(Double_t deltaVGGA) {fDeltaVGGA=deltaVGGA;}
71   void SetDeltaVGGC(Double_t deltaVGGC) {fDeltaVGGC=deltaVGGC;}
72   Double_t GetDeltaVGGA() const {return fDeltaVGGA;}
73   Double_t GetDeltaVGGC() const {return fDeltaVGGC;}
74
75   void InitGGVoltErrorDistortion();
76
77   Float_t GetIntErOverEz(const Float_t x[],const Short_t roc);
78
79   virtual void Print(const Option_t* option="") const;
80
81 protected:
82   virtual void GetCorrection(const Float_t x[],const Short_t roc, Float_t dx[]);
83 private:
84
85   Float_t fC0; // coefficient C0                 (compare Jim Thomas's notes for definitions)
86   Float_t fC1; // coefficient C1                 (compare Jim Thomas's notes for definitions)
87
88   Double_t fDeltaVGGA;            // Missmatch of gating grid voltage on A-side [V]
89   Double_t fDeltaVGGC;            // Missmatch of gating grid voltage on C-side [V]
90   Double_t fGGVoltErrorER[kNZ][kNR]; // Array to store electric field for GGVoltError calculation
91
92   Bool_t fInitLookUp;             // flag to check it the Look Up table was created
93
94   ClassDef(AliTPCGGVoltError,1);
95 };
96
97 #endif