]>
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 | ||
7d855b04 | 7 | /// \class AliTPCGGVoltError |
8 | /// \brief AliTPCGGVoltError class | |
9 | /// | |
10 | /// The class calculates the electric field and the resulting space point distortions | |
11 | /// due a Gating Grid (GG) voltage error. It uses the analytical solution for such a problem. | |
12 | /// | |
13 | /// The input is the effective GG voltage residual in respect to the ideal setting. The effective | |
14 | /// residual voltage can be set via the functions SetDeltaVGGx. Note that this effective | |
15 | /// voltage-residuals are approx. a factor 0.9 lower than the actual difference in the setting | |
16 | /// of the GG due to the fact that the voltage on the GG is partially screened by the wire | |
17 | /// structure. The calculation has to be performed with the observable effective voltage difference. | |
18 | /// | |
19 | /// Unfortunately, the class is not capable of calculation the $dz$ offset due to possible changes | |
20 | /// of the drift velocity in dependence of the electric field. The special case of the numerical | |
21 | /// approximation (AliTPCBoundaryVoltError), which is capable of calculating the same effect, should | |
22 | /// be used for this purpose. | |
23 | /// ![Picture from ROOT macro](AliTPCGGVoltError_h_359f7ec.png) | |
24 | /// | |
25 | /// \author Jim Thomas, Stefan Rossegger, Magnus Mager | |
26 | /// \date 27/04/2010 | |
b4caed64 | 27 | |
0116859c | 28 | |
29 | #include "AliTPCCorrection.h" | |
30 | ||
31 | class AliTPCGGVoltError : public AliTPCCorrection { | |
32 | public: | |
33 | AliTPCGGVoltError(); | |
34 | virtual ~AliTPCGGVoltError(); | |
35 | ||
e527a1b9 | 36 | // initialization and update functions |
37 | virtual void Init(); | |
38 | virtual void Update(const TTimeStamp &timeStamp); | |
39 | ||
0116859c | 40 | // common setters and getters for ExB |
41 | virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) { | |
534fd34a | 42 | fT1=t1; fT2=t2; |
b1f0a2a5 | 43 | const Double_t wt0=t2*omegaTau; fC0=1./(1.+wt0*wt0); |
44 | const Double_t wt1=t1*omegaTau; fC1=wt1/(1.+wt1*wt1); | |
0116859c | 45 | }; |
46 | ||
47 | void SetC0C1(Double_t c0,Double_t c1) {fC0=c0;fC1=c1;} // CAUTION: USE WITH CARE | |
48 | Float_t GetC0() const {return fC0;} | |
49 | Float_t GetC1() const {return fC1;} | |
50 | ||
51 | // setters and getters for GG | |
52 | void SetDeltaVGGA(Double_t deltaVGGA) {fDeltaVGGA=deltaVGGA;} | |
53 | void SetDeltaVGGC(Double_t deltaVGGC) {fDeltaVGGC=deltaVGGC;} | |
54 | Double_t GetDeltaVGGA() const {return fDeltaVGGA;} | |
55 | Double_t GetDeltaVGGC() const {return fDeltaVGGC;} | |
56 | ||
57 | void InitGGVoltErrorDistortion(); | |
58 | ||
59 | Float_t GetIntErOverEz(const Float_t x[],const Short_t roc); | |
60 | ||
b1f0a2a5 | 61 | virtual void Print(const Option_t* option="") const; |
0116859c | 62 | |
63 | protected: | |
64 | virtual void GetCorrection(const Float_t x[],const Short_t roc, Float_t dx[]); | |
65 | private: | |
66 | ||
7d855b04 | 67 | Float_t fC0; ///< coefficient C0 (compare Jim Thomas's notes for definitions) |
68 | Float_t fC1; ///< coefficient C1 (compare Jim Thomas's notes for definitions) | |
0116859c | 69 | |
7d855b04 | 70 | Double_t fDeltaVGGA; ///< Missmatch of gating grid voltage on A-side [V] |
71 | Double_t fDeltaVGGC; ///< Missmatch of gating grid voltage on C-side [V] | |
72 | Double_t fGGVoltErrorER[kNZ][kNR]; ///< Array to store electric field for GGVoltError calculation | |
0116859c | 73 | |
7d855b04 | 74 | Bool_t fInitLookUp; ///< flag to check it the Look Up table was created |
1b923461 | 75 | |
7d855b04 | 76 | /// \cond CLASSIMP |
0116859c | 77 | ClassDef(AliTPCGGVoltError,1); |
7d855b04 | 78 | /// \endcond |
0116859c | 79 | }; |
80 | ||
81 | #endif |