Line data Source code
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 : /// \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 : /// 
24 : ///
25 : /// \author Jim Thomas, Stefan Rossegger, Magnus Mager
26 : /// \date 27/04/2010
27 :
28 :
29 : #include "AliTPCCorrection.h"
30 :
31 : class AliTPCGGVoltError : public AliTPCCorrection {
32 : public:
33 : AliTPCGGVoltError();
34 : virtual ~AliTPCGGVoltError();
35 :
36 : // initialization and update functions
37 : virtual void Init();
38 : virtual void Update(const TTimeStamp &timeStamp);
39 :
40 : // common setters and getters for ExB
41 : virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
42 0 : fT1=t1; fT2=t2;
43 0 : const Double_t wt0=t2*omegaTau; fC0=1./(1.+wt0*wt0);
44 0 : const Double_t wt1=t1*omegaTau; fC1=wt1/(1.+wt1*wt1);
45 0 : };
46 :
47 0 : void SetC0C1(Double_t c0,Double_t c1) {fC0=c0;fC1=c1;} // CAUTION: USE WITH CARE
48 0 : Float_t GetC0() const {return fC0;}
49 0 : Float_t GetC1() const {return fC1;}
50 :
51 : // setters and getters for GG
52 0 : void SetDeltaVGGA(Double_t deltaVGGA) {fDeltaVGGA=deltaVGGA;}
53 0 : void SetDeltaVGGC(Double_t deltaVGGC) {fDeltaVGGC=deltaVGGC;}
54 0 : Double_t GetDeltaVGGA() const {return fDeltaVGGA;}
55 0 : Double_t GetDeltaVGGC() const {return fDeltaVGGC;}
56 :
57 : void InitGGVoltErrorDistortion();
58 :
59 : Float_t GetIntErOverEz(const Float_t x[],const Short_t roc);
60 :
61 : virtual void Print(const Option_t* option="") const;
62 :
63 : protected:
64 : virtual void GetCorrection(const Float_t x[],const Short_t roc, Float_t dx[]);
65 : private:
66 :
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)
69 :
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
73 :
74 : Bool_t fInitLookUp; ///< flag to check it the Look Up table was created
75 :
76 : /// \cond CLASSIMP
77 24 : ClassDef(AliTPCGGVoltError,1);
78 : /// \endcond
79 : };
80 :
81 : #endif
|