+//-------------------------------------------------------------------------------------------------
+void AliPIDCombined::GetPriors(const AliVTrack *track,Double_t* p,const AliPIDResponse *response,UInt_t detUsed) const{
+
+ //
+ // get priors from distributions
+ //
+ Double_t pt=TMath::Abs(track->Pt());
+
+ if(fUseDefaultTPCPriors){ // use default priors if requested
+ Float_t usedCentr = response->GetCurrentCentrality()+5*(response->GetCurrentCentrality()>0);
+ if(usedCentr < -0.99) usedCentr = -0.99;
+ else if(usedCentr > 99) usedCentr = 99;
+ if(pt > 9.99) pt = 9.99;
+ else if(pt < 0.01) pt = 0.01;
+
+ for(Int_t i=0;i<5;i++) p[i] = fDefaultPriorsTPC[i]->Interpolate(usedCentr,pt);
+
+ // Extra factor if TOF matching was required
+ if(detUsed & AliPIDResponse::kDetTOF){
+ Float_t kaonTOFfactor = 0.1;
+ if(pt > 0.35) kaonTOFfactor = 1 - TMath::Exp(-TMath::Power(pt,4.19618E-07)/5.68017E-01)*TMath::Power(pt,-1.50705);
+ Float_t protonTOFfactor = 0.1;
+ if(pt > 0.4) protonTOFfactor = 1 - TMath::Exp(-TMath::Power(pt,3.30978)/8.57396E-02)*TMath::Power(pt,-4.42661E-01);
+
+ if(track->Charge() < 0){ // for negative tracks
+ kaonTOFfactor *= 1 - TMath::Exp(-TMath::Power(pt,4.87912E-07)/3.26431E-01)*TMath::Power(pt,-1.22893);
+ protonTOFfactor *= 1 - TMath::Exp(-TMath::Power(pt,2.00575E-07)/4.95605E-01)*TMath::Power(pt,-6.71305E-01);
+ }
+
+ p[3] *= kaonTOFfactor;
+ p[4] *= protonTOFfactor;
+ }
+
+ return;
+ }
+
+
+ Double_t sumPriors = 0;
+ for (Int_t i=0;i<fSelectedSpecies;++i){
+ if (fPriorsDistributions[i]){
+ p[i]=fPriorsDistributions[i]->Interpolate(pt);
+ }
+ else {
+ p[i]=0.;
+ }
+ sumPriors+=p[i];
+ }