ROOT logo
AliRoot » TPC » BASE » AliTPCFCVoltError3D

class AliTPCFCVoltError3D: public AliTPCCorrection



AliTPCFCVoltError3D class

The class calculates the space point distortions due to residual voltage errors on the Field Cage (FC) boundaries (rods and strips) of the TPC in 3D. It uses the Poisson relaxation technique in three dimension as implemented in the parent class.

Although the calculation is performed in 3D, the calculation time was significantly reduced by using certain symmetry conditions within the calculation.

The input parameters can be set via the functions (e.g.) SetRodVoltShift(rod,dV) where rod is the number of the rod on which the voltage offset dV is set. The corresponding shift in z direction would be $dz=dV/40$ with an opposite sign for the C side. The rods are numbered in anti-clock-wise direction starting at $\phi=0$. Rods in the IFC are from 0 to 17, rods on the OFC go from 18 to 35.
This convention is following the offline numbering scheme of the ROCs.

Different misalignment scenarios can be modeled:

  • A rotated clip scenario is only possible at two positions (Rod 11 at IFC, rod 3(+18) at OFC) and can be set via SetRotatedClipVolt. The key feature is that at the mentioned positions, the strip-ends were combined. At these positions, a systematic offset of one strip-end in respect to the other is possible.
  • A normal rod offset, where the strips follow the movement of the rod, can be set via SetRodVoltShift. It has a anti-mirrored signature in terms of distortions when compared to the rotated clip. This misalignment is possible at each single rod of the FC.
  • A simple rod offset, where the strips do not follow the shift, results in an even more localized distortion close to the rod. The difference to a rod shift, where the strips follow, is more dominant on the OFC. This effect can be set via the function SetCopperRodShift.


output of MACRO_AliTPCFCVoltError3D_1_cAliTPCVoltError3D
   {
   gROOT->SetStyle("Plain"); gStyle->SetPalette(1);
   TCanvas *c2 = new TCanvas("cAliTPCVoltError3D","cAliTPCVoltError3D",500,450); 
   AliTPCFCVoltError3D fc;
   fc.SetOmegaTauT1T2(0,1,1); 
   fc.SetRotatedClipVoltA(0,40);
   fc.SetRodVoltShiftA(3,40); 
   fc.SetCopperRodShiftA(7+18,40);
   fc.SetRodVoltShiftA(15+18,40); 
   fc.CreateHistoDRPhiinXY(10)->Draw("cont4z");
   return c2;
   } 
 


Date: 08/08/2010
Authors: Jim Thomas, Stefan Rossegger


Function Members (Methods)

