Line data Source code
1 : #ifndef ALI_TPC_EX_BB_SHAPE_H
2 : #define ALI_TPC_EX_BB_SHAPE_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 AliTPCExBBShape
8 : /// \brief AliExBBShape class
9 : ///
10 : /// The class calculates the space point distortions due to the B field
11 : /// shape imperfections using a second order technique based on integrals
12 : /// over Bz (e.g. int By/Bz) obtained via the AliMagF class. The essential
13 : /// input for this class is the magnetic field maps which can be set via the function SetBField.
14 : ///
15 : /// The class allows "effective Omega Tau" corrections.
16 : /// 
17 : ///
18 : /// \author Magnus Mager, Jim Thomas, Stefan Rossegger
19 : /// \date 27/04/2010
20 :
21 : #include "AliTPCCorrection.h"
22 :
23 : class AliMagF;
24 :
25 : class AliTPCExBBShape : public AliTPCCorrection {
26 : public:
27 : AliTPCExBBShape();
28 : virtual ~AliTPCExBBShape();
29 : virtual Bool_t AddCorrectionCompact(AliTPCCorrection* corr, Double_t weight);
30 :
31 : // initialization and update functions
32 : virtual void Init();
33 : virtual void Update(const TTimeStamp &timeStamp);
34 :
35 : // common setters and getters for ExB
36 : virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
37 18 : fT1=t1; fT2=t2;
38 9 : const Float_t wt1=t1*omegaTau; fC1=wt1/(1.+wt1*wt1);
39 9 : const Float_t wt2=t2*omegaTau; fC2=wt2*wt2/(1.+wt2*wt2);
40 9 : };
41 0 : void SetC1C2(Float_t c1,Float_t c2) {fC1=c1;fC2=c2;} // CAUTION: USE WITH CARE
42 0 : Float_t GetC1() const {return fC1;}
43 0 : Float_t GetC2() const {return fC2;}
44 :
45 : // setters and getters for the magentic field map
46 18 : void SetBField(const AliMagF *bField) {fBField=(AliMagF*)bField;}
47 0 : AliMagF* GetBField() const {return fBField;}
48 :
49 : virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
50 : void GetBxAndByOverBz(const Float_t x[],const Short_t roc,Float_t BxByOverBz[]);
51 :
52 : virtual void Print(Option_t* option="") const;
53 : static Double_t GetBFieldXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType);
54 0 : Double_t GetScaling() const {return fScaling;}
55 : private:
56 : Float_t fC1; ///< coefficient C1 (compare Jim Thomas's notes for definitions)
57 : Float_t fC2; ///< coefficient C2 (compare Jim Thomas's notes for definitions)
58 : Float_t fScaling; ///< scaling factor to rescale distortion - for tests purposes only
59 : AliMagF *fBField; ///< pointer to magnetic field
60 :
61 : AliTPCExBBShape & operator =(const AliTPCExBBShape &); // dummy assignment operator
62 : AliTPCExBBShape(const AliTPCExBBShape&); //dummy copy contructor
63 :
64 : /// \cond CLASSIMP
65 36 : ClassDef(AliTPCExBBShape,3);
66 : /// \endcond
67 : };
68 :
69 : #endif
|