#ifndef ALITPCROCVOLTERROR3D_H
#define ALITPCROCVOLTERROR3D_H
#include "AliTPCCorrection.h"
#include "TH2F.h"
class AliTPCROCVoltError3D : public AliTPCCorrection {
public:
AliTPCROCVoltError3D();
virtual ~AliTPCROCVoltError3D();
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 SetROCData(TMatrixD * matrix);
void SetROCDataFileName(const char * fname);
const Char_t* GetROCDataFileName() const {return fROCDataFileName.Data();}
void SetROCDisplacement(Bool_t flag) {
if (flag!=fROCdisplacement) { fROCdisplacement = flag; fInitLookUp=kFALSE; }
}
Bool_t GetROCDisplacement() const { return fROCdisplacement; }
void SetElectronArrivalCorrection(Bool_t flag) {
if (flag!=fElectronArrivalCorrection) { fElectronArrivalCorrection = flag; fInitLookUp=kFALSE; }
}
Bool_t GetElectronArrivalCorrection() const { return fElectronArrivalCorrection; }
void InitROCVoltError3D();
void ForceInitROCVoltError3D() { fInitLookUp=kFALSE; InitROCVoltError3D(); };
Float_t GetROCVoltOffset(Int_t side, Float_t r0, Float_t phi0);
TH2F* CreateHistoOfZAlignment(Int_t side, Int_t nx=250, Int_t ny=250);
virtual void Print(const Option_t* option="") const;
TMatrixD *GetMatrix() const {return fdzDataLinFit;}
protected:
virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
private:
AliTPCROCVoltError3D(const AliTPCROCVoltError3D &);
AliTPCROCVoltError3D &operator=(const AliTPCROCVoltError3D &);
Float_t fC0;
Float_t fC1;
Bool_t fROCdisplacement;
Bool_t fElectronArrivalCorrection;
Bool_t fInitLookUp;
TMatrixF *fLookUpErOverEz[kNPhi];
TMatrixF *fLookUpEphiOverEz[kNPhi];
TMatrixF *fLookUpDeltaEz[kNPhi];
TString fROCDataFileName;
TMatrixD *fdzDataLinFit;
enum {kRows =257};
enum {kColumns=129};
enum {kPhiSlicesPerSector=10};
enum {kPhiSlices = 18*kPhiSlicesPerSector };
enum {kIterations=100};
ClassDef(AliTPCROCVoltError3D,2);
};
#endif
AliTPCROCVoltError3D.h:10 AliTPCROCVoltError3D.h:11 AliTPCROCVoltError3D.h:12 AliTPCROCVoltError3D.h:13 AliTPCROCVoltError3D.h:14 AliTPCROCVoltError3D.h:15 AliTPCROCVoltError3D.h:16 AliTPCROCVoltError3D.h:17 AliTPCROCVoltError3D.h:18 AliTPCROCVoltError3D.h:19 AliTPCROCVoltError3D.h:20 AliTPCROCVoltError3D.h:21 AliTPCROCVoltError3D.h:22 AliTPCROCVoltError3D.h:23 AliTPCROCVoltError3D.h:24 AliTPCROCVoltError3D.h:25 AliTPCROCVoltError3D.h:26 AliTPCROCVoltError3D.h:27 AliTPCROCVoltError3D.h:28 AliTPCROCVoltError3D.h:29 AliTPCROCVoltError3D.h:30 AliTPCROCVoltError3D.h:31 AliTPCROCVoltError3D.h:32 AliTPCROCVoltError3D.h:33 AliTPCROCVoltError3D.h:34 AliTPCROCVoltError3D.h:35 AliTPCROCVoltError3D.h:36 AliTPCROCVoltError3D.h:37 AliTPCROCVoltError3D.h:38 AliTPCROCVoltError3D.h:39 AliTPCROCVoltError3D.h:40 AliTPCROCVoltError3D.h:41 AliTPCROCVoltError3D.h:42 AliTPCROCVoltError3D.h:43 AliTPCROCVoltError3D.h:44 AliTPCROCVoltError3D.h:45 AliTPCROCVoltError3D.h:46 AliTPCROCVoltError3D.h:47 AliTPCROCVoltError3D.h:48 AliTPCROCVoltError3D.h:49 AliTPCROCVoltError3D.h:50 AliTPCROCVoltError3D.h:51 AliTPCROCVoltError3D.h:52 AliTPCROCVoltError3D.h:53 AliTPCROCVoltError3D.h:54 AliTPCROCVoltError3D.h:55 AliTPCROCVoltError3D.h:56 AliTPCROCVoltError3D.h:57 AliTPCROCVoltError3D.h:58 AliTPCROCVoltError3D.h:59 AliTPCROCVoltError3D.h:60 AliTPCROCVoltError3D.h:61 AliTPCROCVoltError3D.h:62 AliTPCROCVoltError3D.h:63 AliTPCROCVoltError3D.h:64 AliTPCROCVoltError3D.h:65 AliTPCROCVoltError3D.h:66 AliTPCROCVoltError3D.h:67 AliTPCROCVoltError3D.h:68 AliTPCROCVoltError3D.h:69 AliTPCROCVoltError3D.h:70 AliTPCROCVoltError3D.h:71 AliTPCROCVoltError3D.h:72 AliTPCROCVoltError3D.h:73 AliTPCROCVoltError3D.h:74 AliTPCROCVoltError3D.h:75 AliTPCROCVoltError3D.h:76 AliTPCROCVoltError3D.h:77 AliTPCROCVoltError3D.h:78 AliTPCROCVoltError3D.h:79 AliTPCROCVoltError3D.h:80 AliTPCROCVoltError3D.h:81 AliTPCROCVoltError3D.h:82 AliTPCROCVoltError3D.h:83 AliTPCROCVoltError3D.h:84 AliTPCROCVoltError3D.h:85 AliTPCROCVoltError3D.h:86 AliTPCROCVoltError3D.h:87 AliTPCROCVoltError3D.h:88 AliTPCROCVoltError3D.h:89 AliTPCROCVoltError3D.h:90 AliTPCROCVoltError3D.h:91 AliTPCROCVoltError3D.h:92 AliTPCROCVoltError3D.h:93 AliTPCROCVoltError3D.h:94 AliTPCROCVoltError3D.h:95 AliTPCROCVoltError3D.h:96 AliTPCROCVoltError3D.h:97 AliTPCROCVoltError3D.h:98 AliTPCROCVoltError3D.h:99