ROOT logo
AliRoot » TPC » REC » AliTPCClusterParam

class AliTPCClusterParam: public TObject


  TPC cluster error, shape and charge parameterization as function
of drift length, and inclination angle

  Following notation is used in following
  Int_t dim 0 - y direction
            1 - z direction

  Int_t type 0 - short pads
             1 - medium pads
             2 - long pads
  Float_t z    - drift length

  Float_t angle - tangent of inclination angle at given dimension

  Implemented parameterization


  1. Resolution as function of drift length and inclination angle
     1.a) GetError0(Int_t dim, Int_t type, Float_t z, Float_t angle)
          Simple error parameterization as derived from analytical formula
          only linear term in drift length and angle^2
          The formula is valid only with precission +-5%
          Separate parameterization for differnt pad geometry
     1.b) GetError0Par
          Parabolic term correction - better precision

     1.c) GetError1 - JUST FOR Study
          Similar to GetError1
          The angular and diffusion effect is scaling with pad length
          common parameterization for different pad length

  2. Error parameterization using charge
     2.a) GetErrorQ
          GetError0+
          adding 1/Q component to diffusion and angluar part
     2.b) GetErrorQPar
          GetError0Par+
          adding 1/Q component to diffusion and angluar part
     2.c) GetErrorQParScaled - Just for study
          One parameterization for all pad shapes
          Smaller precission as previous one


  Example how to retrieve the paramterization:

      AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
      AliCDBManager::Instance()->SetRun(0)
      AliTPCClusterParam * param = AliTPCcalibDB::Instance()->GetClusterParam();

      //
      //
      AliTPCClusterParam::SetInstance(param);
      TF1 f1("f1","AliTPCClusterParam::SGetError0Par(1,0,x,0)",0,250);

Function Members (Methods)