public:
AliTPCFCVoltError3D()
virtual~AliTPCFCVoltError3D()
voidTObject::AbstractMethod(const char* method) const
virtual Bool_tAddCorrectionCompact(AliTPCCorrection* corr, Double_t weight)
static voidAliTPCCorrection::AddVisualCorrection(AliTPCCorrection* corr, Int_t position)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
voidAliTPCCorrection::CorrectPoint(Float_t* x, Short_t roc)
voidAliTPCCorrection::CorrectPoint(const Float_t* x, Short_t roc, Float_t* xp)
voidAliTPCCorrection::CorrectPointLocal(Float_t* x, Short_t roc)
TTree*AliTPCCorrection::CreateDistortionTree(Double_t step = 5)
TH2F*AliTPCCorrection::CreateHistoDRinXY(Float_t z = 10., Int_t nx = 100, Int_t ny = 100)
TH2F*AliTPCCorrection::CreateHistoDRinZR(Float_t phi = 0., Int_t nZ = 100, Int_t nR = 100)
TH2F*AliTPCCorrection::CreateHistoDRPhiinXY(Float_t z = 10., Int_t nx = 100, Int_t nphi = 100)
TH2F*AliTPCCorrection::CreateHistoDRPhiinZR(Float_t phi = 0., Int_t nZ = 100, Int_t nR = 100)
TH2F*AliTPCCorrection::CreateHistoDZinXY(Float_t z = 10., Int_t nx = 100, Int_t ny = 100)
TH2F*AliTPCCorrection::CreateHistoDZinZR(Float_t phi = 0., Int_t nZ = 100, Int_t nR = 100)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
voidAliTPCCorrection::DistortPoint(Float_t* x, Short_t roc)
voidAliTPCCorrection::DistortPoint(const Float_t* x, Short_t roc, Float_t* xp)
voidAliTPCCorrection::DistortPointLocal(Float_t* x, Short_t roc)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
voidAliTPCCorrection::FastSimDistortedVertex(Double_t* orgVertex, Int_t nTracks, AliESDVertex& aV, AliESDVertex& avOrg, AliESDVertex& cV, AliESDVertex& cvOrg, TTreeSRedirector *const pcstream, Double_t etaCuts)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
AliExternalTrackParam*AliTPCCorrection::FitDistortedTrack(AliExternalTrackParam& trackIn, Double_t refX, Int_t dir, TTreeSRedirector* pcstream)
voidForceInitFCVoltError3D()
Float_tGetC0() const
Float_tGetC1() const
Float_tGetCopperRodShiftA(Int_t i) const
Float_tGetCopperRodShiftC(Int_t i) const
virtual voidAliTPCCorrection::GetCorrectionDz(const Float_t* x, Short_t roc, Float_t* dx, Float_t delta)
virtual voidAliTPCCorrection::GetCorrectionIntegralDz(const Float_t* x, Short_t roc, Float_t* dx, Float_t delta)
virtual Float_tAliTPCCorrection::GetCorrScaleFactor() const
static Double_tAliTPCCorrection::GetCorrSector(Double_t sector, Double_t r, Double_t kZ, Int_t axisType, Int_t corrType = 0)
static Double_tAliTPCCorrection::GetCorrXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType = 0)
static Double_tAliTPCCorrection::GetCorrXYZDz(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType = 0, Double_t delta = 5)
static Double_tAliTPCCorrection::GetCorrXYZIntegrateZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType = 0, Double_t delta = 5)
virtual voidAliTPCCorrection::GetDistortion(const Float_t* x, Short_t roc, Float_t* dx)
virtual voidAliTPCCorrection::GetDistortionDz(const Float_t* x, Short_t roc, Float_t* dx, Float_t delta)
virtual voidAliTPCCorrection::GetDistortionIntegralDz(const Float_t* x, Short_t roc, Float_t* dx, Float_t delta)
static Double_tAliTPCCorrection::GetDistXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType = 0)
static Double_tAliTPCCorrection::GetDistXYZDz(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType = 0, Double_t delta = 5)
static Double_tAliTPCCorrection::GetDistXYZIntegrateZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType = 0, Double_t delta = 5)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetRodVoltShiftA(Int_t i) const
Float_tGetRodVoltShiftC(Int_t i) const
Float_tGetRotatedClipVoltA(Int_t i) const
Float_tGetRotatedClipVoltC(Int_t i) const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
static AliTPCCorrection*AliTPCCorrection::GetVisualCorrection(Int_t position)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidInit()
voidInitFCVoltError3D()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
static voidAliTPCCorrection::MakeDistortionMap(THnSparse* his0, TTreeSRedirector* pcstream, const char* hname, Int_t run, Float_t refX, Int_t type, Int_t integ = 1)
static voidAliTPCCorrection::MakeDistortionMapCosmic(THnSparse* his0, TTreeSRedirector* pcstream, const char* hname, Int_t run, Float_t refX, Int_t type)
static voidAliTPCCorrection::MakeDistortionMapSector(THnSparse* his0, TTreeSRedirector* pcstream, const char* hname, Int_t run, Int_t type)
static voidAliTPCCorrection::MakeLaserDistortionTree(TTree* tree, TObjArray* corrArray, Int_t itype)
static voidAliTPCCorrection::MakeLaserDistortionTreeOld(TTree* tree, TObjArray* corrArray, Int_t itype)
static voidAliTPCCorrection::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 voidAliTPCCorrection::MakeTrackDistortionTree(TTree* tinput, Int_t dtype, Int_t ptype, const TObjArray* corrArray, Int_t step = 1, Int_t offset = 0, Bool_t debug = 0)
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetC0C1(Float_t c0, Float_t c1)
voidSetCopperRodShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
voidSetCopperRodShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
virtual voidAliTPCCorrection::SetCorrScaleFactor(Float_t)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidSetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
voidSetRodVoltShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
voidSetRodVoltShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
voidSetRotatedClipVoltA(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
voidSetRotatedClipVoltC(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
voidAliTPCCorrection::StoreInOCDB(Int_t startRun, Int_t endRun, const char* comment = 0)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidUpdate(const TTimeStamp& timeStamp)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
TH2F*AliTPCCorrection::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)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidGetCorrection(const Float_t* x, const Short_t roc, Float_t* dx)
Double_tAliTPCCorrection::Interpolate(const Double_t* xArray, const Double_t* yArray, Int_t order, Double_t x)
Float_tAliTPCCorrection::Interpolate(const Double_t* xArray, const Float_t* yArray, Int_t order, Double_t x)
voidAliTPCCorrection::Interpolate2DEdistortion(Int_t order, Double_t r, Double_t z, const Double_t er[][kNR], Double_t& erValue)
Double_tAliTPCCorrection::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)
Float_tAliTPCCorrection::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)
voidAliTPCCorrection::Interpolate3DEdistortion(Int_t order, Double_t r, Float_t phi, Double_t z, const Double_t er[][kNPhi][kNR], const Double_t ephi[][kNPhi][kNR], const Double_t ez[][kNPhi][kNR], Double_t& erValue, Double_t& ephiValue, Double_t& ezValue)
Double_tAliTPCCorrection::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)
Float_tAliTPCCorrection::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)
Bool_tAliTPCCorrection::IsLocal() const
virtual Int_tAliTPCCorrection::IsPowerOfTwo(Int_t i) const
voidTObject::MakeZombie()
voidAliTPCCorrection::PoissonRelaxation2D(TMatrixD& arrayV, TMatrixD& chargeDensity, TMatrixD& arrayErOverEz, TMatrixD& arrayDeltaEz, Int_t rows, Int_t columns, Int_t iterations, Bool_t rocDisplacement = kTRUE)
voidAliTPCCorrection::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)
voidAliTPCCorrection::Search(Int_t n, const Double_t* xArray, Double_t x, Int_t& low)
voidAliTPCCorrection::SetIsLocal(Bool_t isLocal)

