#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(1),
+ fIsMC(kFALSE),
fEsdEv(0),
fTracks(0)
{
fIncludeNoITS(kTRUE),
fDoPropagation(kFALSE),
fDist(440),
+ fTrackEfficiency(1),
+ fIsMC(kFALSE),
fEsdEv(0),
fTracks(0)
{
fTracks = new TClonesArray("AliESDtrack");
fTracks->SetName(fTracksName);
- if (!fEsdTrackCuts) {
- AliInfo("No track cuts given, creating default (standard only TPC) cuts");
- fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
- fEsdTrackCuts->SetPtRange(0.15,1e3);
+ if (fDoSpdVtxCon) {
+ if (!fEsdTrackCuts) {
+ AliInfo("No track cuts given, creating default (standard only TPC) cuts");
+ fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+ fEsdTrackCuts->SetPtRange(0.15,1e3);
+ }
+ } else {
+ AliWarning("No track cuts given, but maybe this is indeed intended?");
}
}
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 < 1) {
+ Double_t r = gRandom->Rndm();
+ if (fTrackEfficiency < r)
+ continue;
+ }
+
+ if (fDoPropagation)
+ AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist);
new ((*fTracks)[ntrnew++]) AliESDtrack(*ntrack);
delete ntrack;
}
AliESDtrack *etrack = fEsdEv->GetTrack(i);
if (!etrack)
continue;
- if (!fEsdTrackCuts->AcceptTrack(etrack))
+
+ if ((fEsdTrackCuts!=0) && !fEsdTrackCuts->AcceptTrack(etrack))
continue;
- new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack);
+
+ if (fTrackEfficiency < 1) {
+ Double_t r = gRandom->Rndm();
+ if (fTrackEfficiency < r)
+ continue;
+ }
+
+ AliESDtrack *ntrack = new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack);
+ if (fDoPropagation)
+ AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,fDist);
}
}
continue;
if (fEsdTrackCuts->AcceptTrack(etrack)) {
-
+ if (fTrackEfficiency < 1) {
+ Double_t r = gRandom->Rndm();
+ if (fTrackEfficiency < 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())
+ continue;
UInt_t status = etrack->GetStatus();
- if (etrack->GetConstrainedParam() && (((status&AliESDtrack::kITSrefit)!=0) || fIncludeNoITS)) {
- AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
- const AliExternalTrackParam* constrainParam = etrack->GetConstrainedParam();
- newTrack->Set(constrainParam->GetX(),
- constrainParam->GetAlpha(),
- constrainParam->GetParameter(),
- constrainParam->GetCovariance());
- if ((status&AliESDtrack::kITSrefit)==0) {
- newTrack->SetBit(BIT(22),0); //type 2
- newTrack->SetBit(BIT(23),1);
- } else {
- newTrack->SetBit(BIT(22),1); //type 1
- newTrack->SetBit(BIT(23),0);
- }
- if (fDoPropagation)
- AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist);
- ++ntrnew;
+ if (!fIncludeNoITS && ((status&AliESDtrack::kITSrefit)==0))
+ continue;
+
+ if (fTrackEfficiency < 1) {
+ Double_t r = gRandom->Rndm();
+ if (fTrackEfficiency < r)
+ continue;
+ }
+ AliESDtrack *newTrack = new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
+ if (fDoPropagation)
+ AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,fDist);
+ const AliExternalTrackParam* constrainParam = etrack->GetConstrainedParam();
+ newTrack->Set(constrainParam->GetX(),
+ constrainParam->GetAlpha(),
+ constrainParam->GetParameter(),
+ constrainParam->GetCovariance());
+ if ((status&AliESDtrack::kITSrefit)==0) {
+ newTrack->SetBit(BIT(22),0); //type 2
+ newTrack->SetBit(BIT(23),1);
+ } else {
+ newTrack->SetBit(BIT(22),1); //type 1
+ newTrack->SetBit(BIT(23),0);
}
+ if (!fIsMC) newTrack->SetLabel(0);
+ ++ntrnew;
}
}
}