]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx
- Fix for the patch energy introduced in commit 05a42e4d3e68cf9929437bb2bc1310476f097476
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalEsdTrackFilterTask.cxx
index a0052ba9c3c6a8c8e18672129e7a57db69e53f32..3b72c5fdbaf2c1af710bc227768cc27017de4418 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 //
 // Task to filter Esd tracks and propagate to Emcal surface.
 //
@@ -28,7 +27,8 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask() :
   fIncludeNoITS(kTRUE),
   fDoPropagation(kFALSE),
   fDist(440),
-  fTrackEfficiency(1),
+  fTrackEfficiency(0),
+  fIsMC(kFALSE),
   fEsdEv(0),
   fTracks(0)
 {
@@ -45,7 +45,8 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask(const char *name) :
   fIncludeNoITS(kTRUE),
   fDoPropagation(kFALSE),
   fDist(440),
-  fTrackEfficiency(1),
+  fTrackEfficiency(0),
+  fIsMC(kFALSE),
   fEsdEv(0),
   fTracks(0)
 {
@@ -129,12 +130,6 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
         if (!etrack)
           continue;
 
-       if (fTrackEfficiency < 1) {
-         Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r)
-           continue;
-       }
-
         if (!fEsdTrackCuts->AcceptTrack(etrack))
           continue;
 
@@ -159,6 +154,13 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
           delete ntrack;
           continue;
         }
+
+       if (fTrackEfficiency) {
+         Double_t r = gRandom->Rndm();
+         if (fTrackEfficiency->Eval(ntrack->Pt()) < r)
+           continue;
+       }
+
        if (fDoPropagation)     
          AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist);
         new ((*fTracks)[ntrnew++]) AliESDtrack(*ntrack);
@@ -170,13 +172,16 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
         AliESDtrack *etrack = fEsdEv->GetTrack(i);
         if (!etrack)
           continue;
-       if (fTrackEfficiency < 1) {
+
+       if ((fEsdTrackCuts!=0) && !fEsdTrackCuts->AcceptTrack(etrack))
+          continue;
+       
+       if (fTrackEfficiency) {
          Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r)
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
            continue;
        }
-       if ((fEsdTrackCuts!=0) && !fEsdTrackCuts->AcceptTrack(etrack))
-          continue;
+
         AliESDtrack *ntrack = new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack);
        if (fDoPropagation)     
          AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist);
@@ -192,18 +197,18 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
       if (!etrack) 
        continue;
 
-      if (fTrackEfficiency < 1) {
-       Double_t r = gRandom->Rndm();
-       if (fTrackEfficiency < r)
-         continue;
-      }
-
       if (fEsdTrackCuts->AcceptTrack(etrack)) {
+       if (fTrackEfficiency) {
+         Double_t r = gRandom->Rndm();
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
+           continue;
+       }
         AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
        if (fDoPropagation) 
          AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist);
         newTrack->SetBit(BIT(22),0); 
         newTrack->SetBit(BIT(23),0);
+       if (!fMCEvent) newTrack->SetLabel(0);
         ++ntrnew;
       } else if (fHybridTrackCuts->AcceptTrack(etrack)) {
        if (!etrack->GetConstrainedParam())
@@ -211,6 +216,12 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
        UInt_t status = etrack->GetStatus();
        if (!fIncludeNoITS && ((status&AliESDtrack::kITSrefit)==0))
          continue;
+
+       if (fTrackEfficiency) {
+         Double_t r = gRandom->Rndm();
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
+           continue;
+       }
        AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
        if (fDoPropagation)     
          AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist);
@@ -226,6 +237,7 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
          newTrack->SetBit(BIT(22),1); //type 1
          newTrack->SetBit(BIT(23),0);
        }
+       if (!fMCEvent) newTrack->SetLabel(0);
        ++ntrnew;
       }
     }