X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCClusterParam.h;h=805608288707e4940af7c2378eb5230492b7b1b6;hb=39c42ea292ef9cef30748efc4c0d6713a1ceaaca;hp=f963496490aa455ad1bc31ec48b437fed2f317eb;hpb=6194ddbde30ef3fa06ddf6badd3289636fbfbecd;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCClusterParam.h b/TPC/AliTPCClusterParam.h index f963496490a..80560828870 100644 --- a/TPC/AliTPCClusterParam.h +++ b/TPC/AliTPCClusterParam.h @@ -13,31 +13,42 @@ #include -#include +#include +#include class TTree; class TObjArray; +class TH1; +class THnBase; //_____________________________________________________________________________ class AliTPCClusterParam : public TObject { public: static AliTPCClusterParam* Instance(); AliTPCClusterParam(); AliTPCClusterParam(const AliTPCClusterParam& param); - AliTPCClusterParam & operator=(const AliTPCClusterParam&); + AliTPCClusterParam & operator=(const AliTPCClusterParam& param); virtual ~AliTPCClusterParam(); virtual void Print(Option_t* option = "") const; - void SetInstance(AliTPCClusterParam*param){fgInstance = param;} + void SetInstance(AliTPCClusterParam *const param){fgInstance = param;} // // Seting functions // void FitData(TTree * tree); void FitResol(TTree * tree); void FitRMS(TTree * tree); - void SetQnorm(Int_t ipad, Int_t itype, TVectorD * norm); + void SetQnorm(Int_t ipad, Int_t itype, const TVectorD *const norm); + void SetQnormCorr(Int_t ipad, Int_t itype, Int_t corrType, Float_t val); + Double_t GetQnormCorr(Int_t ipad, Int_t itype, Int_t corrType) const; + TMatrixD *GetQnormCorrMatrix(){return fQNormCorr;}; + void ResetQnormCorr(); + void SetWaveCorrectionMap( THnBase *WaveCorrectionMap); + void SetResolutionYMap( THnBase *ResolutionYMap); // // Charge parameterization // Float_t Qnorm(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz); + Float_t QnormHis(Int_t ipad, Int_t itype, Float_t dr, Float_t ty, Float_t tz); + 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); static 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);;} @@ -47,20 +58,27 @@ class AliTPCClusterParam : public TObject { // // Error parameterization // - Float_t GetError0(Int_t dim, Int_t type, Float_t z, Float_t angle); - Float_t GetError0Par(Int_t dim, Int_t type, Float_t z, Float_t angle); - Float_t GetError1(Int_t dim, Int_t type, Float_t z, Float_t angle); - Float_t GetErrorQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean); - Float_t GetErrorQPar(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean); - Float_t GetErrorQParScaled(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean); + 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; // // Shape parameterization // - Float_t GetRMS0(Int_t dim, Int_t type, Float_t z, Float_t angle); - Float_t GetRMS1(Int_t dim, Int_t type, Float_t z, Float_t angle); - Float_t GetRMSQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean); - Float_t GetRMSSigma(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean); - Float_t GetShapeFactor(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean, Float_t rmsL, Float_t rmsM); + Float_t GetRMS0(Int_t dim, Int_t type, Float_t z, Float_t angle) const; + Float_t GetRMS1(Int_t dim, Int_t type, Float_t z, Float_t angle) const; + Float_t GetRMSQ(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const; + Float_t GetRMSSigma(Int_t dim, Int_t type, Float_t z, Float_t angle, Float_t Qmean) const; + 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; + // + // Correction and resolution maps + // + const THnBase *GetWaveCorrectionMap() const { return fWaveCorrectionMap; } + const THnBase *GetResolutionYMap() const { return fResolutionYMap; } + Float_t GetWaveCorrection(Int_t Type, Float_t Z, Int_t QMax, Float_t Pad, Float_t angleY ) const; + static 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;} // // // @@ -104,6 +122,7 @@ class AliTPCClusterParam : public TObject { // // static 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);} + static 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);} // // Analytical position angular correction @@ -111,12 +130,9 @@ class AliTPCClusterParam : public TObject { static Double_t GaussConvolution(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1); static Double_t GaussConvolutionTail(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1, Double_t tau); static Double_t GaussConvolutionGamma4(Double_t x0, Double_t x1, Double_t k0, Double_t k1, Double_t s0, Double_t s1, Double_t tau); - static 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 tau); - static 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 tau); - - + static 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); + static 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); - public: // // // @@ -130,7 +146,13 @@ class AliTPCClusterParam : public TObject { void FitRMSQ(TTree * tree, Int_t dim, Int_t type, Float_t *param0, Float_t *error); void FitRMSSigma(TTree * tree, Int_t dim, Int_t type, Float_t *param0, Float_t *error); // + 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;} +protected: Float_t fRatio; //ratio of values constibution to error Float_t fParamS0[2][3][4]; //error parameterization coeficients Float_t fErrorS0[2][3][4]; //error parameterization coeficients @@ -156,6 +178,8 @@ class AliTPCClusterParam : public TObject { // charge normalization parametrization // TObjArray *fQNorm; // q norm paramters + TMatrixD *fQNormCorr; // q norm correction for analytica correction + TObjArray *fQNormHis; // q norm correction for analytical correction // TVectorD *fPosQTnorm[3]; // q position normalization TVectorD *fPosQMnorm[3]; // q position normalization @@ -167,9 +191,19 @@ class AliTPCClusterParam : public TObject { TVectorD *fPosYcor[3]; // position correction parameterization TVectorD *fPosZcor[3]; // position correction parameterization // - protected: + // Wave Correction Map + // + THnBase* fWaveCorrectionMap; //dY with respect to the distance to the center of the pad + Bool_t fWaveCorrectionMirroredPad; // flag is the cog axis mirrored at 0.5 + Bool_t fWaveCorrectionMirroredZ; // flag is the Z axis mirrored at 0 + Bool_t fWaveCorrectionMirroredAngle; // flag is the Angle axis mirrored at 0 + // + // Resolution Map + // + THnBase* fResolutionYMap; // Map of resolution in Y + // static AliTPCClusterParam* fgInstance; //! Instance of this class (singleton implementation) - ClassDef(AliTPCClusterParam,3) // TPC Cluster parameter class + ClassDef(AliTPCClusterParam,7) // TPC Cluster parameter class }; #endif