#ifndef ALITPCPRF2D_H
#define ALITPCPRF2D_H
#include "TObject.h"
class TF2;
class TArrayF;
class TH1F;
class AliH2F;
class TPaveText;
class AliTPCPRF2D : public TObject {
public :
AliTPCPRF2D();
virtual ~AliTPCPRF2D();
virtual void Update();
Float_t GetGRF(Float_t xin, Float_t yin);
virtual TF2 * GetGRF(){return fGRF;}
virtual Float_t GetPRF(Float_t xin, Float_t yin);
virtual void DrawX(Float_t x1 ,Float_t x2,Float_t y1,Float_t y2=0, Int_t N=1);
virtual void DrawPRF(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20);
virtual void DrawDist(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20,
Float_t thr=0);
TH1F * GenerDrawXHisto(Float_t x1, Float_t x2,Float_t y);
AliH2F * GenerDrawHisto(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20);
AliH2F * GenerDrawDistHisto(Float_t x1, Float_t x2, Float_t y1, Float_t y2, Int_t Nx=20, Int_t Ny=20,
Float_t thr=0);
virtual void SetPad(Float_t width, Float_t height);
virtual void SetChevron(Float_t hstep, Float_t shifty, Float_t fac);
virtual void SetChParam(Float_t width, Float_t height,
Float_t hstep, Float_t shifty, Float_t fac);
virtual void SetY(Float_t y1, Float_t y2, Int_t nYdiv) ;
virtual void SetChargeAngle(Float_t angle){fChargeAngle = angle;}
virtual void SetCurrentAngle(Float_t ){return;}
virtual void SetPadAngle(Float_t angle){fPadAngle = angle;}
void SetInterpolationType(Int_t interx, Int_t intery) {fInterX=interx; fInterY =intery;}
virtual void SetGauss(Float_t sigmaX,Float_t sigmaY , Float_t kNorm=1);
virtual void SetCosh(Float_t sigmaX,Float_t sigmaY , Float_t kNorm=1);
virtual void SetGati(Float_t K3X, Float_t K3Y,
Float_t padDistance,
Float_t kNorm=1);
void SetParam(TF2 *const GRF,Float_t kNorm,
Float_t sigmaX=0, Float_t sigmaY=0);
void SetNdiv(Int_t Ndiv){fNdiv=Ndiv;}
virtual Float_t GetSigmaX() const {return fSigmaX;}
virtual Float_t GetSigmaY() const {return fSigmaY;}
protected:
void Update1();
virtual void UpdateSigma();
Float_t GetPRFActiv(Float_t xin);
Float_t * fcharge;
Float_t fY1;
Float_t fY2;
Int_t fNYdiv;
Int_t fNChargeArray;
Float_t * fChargeArray;
void DrawComment(TPaveText * comment);
Float_t fHeightFull;
Float_t fHeightS;
Float_t fShiftY;
Float_t fWidth;
Float_t fK;
Double_t funParam[5];
Int_t fNPRF;
Int_t fNdiv;
Float_t fDStep;
Float_t fKNorm;
Float_t fInteg;
TF2 * fGRF;
Float_t fK3X;
Float_t fK3Y;
Float_t fPadDistance;
Float_t fOrigSigmaX;
Float_t fOrigSigmaY;
Float_t fChargeAngle;
Float_t fPadAngle;
Float_t fSigmaX;
Float_t fSigmaY;
Float_t fMeanX;
Float_t fMeanY;
Int_t fInterX;
Int_t fInterY;
char fType[5];
Float_t fCurrentY;
Float_t fDYtoWire;
Float_t fDStepM1;
static const Double_t fgkDegtoRad;
static const Double_t fgkSQRT12;
static const Int_t fgkNPRF;
private:
AliTPCPRF2D(const AliTPCPRF2D &prf);
AliTPCPRF2D &operator = (const AliTPCPRF2D &) {return *this;}
ClassDef(AliTPCPRF2D,1)
};
#endif /* ALITPCPRF2D_H */