]>
Commit | Line | Data |
---|---|---|
b1f0a2a5 | 1 | #ifndef ALI_TPCGG_VOLT_ERROR_H |
2 | #define ALI_TPCGG_VOLT_ERROR_H | |
0116859c | 3 | |
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
b4caed64 | 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 | // | |
6a1caa6b | 26 | // Begin_Macro(source) |
b4caed64 | 27 | // { |
28 | // gROOT->SetStyle("Plain"); gStyle->SetPalette(1); | |
6a1caa6b | 29 | // TCanvas *c2 = new TCanvas("cAliTPCGGVoltError","cAliTPCGGVoltError",500,300); |
b4caed64 | 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 | ||
0116859c | 46 | |
47 | #include "AliTPCCorrection.h" | |
48 | ||
49 | class AliTPCGGVoltError : public AliTPCCorrection { | |
50 | public: | |
51 | AliTPCGGVoltError(); | |
52 | virtual ~AliTPCGGVoltError(); | |
53 | ||
e527a1b9 | 54 | // initialization and update functions |
55 | virtual void Init(); | |
56 | virtual void Update(const TTimeStamp &timeStamp); | |
57 | ||
0116859c | 58 | // common setters and getters for ExB |
59 | virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) { | |
534fd34a | 60 | fT1=t1; fT2=t2; |
b1f0a2a5 | 61 | const Double_t wt0=t2*omegaTau; fC0=1./(1.+wt0*wt0); |
62 | const Double_t wt1=t1*omegaTau; fC1=wt1/(1.+wt1*wt1); | |
0116859c | 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 | ||
b1f0a2a5 | 79 | virtual void Print(const Option_t* option="") const; |
0116859c | 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 | ||
1b923461 | 92 | Bool_t fInitLookUp; // flag to check it the Look Up table was created |
93 | ||
0116859c | 94 | ClassDef(AliTPCGGVoltError,1); |
95 | }; | |
96 | ||
97 | #endif |