-//_________________________________________________________________________
-Int_t AliITSpidESD::MakePID(AliESD *event)
-{
- //
- // This function calculates the "detector response" PID probabilities
- //
- Int_t ntrk=event->GetNumberOfTracks();
- for (Int_t i=0; i<ntrk; i++) {
- AliESDtrack *t=event->GetTrack(i);
- if ((t->GetStatus()&AliESDtrack::kITSin )==0)
- if ((t->GetStatus()&AliESDtrack::kITSout)==0) continue;
- Double_t mom=t->GetP();
- Double_t dedx=t->GetITSsignal()/fMIP;
- Int_t ns=AliPID::kSPECIES;
- Double_t p[10];
- for (Int_t j=0; j<ns; j++) {
- Double_t mass=AliPID::ParticleMass(j);
- Double_t bethe=Bethe(mom/mass);
- Double_t sigma=fRes*bethe;
- if (TMath::Abs(dedx-bethe) > fRange*sigma) {
- p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
- continue;
- }
- p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
- }
- t->SetITSpid(p);
- }
- return 0;
+Double_t AliITSpidESD::Bethe(Double_t p,Double_t mass) {
+
+ Double_t mom=p*1000;//MeV
+ Double_t Mass=mass*1000;//Mev
+ Float_t dens =2.33; //g cm-3
+ Double_t K=0.307075;//MeVcm^2/g
+ Double_t ZovA=0.49848;
+ Double_t me=0.511;//MeV/c^2
+ Double_t I=173./1000000.;//MeV
+ Double_t En=TMath::Sqrt(mom*mom+Mass*Mass);//MeV
+ Double_t gamma=En/Mass;
+ Double_t beta=mom/En;
+ Double_t Tmax=2*me*beta*beta*gamma*gamma/(1+2*gamma*me/Mass+(me/Mass)*(me/Mass));
+ Double_t deltaover2=28.816*1e-6*TMath::Sqrt(dens*ZovA)+TMath::Log(beta*gamma)-0.5;
+ Double_t FNor=0.009164; //normalizing to 1 at the minimum of ionization
+
+ return K*ZovA*1/(beta*beta)*(0.5*TMath::Log(2*me*beta*beta*gamma*gamma*Tmax/(I*I))-beta*beta-deltaover2)*2.33*1000*0.03*FNor;
+
+