Data Members

public:
enum { kRows
kColumns
kPhiSlicesPerSector
kPhiSlices
kIterations
};
enum AliTPCCorrection::CompositionType { kParallel
kQueue
};
enum AliTPCCorrection::[unnamed] { kNR
kNPhi
kNZ
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Int_tAliTPCCorrection::fILow
Bool_tAliTPCCorrection::fIsLocalswitch to indicate that the distortion is a local vector drphi/dz, dr/dz
Int_tAliTPCCorrection::fJLow
Int_tAliTPCCorrection::fKLowvariable to help in the interpolation
TStringTNamed::fNameobject identifier
Double_tAliTPCCorrection::fT1tensor term of wt - T1
Double_tAliTPCCorrection::fT2tensor term of wt - T2
TStringTNamed::fTitleobject title
static TObjArray*AliTPCCorrection::fgVisualCorrectionarray of orrection for visualization
static const Double_tAliTPCCorrection::fgkCathodeVCathode Voltage (volts)
static const Double_tAliTPCCorrection::fgkEMcharge/mass in [C/kg]
static const Double_tAliTPCCorrection::fgkGGGating Grid voltage (volts)
static const Double_tAliTPCCorrection::fgkIFCRadiusMean Radius of the Inner Field Cage ( 82.43 min, 83.70 max) (cm)
static const Double_tAliTPCCorrection::fgkOFCRadiusMean Radius of the Outer Field Cage (252.55 min, 256.45 max) (cm)
Double_tAliTPCCorrection::fgkPhiList[181]points in the phi direction (for the lookup table)
Double_tAliTPCCorrection::fgkRList[72]points in the radial direction (for the lookup table)
static const Double_tAliTPCCorrection::fgkTPCZ0nominal gating grid position
Double_tAliTPCCorrection::fgkZList[166]points in the z direction (for the lookup table)
static const Double_tAliTPCCorrection::fgkZOffSetOffset from CE: calculate all distortions closer to CE as if at this point
static const Double_tAliTPCCorrection::fgkdvdE[cm/V] drift velocity dependency on the E field (from Magboltz for NeCO2N2 at standard environment)
static const Double_tAliTPCCorrection::fgke0vacuum permittivity [A·s/(V·m)]
private:
Float_tfC0coefficient C0 (compare Jim Thomas's notes for definitions)
Float_tfC1coefficient C1 (compare Jim Thomas's notes for definitions)
Float_tfCopperRodShiftA[36]only Rod shift
Float_tfCopperRodShiftC[36]only Rod shift
Bool_tfInitLookUpflag to check if the Look Up table was created (SUM)
Bool_tfInitLookUpBasic[6]! flag if the basic lookup was created (shifted Rod (IFC,OFC) or rotated clip (IFC,OFC))
TMatrixD*fLookUpBasic1DeltaEz[31]! Array to store electric field integral (int Ez)
TMatrixD*fLookUpBasic1EphiOverEz[31]! Array to store electric field integral (int Ephi/Ez)
TMatrixD*fLookUpBasic1ErOverEz[31]! Array to store electric field integral (int Er/Ez)
TMatrixD*fLookUpBasic2DeltaEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic2EphiOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic2ErOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic3DeltaEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic3EphiOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic3ErOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic4DeltaEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic4EphiOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic4ErOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic5DeltaEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic5EphiOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic5ErOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic6DeltaEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic6EphiOverEz[31]! Array to store electric field integral
TMatrixD*fLookUpBasic6ErOverEz[31]! Array to store electric field integral
TMatrixF*fLookUpDeltaEz[181]Array to store electric field integral (int Er/Ez)
TMatrixF*fLookUpEphiOverEz[181]Array to store electric field integral (int Er/Ez)
TMatrixF*fLookUpErOverEz[181]Array to store electric field integral (int Er/Ez)
Float_tfRodVoltShiftA[36]Rod (&strips) shift in Volt (40V~1mm)
Float_tfRodVoltShiftC[36]Rod (&strips) shift in Volt (40V~1mm)
Float_tfRotatedClipVoltA[2]rotated clips at HV rod
Float_tfRotatedClipVoltC[2]rotated clips at HV rod

Class Charts

Inheritance Chart:
TNamed
AliTPCCorrection
AliTPCFCVoltError3D

Function documentation

AliTPCFCVoltError3D()
 default constructor

~AliTPCFCVoltError3D()
 destructor

Bool_t AddCorrectionCompact(AliTPCCorrection* corr, Double_t weight)
 Add correction  and make them compact
 Assumptions:
  - origin of distortion/correction are additive
  - only correction ot the same type supported ()
void Init()
 Initialization funtion

void Update(const TTimeStamp& timeStamp)
 Update function

void GetCorrection(const Float_t* x, const Short_t roc, Float_t* dx)
 Calculates the correction due e.g. residual voltage errors on the TPC boundaries

void InitFCVoltError3D()
 Initialization of the Lookup table which contains the solutions of the
 Dirichlet boundary problem
 Calculation of the single 3D-Poisson solver is done just if needed
 (see basic lookup tables in header file)

void Print(Option_t* option = "") const
 Print function to check the settings of the Rod shifts and the rotated clips
 option=="a" prints the C0 and C1 coefficents for calibration purposes

AliTPCFCVoltError3D()
void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
 common setters and getters for tangled ExB effect
void SetC0C1(Float_t c0, Float_t c1)
{fC0=c0;fC1=c1;}
Float_t GetC0() const
{return fC0;}
Float_t GetC1() const
{return fC1;}
void SetRodVoltShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
 setters and getters
 Set rod shift in Voltage equivalents (40V ~ 1mm)
 rod numbers: 0-17 (IFC), 18-35 (OFC)
 note: strips move accordingly
{fRodVoltShiftA[rod]=voltOffset; fInitLookUp=doInit;}
void SetRodVoltShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
{fRodVoltShiftC[rod]=voltOffset; fInitLookUp=doInit;}
Float_t GetRodVoltShiftA(Int_t i) const
{return fRodVoltShiftA[i];}
Float_t GetRodVoltShiftC(Int_t i) const
{return fRodVoltShiftC[i];}
void SetRotatedClipVoltA(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
 Set rotated clip (just at High Voltage RODs) in Voltage equivalents (40V ~ 1mm)
 rod number: 0 (IFC), 1 (OFC)
{fRotatedClipVoltA[rod]=voltOffset; fInitLookUp=doInit;}
void SetRotatedClipVoltC(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
{fRotatedClipVoltC[rod]=voltOffset; fInitLookUp=doInit;}
Float_t GetRotatedClipVoltA(Int_t i) const
{return fRotatedClipVoltA[i];}
Float_t GetRotatedClipVoltC(Int_t i) const
{return fRotatedClipVoltC[i];}
void SetCopperRodShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
 Set rod shift in Voltage equivalents (40V ~ 1mm)
 rod numbers: 0-17 (OFC)
 note: strips DO NOT move, only the copper rods do ...
{fCopperRodShiftA[rod]=voltOffset; fInitLookUp=doInit;}
void SetCopperRodShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit = kTRUE)
{fCopperRodShiftC[rod]=voltOffset; fInitLookUp=doInit;}
Float_t GetCopperRodShiftA(Int_t i) const
{return fCopperRodShiftA[i];}
Float_t GetCopperRodShiftC(Int_t i) const
{return fCopperRodShiftC[i];}
void ForceInitFCVoltError3D()
AliTPCFCVoltError3D & operator=(const AliTPCFCVoltError3D& )