Allow using a TF1 to introduce an artificial tracking inefficiency
authorsaiola <salvatore.aiola@cern.ch>
Wed, 23 Jul 2014 18:39:32 +0000 (14:39 -0400)
committersaiola <salvatore.aiola@cern.ch>
Wed, 23 Jul 2014 18:39:53 +0000 (14:39 -0400)
PWG/EMCAL/AliEmcalAodTrackFilterTask.cxx
PWG/EMCAL/AliEmcalAodTrackFilterTask.h
PWG/EMCAL/AliEmcalEsdTrackFilterTask.cxx
PWG/EMCAL/AliEmcalEsdTrackFilterTask.h

index ddd7383..3dabc51 100644 (file)
@@ -1,4 +1,3 @@
-// $Id: AliEmcalAodTrackFilterTask.cxx | Fri Dec 6 10:29:20 2013 +0100 | Constantin Loizides  $
 //
 // Class to filter Aod tracks
 //
@@ -28,7 +27,7 @@ AliEmcalAodTrackFilterTask::AliEmcalAodTrackFilterTask() :
   fAttemptProp(kFALSE),
   fAttemptPropMatch(kFALSE),
   fDist(440),
-  fTrackEfficiency(1),
+  fTrackEfficiency(0),
   fTracksIn(0),
   fTracksOut(0)
 {
@@ -51,7 +50,7 @@ AliEmcalAodTrackFilterTask::AliEmcalAodTrackFilterTask(const char *name) :
   fAttemptProp(kFALSE),
   fAttemptPropMatch(kFALSE),
   fDist(440),
-  fTrackEfficiency(1),
+  fTrackEfficiency(0),
   fTracksIn(0),
   fTracksOut(0)
 {
@@ -146,9 +145,9 @@ void AliEmcalAodTrackFilterTask::UserExec(Option_t *)
       }
     }
 
