]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAODPidHF.cxx
Delete the esdTrackCut object after setting it on the default cut methods
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAODPidHF.cxx
old mode 100755 (executable)
new mode 100644 (file)
index 230fe41..72bb88e
@@ -57,6 +57,11 @@ AliAODPidHF::AliAODPidHF():
   fMatch(0),
   fCompat(kFALSE),
   fPCompatTOF(1.5),
+  fUseAsymTOF(kFALSE),
+  fLownSigmaTOF(-3.),
+  fUpnSigmaTOF(3.),
+  fLownSigmaCompatTOF(-3.),
+  fUpnSigmaCompatTOF(3.),
   fnNSigmaCompat(2),
   fnSigmaCompat(0),
   fMC(kFALSE),
@@ -140,6 +145,11 @@ AliAODPidHF::AliAODPidHF(const AliAODPidHF& pid) :
   fMatch(pid.fMatch),
   fCompat(pid.fCompat),
   fPCompatTOF(pid.fPCompatTOF),
+  fUseAsymTOF(pid.fUseAsymTOF),
+  fLownSigmaTOF(pid.fLownSigmaTOF),
+  fUpnSigmaTOF(pid.fUpnSigmaTOF),
+  fLownSigmaCompatTOF(pid.fLownSigmaCompatTOF),
+  fUpnSigmaCompatTOF(pid.fUpnSigmaCompatTOF),
   fnNSigmaCompat(pid.fnNSigmaCompat),
   fnSigmaCompat(0x0),
   fMC(pid.fMC),
@@ -335,64 +345,42 @@ Int_t AliAODPidHF::ApplyPidTOFRaw(AliAODTrack *track,Int_t specie) const{
       }
     }
   }else{ // asks only for one particle specie
+    Double_t nSigmaMin,nSigmaMax;
+    if(fUseAsymTOF){
+      nSigmaMin=fLownSigmaTOF;
+      nSigmaMax=fUpnSigmaTOF;
+    }else{
+      nSigmaMin=-fnSigma[3];
+      nSigmaMax=fnSigma[3];
+    }
     if(GetnSigmaTOF(track,specie,nsigma)==1){
-      nsigma=TMath::Abs(nsigma);
-      if (nsigma>fnSigma[3]) pid=-1; 
+      if(nsigma<nSigmaMin || nsigma>nSigmaMax) pid=-1;
       else pid=specie;
     }
   }
   return pid; 
-  /*
- Double_t time[AliPID::kSPECIESN];
- Double_t sigmaTOFPid[AliPID::kSPECIES];
- AliAODPid *pidObj = track->GetDetPid();
- pidObj->GetIntegratedTimes(time);
- Double_t sigTOF=pidObj->GetTOFsignal();
-
- AliAODEvent *event=(AliAODEvent*)track->GetAODEvent();
- if (event) {
-   AliTOFHeader* tofH=(AliTOFHeader*)event->GetTOFHeader();
-   if (tofH && fPidResponse) { // reading new AOD with new aliroot
-     AliTOFPIDResponse TOFres = (AliTOFPIDResponse)fPidResponse->GetTOFResponse();
-     sigTOF -= TOFres.GetStartTime(track->P());
-     if (specie<0) {
-       for (Int_t ipart = 0; ipart<5; ipart++) {
-        sigmaTOFPid[ipart]=TOFres.GetExpectedSigma(track->P(),time[ipart],AliPID::ParticleMass(ipart));
-       }
-     }
-     else sigmaTOFPid[specie]=TOFres.GetExpectedSigma(track->P(),time[specie],AliPID::ParticleMass(specie)); //fTOFResponse is set in InitialiseEvent
-   } else  pidObj->GetTOFpidResolution(sigmaTOFPid); // reading old AOD with new aliroot
- } else  pidObj->GetTOFpidResolution(sigmaTOFPid);  //reading old AOD with old aliroot
+}
+//----------------------------
+Int_t AliAODPidHF::ApplyTOFCompatibilityBand(AliAODTrack *track,Int_t specie) const{
+// n-sigma cut, TOF PID
 
- Int_t pid=-1;
+  if(specie<0) return -1;
+  Double_t nsigma=-999.;
+  Int_t pid=-1;
 
-  if(specie<0){  
-   Double_t sigmaTOFtrack;
-   if (sigmaTOFPid[4]>0) sigmaTOFtrack=sigmaTOFPid[4];
-   else sigmaTOFtrack=fTOFSigma;
-   Double_t nsigmaMax=sigmaTOFtrack*fnSigma[3];
-   for(Int_t ipart=0;ipart<5;ipart++){
-    Double_t nsigma=TMath::Abs(sigTOF-time[ipart]);
-    if (sigmaTOFPid[ipart]>0) sigmaTOFtrack=sigmaTOFPid[ipart]; 
-    else sigmaTOFtrack=fTOFSigma;  // backward compatibility for old AODs
-    if((nsigma<nsigmaMax) && (nsigma<fnSigma[3]*sigmaTOFtrack)) {
-     pid=ipart;
-     nsigmaMax=nsigma;
-    }
-   }
-  }else{ // asks only for one particle specie
-    Double_t nsigma=TMath::Abs(sigTOF-time[specie]);
-    Double_t sigmaTOFtrack;
-    if (sigmaTOFPid[specie]>0) sigmaTOFtrack=sigmaTOFPid[specie]; 
-    else sigmaTOFtrack=fTOFSigma;  // backward compatibility for old AODs
-    if (nsigma>fnSigma[3]*sigmaTOFtrack) {
-      pid=-1; 
-    }else{
-      pid=specie;
-    }
+  Double_t nSigmaMin,nSigmaMax;
+  if(fUseAsymTOF){
+    nSigmaMin=fLownSigmaCompatTOF;
+    nSigmaMax=fUpnSigmaCompatTOF;      
+  }else{
+    nSigmaMin=-fnSigmaCompat[1];
+    nSigmaMax=fnSigmaCompat[1];
   }
- return pid; 
-  */
+  if(GetnSigmaTOF(track,specie,nsigma)==1){
+    if(nsigma<nSigmaMin || nsigma>nSigmaMax) pid=-1;
+    else pid=specie;
+  }
+  return pid; 
 }
 //------------------------------
 void AliAODPidHF::CombinedProbability(AliAODTrack *track,Bool_t *type) const{
@@ -520,10 +508,7 @@ Int_t AliAODPidHF::MatchTPCTOF(AliAODTrack *track, Int_t specie){
       if(ApplyPidTOFRaw(track,specie)==specie) tTOFinfo=1;
       if(fCompat && tTOFinfo>0){
        if(ptrack>fPCompatTOF) {
-         Double_t sig0tmp=fnSigma[3];
-         SetSigma(3,fnSigmaCompat[1]);
-         if(ApplyPidTOFRaw(track,specie)==specie) tTOFinfo=0;
-         SetSigma(3,sig0tmp);
+         if(ApplyTOFCompatibilityBand(track,specie)==specie) tTOFinfo=0;
        }
       }
     }