]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/AliCFParticleGenCuts.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / CORRFW / AliCFParticleGenCuts.cxx
index 3e3a5cc4ab76dc23ac2600aab36b9407f057e5cc..319ecc1e8da2c1e2de8b6fd19ca0bc8e6e523f89 100644 (file)
@@ -534,6 +534,10 @@ void AliCFParticleGenCuts::SelectionBitMap(AliAODMCParticle* mcPart)
       // first try
       for (Int_t iDaughter = 0 ; iDaughter<nDaughters; iDaughter++) {
        AliAODMCParticle* daug = dynamic_cast<AliAODMCParticle*>(mcArray->At(mcPart->GetDaughter(0)+iDaughter));
+       if (!daug) {
+         AliError("daughter: casting failed");
+         continue;
+       }
        if (daug->GetPdgCode() != fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
       }
       if (!goodDecay) {
@@ -541,6 +545,7 @@ void AliCFParticleGenCuts::SelectionBitMap(AliAODMCParticle* mcPart)
        goodDecay = kTRUE ;
        for (Int_t iDaughter = 0 ; iDaughter<nDaughters; iDaughter++) {
          AliAODMCParticle* daug = dynamic_cast<AliAODMCParticle*>(mcArray->At(mcPart->GetDaughter(1)-iDaughter));
+         if (!daug) {AliFatal(""); return;}
          if (daug->GetPdgCode() != fDecayChannel->DaughterPdgCode(iDaughter)) {goodDecay = kFALSE; break;}
        }
       }
@@ -558,20 +563,28 @@ void AliCFParticleGenCuts::SelectionBitMap(AliAODMCParticle* mcPart)
 
   ++iCutBit;
   if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) > fProdVtxXMin)
-    || ( fProdVtxRange2D && prodVtxXYmin >= 1))     fBitmap->SetBitNumber(iCutBit,kTRUE);
-
+       || ( fProdVtxRange2D && (fProdVtxXMin>0 && fProdVtxYMin>0) && prodVtxXYmin >= 1)
+       || ( fProdVtxRange2D && (fProdVtxXMin<=0 || fProdVtxYMin<=0) ) )
+    fBitmap->SetBitNumber(iCutBit,kTRUE);
+  
   ++iCutBit;
   if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) < fProdVtxXMax)
-    || ( fProdVtxRange2D && prodVtxXYmax <= 1))     fBitmap->SetBitNumber(iCutBit,kTRUE);
-
+       || ( fProdVtxRange2D && (fProdVtxXMax>0 && fProdVtxYMax>0) && prodVtxXYmax <= 1)
+       || ( fProdVtxRange2D && (fProdVtxXMax<=0 || fProdVtxYMax<=0) ) )
+    fBitmap->SetBitNumber(iCutBit,kTRUE);
+  
   ++iCutBit;
   if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) > fProdVtxYMin)
-    || ( fProdVtxRange2D && prodVtxXYmin >= 1))     fBitmap->SetBitNumber(iCutBit,kTRUE);
-
+       || ( fProdVtxRange2D &&  (fProdVtxXMin>0 && fProdVtxYMin>0) && prodVtxXYmin >= 1)
+       || ( fProdVtxRange2D &&  (fProdVtxXMin<=0 || fProdVtxYMin<=0) ) )
+    fBitmap->SetBitNumber(iCutBit,kTRUE);
+  
   ++iCutBit;
   if ( (!fProdVtxRange2D && fCutValues->At(iCutBit) < fProdVtxYMax)
-    || ( fProdVtxRange2D && prodVtxXYmax <= 1))     fBitmap->SetBitNumber(iCutBit,kTRUE);
-
+       || ( fProdVtxRange2D && (fProdVtxXMax>0 && fProdVtxYMax>0) && prodVtxXYmax <= 1)
+       || ( fProdVtxRange2D && (fProdVtxXMax<=0 || fProdVtxYMax<=0) ) )
+    fBitmap->SetBitNumber(iCutBit,kTRUE);
+  
   if ( fCutValues->At(++iCutBit) > fProdVtxZMin)    fBitmap->SetBitNumber(iCutBit,kTRUE);
   if ( fCutValues->At(++iCutBit) < fProdVtxZMax)    fBitmap->SetBitNumber(iCutBit,kTRUE);
   if ( fCutValues->At(++iCutBit) > fDecayVtxXMin)   fBitmap->SetBitNumber(iCutBit,kTRUE);