AliRoot Core  v5-06-30 (35d6c57)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliTPCExBExact Class Reference

This implementation AliTPCExB is using an "exact" calculation of the ExB effect. More...

#include <AliTPCExBExact.h>

Inheritance diagram for AliTPCExBExact:

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)
 
- Public Member Functions inherited from AliTPCExB
 AliTPCExB ()
 
AliTPCExBoperator= (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

AliTPCExBExactoperator= (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 Public Member Functions inherited from AliTPCExB
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 AliTPCExBInstance ()
 
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)
 

Detailed Description

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.

Constructor & Destructor Documentation

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.

AliTPCExBExact::~AliTPCExBExact ( )
virtual

destruct the poor object.

Definition at line 108 of file AliTPCExBExact.cxx.

AliTPCExBExact::AliTPCExBExact ( const AliTPCExBExact )
private

Member Function Documentation

void AliTPCExBExact::CalculateDistortion ( const Double_t *  x,
Double_t *  dist 
) const
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().

void AliTPCExBExact::Correct ( const Double_t *  position,
Double_t *  corrected 
)
virtual

correct for the distortion

Implements AliTPCExB.

Definition at line 114 of file AliTPCExBExact.cxx.

Referenced by TestThisBeautifulObjectGeneric().

void AliTPCExBExact::CreateLookupTable ( )
private

Helper function to fill the lookup table.

Definition at line 230 of file AliTPCExBExact.cxx.

Referenced by AliTPCExBExact().

void AliTPCExBExact::DGLStep ( Double_t *  x,
Double_t  t,
Double_t  h 
) const
private

An elementary integration step. (simple Euler Method)

Definition at line 335 of file AliTPCExBExact.cxx.

Referenced by CalculateDistortion().

void AliTPCExBExact::GetB ( Double_t *  b,
const Double_t *  x 
) const
private

Helper function returning the B field in SI units (T).

Definition at line 259 of file AliTPCExBExact.cxx.

Referenced by Motion(), and TestThisBeautifulObjectGeneric().

void AliTPCExBExact::GetE ( Double_t *  e,
const Double_t *  x 
) const
private

Helper function returning the E field in SI units (V/m).

Definition at line 251 of file AliTPCExBExact.cxx.

Referenced by Motion().

void AliTPCExBExact::Motion ( const Double_t *  x,
Double_t  t,
Double_t *  dxdt 
) const
private

The differential equation of motion of the electrons.

Definition at line 274 of file AliTPCExBExact.cxx.

Referenced by DGLStep().

AliTPCExBExact& AliTPCExBExact::operator= ( const AliTPCExBExact )
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.

void AliTPCExBExact::TestThisBeautifulObjectGeneric ( const char *  fileName)
private

Well, as the name sais... it tests the object.

Definition at line 180 of file AliTPCExBExact.cxx.

Referenced by TestThisBeautifulObject().

Member Data Documentation

Double_t AliTPCExBExact::fDriftVelocity
protected

The electron drift velocity.

Definition at line 25 of file AliTPCExBExact.h.

Referenced by CalculateDistortion(), and Motion().

const Double_t AliTPCExBExact::fgkDriftField =-40.e3
staticprivate

! the TPC drift field (V/m) (modulus)

Definition at line 52 of file AliTPCExBExact.h.

Referenced by GetE(), and Motion().

const Double_t AliTPCExBExact::fgkEM =1.602176487e-19/9.10938215e-31
staticprivate

! elementary charge over electron mass (C/kg)

Definition at line 51 of file AliTPCExBExact.h.

Referenced by Motion().

const AliMagF* AliTPCExBExact::fkField
private

! the magnetic field as supplied by the user

Definition at line 37 of file AliTPCExBExact.h.

Referenced by GetB(), and TestThisBeautifulObject().

Double_t* AliTPCExBExact::fkLook
private

the great lookup table

Definition at line 50 of file AliTPCExBExact.h.

Referenced by Correct(), CreateLookupTable(), and ~AliTPCExBExact().

Int_t AliTPCExBExact::fkN
private

max number of integration steps

Definition at line 38 of file AliTPCExBExact.h.

Referenced by CalculateDistortion().

Int_t AliTPCExBExact::fkNLook
private

size of the lookup table

Definition at line 48 of file AliTPCExBExact.h.

Referenced by CreateLookupTable().

Int_t AliTPCExBExact::fkNX
private

field mesh points in x direction

Definition at line 39 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Int_t AliTPCExBExact::fkNY
private

field mesh points in y direction

Definition at line 40 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Int_t AliTPCExBExact::fkNZ
private

field mesh points in z direction

Definition at line 41 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Double_t AliTPCExBExact::fkXMax
private

the last grid point in x direction

Definition at line 43 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Double_t AliTPCExBExact::fkXMin
private

the first grid point in x direction

Definition at line 42 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Double_t AliTPCExBExact::fkYMax
private

the last grid point in y direction

Definition at line 45 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Double_t AliTPCExBExact::fkYMin
private

the first grid point in y direction

Definition at line 44 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Double_t AliTPCExBExact::fkZMax
private

the last grid point in z direction

Definition at line 47 of file AliTPCExBExact.h.

Referenced by Correct(), and CreateLookupTable().

Double_t AliTPCExBExact::fkZMin
private

the first grid point in z direction

Definition at line 46 of file AliTPCExBExact.h.


The documentation for this class was generated from the following files: