]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx
make ptmin setteable
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalEsdTrackFilterTask.cxx
index c6291ab423b455de549930bd1cc438e0735edc8d..34283c9bb54be84721a4fc351cea2bc42ee8cb50 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 //
 // Task to filter Esd tracks and propagate to Emcal surface.
 //
@@ -6,6 +5,7 @@
 
 #include "AliEmcalEsdTrackFilterTask.h"
 #include <TClonesArray.h>
+#include <TRandom3.h>
 #include <TGeoGlobalMagField.h>
 #include <AliAnalysisManager.h>
 #include <AliEMCALRecoUtils.h>
@@ -14,6 +14,7 @@
 #include <AliMagF.h>
 #include <AliTrackerBase.h>
 
+
 ClassImp(AliEmcalEsdTrackFilterTask)
 
 //________________________________________________________________________
@@ -26,6 +27,8 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask() :
   fIncludeNoITS(kTRUE),
   fDoPropagation(kFALSE),
   fDist(440),
+  fTrackEfficiency(0),
+  fIsMC(kFALSE),
   fEsdEv(0),
   fTracks(0)
 {
@@ -42,6 +45,8 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask(const char *name) :
   fIncludeNoITS(kTRUE),
   fDoPropagation(kFALSE),
   fDist(440),
+  fTrackEfficiency(0),
+  fIsMC(kFALSE),
   fEsdEv(0),
   fTracks(0)
 {
@@ -104,7 +109,7 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
   if (!(InputEvent()->FindListObject(fTracksName)))
     InputEvent()->AddObject(fTracks);
 
-  if (!fHybridTrackCuts) { // contrain TPC tracks to SPD vertex if fDoSpdVtxCon==kTRUE
+  if (!fHybridTrackCuts) { // constrain TPC tracks to SPD vertex if fDoSpdVtxCon==kTRUE
     am->LoadBranch("AliESDRun.");
     am->LoadBranch("AliESDHeader.");
     am->LoadBranch("Tracks");
@@ -124,8 +129,10 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
         AliESDtrack *etrack = fEsdEv->GetTrack(i);
         if (!etrack)
           continue;
+
         if (!fEsdTrackCuts->AcceptTrack(etrack))
           continue;
+
         AliESDtrack *ntrack = AliESDtrackCuts::GetTPCOnlyTrack(fEsdEv,etrack->GetID());
         if (!ntrack)
           continue;
@@ -147,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);
@@ -158,8 +172,16 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
         AliESDtrack *etrack = fEsdEv->GetTrack(i);
         if (!etrack)
           continue;
+
        if ((fEsdTrackCuts!=0) && !fEsdTrackCuts->AcceptTrack(etrack))
           continue;
+       
+       if (fTrackEfficiency) {
+         Double_t r = gRandom->Rndm();
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
+           continue;
+       }
+
         AliESDtrack *ntrack = new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack);
        if (fDoPropagation)     
          AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist);
@@ -174,12 +196,19 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
       AliESDtrack *etrack = fEsdEv->GetTrack(i);
       if (!etrack) 
        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 (!fIsMC) newTrack->SetLabel(0);
         ++ntrnew;
       } else if (fHybridTrackCuts->AcceptTrack(etrack)) {
        if (!etrack->GetConstrainedParam())
@@ -187,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);
@@ -202,6 +237,7 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
          newTrack->SetBit(BIT(22),1); //type 1
          newTrack->SetBit(BIT(23),0);
        }
+       if (!fIsMC) newTrack->SetLabel(0);
        ++ntrnew;
       }
     }