]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/EMCAL/AliEmcalPicoTrackMaker.cxx
check label
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalPicoTrackMaker.cxx
index 202e1f3fc059e4516785b6317b39186fdff017a8..874fec2c3ec9a3892a73411b2f20a12968e6759d 100644 (file)
@@ -33,6 +33,8 @@ AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker() :
   fMaxTrackPhi(10),
   fTrackEfficiency(1),
   fIncludeNoITS(kTRUE),
+  fUseNegativeLabels(kTRUE),
+  fIsMC(kFALSE),
   fTracksIn(0),
   fTracksOut(0)
 {
@@ -56,6 +58,8 @@ AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker(const char *name) :
   fMaxTrackPhi(10),
   fTrackEfficiency(1),
   fIncludeNoITS(kTRUE),
+  fUseNegativeLabels(kTRUE),
+  fIsMC(kFALSE),
   fTracksIn(0),
   fTracksOut(0)
 {
@@ -136,38 +140,36 @@ void AliEmcalPicoTrackMaker::UserExec(Option_t *)
       continue;
 
     Bool_t isEmc = kFALSE;
-    Int_t label = -1;
+    Int_t type = -1;
     if (esdMode) {
-      if (fESDtrackCuts) {
-        AliESDtrack *esdtrack = static_cast<AliESDtrack*>(track);
-        if (!fESDtrackCuts->AcceptTrack(esdtrack))
-          continue;
-      }
-      label = track->GetLabel();
-      if (!fIncludeNoITS && (label==2))
+      AliESDtrack *esdtrack = static_cast<AliESDtrack*>(track);
+      if (fESDtrackCuts && !fESDtrackCuts->AcceptTrack(esdtrack))
+       continue;
+      type = esdtrack->GetTRDNchamberdEdx();
+      if (!fIncludeNoITS && (type==2))
        continue;
       isEmc = track->IsEMCAL();
     } else {
       AliAODTrack *aodtrack = static_cast<AliAODTrack*>(track);
       if (fAODfilterBits[0] < 0) {
        if (aodtrack->IsHybridGlobalConstrainedGlobal())
-         label = 3;
+         type = 3;
        else /*not a good track*/
          continue;
       }
       else {
        if (aodtrack->TestFilterBit(fAODfilterBits[0])) {
-         label = 0;
+         type = 0;
        }
        else if (aodtrack->TestFilterBit(fAODfilterBits[1])) {
          if ((aodtrack->GetStatus()&AliESDtrack::kITSrefit)==0) {
            if (fIncludeNoITS)
-             label = 2;
+             type = 2;
            else
              continue;
          }
          else {
-           label = 1;
+           type = 1;
          }
        }
        else {/*not a good track*/
@@ -187,14 +189,28 @@ void AliEmcalPicoTrackMaker::UserExec(Option_t *)
        continue;
     }
 
+    Int_t label = 0;
+    if (fIsMC) {
+      if (fUseNegativeLabels)
+       label = track->GetLabel();
+      else 
+       label = TMath::Abs(track->GetLabel());
+
+      if (label == 0) {
+       AliWarning(Form("Track %d with label==0", iTracks));
+       label = 99999;
+      }
+    }
+
     /*AliPicoTrack *picotrack =*/ new ((*fTracksOut)[nacc]) AliPicoTrack(track->Pt(), 
-                                                                     track->Eta(), 
-                                                                     track->Phi(), 
-                                                                     track->Charge(), 
-                                                                     label, 
-                                                                     track->GetTrackEtaOnEMCal(), 
-                                                                     track->GetTrackPhiOnEMCal(), 
-                                                                     isEmc);
+                                                                        track->Eta(), 
+                                                                        track->Phi(), 
+                                                                        track->Charge(), 
+                                                                        label,
+                                                                        type,
+                                                                        track->GetTrackEtaOnEMCal(), 
+                                                                        track->GetTrackPhiOnEMCal(), 
+                                                                        isEmc);
     ++nacc;
   }
 }