]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx
Fix in procedure for vertex recalculation
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliRDHFCutsDstoKKpi.cxx
index 23acbdd1e1ae465113f6cdb9719b3466c2399f2d..08e3611a492753a26fc75029194f2607185c9e46 100644 (file)
@@ -356,9 +356,12 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
      selectionLevel==AliRDHFCuts::kCandidate) {
     //recalculate vertex w/o daughters
     AliAODVertex *origownvtx=0x0;
-    AliAODVertex *recvtx=0x0;
     if(fRemoveDaughtersFromPrimary) {
-      if(!RecalcOwnPrimaryVtx(d,aod,origownvtx,recvtx)) return 0;
+      if(d->GetOwnPrimaryVtx()) origownvtx=new AliAODVertex(*d->GetOwnPrimaryVtx());
+      if(!RecalcOwnPrimaryVtx(d,aod)) {
+       CleanOwnPrimaryVtx(d,aod,origownvtx);
+       return 0;
+      }
     }
 
     Int_t okDsKKpi=1;
@@ -369,7 +372,7 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
     Double_t pt=d->Pt();
     Int_t ptbin=PtBin(pt);
     if (ptbin==-1) {
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
  
@@ -379,7 +382,7 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
     if(TMath::Abs(mDsKKpi-mDsPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) okDsKKpi = 0;
     if(TMath::Abs(mDspiKK-mDsPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) okDspiKK = 0;
     if(!okDsKKpi && !okDspiKK){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
@@ -403,20 +406,20 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
       if(!okMassPhi && !okMassK0star) okDspiKK=0;
     }
     if(!okDsKKpi && !okDspiKK){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
     // Cuts on track pairs
     for(Int_t i=0;i<3;i++){
       if(d->GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]){
-       CleanOwnPrimaryVtx(d,origownvtx);
+       CleanOwnPrimaryVtx(d,aod,origownvtx);
        return 0;
       }
     }
     if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)] || 
        d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
@@ -425,7 +428,7 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
     //single track
     if(TMath::Abs(d->Pt2Prong(1)) < fCutsRD[GetGlobalIndex(1,ptbin)]*fCutsRD[GetGlobalIndex(1,ptbin)] || 
        TMath::Abs(d->Getd0Prong(1))<fCutsRD[GetGlobalIndex(3,ptbin)]){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
@@ -442,44 +445,43 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
         TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(3,ptbin)]) okDspiKK=0;
     }
     if(!okDsKKpi && !okDspiKK){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
-
        
     // Cuts on candidate triplet
 
     if(d->GetSigmaVert()>fCutsRD[GetGlobalIndex(6,ptbin)]){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
     if(d->CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)]){
-      CleanOwnPrimaryVtx(d,origownvtx); 
+      CleanOwnPrimaryVtx(d,aod,origownvtx); 
       return 0;
     }
      
     if(d->Pt2Prong(0)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)] && 
        d->Pt2Prong(1)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)] && 
        d->Pt2Prong(2)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)]) {
-      CleanOwnPrimaryVtx(d,origownvtx); 
+      CleanOwnPrimaryVtx(d,aod,origownvtx); 
       return 0;
     }
 
     if(d->DecayLength2()<fCutsRD[GetGlobalIndex(7,ptbin)]*fCutsRD[GetGlobalIndex(7,ptbin)]){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
 
     Double_t sum2=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
     if(sum2<fCutsRD[GetGlobalIndex(10,ptbin)]){
-      CleanOwnPrimaryVtx(d,origownvtx);
+      CleanOwnPrimaryVtx(d,aod,origownvtx);
       return 0;
     }
 
      // unset recalculated primary vertex when not needed any more
-    CleanOwnPrimaryVtx(d,origownvtx);
+    CleanOwnPrimaryVtx(d,aod,origownvtx);
    
 
     // PID selection
@@ -494,16 +496,16 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
 
     Bool_t okPidDsKKpi=returnvaluePID&1;
     Bool_t okPidDspiKK=returnvaluePID&2;
-    if(okPidDsKKpi && !okDsKKpi)  return 0;
-    if(okPidDspiKK && !okDspiKK) return 0;
-
-    Int_t returnvalue=0;
-    if(okDsKKpi) returnvalue+=1;
-    if(okDspiKK) returnvalue+=2;
-    if(okMassPhi) returnvalue+=4;
-    if(okMassK0star) returnvalue+=8;
-
-    return returnvalue;
+    if((okPidDsKKpi && okDsKKpi)||(okPidDspiKK && okDspiKK)){
+      Int_t returnvalue=0;
+      if(okDsKKpi) returnvalue+=1;
+      if(okDspiKK) returnvalue+=2;
+      if(okMassPhi) returnvalue+=4;
+      if(okMassK0star) returnvalue+=8;
+      return returnvalue;
+    }else{
+      return 0;
+    }
   }
   return 15;