public:
AliTPCClusterParam()
AliTPCClusterParam(const AliTPCClusterParam& param)
virtual~AliTPCClusterParam()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
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)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidFitData(TTree* tree)
voidFitResol(TTree* tree)
voidFitResol0(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
voidFitResol0Par(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
voidFitResol1(TTree* tree, Int_t dim, Float_t* param0, Float_t* error)
voidFitResolQ(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
voidFitResolQPar(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
voidFitRMS(TTree* tree)
voidFitRMS0(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
voidFitRMS1(TTree* tree, Int_t dim, Float_t* param0, Float_t* error)
voidFitRMSQ(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
voidFitRMSSigma(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
static Double_tGaussConvolution(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1)
static Double_tGaussConvolutionGamma4(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1, Double_t tau)
static Double_tGaussConvolutionTail(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1, Double_t tau)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Float_tGetError0(Int_t dim, Int_t type, Float_t z, Float_t angle) const
Float_tGetError0Par(Int_t dim, Int_t type, Float_t z, Float_t angle) const
Float_tGetError1(Int_t dim, Int_t type, Float_t z, Float_t angle) const
Float_tGetErrorQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
Float_tGetErrorQPar(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
Float_tGetErrorQParScaled(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetQnormCorr(Int_t ipad, Int_t itype, Int_t corrType) const
TMatrixD*GetQnormCorrMatrix()
const THnBase*GetResolutionYMap() const
Float_tGetRMS0(Int_t dim, Int_t type, Float_t z, Float_t angle) const
Float_tGetRMS1(Int_t dim, Int_t type, Float_t z, Float_t angle) const
Float_tGetRMSQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
Float_tGetRMSSigma(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
Float_tGetShapeFactor(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean, Float_t rmsL, Float_t rmsM) const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Float_tGetWaveCorrection(Int_t Type, Float_t Z, Int_t QMax, Float_t Pad, Float_t angleY) const
const THnBase*GetWaveCorrectionMap() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::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 voidTObject::Inspect() constMENU
static AliTPCClusterParam*Instance()
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_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
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)
AliTPCClusterParam&operator=(const AliTPCClusterParam& param)
virtual voidTObject::Paint(Option_t* option = "")
Float_tParamS0Par(Int_t i, Int_t j, Int_t k) const
virtual voidTObject::Pop()
Float_tPosCorrection(Int_t type, Int_t ipad, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm)
TVectorD*&PosYcor(Int_t ind)
TVectorD*&PosZcor(Int_t ind)
virtual voidPrint(Option_t* option = "") const
static Double_tQmaxCorrection(Int_t sector, Int_t row, Float_t cpad, Float_t ctime, Float_t ky, Float_t kz, Float_t rmsy0, Float_t rmsz0, Float_t effLength = 0, Float_t effDiff = 1)
Float_tQnorm(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
Float_tQnormHis(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
Float_tQnormPos(Int_t ipad, Bool_t isMax, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm, Float_t qt)
TVectorD*QpadMnorm() const
TVectorD*QpadTnorm() const
static Double_tQtotCorrection(Int_t sector, Int_t row, Float_t cpad, Float_t ctime, Float_t ky, Float_t kz, Float_t rmsy0, Float_t rmsz0, Float_t qtot, Float_t thr, Float_t effLength = 0, Float_t effDiff = 1)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
voidResetQnormCorr()
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)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetInstance(AliTPCClusterParam *const param)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetQnorm(Int_t ipad, Int_t itype, const TVectorD *const norm)
voidSetQnormCorr(Int_t ipad, Int_t itype, Int_t corrType, Float_t val, Int_t mode = 1)
voidSetResolutionYMap(THnBase* ResolutionYMap)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetWaveCorrectionMap(THnBase* WaveCorrectionMap)
static Float_tSGetError0(Int_t dim, Int_t type, Float_t z, Float_t angle)
static Float_tSGetError0Par(Int_t dim, Int_t type, Float_t z, Float_t angle)
static Float_tSGetError1(Int_t dim, Int_t type, Float_t z, Float_t angle)
static Float_tSGetErrorQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
static Float_tSGetErrorQPar(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
static Float_tSGetErrorQParScaled(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
static Float_tSGetRMS0(Int_t dim, Int_t type, Float_t z, Float_t angle)
static Float_tSGetRMS1(Int_t dim, Int_t type, Float_t z, Float_t angle)
static Float_tSGetRMSQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
static Float_tSGetRMSSigma(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
static Float_tSGetShapeFactor(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean, Float_t rmsL, Float_t rmsM)
static Float_tSGetWaveCorrection(Int_t Type, Float_t Z, Int_t QMax, Float_t Pad, Float_t angleY)
virtual voidShowMembers(TMemberInspector&)
static Float_tSPosCorrection(Int_t type, Int_t ipad, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm)
static Float_tSQnorm(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
static Float_tSQnormHis(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
static Float_tSQnormPos(Int_t ipad, Bool_t isMax, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm, Float_t qt)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
voidTest(TTree* tree, const char* output = "TestClusterParam.root")
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

protected:
Float_tfErrorRMS0[2][3][4]shape parameterization coeficients
Float_tfErrorRMS1[2][5]shape parameterization coeficients
Float_tfErrorRMSQ[2][3][6]shape parameterization coeficients
Float_tfErrorRMSSys[2]systematic relative error of the parametererization
Float_tfErrorS0[2][3][4]error parameterization coeficients
Float_tfErrorS0Par[2][3][7]error parameterization coeficients
Float_tfErrorS1[2][4]error parameterization coeficients
Float_tfErrorSQ[2][3][6]error parameterization coeficients
Float_tfErrorSQPar[2][3][9]error parameterization coeficients
Float_tfParamRMS0[2][3][4]shape parameterization coeficients
Float_tfParamRMS1[2][5]shape parameterization coeficients
Float_tfParamRMSQ[2][3][6]shape parameterization coeficients
Float_tfParamS0[2][3][4]error parameterization coeficients
Float_tfParamS0Par[2][3][7]error parameterization coeficients
Float_tfParamS1[2][4]error parameterization coeficients
Float_tfParamSQ[2][3][6]error parameterization coeficients
Float_tfParamSQPar[2][3][9]error parameterization coeficients
TVectorD*fPosQMnorm[3]q position normalization
TVectorD*fPosQTnorm[3]q position normalization
TVectorD*fPosYcor[3]position correction parameterization
TVectorD*fPosZcor[3]position correction parameterization
TObjArray*fQNormq norm paramters
TMatrixD*fQNormCorrq norm correction for analytica correction
TObjArray*fQNormHisq norm correction for analytical correction
TVectorD*fQpadMnormq pad normalization - Max charge
TVectorD*fQpadTnormq pad normalization - Total charge
Float_tfRMSSigmaFit[2][3][2]mean value of the varation of RMS to RMS
Float_tfRMSSigmaRatio[2][2]mean value of the varation of RMS to RMS
Float_tfRatioratio of values constibution to error
THnBase*fResolutionYMapMap of resolution in Y
THnBase*fWaveCorrectionMapdY with respect to the distance to the center of the pad
Bool_tfWaveCorrectionMirroredAngleflag is the Angle axis mirrored at 0
Bool_tfWaveCorrectionMirroredPadflag is the cog axis mirrored at 0.5
Bool_tfWaveCorrectionMirroredZflag is the Z axis mirrored at 0
static AliTPCClusterParam*fgInstance! Instance of this class (singleton implementation)

Class Charts

Inheritance Chart:
TObject
AliTPCClusterParam

Function documentation

AliTPCClusterParam* Instance()
 Singleton implementation
 Returns an instance of this class, it is created if neccessary

AliTPCClusterParam()

 Default constructor

AliTPCClusterParam(const AliTPCClusterParam& param)
 copy constructor

AliTPCClusterParam & operator=(const AliTPCClusterParam& param)
 Assignment operator

~AliTPCClusterParam()
 destructor

void FitResol0(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution

 Int_t dim=0, type=0;
void FitResol0Par(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution

 Int_t dim=0, type=0;
void FitResol1(TTree* tree, Int_t dim, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution - pad length scaling

 Int_t dim=0, type=0;
void FitResolQ(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution - Q scaling

 Int_t dim=0, type=0;
void FitResolQPar(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution - Q scaling  - parabolic correction

 Int_t dim=0, type=0;
void FitRMS0(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution

 Int_t dim=0, type=0;
void FitRMS1(TTree* tree, Int_t dim, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution - pad length scaling

 Int_t dim=0, type=0;
void FitRMSQ(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution - Q scaling

 Int_t dim=0, type=0;
void FitRMSSigma(TTree* tree, Int_t dim, Int_t type, Float_t* param0, Float_t* error)
 Fit z - angular dependence of resolution - Q scaling

 Int_t dim=0, type=0;
Float_t GetError0(Int_t dim, Int_t type, Float_t z, Float_t angle) const


Float_t GetError0Par(Int_t dim, Int_t type, Float_t z, Float_t angle) const


Float_t GetError1(Int_t dim, Int_t type, Float_t z, Float_t angle) const


Float_t GetErrorQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const


Float_t GetErrorQPar(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const


Float_t GetErrorQParScaled(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const


Float_t GetRMS0(Int_t dim, Int_t type, Float_t z, Float_t angle) const
 calculate mean RMS of cluster - z,angle - parameters for each pad and dimension separatelly

Float_t GetRMS1(Int_t dim, Int_t type, Float_t z, Float_t angle) const
 calculate mean RMS of cluster - z,angle - pad length scalling

Float_t GetRMSQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
 calculate mean RMS of cluster - z,angle, Q dependence

Float_t GetRMSSigma(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const
 calculates RMS of signal shape fluctuation

Float_t GetShapeFactor(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean, Float_t rmsL, Float_t rmsM) const
 calculates vallue - sigma distortion contribution

void FitData(TTree* tree)
 make fits for error param and shape param

void FitResol(TTree* tree)
void FitRMS(TTree* tree)
void Test(TTree* tree, const char* output = "TestClusterParam.root")
 Draw standard quality histograms to output file

void Print(Option_t* option = "") const
 Print param Information

Float_t Qnorm(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
 get Q normalization
 type - 0 Qtot 1 Qmax
 ipad - 0 (0.75 cm) ,1 (1 cm), 2 (1.5 cm)

expession formula - TString *strq0 = toolkit.FitPlane(chain,"dedxQ.fElements[2]","dr++ty++tz++dr*ty++dr*tz++++dr*dr++ty*tz++ty^2++tz^2","IPad==0",chi2,npoints,param,covar,0,100000);
Float_t QnormHis(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
 get Q normalization
 type - 0 Qtot 1 Qmax
 ipad - 0 (0.75 cm) ,1 (1 cm), 2 (1.5 cm)

void SetQnorm(Int_t ipad, Int_t itype, const TVectorD *const norm)
 set normalization

 type - 0 Qtot 1 Qmax
 ipad - 0 (0.75 cm) ,1 (1 cm), 2 (1.5 cm)

void ResetQnormCorr()


void SetQnormCorr(Int_t ipad, Int_t itype, Int_t corrType, Float_t val, Int_t mode = 1)
 ipad        - pad type
 itype       - 0- qtot 1-qmax
 corrType    - 0 - s0y corr     - eff. PRF corr
             - 1 - s0z corr     - eff. TRF corr
             - 2 - d0y          - eff. diffusion correction y
             - 3 - d0z          - eff. diffusion correction
             - 4 - eff length   - eff.length - wire pitch + x diffsion
             - 5 - pad type normalization
Double_t GetQnormCorr(Int_t ipad, Int_t itype, Int_t corrType) const
Float_t QnormPos(Int_t ipad, Bool_t isMax, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm, Float_t qt)
 Make Q normalization as function of following parameters
 Fit parameters to be used in corresponding correction function extracted in the AliTPCclaibTracksGain - Taylor expansion
 1 - dp   - relative pad position
 2 - dt   - relative time position
 3 - di   - drift length (norm to 1);
 4 - dq0  - Tot/Max charge
 5 - dq1  - Max/Tot charge
 6 - sy   - sigma y - shape
 7 - sz   - sigma z - shape

Float_t PosCorrection(Int_t type, Int_t ipad, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm)
Double_t GaussConvolution(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1)
 2 D gaus convoluted with angular effect
 See in mathematica:
Simplify[Integrate[Exp[-(x0-k0*xd)*(x0-k0*xd)/(2*s0*s0)-(x1-k1*xd)*(x1-k1*xd)/(2*s1*s1)]/(s0*s1),{xd,-1/2,1/2}]]

TF1 f1("f1","AliTPCClusterParam::GaussConvolution(x,0,1,0,0.1,0.1)",-2,2)
TF2 f2("f2","AliTPCClusterParam::GaussConvolution(x,y,1,1,0.1,0.1)",-2,2,-2,2)

Double_t GaussConvolutionTail(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1, Double_t tau)
 2 D gaus convoluted with angular effect and exponential tail in z-direction
 tail integrated numerically
 Integral normalized to one
 Mean at 0

 TF1 f1t("f1t","AliTPCClusterParam::GaussConvolutionTail(0,x,0,0,0.5,0.5,0.9)",-5,5)
Double_t GaussConvolutionGamma4(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1, Double_t tau)
 2 D gaus convoluted with angular effect and exponential tail in z-direction
 tail integrated numerically
 Integral normalized to one
 Mean at 0

 TF1 f1g4("f1g4","AliTPCClusterParam::GaussConvolutionGamma4(0,x,0,0,0.5,0.2,1.6)",-5,5)
 TF2 f2g4("f2g4","AliTPCClusterParam::GaussConvolutionGamma4(y,x,0,0,0.5,0.2,1.6)",-5,5,-5,5)
Double_t QmaxCorrection(Int_t sector, Int_t row, Float_t cpad, Float_t ctime, Float_t ky, Float_t kz, Float_t rmsy0, Float_t rmsz0, Float_t effLength = 0, Float_t effDiff = 1)

 cpad      - pad (y) coordinate
 ctime     - time(z) coordinate
 ky        - dy/dx
 kz        - dz/dx
 rmsy0     - RF width in pad units
 rmsz0     - RF width in time bin  units
 effLength - contibution of PRF and diffusion
 effDiff   - overwrite diffusion
Double_t QtotCorrection(Int_t sector, Int_t row, Float_t cpad, Float_t ctime, Float_t ky, Float_t kz, Float_t rmsy0, Float_t rmsz0, Float_t qtot, Float_t thr, Float_t effLength = 0, Float_t effDiff = 1)

 cpad      - pad (y) coordinate
 ctime     - time(z) coordinate
 ky        - dy/dx
 kz        - dz/dx
 rmsy0     - RF width in pad units
 rmsz0     - RF width in time bin  units
 qtot      - the sum of signal in cluster - without thr correction
 thr       - threshold
 effLength - contibution of PRF and diffusion
 effDiff   - overwrite diffusion
void SetWaveCorrectionMap(THnBase* WaveCorrectionMap)
 Set Correction Map for Y

void SetResolutionYMap(THnBase* ResolutionYMap)
 Set Resolution Map for Y

Float_t GetWaveCorrection(Int_t Type, Float_t Z, Int_t QMax, Float_t Pad, Float_t angleY) const
 Correct Y cluster coordinate using a map

void SetInstance(AliTPCClusterParam *const param)
 Seting functions

{fgInstance = param;}
TMatrixD * GetQnormCorrMatrix()
{return fQNormCorr;}
Float_t SQnormPos(Int_t ipad, Bool_t isMax, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm, Float_t qt)
{ return fgInstance->QnormPos(ipad,isMax,pad,time,z,sy2,sz2,qm,qt);;}
Float_t SPosCorrection(Int_t type, Int_t ipad, Float_t pad, Float_t time, Float_t z, Float_t sy2, Float_t sz2, Float_t qm)
 Error parameterization

{ return fgInstance->PosCorrection(type,ipad,pad,time,z,sy2,sz2,qm);}
const THnBase * GetWaveCorrectionMap() const
 Correction and resolution maps

{ return fWaveCorrectionMap; }
const THnBase * GetResolutionYMap() const
{ return fResolutionYMap; }
Float_t SGetWaveCorrection(Int_t Type, Float_t Z, Int_t QMax, Float_t Pad, Float_t angleY)


{return (fgInstance) ? fgInstance->GetWaveCorrection(Type,Z,QMax,Pad,angleY):0;}
Float_t SGetError0(Int_t dim, Int_t type, Float_t z, Float_t angle)
 static methods equivalents  - use instance of param object - useful for tree draw and TF2 visualization
Float_t SGetError0Par(Int_t dim, Int_t type, Float_t z, Float_t angle)
Float_t SGetError1(Int_t dim, Int_t type, Float_t z, Float_t angle)
Float_t SGetErrorQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
Float_t SGetErrorQPar(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
Float_t SGetErrorQParScaled(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
Float_t SGetRMS0(Int_t dim, Int_t type, Float_t z, Float_t angle)
Float_t SGetRMS1(Int_t dim, Int_t type, Float_t z, Float_t angle)
Float_t SGetRMSQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
Float_t SGetRMSSigma(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean)
Float_t SGetShapeFactor(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean, Float_t rmsL, Float_t rmsM)
Float_t SQnorm(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)

{return fgInstance->Qnorm(ipad, itype, dr,ty,tz);}
Float_t SQnormHis(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz)
{return fgInstance->QnormHis(ipad, itype, dr,ty,tz);}
TVectorD*& PosYcor(Int_t ind)
{return fPosYcor[ind];}
TVectorD*& PosZcor(Int_t ind)
{return fPosZcor[ind];}
Float_t ParamS0Par(Int_t i, Int_t j, Int_t k) const
{return fParamS0Par[i][j][k];}
TVectorD* QpadTnorm() const
{return fQpadTnorm;}
TVectorD* QpadMnorm() const
{return fQpadMnorm;}