]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdPt/AlidNdPtAnalysis.cxx
modified histo ranges
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtAnalysis.cxx
index 08f13105c63742e715f38af3c04bbaf3d2c05a75..45ef1abba3692850a23b8172aa613870da6e05c3 100644 (file)
@@ -328,19 +328,19 @@ void AlidNdPtAnalysis::Init(){
   // Init histograms\r
   //\r
 \r
-  const Int_t multNbins = 22;\r
-  const Int_t ptNbinsTrackEventCorr = 36;\r
-  //const Int_t ptNbins = 56;\r
-  const Int_t ptNbins = 55;\r
+  const Int_t multNbins = 27;\r
+  const Int_t ptNbinsTrackEventCorr = 37;\r
+  const Int_t ptNbins = 68;\r
   const Int_t etaNbins = 30;\r
   const Int_t zvNbins = 12;\r
 \r
+  Double_t binsMult[multNbins+1] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,\r
+                                     9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,\r
+                                    19.5,20.5, 21.5, 22.5, 23.5, 24.5, 29.5, 149.5};\r
 \r
-  Double_t binsMult[multNbins+1] = {-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5,20.5,150};\r
+  Double_t binsPtTrackEventCorr[ptNbinsTrackEventCorr+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,20.0,50.0};\r
 \r
-  Double_t binsPtTrackEventCorr[ptNbinsTrackEventCorr+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,5.0,10.0,16.0};\r
-\r
-  Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0};\r
+  Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
 \r
   Double_t binsEta[etaNbins+1] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
 \r
@@ -935,47 +935,124 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     //\r
     trigSel = GetPhysicsTriggerSelection();\r
     if(!trigSel) {\r
-      AliDebug(AliLog::kError, "cannot get trigSel");\r
+      printf("cannot get trigSel \n");\r
       return;\r
     }\r
