-// $Id$
//
// Task to filter Esd tracks and propagate to Emcal surface.
//
#include "AliEmcalEsdTrackFilterTask.h"
#include <TClonesArray.h>
+#include <TRandom3.h>
#include <TGeoGlobalMagField.h>
#include <AliAnalysisManager.h>
#include <AliEMCALRecoUtils.h>
#include <AliMagF.h>
#include <AliTrackerBase.h>
+
ClassImp(AliEmcalEsdTrackFilterTask)
//________________________________________________________________________
fIncludeNoITS(kTRUE),
fDoPropagation(kFALSE),
fDist(440),
+ fTrackEfficiency(0),
+ fIsMC(kFALSE),
fEsdEv(0),
fTracks(0)
{
fIncludeNoITS(kTRUE),
fDoPropagation(kFALSE),
fDist(440),
+ fTrackEfficiency(0),
+ fIsMC(kFALSE),
fEsdEv(0),
fTracks(0)
{
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");
AliESDtrack *etrack = fEsdEv->GetTrack(i);
if (!etrack)
continue;
+
if (!fEsdTrackCuts->AcceptTrack(etrack))
continue;
+
AliESDtrack *ntrack = AliESDtrackCuts::GetTPCOnlyTrack(fEsdEv,etrack->GetID());
if (!ntrack)
continue;
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);
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);
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())
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);
newTrack->SetBit(BIT(22),1); //type 1
newTrack->SetBit(BIT(23),0);
}
+ if (!fIsMC) newTrack->SetLabel(0);
++ntrnew;
}
}