#ifndef ALIITSPIDRESPONSE_H
#define ALIITSPIDRESPONSE_H
#include <TObject.h>
#include "AliPID.h"
class AliVTrack;
class AliITSPIDResponse : public TObject {
public:
AliITSPIDResponse(Bool_t isMC=kFALSE);
~AliITSPIDResponse() {}
void SetBetheBlochParamsITSTPC(Double_t* param){
for(Int_t iPar=0; iPar<5; iPar++) fBBtpcits[iPar]=param[iPar];
}
void SetBetheBlochParamsITSTPCDeuteron(Double_t* param){
for(Int_t iPar=0; iPar<5; iPar++) fBBdeu[iPar]=param[iPar];
}
void SetBetheBlochParamsITSTPCTriton(Double_t* param){
for(Int_t iPar=0; iPar<5; iPar++) fBBtri[iPar]=param[iPar];
}
void SetBetheBlochParamsITSsa(Double_t* param){
for(Int_t iPar=0; iPar<5; iPar++) fBBsa[iPar]=param[iPar];
}
void SetBetheBlochHybridParamsITSsa(Double_t* param){
for(Int_t iPar=0; iPar<9; iPar++) fBBsaHybrid[iPar]=param[iPar];
}
void SetElectronBetheBlochParamsITSsa(Double_t* param){
for(Int_t iPar=0; iPar<5; iPar++) fBBsaElectron[iPar]=param[iPar];
}
Double_t BetheAleph(Double_t p,Double_t mass) const;
Double_t Bethe(Double_t p, Double_t mass, Bool_t isSA=kFALSE) const;
Double_t Bethe(Double_t p, AliPID::EParticleType species, Bool_t isSA=kFALSE) const;
Double_t BetheITSsaHybrid(Double_t p, Double_t mass) const;
Double_t GetResolution(Double_t bethe, Int_t nPtsForPid=4, Bool_t isSA=kFALSE,Double_t p=0., AliPID::EParticleType type=AliPID::kPion) const;
void GetITSProbabilities(Float_t mom, Double_t qclu[4], Double_t condprobfun[AliPID::kSPECIES],Bool_t isMC=kFALSE) const;
Double_t GetNumberOfSigmas( const AliVTrack* track, AliPID::EParticleType species) const;
Double_t GetSignalDelta( const AliVTrack* track, AliPID::EParticleType species, Bool_t ratio=kFALSE) const;
Float_t GetNumberOfSigmas(Float_t mom, Float_t signal, AliPID::EParticleType type, Int_t nPtsForPid=4, Bool_t isSA=kFALSE) const {
if(type==AliPID::kDeuteron && mom<0.4) return -999.;
if(type==AliPID::kTriton && mom<0.55) return -999.;
const Double_t chargeFactor = TMath::Power(AliPID::ParticleCharge(type),2.);
Float_t bethe = Bethe(mom,type,isSA)*chargeFactor;
return (signal - bethe)/GetResolution(bethe,nPtsForPid,isSA,mom,type);
}
Int_t GetParticleIdFromdEdxVsP(Float_t mom, Float_t signal, Bool_t isSA=kFALSE) const;
private:
Float_t fRes;
Double_t fKp1;
Double_t fKp2;
Double_t fKp3;
Double_t fKp4;
Double_t fKp5;
Double_t fBBsa[5];
Double_t fBBsaHybrid[9];
Double_t fBBsaElectron[5];
Double_t fBBtpcits[5];
Double_t fBBdeu[5];
Double_t fBBtri[5];
Float_t fResolSA[5];
Float_t fResolTPCITS[5];
Double_t fResolTPCITSDeu3[3];
Double_t fResolTPCITSDeu4[3];
Double_t fResolTPCITSTri3[3];
Double_t fResolTPCITSTri4[3];
Double_t Bethe(Double_t bg, const Double_t * const par, Bool_t isNuclei) const;
ClassDef(AliITSPIDResponse,5)
};
#endif