-    \r
+\r
+    //\r
     if(IsUseMCInfo()) \r
     { \r
       trigSel->SetAnalyzeMC();\r
-      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
-      //printf("MB1 %d \n",isEventTriggered);\r
 \r
-      trigAna = trigSel->GetTriggerAnalysis();\r
-      if(!trigAna) \r
-        return;\r
+      if(GetParticleMode() == AlidNdPtHelper::kVZEROCase1)\r
+      {\r
+        // check V0 systematics (case1)\r
+       // Initialization done in the macro\r
+        trigAna = trigSel->GetTriggerAnalysis();\r
+        if(!trigAna) \r
+          return;\r
+\r
+        //trigAna->SetV0HwPars(15, 61.5, 86.5);\r
+        //trigAna->SetV0AdcThr(15);\r
+\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //printf("MB1 & kVZEROCase1  %d \n",isEventTriggered);\r
+        //isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
+      else if(GetParticleMode() == AlidNdPtHelper::kVZEROCase2)\r
+      {\r
+        // check V0 systematics (case2 only in MC)\r
+       // Initialization done in the macro\r
+\r
+        trigAna = trigSel->GetTriggerAnalysis();\r
+        if(!trigAna) \r
+         return;\r
+\r
+        //trigAna->SetV0HwPars(0, 0, 125);\r
+        //trigAna->SetV0AdcThr(0);\r
 \r
-      if(GetTrigger() == AliTriggerAnalysis::kV0AND)\r
-        isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
-       //printf("V0AND %d \n",isEventTriggered);\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+       \r
+       if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
+      else {\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //printf("MB1 %d \n",isEventTriggered);\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          trigAna = trigSel->GetTriggerAnalysis();\r
+          if(!trigAna) \r
+            return;\r
+\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
     }\r
     else {\r
       //\r
       // 0-multiplicity bin for LHC background correction\r
       //\r
-      if(GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
-         GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
+      if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
+         GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx  || \r
+         GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt ||\r
+          GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx || \r
+         GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx\r
+       ) \r
       {\r
         trigSel->SetBin0CallbackViaPointer(&IsBinZeroTrackSPDvtx);\r
       } else {\r
         trigSel->SetBin0CallbackViaPointer(&IsBinZeroSPDvtx);\r
       }\r
 \r
-      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
-       //printf("MB1 %d \n",isEventTriggered);\r
-\r
-      trigAna = trigSel->GetTriggerAnalysis();\r
-      if(!trigAna) \r
-        return;\r
+      if(GetParticleMode() == AlidNdPtHelper::kVZEROCase1)\r
+      {\r
+        // check V0 systematics (case1)\r
+       // Initialization done in the macro\r
+        trigAna = trigSel->GetTriggerAnalysis();\r
+        if(!trigAna) \r
+          return;\r
 \r
-      if(GetTrigger() == AliTriggerAnalysis::kV0AND)\r
-        isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
-       //printf("V0AND %d \n",isEventTriggered);\r
+        //trigAna->SetV0HwPars(15, 61.5, 86.5);\r
+        //trigAna->SetV0AdcThr(15);\r
 \r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
+      else {\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //printf("MB1 %d \n",isEventTriggered);\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          trigAna = trigSel->GetTriggerAnalysis();\r
+          if(!trigAna) \r
+            return;\r
+\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
     }\r
   }\r
 \r
@@ -1054,23 +1131,28 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
      if(vtxESD->GetStatus() && isRecVertex)\r
        multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
   } \r
-  else if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS ||  GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
-           GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate || GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybrid \r
+  else if( GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
+           GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate ) \r
   {\r
      const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
-     //if(mult && vtxESD->GetStatus() && isRecVertex)\r
-     //if(mult)\r
      if(mult && vtxESD->GetStatus() && isRecVertex)\r
        multMBTracks = mult->GetNumberOfTracklets();\r
   } \r
-  else if( GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
-           GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt)\r
+  else if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
+           GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybrid || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
+           GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt || \r
+          GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx || \r
+          GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx\r
+          )\r
   {\r
      if(vtxESD->GetStatus() && isRecVertex)\r
        multMBTracks = vtxESD->GetNContributors();\r
   }\r
   else {\r
-    AliDebug(AliLog::kError, Form("Found analysis type %s", GetAnalysisMode()));\r
+    AliDebug(AliLog::kError, Form("Found analysis type %d", GetAnalysisMode()));\r
     return; \r
   }\r
 \r
@@ -1110,12 +1192,62 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
         continue;\r
 \r
+\r
       // esd track selection \r
-      if(!esdTrackCuts->AcceptTrack(track))\r
-       continue;\r
\r
-      if(GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) {\r
-        if(!AlidNdPtHelper::IsGoodImpPar(track)) continue;\r
+      // ITS stand alone\r
+      if(GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx) \r
+      {\r
+        if(!(track->GetStatus() & AliESDtrack::kITSpureSA)) continue;\r
+        if(!(track->GetStatus() & AliESDtrack::kITSrefit)) continue;\r
+        if(track->GetNcls(0)<4) continue;\r
+        if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) continue;\r
+      } \r
+      else if(GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx) \r
+      {\r
+        //\r
+        // ITS and TPC stand alone tracks\r
+       //\r
+       if(!(track->GetStatus() & AliESDtrack::kITSpureSA)) continue;\r
+       if(!(track->GetStatus() & AliESDtrack::kITSrefit)) continue;\r
+       if(track->GetNcls(0)<4) continue;\r
+       if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) continue;\r
+\r
+        // Check matching with TPC only track\r
+       Bool_t hasMatch = kFALSE;\r
+       for(Int_t j=0; j<entries;++j) \r
+        {\r
+         if(i==j) continue;\r
+          AliESDtrack *track2 = (AliESDtrack*)allChargedTracks->At(j);\r
+          if(!track2) continue;\r
+          if(track2->Charge()==0) continue;\r
+         if (!track2->GetTPCInnerParam()) continue;\r
+\r
+          // check loose cuts for TPC tracks\r
+          if(!esdTrackCuts->AcceptTrack(track2)) continue; \r
+\r
+         AliExternalTrackParam *innerTPC = new AliExternalTrackParam(*(track2->GetTPCInnerParam()));\r
+         if(!innerTPC) continue;\r
+          Double_t x2[3]; track2->GetXYZ(x2);\r
+          Double_t b2[3]; AliTracker::GetBxByBz(x2,b2);\r
+         Double_t dz[2],cov[3];\r
+         Bool_t isPropOK = innerTPC->PropagateToDCABxByBz(vtxESD,b2,kVeryBig,dz,cov);\r
+          if(!isPropOK && innerTPC) {delete innerTPC; continue;}\r
+\r
+          // check matching\r
+          if (TMath::Abs(track->GetY() - innerTPC->GetY()) > 3) { delete innerTPC; continue; }\r
+          if (TMath::Abs(track->GetSnp() - innerTPC->GetSnp()) > 0.2) { delete innerTPC; continue; }\r
+          if (TMath::Abs(track->GetTgl() - innerTPC->GetTgl()) > 0.2) { delete innerTPC; continue; }\r
+\r
+         hasMatch = kTRUE;\r
+         if(innerTPC) delete innerTPC;\r
+       }\r
+\r
+        if(!hasMatch) continue;\r
+      }\r
+      else {\r
+        // check track cuts\r
+        if(!esdTrackCuts->AcceptTrack(track)) \r
+         continue;\r
       }\r
 \r
       //\r
@@ -1127,7 +1259,9 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       // if TPC-ITS hybrid tracking (kTPCITSHybrid)\r
       // replace track parameters with TPC-ony track parameters\r
       //\r
-      if( GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybrid || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
+      if( GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybrid || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
+         GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
       {\r
         // Relate TPC-only tracks to Track or SPD vertex\r
         isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig);\r
@@ -1180,7 +1314,9 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          }\r
 \r
          // update track parameters using vertex point \r
-        if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate || GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate) {\r
+        if( GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate || \r
+            GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate ) \r
+        {\r
           // update track parameters\r
              AliExternalTrackParam cParam;\r
              isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig, &cParam);\r
@@ -1194,7 +1330,8 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
             }  \r
          }\r
           else {\r
-             if(accCuts->AcceptTrack(track)) {\r
+             if(accCuts->AcceptTrack(track)) \r
+            {\r
                FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
               labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
               multRec++;\r
@@ -1222,25 +1359,11 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
 \r
    if(IsUseMCInfo())  \r
    {\r
-    \r
-     /*\r
-     //\r
-     // multiplicity correlation matrix\r
-     //\r
-     // check multiplicity\r
-     const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
-     Int_t trackletMult = 0;\r
-     if (mult) {\r
-         for(Int_t i=0; i<mult->GetNumberOfTracklets(); i++) {\r
-           if( TMath::Abs(mult->GetEta(i)) < accCuts->GetMaxEta() )\r
-             trackletMult++;\r
-        }\r
+     Double_t vMultTrueEventMatrix[2] = { multRec, multMCTrueTracks };\r
+     if(isEventOK && isEventTriggered) {   \r
+       if(TMath::Abs(vtxMC[2]) < 10.0) // both Rec. and corresponding MC events must be accepted\r
+         fEventMultCorrelationMatrix->Fill(vMultTrueEventMatrix);\r
      }\r
-     Double_t vMultTrueEventMatrix[2] = { trackletMult,multMCTrueTracks };\r
-     */\r
-     Double_t vMultTrueEventMatrix[2] = { multRec,multMCTrueTracks };\r
-\r
-     if(isEventOK && isEventTriggered) fEventMultCorrelationMatrix->Fill(vMultTrueEventMatrix);\r
 \r
      // \r
      // event level corrections (zv,N_MB)\r
@@ -1290,6 +1413,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
        continue;\r
 \r
        // only charged particles\r
+       if(!particle->GetPDG()) continue;\r
        Double_t charge = particle->GetPDG()->Charge()/3.;\r
        if ( TMath::Abs(charge) < 0.001 )\r
         continue;\r
@@ -1396,6 +1520,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
         }\r
 \r
          // only charged particles\r
+         if(!particle->GetPDG()) continue;\r
          Double_t charge = particle->GetPDG()->Charge()/3.;\r
          if (TMath::Abs(charge) < 0.001)\r
          continue;\r
@@ -1450,8 +1575,12 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
             {\r
                fRecTrackMatrix->Fill(vTrackMatrix);\r
 \r
-               if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) \r
+               if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) {\r
                 fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
+                //AliESDtrack *track = esdEvent->GetTrack(iRec);\r
+                 //if(track && track->GetKinkIndex(0) < 0) \r
+                //  printf("prim kink \n");\r
+              }\r
 \r
                if(!prim) fRecSecTrackMatrix->Fill(vTrackMatrix);\r
 \r
@@ -1575,6 +1704,7 @@ void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *con
   if(mother) motherPdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
   //Int_t mech = particle->GetUniqueID(); // production mechanism\r
 \r
+  if(!particle->GetPDG()) return;\r
   Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
   if(TMath::Abs(gq)<0.001) return;\r
   Float_t gpt = particle->Pt();\r
@@ -1616,6 +1746,7 @@ void AlidNdPtAnalysis::FillHistograms(AliStack *const stack, Int_t label, AlidNd
   if(mother) motherPdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
   Int_t mech = particle->GetUniqueID(); // production mechanism\r
 \r
+  if(!particle->GetPDG()) return;\r
   Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
   if(TMath::Abs(gq) < 0.001) return;\r
 \r
@@ -1783,40 +1914,12 @@ if(!esdEvent) return kFALSE;
   if(vertex->GetNContributors() < 1) {\r
     // SPD vertex\r
     vertex = esdEvent->GetPrimaryVertexSPD();\r
-    if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
+    if(!vertex) return kTRUE;\r
   }\r
+  if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
   if( !AlidNdPtHelper::TestRecVertex(vertex, esdEvent->GetPrimaryVertexSPD(), AlidNdPtHelper::kTPCITSHybridTrackSPDvtx) ) \r
     return kTRUE;\r
-\r
-  //\r
-\r
-  /*\r
-  //\r
-  if(vertex->GetNContributors() < 1) {\r
-    // SPD vertex\r
-    vertex = esdEvent->GetPrimaryVertexSPD();\r
-  }\r
-  if(!vertex) return kFALSE;\r
-\r
-  if(!vertex->GetStatus()) return kTRUE;\r
-  if(vertex->GetZRes() > 1000.) return kTRUE;\r
-  //if(vertex->GetZv() < -15.0) return kTRUE; \r
-  //if(vertex->GetZv() > 15.0) return kTRUE; \r
-\r
-  // always test with SPD vertex\r
-  const AliESDVertex* vertexSPD = esdEvent->GetPrimaryVertexSPD();\r
-  if(!vertexSPD) return kTRUE;\r
-  if(!vertexSPD->GetStatus()) return kTRUE;\r
-  if (vertexSPD->IsFromVertexerZ())\r
-  {\r
-    if (vertexSPD->GetDispersion() > 0.02) \r
-      return kTRUE;\r
-  }\r
-\r
-  // check multiplicity\r
-  if(vertex->GetNContributors() < 1) return kTRUE;\r
-  */\r
-\r
\r
 return kFALSE;\r
 }\r
 \r
@@ -1835,26 +1938,7 @@ if(!esdEvent) return kFALSE;
   if(!vertex) return kTRUE;\r
   if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
   if( !AlidNdPtHelper::TestRecVertex(vertex, esdEvent->GetPrimaryVertexSPD(), AlidNdPtHelper::kTPCSPDvtx) ) return kTRUE;\r
-\r
-  /*\r
-   \r
-  if(!vertex->GetStatus()) return kTRUE;\r
-  //if(vertex->GetZv() < -15.0) return kTRUE; \r
-  //if(vertex->GetZv() > 15.0) return kTRUE; \r
-  if(vertex->GetZRes() > 1000.) return kTRUE;\r
-  if (vertex->IsFromVertexerZ())\r
-  {\r
-    if (vertex->GetDispersion() > 0.02) \r
-      return kTRUE;\r
-  }\r
-\r
-  // check multiplicity\r
-  const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
-  if (!mult) return kTRUE;\r
-  if(mult->GetNumberOfTracklets() < 1) return kTRUE;\r
-\r
-  */\r
-\r
\r
 return kFALSE;\r
 }\r
 \r