![]() |
AliRoot Core
3dc7879 (3dc7879)
|
#include <AliTPCBoundaryVoltError.h>
Public Member Functions | |
AliTPCBoundaryVoltError () | |
virtual | ~AliTPCBoundaryVoltError () |
virtual Bool_t | AddCorrectionCompact (AliTPCCorrection *corr, Double_t weight) |
virtual void | Init () |
virtual void | Update (const TTimeStamp &timeStamp) |
virtual void | SetOmegaTauT1T2 (Float_t omegaTau, Float_t t1, Float_t t2) |
void | SetC0C1 (Float_t c0, Float_t c1) |
Float_t | GetC0 () const |
Float_t | GetC1 () const |
void | SetBoundariesA (Float_t boundariesA[8]) |
void | SetBoundariesC (Float_t boundariesC[6]) |
Float_t | GetBoundariesA (Int_t i) const |
Float_t | GetBoundariesC (Int_t i) const |
void | SetROCDisplacement (Bool_t flag) |
Bool_t | GetROCDisplacement () const |
void | InitBoundaryVoltErrorDistortion () |
virtual void | Print (const Option_t *option="") const |
![]() | |
AliTPCCorrection () | |
AliTPCCorrection (const char *name, const char *title) | |
virtual | ~AliTPCCorrection () |
void | CorrectPoint (Float_t x[], Short_t roc) |
void | CorrectPointLocal (Float_t x[], Short_t roc) |
void | CorrectPoint (const Float_t x[], Short_t roc, Float_t xp[]) |
virtual void | GetCorrectionDz (const Float_t x[], Short_t roc, Float_t dx[], Float_t delta) |
virtual void | GetCorrectionIntegralDz (const Float_t x[], Short_t roc, Float_t dx[], Float_t delta) |
void | DistortPoint (Float_t x[], Short_t roc) |
void | DistortPointLocal (Float_t x[], Short_t roc) |
void | DistortPoint (const Float_t x[], Short_t roc, Float_t xp[]) |
virtual void | GetDistortion (const Float_t x[], Short_t roc, Float_t dx[]) |
virtual void | GetDistortionDz (const Float_t x[], Short_t roc, Float_t dx[], Float_t delta) |
virtual void | GetDistortionIntegralDz (const Float_t x[], Short_t roc, Float_t dx[], Float_t delta) |
virtual void | SetCorrScaleFactor (Float_t) |
virtual Float_t | GetCorrScaleFactor () const |
virtual void | Print (Option_t *option="") const |
TH2F * | CreateHistoDRinXY (Float_t z=10., Int_t nx=100, Int_t ny=100) |
TH2F * | CreateHistoDRPhiinXY (Float_t z=10., Int_t nx=100, Int_t nphi=100) |
TH2F * | CreateHistoDZinXY (Float_t z=10., Int_t nx=100, Int_t ny=100) |
TH2F * | CreateHistoDRinZR (Float_t phi=0., Int_t nZ=100, Int_t nR=100) |
TH2F * | CreateHistoDRPhiinZR (Float_t phi=0., Int_t nZ=100, Int_t nR=100) |
TH2F * | CreateHistoDZinZR (Float_t phi=0., Int_t nZ=100, Int_t nR=100) |
TH2F * | CreateHistoDRinPhiR (Float_t z=10., Int_t nPhi=180, Int_t nR=100, Bool_t useSector=kTRUE, Float_t shift=0.) |
TH2F * | CreateHistoDRPhiinPhiR (Float_t z=10., Int_t nPhi=180, Int_t nR=100, Bool_t useSector=kTRUE, Float_t shift=0.) |
TH2F * | CreateHistoDZinPhiR (Float_t z=10., Int_t nPhi=180, Int_t nR=100, Bool_t useSector=kTRUE, Float_t shift=0.) |
TTree * | CreateDistortionTree (Double_t step=5, Int_t type=0) |
AliExternalTrackParam * | FitDistortedTrack (AliExternalTrackParam &trackIn, Double_t refX, Int_t dir, TTreeSRedirector *pcstream) |
void | StoreInOCDB (Int_t startRun, Int_t endRun, const char *comment=0) |
void | FastSimDistortedVertex (Double_t orgVertex[3], Int_t nTracks, AliESDVertex &aV, AliESDVertex &avOrg, AliESDVertex &cV, AliESDVertex &cvOrg, TTreeSRedirector *const pcstream, Double_t etaCuts) |
Protected Member Functions | |
virtual void | GetCorrection (const Float_t x[], const Short_t roc, Float_t dx[]) |
![]() | |
TH2F * | CreateTH2F (const char *name, const char *title, const char *xlabel, const char *ylabel, const char *zlabel, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup) |
void | Interpolate2DEdistortion (Int_t order, Double_t r, Double_t z, const Double_t er[kNZ][kNR], Double_t &erValue) |
void | Interpolate3DEdistortion (Int_t order, Double_t r, Float_t phi, Double_t z, const Double_t er[kNZ][kNPhi][kNR], const Double_t ephi[kNZ][kNPhi][kNR], const Double_t ez[kNZ][kNPhi][kNR], Double_t &erValue, Double_t &ephiValue, Double_t &ezValue) |
Double_t | Interpolate2DTable (Int_t order, Double_t x, Double_t y, Int_t nx, Int_t ny, const Double_t xv[], const Double_t yv[], const TMatrixD &array) |
Double_t | Interpolate3DTable (Int_t order, Double_t x, Double_t y, Double_t z, Int_t nx, Int_t ny, Int_t nz, const Double_t xv[], const Double_t yv[], const Double_t zv[], TMatrixD **arrayofArrays) |
Double_t | Interpolate (const Double_t xArray[], const Double_t yArray[], Int_t order, Double_t x) |
void | Search (Int_t n, const Double_t xArray[], Double_t x, Int_t &low) |
Float_t | Interpolate2DTable (Int_t order, Double_t x, Double_t y, Int_t nx, Int_t ny, const Double_t xv[], const Double_t yv[], const TMatrixF &array) |
Float_t | Interpolate3DTable (Int_t order, Double_t x, Double_t y, Double_t z, Int_t nx, Int_t ny, Int_t nz, const Double_t xv[], const Double_t yv[], const Double_t zv[], TMatrixF **arrayofArrays) |
Float_t | Interpolate (const Double_t xArray[], const Float_t yArray[], Int_t order, Double_t x) |
virtual Int_t | IsPowerOfTwo (Int_t i) const |
void | PoissonRelaxation2D (TMatrixD &arrayV, TMatrixD &chargeDensity, TMatrixD &arrayErOverEz, TMatrixD &arrayDeltaEz, Int_t rows, Int_t columns, Int_t iterations, Bool_t rocDisplacement=kTRUE) |
void | PoissonRelaxation3D (TMatrixD **arrayofArrayV, TMatrixD **arrayofChargeDensities, TMatrixD **arrayofEroverEz, TMatrixD **arrayofEPhioverEz, TMatrixD **arrayofEz, Int_t rows, Int_t columns, Int_t phislices, Float_t deltaphi, Int_t iterations, Int_t summetry, Bool_t rocDisplacement=kTRUE, IntegrationType integrationType=kIntegral) |
void | SetIsLocal (Bool_t isLocal) |
Bool_t | IsLocal () const |
Private Types | |
enum | { kRows =257 } |
enum | { kColumns =257 } |
enum | { kIterations =100 } |
Private Attributes | |
Float_t | fC0 |
coefficient C0 (compare Jim Thomas's notes for definitions) More... | |
Float_t | fC1 |
coefficient C1 (compare Jim Thomas's notes for definitions) More... | |
Float_t | fBoundariesA [8] |
Boundary values on the A side (see Setter function) More... | |
Float_t | fBoundariesC [8] |
Boundary values on the C side (see Setter function) More... | |
Bool_t | fROCdisplacement |
flag for ROC displacement (important for z distortions) More... | |
Bool_t | fInitLookUp |
flag to check it the Look Up table was created More... | |
Double_t | fLookUpErOverEz [kNZ][kNR] |
Array to store electric field integral (int Er/Ez) More... | |
Double_t | fLookUpDeltaEz [kNZ][kNR] |
Array to store electric field integral (int Delta Ez) More... | |
Additional Inherited Members | |
![]() | |
enum | CompositionType { kParallel, kQueue } |
enum | IntegrationType { kIntegral, kDifferential } |
![]() | |
static void | MakeDistortionMap (THnSparse *his0, TTreeSRedirector *pcstream, const char *hname, Int_t run, Float_t refX, Int_t type, Int_t integ=1) |
static void | MakeDistortionMapCosmic (THnSparse *his0, TTreeSRedirector *pcstream, const char *hname, Int_t run, Float_t refX, Int_t type) |
static void | MakeDistortionMapSector (THnSparse *his0, TTreeSRedirector *pcstream, const char *hname, Int_t run, Int_t type) |
static void | MakeTrackDistortionTree (TTree *tinput, Int_t dtype, Int_t ptype, const TObjArray *corrArray, Int_t step=1, Int_t offset=0, Bool_t debug=0) |
static void | MakeSectorDistortionTree (TTree *tinput, Int_t dtype, Int_t ptype, const TObjArray *corrArray, Int_t step=1, Int_t offset=0, Bool_t debug=0) |
static void | MakeLaserDistortionTreeOld (TTree *tree, TObjArray *corrArray, Int_t itype) |
static void | MakeLaserDistortionTree (TTree *tree, TObjArray *corrArray, Int_t itype) |
static void | AddVisualCorrection (AliTPCCorrection *corr, Int_t position) |
static AliTPCCorrection * | GetVisualCorrection (Int_t position) |
static AliTPCCorrection * | GetVisualCorrection (const char *corName) |
static TObjArray * | GetVisualCorrections () |
static Double_t | GetCorrSector (Double_t sector, Double_t r, Double_t kZ, Int_t axisType, Int_t corrType=0) |
static Double_t | GetCorrXYZ (Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0) |
static Double_t | GetCorrXYZDz (Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0, Double_t delta=5) |
static Double_t | GetCorrXYZIntegrateZ (Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0, Double_t delta=5) |
static Double_t | GetDistXYZ (Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0) |
static Double_t | GetDistXYZDz (Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0, Double_t delta=5) |
static Double_t | GetDistXYZIntegrateZ (Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0, Double_t delta=5) |
static Double_t | GetCorrectionSector (Double_t sector, Double_t r, Double_t kZ, Int_t axisType, Int_t corrType=0) |
static Double_t | GetDistortionSector (Double_t sector, Double_t r, Double_t kZ, Int_t axisType, Int_t corrType=0) |
![]() | |
enum | { kNR = 72 } |
enum | { kNPhi = 18*10+1 } |
enum | { kNZ = 166 } |
![]() | |
Double_t | fgkRList [kNR] |
points in the radial direction (for the lookup table) More... | |
Double_t | fgkPhiList [kNPhi] |
points in the phi direction (for the lookup table) More... | |
Double_t | fgkZList [kNZ] |
points in the z direction (for the lookup table) More... | |
Int_t | fILow |
Int_t | fJLow |
Int_t | fKLow |
variable to help in the interpolation More... | |
Double_t | fT1 |
tensor term of wt - T1 More... | |
Double_t | fT2 |
tensor term of wt - T2 More... | |
Bool_t | fIsLocal |
switch to indicate that the distortion is a local vector drphi/dz, dr/dz More... | |
IntegrationType | fIntegrationType |
Presentation of the underlying corrections, integrated, or differential. More... | |
![]() | |
static const Double_t | fgkTPCZ0 = 249.7 |
nominal gating grid position More... | |
static const Double_t | fgkIFCRadius = 83.5 |
Mean Radius of the Inner Field Cage ( 82.43 min, 83.70 max) (cm)/hera/alice/wiechula/calib/guiTrees. More... | |
static const Double_t | fgkOFCRadius = 254.5 |
Mean Radius of the Outer Field Cage (252.55 min, 256.45 max) (cm) More... | |
static const Double_t | fgkZOffSet = 0.2 |
Offset from CE: calculate all distortions closer to CE as if at this point. More... | |
static const Double_t | fgkCathodeV = -100000.0 |
Cathode Voltage (volts) More... | |
static const Double_t | fgkGG = -70.0 |
Gating Grid voltage (volts) More... | |
static const Double_t | fgkdvdE = 0.0024 |
[cm/V] drift velocity dependency on the E field (from Magboltz for NeCO2N2 at standard environment) More... | |
static const Double_t | fgkEM = -1.602176487e-19/9.10938215e-31 |
charge/mass in [C/kg] More... | |
static const Double_t | fgke0 = 8.854187817e-12 |
vacuum permittivity [A·s/(V·m)] More... | |
static TObjArray * | fgVisualCorrection =0 |
array of orrection for visualization More... | |
This class calculates the space point distortions due to residual voltage errors on the main boundaries of the TPC. For example, the inner vessel of the TPC is shifted by a certain amount, whereas the ROCs on the A side and the C side follow this mechanical shift (at the inner vessel) in z direction. This example can be named "conical deformation" of the TPC field cage (see example below).
The boundary conditions can be set via two arrays (A and C side) which contain the residual voltage setting modeling a possible shift or an inhomogeneity on the TPC field cage. In order to avoid that the user splits the Central Electrode (CE), the settings for the C side is taken from the array on the A side (points: A.6 and A.7). The region betweem the points is interpolated linearly onto the boundaries.
The class uses the PoissonRelaxation2D (see AliTPCCorrection) to calculate the resulting electrical field inhomogeneities in the (r,z)-plane. Then, the Langevin-integral formalism is used to calculate the space point distortions. Note: This class assumes a homogeneous magnetic field.
One has two possibilities when calculating the $dz$ distortions. The resulting distortions are purely due to the change of the drift velocity (along with the change of the drift field) when the SetROCDisplacement is FALSE. This emulates for example a Gating-Grid Voltage offset without moving the ROCs. When the flag is set to TRUE, the ROCs are assumed to be misaligned and the corresponding offset in z is added.
AliTPCBoundaryVoltError class
Definition at line 17 of file AliTPCBoundaryVoltError.h.
|
private |
Enumerator | |
---|---|
kRows |
Definition at line 68 of file AliTPCBoundaryVoltError.h.
|
private |
Enumerator | |
---|---|
kColumns |
Definition at line 69 of file AliTPCBoundaryVoltError.h.
|
private |
Enumerator | |
---|---|
kIterations |
Definition at line 70 of file AliTPCBoundaryVoltError.h.
AliTPCBoundaryVoltError::AliTPCBoundaryVoltError | ( | ) |
Definition at line 62 of file AliTPCBoundaryVoltError.cxx.
|
virtual |
default destructor
Definition at line 77 of file AliTPCBoundaryVoltError.cxx.
|
virtual |
Add correction and make them compact Assumptions:
Reimplemented from AliTPCCorrection.
Definition at line 85 of file AliTPCBoundaryVoltError.cxx.
|
inline |
Definition at line 40 of file AliTPCBoundaryVoltError.h.
Referenced by TestCorrection_AliTPCBoundaryVoltErrorAddCorrectionCompact().
|
inline |
Definition at line 41 of file AliTPCBoundaryVoltError.h.
Referenced by TestCorrection_AliTPCBoundaryVoltErrorAddCorrectionCompact().
|
inline |
Definition at line 34 of file AliTPCBoundaryVoltError.h.
|
inline |
Definition at line 35 of file AliTPCBoundaryVoltError.h.
|
protectedvirtual |
Calculates the correction due e.g. residual voltage errors on the TPC boundaries
Reimplemented from AliTPCCorrection.
Definition at line 150 of file AliTPCBoundaryVoltError.cxx.
Referenced by GetROCDisplacement().
|
inline |
Definition at line 46 of file AliTPCBoundaryVoltError.h.
|
virtual |
Initialization funtion
Reimplemented from AliTPCCorrection.
Definition at line 115 of file AliTPCBoundaryVoltError.cxx.
void AliTPCBoundaryVoltError::InitBoundaryVoltErrorDistortion | ( | ) |
Initialization of the Lookup table which contains the solutions of the Dirichlet boundary problem
Definition at line 204 of file AliTPCBoundaryVoltError.cxx.
Referenced by GetCorrection(), GetROCDisplacement(), Init(), and RegisterAliTPCBoundaryVoltError().
|
virtual |
Print function to check the settings of the boundary vectors option=="a" prints the C0 and C1 coefficents for calibration purposes
Definition at line 382 of file AliTPCBoundaryVoltError.cxx.
Referenced by GetROCDisplacement(), and RegisterAliTPCBoundaryVoltError().
void AliTPCBoundaryVoltError::SetBoundariesA | ( | Float_t | boundariesA[8] | ) |
set voltage errors on the TPC boundaries - A side
Start at IFC at the Central electrode and work anti-clockwise (clockwise for C side) through IFC, ROC, OFC, and CE. The boundary conditions are currently defined to be a linear interpolation between pairs of numbers in the Boundary (e.g. fBoundariesA) vector. The first pair of numbers represent the beginning and end of the Inner Field cage, etc. The unit of the error potential vector is [Volt], whereas 1mm shift of the IFC would correspond to ~ 40 V
Note: The setting for the CE will be passed to the C side!
Definition at line 419 of file AliTPCBoundaryVoltError.cxx.
Referenced by GetC1(), RegisterAliTPCBoundaryVoltError(), and TestCorrection_AliTPCBoundaryVoltErrorAddCorrectionCompact().
void AliTPCBoundaryVoltError::SetBoundariesC | ( | Float_t | boundariesC[6] | ) |
set voltage errors on the TPC boundaries - C side
Start at IFC at the Central electrode and work clockwise (for C side) through IFC, ROC and OFC. The boundary conditions are currently defined to be a linear interpolation between pairs of numbers in the Boundary (e.g. fBoundariesC) vector. The first pair of numbers represent the beginning and end of the Inner Field cage, etc. The unit of the error potential vector is [Volt], whereas 1mm shift of the IFC would correspond to ~ 40 V
Note: The setting for the CE will be taken from the A side (pos 6 and 7)!
Definition at line 437 of file AliTPCBoundaryVoltError.cxx.
Referenced by GetC1(), and RegisterAliTPCBoundaryVoltError().
|
inline |
Definition at line 33 of file AliTPCBoundaryVoltError.h.
|
inlinevirtual |
Reimplemented from AliTPCCorrection.
Definition at line 28 of file AliTPCBoundaryVoltError.h.
Referenced by Init(), RegisterAliTPCBoundaryVoltError(), and Update().
|
inline |
Definition at line 43 of file AliTPCBoundaryVoltError.h.
|
virtual |
Update function
Reimplemented from AliTPCCorrection.
Definition at line 132 of file AliTPCBoundaryVoltError.cxx.
|
private |
Boundary values on the A side (see Setter function)
Definition at line 58 of file AliTPCBoundaryVoltError.h.
Referenced by AddCorrectionCompact(), GetBoundariesA(), InitBoundaryVoltErrorDistortion(), Print(), and SetBoundariesA().
|
private |
Boundary values on the C side (see Setter function)
Definition at line 59 of file AliTPCBoundaryVoltError.h.
Referenced by AddCorrectionCompact(), GetBoundariesC(), InitBoundaryVoltErrorDistortion(), Print(), SetBoundariesA(), and SetBoundariesC().
|
private |
coefficient C0 (compare Jim Thomas's notes for definitions)
Definition at line 56 of file AliTPCBoundaryVoltError.h.
Referenced by GetC0(), GetCorrection(), Print(), SetC0C1(), and SetOmegaTauT1T2().
|
private |
coefficient C1 (compare Jim Thomas's notes for definitions)
Definition at line 57 of file AliTPCBoundaryVoltError.h.
Referenced by GetC1(), GetCorrection(), Print(), SetC0C1(), and SetOmegaTauT1T2().
|
private |
flag to check it the Look Up table was created
Definition at line 62 of file AliTPCBoundaryVoltError.h.
Referenced by GetCorrection(), InitBoundaryVoltErrorDistortion(), Print(), SetBoundariesA(), SetBoundariesC(), and SetROCDisplacement().
Array to store electric field integral (int Delta Ez)
Definition at line 65 of file AliTPCBoundaryVoltError.h.
Referenced by GetCorrection(), and InitBoundaryVoltErrorDistortion().
Array to store electric field integral (int Er/Ez)
Definition at line 64 of file AliTPCBoundaryVoltError.h.
Referenced by GetCorrection(), and InitBoundaryVoltErrorDistortion().
|
private |
flag for ROC displacement (important for z distortions)
Definition at line 61 of file AliTPCBoundaryVoltError.h.
Referenced by AddCorrectionCompact(), GetROCDisplacement(), InitBoundaryVoltErrorDistortion(), and SetROCDisplacement().