]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAODRecoCascadeHF.cxx
increase streamer version
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAODRecoCascadeHF.cxx
index 0ef3fe6ed843b8b88cb79f9d532a514a343405ff..462aab73ec145931635c3cdd0aa41eae618f94a3 100644 (file)
@@ -127,6 +127,13 @@ Int_t AliAODRecoCascadeHF::MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
     return -1;
   }
 
+  if ( isV0 &&
+       ( (pdgDg[1]==2212 && pdgDg[0]==310) ||
+        (pdgDg[1]==211 && pdgDg[0]==3122) ) ) {
+    AliWarning("Please, pay attention: first element in AliAODRecoCascadeHF object must be the bachelor and second one V0. Skipping!");
+    return -1;
+  }
+
   Int_t lab2Prong = -1;
 
   if (!isV0) {
@@ -144,6 +151,7 @@ Int_t AliAODRecoCascadeHF::MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
   // loop on daughters and write labels
   for(Int_t i=0; i<ndg; i++) {
     AliVTrack *trk = dynamic_cast<AliVTrack*>(GetDaughter(i));
+    if(!trk) continue;
     Int_t lab = trk->GetLabel();
     if(lab==-1) { // this daughter is the 2prong
       lab=lab2Prong;
@@ -159,22 +167,18 @@ Int_t AliAODRecoCascadeHF::MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
     if ( isV0 && (dgLabels[0]!=-1 && dgLabels[1]!=-1) ) {
       AliAODv0 *theV0 = dynamic_cast<AliAODv0*>(Getv0());
       Bool_t onTheFly = theV0->GetOnFlyStatus();
-      
-      if ( (pdgDg[1]==2212 && pdgDg[0]==310) ||
-          (pdgDg[1]==211 && pdgDg[0]==3122) ) {
-       Int_t pdgDgtemp[2]={pdgDg[1],pdgDg[0]};
-       pdgDg[0]=pdgDgtemp[0];
-       pdgDg[1]=pdgDgtemp[1];
-      }
-
       if (pdgDg[0]==2212 && pdgDg[1]==310) {
        AliAODMCParticle*k0s = dynamic_cast<AliAODMCParticle*>(mcArray->At(lab2Prong));
-       Int_t labK0 = k0s->GetMother();
-       AliAODMCParticle*k0bar = dynamic_cast<AliAODMCParticle*>(mcArray->At(labK0));
-       AliDebug(1,Form(" (onTheFly=%1d) LabelV0=%d (%d) -> LabelK0S=%d (%d -> %d %d)",onTheFly,labK0,k0bar->GetPdgCode(),lab2Prong,pdgabs2prong,pdgDg2prong[0],pdgDg2prong[1]));
-       AliDebug(1,Form(" LabelLc=%d (%d) -> LabelBachelor=%d (%d) LabelV0=%d (%d)",
-                       finalLabel,pdgabs,
-                       dgLabels[0],pdgDg[0],dgLabels[1],pdgDg[1]));
+       if(k0s){
+         Int_t labK0 = k0s->GetMother();       
+         AliAODMCParticle*k0bar = dynamic_cast<AliAODMCParticle*>(mcArray->At(labK0));
+         if(k0bar){
+           AliDebug(1,Form(" (onTheFly=%1d) LabelV0=%d (%d) -> LabelK0S=%d (%d -> %d %d)",onTheFly,labK0,k0bar->GetPdgCode(),lab2Prong,pdgabs2prong,pdgDg2prong[0],pdgDg2prong[1]));
+           AliDebug(1,Form(" LabelLc=%d (%d) -> LabelBachelor=%d (%d) LabelV0=%d (%d)",
+                           finalLabel,pdgabs,
+                           dgLabels[0],pdgDg[0],dgLabels[1],pdgDg[1]));
+         }
+       }
       } else if (pdgDg[0]==211 && pdgDg[1]==3122) {
        AliDebug(1,Form(" (onTheFly=%1d) LabelV0=%d (%d -> %d %d)",onTheFly,lab2Prong,pdgabs2prong,pdgDg2prong[0],pdgDg2prong[1]));
        AliDebug(1,Form(" LabelLc=%d (%d) -> LabelBachelor=%d (%d) LabelV0=%d (%d)",