![]() |
AliRoot Core
v5-06-30 (35d6c57)
|
This implementation AliTPCExB is using an "exact" calculation of the ExB effect. More...
#include <AliTPCExBExact.h>
Public Member Functions | |
AliTPCExBExact () | |
AliTPCExBExact (const AliMagF *bField, Double_t driftVelocity, Int_t n=100, Int_t nx=30, Int_t ny=30, Int_t nz=100) | |
virtual | ~AliTPCExBExact () |
virtual void | Correct (const Double_t *position, Double_t *corrected) |
void | TestThisBeautifulObject (const AliMagF *bField, const char *fileName) |
![]() | |
AliTPCExB () | |
AliTPCExB & | operator= (const AliTPCExB &exb) |
AliTPCExB (const AliTPCExB &exb) | |
virtual | ~AliTPCExB () |
virtual void | CorrectInverse (const Double_t *position, Double_t *corrected) |
void | TestExB (const char *fileName) |
Double_t | Eval (Int_t type, Double_t r, Double_t phi, Double_t z) |
Double_t | SEval (Int_t type, Double_t r, Double_t phi, Double_t z) |
Protected Attributes | |
Double_t | fDriftVelocity |
The electron drift velocity. More... | |
Private Member Functions | |
AliTPCExBExact & | operator= (const AliTPCExBExact &) |
AliTPCExBExact (const AliTPCExBExact &) | |
void | TestThisBeautifulObjectGeneric (const char *fileName) |
void | CreateLookupTable () |
void | GetE (Double_t *e, const Double_t *x) const |
void | GetB (Double_t *b, const Double_t *x) const |
void | Motion (const Double_t *x, Double_t t, Double_t *dxdt) const |
void | CalculateDistortion (const Double_t *x, Double_t *dist) const |
void | DGLStep (Double_t *x, Double_t t, Double_t h) const |
Private Attributes | |
const AliMagF * | fkField |
! the magnetic field as supplied by the user More... | |
Int_t | fkN |
max number of integration steps More... | |
Int_t | fkNX |
field mesh points in x direction More... | |
Int_t | fkNY |
field mesh points in y direction More... | |
Int_t | fkNZ |
field mesh points in z direction More... | |
Double_t | fkXMin |
the first grid point in x direction More... | |
Double_t | fkXMax |
the last grid point in x direction More... | |
Double_t | fkYMin |
the first grid point in y direction More... | |
Double_t | fkYMax |
the last grid point in y direction More... | |
Double_t | fkZMin |
the first grid point in z direction More... | |
Double_t | fkZMax |
the last grid point in z direction More... | |
Int_t | fkNLook |
Double_t * | fkLook |
the great lookup table More... | |
Static Private Attributes | |
static const Double_t | fgkEM =1.602176487e-19/9.10938215e-31 |
! elementary charge over electron mass (C/kg) More... | |
static const Double_t | fgkDriftField =-40.e3 |
! the TPC drift field (V/m) (modulus) More... | |
Additional Inherited Members | |
![]() | |
static Double_t | GetDr (Double_t r, Double_t phi, Double_t z, Double_t bz=5) |
static Double_t | GetDrphi (Double_t r, Double_t phi, Double_t z, Double_t bz=5) |
static Double_t | GetDphi (Double_t r, Double_t phi, Double_t z, Double_t bz=5) |
static Double_t | GetDz (Double_t r, Double_t phi, Double_t z, Double_t bz=5) |
static AliTPCExB * | Instance () |
static void | SetInstance (AliTPCExB *const param) |
static void | RegisterField (Int_t index, AliMagF *magf) |
static Double_t | GetBx (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBy (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBz (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBr (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBrfi (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBxI (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetByI (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBzI (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBrI (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | GetBrfiI (Double_t r, Double_t phi, Double_t z, Int_t index=0) |
static Double_t | EvalMat (const TVectorD &vec, Double_t r, Double_t phi, Double_t z) |
This implementation AliTPCExB is using an "exact" calculation of the ExB effect.
An exact implementation of the ExB effect.
That is, it uses the drift ODE to calculate the distortion without any further assumption. Due to the numerical integration of the ODE, there are some numerical uncertencies involed.
Definition at line 14 of file AliTPCExBExact.h.
AliTPCExBExact::AliTPCExBExact | ( | ) |
purely for I/O
Definition at line 36 of file AliTPCExBExact.cxx.
AliTPCExBExact::AliTPCExBExact | ( | const AliMagF * | bField, |
Double_t | driftVelocity, | ||
Int_t | n = 100 , |
||
Int_t | nx = 30 , |
||
Int_t | ny = 30 , |
||
Int_t | nz = 100 |
||
) |
The constructor. One has to supply a magnetic field and an (initial) drift velocity. Since some kind of lookuptable is created the number of its meshpoints can be supplied. n sets the number of integration steps to be used when integrating over the full drift length.
Definition at line 48 of file AliTPCExBExact.cxx.
|
virtual |
destruct the poor object.
Definition at line 108 of file AliTPCExBExact.cxx.
|
private |
|
private |
Helper function that calculates one distortion by integration (only used to fill the lookup table).
Definition at line 300 of file AliTPCExBExact.cxx.
Referenced by CreateLookupTable(), and TestThisBeautifulObjectGeneric().
|
virtual |
correct for the distortion
Implements AliTPCExB.
Definition at line 114 of file AliTPCExBExact.cxx.
Referenced by TestThisBeautifulObjectGeneric().
|
private |
Helper function to fill the lookup table.
Definition at line 230 of file AliTPCExBExact.cxx.
Referenced by AliTPCExBExact().
|
private |
An elementary integration step. (simple Euler Method)
Definition at line 335 of file AliTPCExBExact.cxx.
Referenced by CalculateDistortion().
|
private |
Helper function returning the B field in SI units (T).
Definition at line 259 of file AliTPCExBExact.cxx.
Referenced by Motion(), and TestThisBeautifulObjectGeneric().
|
private |
Helper function returning the E field in SI units (V/m).
Definition at line 251 of file AliTPCExBExact.cxx.
Referenced by Motion().
|
private |
The differential equation of motion of the electrons.
Definition at line 274 of file AliTPCExBExact.cxx.
Referenced by DGLStep().
|
private |
void AliTPCExBExact::TestThisBeautifulObject | ( | const AliMagF * | bField, |
const char * | fileName | ||
) |
Have a look at the common part "TestThisBeautifulObjectGeneric".
Definition at line 171 of file AliTPCExBExact.cxx.
|
private |
Well, as the name sais... it tests the object.
Definition at line 180 of file AliTPCExBExact.cxx.
Referenced by TestThisBeautifulObject().
|
protected |
The electron drift velocity.
Definition at line 25 of file AliTPCExBExact.h.
Referenced by CalculateDistortion(), and Motion().
|
staticprivate |
! the TPC drift field (V/m) (modulus)
Definition at line 52 of file AliTPCExBExact.h.
|
staticprivate |
! elementary charge over electron mass (C/kg)
Definition at line 51 of file AliTPCExBExact.h.
Referenced by Motion().
|
private |
! the magnetic field as supplied by the user
Definition at line 37 of file AliTPCExBExact.h.
Referenced by GetB(), and TestThisBeautifulObject().
|
private |
the great lookup table
Definition at line 50 of file AliTPCExBExact.h.
Referenced by Correct(), CreateLookupTable(), and ~AliTPCExBExact().
|
private |
max number of integration steps
Definition at line 38 of file AliTPCExBExact.h.
Referenced by CalculateDistortion().
|
private |
size of the lookup table
Definition at line 48 of file AliTPCExBExact.h.
Referenced by CreateLookupTable().
|
private |
field mesh points in x direction
Definition at line 39 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
field mesh points in y direction
Definition at line 40 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
field mesh points in z direction
Definition at line 41 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
the last grid point in x direction
Definition at line 43 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
the first grid point in x direction
Definition at line 42 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
the last grid point in y direction
Definition at line 45 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
the first grid point in y direction
Definition at line 44 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
the last grid point in z direction
Definition at line 47 of file AliTPCExBExact.h.
Referenced by Correct(), and CreateLookupTable().
|
private |
the first grid point in z direction
Definition at line 46 of file AliTPCExBExact.h.