]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODpidUtil.cxx
addapt array of histograms for different SM combinations to new EMCAL SM
[u/mrichter/AliRoot.git] / STEER / AliAODpidUtil.cxx
index 500cca45ead38f74423cb7d169cc538bcf0d9f35..1f5acf1d1d278876318c8e2593b9fd552f24a0c4 100644 (file)
@@ -72,13 +72,17 @@ void AliAODpidUtil::MakeTPCPID(AliAODTrack *track,Double_t *p) const
   //
 
   if ((track->GetStatus()&AliESDtrack::kTPCin )==0) return;
-  UShort_t nTPCClus=track->GetTPCNcls();
 
-  Double_t mom = track->P();
   AliAODPid *pidObj = track->GetDetPid();
-  if (pidObj) mom = pidObj->GetTPCmomentum();
-   
-  Double_t dedx=pidObj->GetTPCsignal(); 
+  Double_t mom      = track->P();
+  Double_t dedx     = 0.;  
+  UShort_t nTPCClus = 0;
+  if (pidObj) {
+      nTPCClus = pidObj->GetTPCsignalN();
+      dedx     = pidObj->GetTPCsignal();
+      mom      = pidObj->GetTPCmomentum();
+  }
+  
   Bool_t mismatch=kTRUE;
 
   for (Int_t j=0; j<AliPID::kSPECIES; j++) {
@@ -95,7 +99,7 @@ void AliAODpidUtil::MakeTPCPID(AliAODTrack *track,Double_t *p) const
   }
 
   if (mismatch)
-    for (Int_t j=0; j<AliPID::kSPECIES; j++) p[j]=1/AliPID::kSPECIES;
+    for (Int_t j=0; j<AliPID::kSPECIES; j++) p[j]=1./AliPID::kSPECIES;
 
 
   return;
@@ -115,17 +119,30 @@ void AliAODpidUtil::MakeITSPID(AliAODTrack *track,Double_t *p) const
   for(Int_t i=2; i<6; i++){
    if(clumap&(1<<i)) ++nPointsForPid;
   }
-  if(nPointsForPid<3) return;// track not to be used for PID purposes
-
+  if(nPointsForPid<3) { // track not to be used for combined PID purposes
+    for (Int_t j=0; j<AliPID::kSPECIES; j++) 
+      p[j] = 1./AliPID::kSPECIES;
+    return;
+  }
   Double_t mom=track->P();  
   AliAODPid *pidObj = track->GetDetPid();
 
-  Double_t dedx=pidObj->GetITSsignal();
-  Bool_t mismatch=kTRUE;
+  Double_t dedx = 0.;
+  if (pidObj) {
+      dedx = pidObj->GetITSsignal();
+  }
+  
+  Bool_t mismatch = kTRUE;
+  Bool_t isSA = kTRUE;
+  if(track->GetStatus() & AliESDtrack::kTPCin){
+    isSA = kFALSE;
+    if (pidObj)
+      mom = pidObj->GetTPCmomentum();
+  }
   for (Int_t j=0; j<AliPID::kSPECIES; j++) {
-    Double_t mass=AliPID::ParticleMass(j);//GeV/c^2
-    Double_t bethe=fITSResponse.Bethe(mom,mass);
-    Double_t sigma=fITSResponse.GetResolution(bethe);
+    Double_t mass = AliPID::ParticleMass(j);//GeV/c^2
+    Double_t bethe = fITSResponse.Bethe(mom,mass);
+    Double_t sigma = fITSResponse.GetResolution(bethe,nPointsForPid,isSA);
     if (TMath::Abs(dedx-bethe) > fRange*sigma) {
       p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
     } else {
@@ -199,7 +216,7 @@ void AliAODpidUtil::MakeTOFPID(AliAODTrack *track, Double_t *p) const
   }
 
   if (mismatch)
-    for (Int_t j=0; j<AliPID::kSPECIES; j++) p[j]=1/AliPID::kSPECIES;
+    for (Int_t j=0; j<AliPID::kSPECIES; j++) p[j]=1./AliPID::kSPECIES;
 
   return;
 }