-    if (fTrackEfficiency < 1) {
+    if (fTrackEfficiency) {
       Double_t r = gRandom->Rndm();
-      if (fTrackEfficiency < r)
+      if (fTrackEfficiency->Eval(track->Pt()) < r)
         continue;
     }
 
index 467d35c..4c9553c 100644 (file)
@@ -1,10 +1,10 @@
 #ifndef ALIEMCALAODTRACKFILTERTASK_H
 #define ALIEMCALAODTRACKFILTERTASK_H
 
-// $Id$
-
 class TClonesArray;
 
+#include <TF1.h>
+
 #include "AliAnalysisTaskSE.h"
 
 class AliEmcalAodTrackFilterTask : public AliAnalysisTaskSE {
@@ -24,7 +24,8 @@ class AliEmcalAodTrackFilterTask : public AliAnalysisTaskSE {
   void               SetTracksInName(const char *name)                    { fTracksInName      = name; }
   void               SetTracksOutName(const char *name)                   { fTracksOutName     = name; }
   void               SetUseNegativeLabels(Bool_t f)                       { fUseNegativeLabels = f   ; }
-  void               SetTrackEfficiency(Double_t eff = 0.95)              { fTrackEfficiency   = eff ; }
+  void               SetTrackEfficiency(Double_t eff = 0.95)              { fTrackEfficiency  = new TF1("eff", "[0]", 0, 500); fTrackEfficiency->FixParameter(0,eff); }
+  void               SetTrackEfficiency(TF1* eff)                         { fTrackEfficiency  = eff  ; }
 
  protected:
   void               UserCreateOutputObjects();
@@ -41,7 +42,7 @@ class AliEmcalAodTrackFilterTask : public AliAnalysisTaskSE {
   Bool_t             fAttemptProp;          // if true then attempt to propagate if not done yet
   Bool_t             fAttemptPropMatch;     // if true then attempt to propagate if not done yet but IsEMCAL is true
   Double_t           fDist;                 // distance to surface (440cm default)
-  Double_t           fTrackEfficiency;      // track efficiency
+  TF1               *fTrackEfficiency;      // track efficiency
   TClonesArray      *fTracksIn;             //!track array in
   TClonesArray      *fTracksOut;            //!track array out
 
@@ -49,6 +50,6 @@ class AliEmcalAodTrackFilterTask : public AliAnalysisTaskSE {
   AliEmcalAodTrackFilterTask(const AliEmcalAodTrackFilterTask&);            // not implemented
   AliEmcalAodTrackFilterTask &operator=(const AliEmcalAodTrackFilterTask&); // not implemented
 
-  ClassDef(AliEmcalAodTrackFilterTask, 3); // Task to filter Aod tracks
+  ClassDef(AliEmcalAodTrackFilterTask, 4); // Task to filter Aod tracks
 };
 #endif
index 0f19e8f..34283c9 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 //
 // Task to filter Esd tracks and propagate to Emcal surface.
 //
@@ -28,7 +27,7 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask() :
   fIncludeNoITS(kTRUE),
   fDoPropagation(kFALSE),
   fDist(440),
-  fTrackEfficiency(1),
+  fTrackEfficiency(0),
   fIsMC(kFALSE),
   fEsdEv(0),
   fTracks(0)
@@ -46,7 +45,7 @@ AliEmcalEsdTrackFilterTask::AliEmcalEsdTrackFilterTask(const char *name) :
   fIncludeNoITS(kTRUE),
   fDoPropagation(kFALSE),
   fDist(440),
-  fTrackEfficiency(1),
+  fTrackEfficiency(0),
   fIsMC(kFALSE),
   fEsdEv(0),
   fTracks(0)
@@ -156,9 +155,9 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
           continue;
         }
 
-       if (fTrackEfficiency < 1) {
+       if (fTrackEfficiency) {
          Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r)
+         if (fTrackEfficiency->Eval(ntrack->Pt()) < r)
            continue;
        }
 
@@ -177,9 +176,9 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
        if ((fEsdTrackCuts!=0) && !fEsdTrackCuts->AcceptTrack(etrack))
           continue;
        
-       if (fTrackEfficiency < 1) {
+       if (fTrackEfficiency) {
          Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r)
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
            continue;
        }
 
@@ -199,9 +198,9 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
        continue;
 
       if (fEsdTrackCuts->AcceptTrack(etrack)) {
-       if (fTrackEfficiency < 1) {
+       if (fTrackEfficiency) {
          Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r)
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
            continue;
        }
         AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
@@ -218,9 +217,9 @@ void AliEmcalEsdTrackFilterTask::UserExec(Option_t *)
        if (!fIncludeNoITS && ((status&AliESDtrack::kITSrefit)==0))
          continue;
 
-       if (fTrackEfficiency < 1) {
+       if (fTrackEfficiency) {
          Double_t r = gRandom->Rndm();
-         if (fTrackEfficiency < r)
+         if (fTrackEfficiency->Eval(etrack->Pt()) < r)
            continue;
        }
        AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
index 359a984..b81f8d1 100644 (file)
@@ -1,12 +1,12 @@
 #ifndef ALIEMCALESDTRACKFILTERTASK_H
 #define ALIEMCALESDTRACKFILTERTASK_H
 
-// $Id$
-
 class TClonesArray;
 class AliESDEvent;
 class AliESDtrackCuts;
 
+#include <TF1.h>
+
 #include "AliAnalysisTaskSE.h"
 #include "AliESDtrackCuts.h"
 
@@ -23,8 +23,9 @@ class AliEmcalEsdTrackFilterTask : public AliAnalysisTaskSE {
   void SetIncludeNoITS(Bool_t f)                 { fIncludeNoITS     = f;    }
   void SetTrackCuts(AliESDtrackCuts *cuts)       { fEsdTrackCuts     = cuts; }
   void SetTracksName(const char *name)           { fTracksName       = name; }
-  void SetTrackEfficiency(Double_t eff = 0.95)   { fTrackEfficiency   = eff; }
-  void SetMC(Bool_t b)                           { fIsMC              = b  ; }
+  void SetTrackEfficiency(Double_t eff = 0.95)   { fTrackEfficiency  = new TF1("eff", "[0]", 0, 500); fTrackEfficiency->FixParameter(0,eff); }
+  void SetTrackEfficiency(TF1* eff)              { fTrackEfficiency  = eff;  }
+  void SetMC(Bool_t b)                           { fIsMC             = b  ;  }
 
  protected:
   void UserCreateOutputObjects();
@@ -37,7 +38,7 @@ class AliEmcalEsdTrackFilterTask : public AliAnalysisTaskSE {
   Bool_t             fIncludeNoITS;      // includes tracks with failed ITS refit
   Bool_t             fDoPropagation;     // propagate all hybrid tracks to EMCal surface
   Double_t           fDist;              // distance to surface (440cm default)
-  Double_t           fTrackEfficiency;   // track efficiency
+  TF1               *fTrackEfficiency;   // track efficiency
   Bool_t             fIsMC;              // whether it is a MC event or not
   AliESDEvent       *fEsdEv;             //!esd event
   TClonesArray      *fTracks;            //!track array
@@ -46,7 +47,7 @@ class AliEmcalEsdTrackFilterTask : public AliAnalysisTaskSE {
   AliEmcalEsdTrackFilterTask(const AliEmcalEsdTrackFilterTask&);            // not implemented
   AliEmcalEsdTrackFilterTask &operator=(const AliEmcalEsdTrackFilterTask&); // not implemented
 
-  ClassDef(AliEmcalEsdTrackFilterTask, 3); // Class to constrain TPC tracks to SPD vertex
+  ClassDef(AliEmcalEsdTrackFilterTask, 4); // Class to constrain TPC tracks to SPD vertex
 };
 
 #endif