#ifndef ALITPCFCVOLTERROR3D_H
#define ALITPCFCVOLTERROR3D_H
#include "AliTPCCorrection.h"
class AliTPCFCVoltError3D : public AliTPCCorrection {
public:
AliTPCFCVoltError3D();
virtual ~AliTPCFCVoltError3D();
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) {
fT1=t1; fT2=t2;
const Double_t wt0=t2*omegaTau; fC0=1./(1.+wt0*wt0);
const Double_t wt1=t1*omegaTau; fC1=wt1/(1.+wt1*wt1);
};
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) {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) {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) {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 InitFCVoltError3D();
void ForceInitFCVoltError3D() { fInitLookUp=kFALSE; InitFCVoltError3D(); }
virtual void Print(const Option_t* option="") const;
protected:
virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
private:
AliTPCFCVoltError3D(const AliTPCFCVoltError3D &);
AliTPCFCVoltError3D &operator=(const AliTPCFCVoltError3D &);
Float_t fC0;
Float_t fC1;
Float_t fRodVoltShiftA[36];
Float_t fRodVoltShiftC[36];
Float_t fRotatedClipVoltA[2];
Float_t fRotatedClipVoltC[2];
Float_t fCopperRodShiftA[36];
Float_t fCopperRodShiftC[36];
Bool_t fInitLookUp;
Bool_t fInitLookUpBasic[6];
TMatrixF *fLookUpErOverEz[kNPhi];
TMatrixF *fLookUpEphiOverEz[kNPhi];
TMatrixF *fLookUpDeltaEz[kNPhi];
enum {kRows =257};
enum {kColumns=129};
enum {kPhiSlicesPerSector = 10 };
enum {kPhiSlices = 1+kPhiSlicesPerSector*3 };
enum {kIterations=100};
TMatrixD *fLookUpBasic1ErOverEz[kPhiSlices];
TMatrixD *fLookUpBasic1EphiOverEz[kPhiSlices];
TMatrixD *fLookUpBasic1DeltaEz[kPhiSlices];
TMatrixD *fLookUpBasic2ErOverEz[kPhiSlices];
TMatrixD *fLookUpBasic2EphiOverEz[kPhiSlices];
TMatrixD *fLookUpBasic2DeltaEz[kPhiSlices];
TMatrixD *fLookUpBasic3ErOverEz[kPhiSlices];
TMatrixD *fLookUpBasic3EphiOverEz[kPhiSlices];
TMatrixD *fLookUpBasic3DeltaEz[kPhiSlices];
TMatrixD *fLookUpBasic4ErOverEz[kPhiSlices];
TMatrixD *fLookUpBasic4EphiOverEz[kPhiSlices];
TMatrixD *fLookUpBasic4DeltaEz[kPhiSlices];
TMatrixD *fLookUpBasic5ErOverEz[kPhiSlices];
TMatrixD *fLookUpBasic5EphiOverEz[kPhiSlices];
TMatrixD *fLookUpBasic5DeltaEz[kPhiSlices];
TMatrixD *fLookUpBasic6ErOverEz[kPhiSlices];
TMatrixD *fLookUpBasic6EphiOverEz[kPhiSlices];
TMatrixD *fLookUpBasic6DeltaEz[kPhiSlices];
ClassDef(AliTPCFCVoltError3D,3);
};
#endif
AliTPCFCVoltError3D.h:100 AliTPCFCVoltError3D.h:101 AliTPCFCVoltError3D.h:102 AliTPCFCVoltError3D.h:103 AliTPCFCVoltError3D.h:104 AliTPCFCVoltError3D.h:105 AliTPCFCVoltError3D.h:106 AliTPCFCVoltError3D.h:107 AliTPCFCVoltError3D.h:108 AliTPCFCVoltError3D.h:109 AliTPCFCVoltError3D.h:110 AliTPCFCVoltError3D.h:111 AliTPCFCVoltError3D.h:112 AliTPCFCVoltError3D.h:113 AliTPCFCVoltError3D.h:114 AliTPCFCVoltError3D.h:115 AliTPCFCVoltError3D.h:116 AliTPCFCVoltError3D.h:117 AliTPCFCVoltError3D.h:118 AliTPCFCVoltError3D.h:119 AliTPCFCVoltError3D.h:120 AliTPCFCVoltError3D.h:121 AliTPCFCVoltError3D.h:122 AliTPCFCVoltError3D.h:123 AliTPCFCVoltError3D.h:124 AliTPCFCVoltError3D.h:125 AliTPCFCVoltError3D.h:126 AliTPCFCVoltError3D.h:127 AliTPCFCVoltError3D.h:128 AliTPCFCVoltError3D.h:129 AliTPCFCVoltError3D.h:130 AliTPCFCVoltError3D.h:131 AliTPCFCVoltError3D.h:132 AliTPCFCVoltError3D.h:133