AliRoot Core  d69033e (d69033e)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliTPCExB.h
Go to the documentation of this file.
1 
3 #ifndef ALITPCEXB_H
4 #define ALITPCEXB_H
5 
6 class AliMagF;
7 #include "TObject.h"
8 #include "TVectorDfwd.h"
9 
10 class AliTPCExB:public TObject {
11 public:
12  AliTPCExB();
13  AliTPCExB& operator=(const AliTPCExB &exb);
14  AliTPCExB(const AliTPCExB& exb);
15  virtual ~AliTPCExB() {};
16  virtual void Correct(const Double_t *position,Double_t *corrected)=0;
17  virtual void CorrectInverse(const Double_t *position,Double_t *corrected) {
18  Correct(position,corrected);
19  for (Int_t i=0;i<3;++i)
20  corrected[i]=position[i]-(corrected[i]-position[i]);
21  }
22  //
23  // Test and visualization
24  //
25  void TestExB(const char* fileName);
26  static Double_t GetDr(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
27  static Double_t GetDrphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
28  static Double_t GetDphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
29  static Double_t GetDz(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
30  static AliTPCExB* Instance(){return fgInstance;}
31  static void SetInstance(AliTPCExB *const param){fgInstance = param;}
32  //
33  // Mag field scans
34  //
35  static void RegisterField(Int_t index, AliMagF * magf);
36  static Double_t GetBx(Double_t r, Double_t phi, Double_t z,Int_t index=0);
37  static Double_t GetBy(Double_t r, Double_t phi, Double_t z,Int_t index=0);
38  static Double_t GetBz(Double_t r, Double_t phi, Double_t z,Int_t index=0);
39  static Double_t GetBr(Double_t r, Double_t phi, Double_t z,Int_t index=0);
40  static Double_t GetBrfi(Double_t r, Double_t phi, Double_t z,Int_t index=0);
41  //
42  static Double_t GetBxI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
43  static Double_t GetByI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
44  static Double_t GetBzI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
45  static Double_t GetBrI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
46  static Double_t GetBrfiI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
47  //
48  //
49  Double_t Eval(Int_t type, Double_t r, Double_t phi, Double_t z);
50  Double_t SEval(Int_t type, Double_t r, Double_t phi, Double_t z){return Instance()->Eval(type,r,phi,z);}
51  static Double_t EvalMat(const TVectorD &vec, Double_t r, Double_t phi, Double_t z); // evalute parameterization
52 
53  private:
54  TVectorD * fMatBrBz;
55  TVectorD * fMatBrfiBz;
56  TVectorD * fMatBrBzI0;
57  TVectorD * fMatBrBzI1;
58  TVectorD * fMatBrfiBzI0;
59  TVectorD * fMatBrfiBzI1;
60 
62  static TObjArray fgArray;
63  //
65  ClassDef(AliTPCExB,2)
67 };
68 
69 #endif
static Double_t GetDz(Double_t r, Double_t phi, Double_t z, Double_t bz=5)
Definition: AliTPCExB.cxx:195
TVectorD * fMatBrBz
param matrix Br/Bz
Definition: AliTPCExB.h:54
Double_t SEval(Int_t type, Double_t r, Double_t phi, Double_t z)
Definition: AliTPCExB.h:50
TVectorD * fMatBrBzI1
param matrix Br/Bz integral z<0
Definition: AliTPCExB.h:57
#define TObjArray
TVectorD vec
Definition: AnalyzeLaser.C:8
static Double_t GetDrphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5)
Definition: AliTPCExB.cxx:164
static Double_t GetBxI(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:292
static Double_t GetByI(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:308
static Double_t GetBrI(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:341
AliTPCExB & operator=(const AliTPCExB &exb)
Definition: AliTPCExB.cxx:65
static Double_t GetBrfi(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:275
static Double_t GetBy(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:235
static void SetInstance(AliTPCExB *const param)
Definition: AliTPCExB.h:31
static TObjArray fgArray
! array of magnetic fields
Definition: AliTPCExB.h:62
virtual ~AliTPCExB()
Definition: AliTPCExB.h:15
static AliTPCExB * fgInstance
! Instance of this class (singleton implementation)
Definition: AliTPCExB.h:61
void TestExB(const char *fileName)
Definition: AliTPCExB.cxx:75
static Double_t GetBz(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:247
static Double_t GetBr(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:261
static Double_t GetBrfiI(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:357
static void RegisterField(Int_t index, AliMagF *magf)
Definition: AliTPCExB.cxx:215
Double_t Eval(Int_t type, Double_t r, Double_t phi, Double_t z)
Definition: AliTPCExB.cxx:374
static Double_t GetDr(Double_t r, Double_t phi, Double_t z, Double_t bz=5)
Definition: AliTPCExB.cxx:145
static Double_t GetDphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5)
Definition: AliTPCExB.cxx:181
TVectorD * fMatBrfiBzI1
param matrix Br/Bz integral z<0
Definition: AliTPCExB.h:59
virtual void Correct(const Double_t *position, Double_t *corrected)=0
virtual void CorrectInverse(const Double_t *position, Double_t *corrected)
Definition: AliTPCExB.h:17
TVectorD * fMatBrfiBz
param matrix Br/Bz
Definition: AliTPCExB.h:55
TVectorD * fMatBrfiBzI0
param matrix Br/Bz integral z>0
Definition: AliTPCExB.h:58
TVectorD * fMatBrBzI0
param matrix Br/Bz integral z>0
Definition: AliTPCExB.h:56
Abstract class for ExB effect parameterization.
Definition: AliTPCExB.h:10
static Double_t EvalMat(const TVectorD &vec, Double_t r, Double_t phi, Double_t z)
Definition: AliTPCExB.cxx:396
static Double_t GetBx(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:223
static AliTPCExB * Instance()
Definition: AliTPCExB.h:30
static Double_t GetBzI(Double_t r, Double_t phi, Double_t z, Int_t index=0)
Definition: AliTPCExB.cxx:324