#include "AliEmcalAodTrackFilterTask.h"
#include <TClonesArray.h>
#include <TRandom3.h>
#include <AliAODEvent.h>
#include <AliAODTrack.h>
#include <AliAnalysisManager.h>
#include <AliEMCALRecoUtils.h>
#include <AliLog.h>
ClassImp(AliEmcalAodTrackFilterTask)
AliEmcalAodTrackFilterTask::AliEmcalAodTrackFilterTask() :
AliAnalysisTaskSE("AliEmcalAodTrackFilterTask"),
fTracksOutName("PicoTracks"),
fTracksInName("tracks"),
fIncludeNoITS(kTRUE),
fCutMaxFrShTPCClus(0),
fUseNegativeLabels(kTRUE),
fIsMC(kFALSE),
fDoPropagation(kFALSE),
fAttemptProp(kFALSE),
fAttemptPropMatch(kFALSE),
fDist(440),
fTrackEfficiency(0),
fTracksIn(0),
fTracksOut(0)
{
fAODfilterBits[0] = -1;
fAODfilterBits[1] = -1;
}
AliEmcalAodTrackFilterTask::AliEmcalAodTrackFilterTask(const char *name) :
AliAnalysisTaskSE(name),
fTracksOutName("PicoTracks"),
fTracksInName("tracks"),
fIncludeNoITS(kTRUE),
fCutMaxFrShTPCClus(0),
fUseNegativeLabels(kTRUE),
fIsMC(kFALSE),
fDoPropagation(kFALSE),
fAttemptProp(kFALSE),
fAttemptPropMatch(kFALSE),
fDist(440),
fTrackEfficiency(0),
fTracksIn(0),
fTracksOut(0)
{
fAODfilterBits[0] = -1;
fAODfilterBits[1] = -1;
fBranchNames = "AOD:tracks";
}
AliEmcalAodTrackFilterTask::~AliEmcalAodTrackFilterTask()
{
}
void AliEmcalAodTrackFilterTask::UserCreateOutputObjects()
{
fTracksOut = new TClonesArray("AliAODTrack");
fTracksOut->SetName(fTracksOutName);
}
void AliEmcalAodTrackFilterTask::UserExec(Option_t *)
{
AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
if (!am) {
AliError("Manager zero, returning");
return;
}
if (!fTracksIn) {
fTracksIn = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTracksInName));
if (!fTracksIn) {
AliError(Form("Could not retrieve tracks %s!", fTracksInName.Data()));
return;
}
if (!fTracksIn->GetClass()->GetBaseClass("AliVParticle")) {
AliError(Form("%s: Collection %s does not contain AliVParticle objects!", GetName(), fTracksInName.Data()));
return;
}
}
fTracksOut->Delete();
if (!(InputEvent()->FindListObject(fTracksOutName))) {
InputEvent()->AddObject(fTracksOut);
}
const Int_t Ntracks = fTracksIn->GetEntriesFast();
for (Int_t iTracks = 0, nacc = 0; iTracks < Ntracks; ++iTracks) {
AliAODTrack *track = static_cast<AliAODTrack*>(fTracksIn->At(iTracks));
if (!track)
continue;
Int_t type = -1;
if (fAODfilterBits[0] < 0) {
if (track->IsHybridGlobalConstrainedGlobal())
type = 3;
else
continue;
} else {
if (track->TestFilterBit(fAODfilterBits[0])) {
type = 0;
} else if (fAODfilterBits[1]>-1 && track->TestFilterBit(fAODfilterBits[1])) {
if ((track->GetStatus()&AliVTrack::kITSrefit)==0) {
if (fIncludeNoITS)
type = 2;
else
continue;
} else {
type = 1;
}
}
else {
continue;
}
}
if (fCutMaxFrShTPCClus > 0) {
Double_t frac = Double_t(track->GetTPCnclsS()) / Double_t(track->GetTPCncls());
if (frac > fCutMaxFrShTPCClus) {
continue;
}
}
if (fTrackEfficiency) {
Double_t r = gRandom->Rndm();
if (fTrackEfficiency->Eval(track->Pt()) < r)
continue;
}
AliAODTrack *newt = new ((*fTracksOut)[nacc]) AliAODTrack(*track);
newt->SetUniqueID(0);
newt->ResetBit(TObject::kHasUUID);
newt->ResetBit(TObject::kIsReferenced);
Bool_t propthistrack = kFALSE;
if (fDoPropagation)
propthistrack = kTRUE;
else if (!newt->IsExtrapolatedToEMCAL()) {
if (fAttemptProp)
propthistrack = kTRUE;
else if (fAttemptPropMatch && newt->IsEMCAL())
propthistrack = kTRUE;
}
if (propthistrack)
AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newt,fDist);
Int_t label = 0;
if (fIsMC) {
if (fUseNegativeLabels)
label = track->GetLabel();
else
label = TMath::Abs(track->GetLabel());
if (label == 0)
AliDebug(2,Form("Track %d with label==0", iTracks));
}
newt->SetLabel(label);
if (type==0) {
newt->SetBit(BIT(22),0);
newt->SetBit(BIT(23),0);
} else if (type==1) {
newt->SetBit(BIT(22),1);
newt->SetBit(BIT(23),0);
} else if (type==2) {
newt->SetBit(BIT(22),0);
newt->SetBit(BIT(23),1);
} else if (type==3) {
newt->SetBit(BIT(22),1);
newt->SetBit(BIT(23),1);
}
++nacc;
}
}
AliEmcalAodTrackFilterTask.cxx:1 AliEmcalAodTrackFilterTask.cxx:2 AliEmcalAodTrackFilterTask.cxx:3 AliEmcalAodTrackFilterTask.cxx:4 AliEmcalAodTrackFilterTask.cxx:5 AliEmcalAodTrackFilterTask.cxx:6 AliEmcalAodTrackFilterTask.cxx:7 AliEmcalAodTrackFilterTask.cxx:8 AliEmcalAodTrackFilterTask.cxx:9 AliEmcalAodTrackFilterTask.cxx:10 AliEmcalAodTrackFilterTask.cxx:11 AliEmcalAodTrackFilterTask.cxx:12 AliEmcalAodTrackFilterTask.cxx:13 AliEmcalAodTrackFilterTask.cxx:14 AliEmcalAodTrackFilterTask.cxx:15 AliEmcalAodTrackFilterTask.cxx:16 AliEmcalAodTrackFilterTask.cxx:17 AliEmcalAodTrackFilterTask.cxx:18 AliEmcalAodTrackFilterTask.cxx:19 AliEmcalAodTrackFilterTask.cxx:20 AliEmcalAodTrackFilterTask.cxx:21 AliEmcalAodTrackFilterTask.cxx:22 AliEmcalAodTrackFilterTask.cxx:23 AliEmcalAodTrackFilterTask.cxx:24 AliEmcalAodTrackFilterTask.cxx:25 AliEmcalAodTrackFilterTask.cxx:26 AliEmcalAodTrackFilterTask.cxx:27 AliEmcalAodTrackFilterTask.cxx:28 AliEmcalAodTrackFilterTask.cxx:29 AliEmcalAodTrackFilterTask.cxx:30 AliEmcalAodTrackFilterTask.cxx:31 AliEmcalAodTrackFilterTask.cxx:32 AliEmcalAodTrackFilterTask.cxx:33 AliEmcalAodTrackFilterTask.cxx:34 AliEmcalAodTrackFilterTask.cxx:35 AliEmcalAodTrackFilterTask.cxx:36 AliEmcalAodTrackFilterTask.cxx:37 AliEmcalAodTrackFilterTask.cxx:38 AliEmcalAodTrackFilterTask.cxx:39 AliEmcalAodTrackFilterTask.cxx:40 AliEmcalAodTrackFilterTask.cxx:41 AliEmcalAodTrackFilterTask.cxx:42 AliEmcalAodTrackFilterTask.cxx:43 AliEmcalAodTrackFilterTask.cxx:44 AliEmcalAodTrackFilterTask.cxx:45 AliEmcalAodTrackFilterTask.cxx:46 AliEmcalAodTrackFilterTask.cxx:47 AliEmcalAodTrackFilterTask.cxx:48 AliEmcalAodTrackFilterTask.cxx:49 AliEmcalAodTrackFilterTask.cxx:50 AliEmcalAodTrackFilterTask.cxx:51 AliEmcalAodTrackFilterTask.cxx:52 AliEmcalAodTrackFilterTask.cxx:53 AliEmcalAodTrackFilterTask.cxx:54 AliEmcalAodTrackFilterTask.cxx:55 AliEmcalAodTrackFilterTask.cxx:56 AliEmcalAodTrackFilterTask.cxx:57 AliEmcalAodTrackFilterTask.cxx:58 AliEmcalAodTrackFilterTask.cxx:59 AliEmcalAodTrackFilterTask.cxx:60 AliEmcalAodTrackFilterTask.cxx:61 AliEmcalAodTrackFilterTask.cxx:62 AliEmcalAodTrackFilterTask.cxx:63 AliEmcalAodTrackFilterTask.cxx:64 AliEmcalAodTrackFilterTask.cxx:65 AliEmcalAodTrackFilterTask.cxx:66 AliEmcalAodTrackFilterTask.cxx:67 AliEmcalAodTrackFilterTask.cxx:68 AliEmcalAodTrackFilterTask.cxx:69 AliEmcalAodTrackFilterTask.cxx:70 AliEmcalAodTrackFilterTask.cxx:71 AliEmcalAodTrackFilterTask.cxx:72 AliEmcalAodTrackFilterTask.cxx:73 AliEmcalAodTrackFilterTask.cxx:74 AliEmcalAodTrackFilterTask.cxx:75 AliEmcalAodTrackFilterTask.cxx:76 AliEmcalAodTrackFilterTask.cxx:77 AliEmcalAodTrackFilterTask.cxx:78 AliEmcalAodTrackFilterTask.cxx:79 AliEmcalAodTrackFilterTask.cxx:80 AliEmcalAodTrackFilterTask.cxx:81 AliEmcalAodTrackFilterTask.cxx:82 AliEmcalAodTrackFilterTask.cxx:83 AliEmcalAodTrackFilterTask.cxx:84 AliEmcalAodTrackFilterTask.cxx:85 AliEmcalAodTrackFilterTask.cxx:86 AliEmcalAodTrackFilterTask.cxx:87 AliEmcalAodTrackFilterTask.cxx:88 AliEmcalAodTrackFilterTask.cxx:89 AliEmcalAodTrackFilterTask.cxx:90 AliEmcalAodTrackFilterTask.cxx:91 AliEmcalAodTrackFilterTask.cxx:92 AliEmcalAodTrackFilterTask.cxx:93 AliEmcalAodTrackFilterTask.cxx:94 AliEmcalAodTrackFilterTask.cxx:95 AliEmcalAodTrackFilterTask.cxx:96 AliEmcalAodTrackFilterTask.cxx:97 AliEmcalAodTrackFilterTask.cxx:98 AliEmcalAodTrackFilterTask.cxx:99 AliEmcalAodTrackFilterTask.cxx:100 AliEmcalAodTrackFilterTask.cxx:101 AliEmcalAodTrackFilterTask.cxx:102 AliEmcalAodTrackFilterTask.cxx:103 AliEmcalAodTrackFilterTask.cxx:104 AliEmcalAodTrackFilterTask.cxx:105 AliEmcalAodTrackFilterTask.cxx:106 AliEmcalAodTrackFilterTask.cxx:107 AliEmcalAodTrackFilterTask.cxx:108 AliEmcalAodTrackFilterTask.cxx:109 AliEmcalAodTrackFilterTask.cxx:110 AliEmcalAodTrackFilterTask.cxx:111 AliEmcalAodTrackFilterTask.cxx:112 AliEmcalAodTrackFilterTask.cxx:113 AliEmcalAodTrackFilterTask.cxx:114 AliEmcalAodTrackFilterTask.cxx:115 AliEmcalAodTrackFilterTask.cxx:116 AliEmcalAodTrackFilterTask.cxx:117 AliEmcalAodTrackFilterTask.cxx:118 AliEmcalAodTrackFilterTask.cxx:119 AliEmcalAodTrackFilterTask.cxx:120 AliEmcalAodTrackFilterTask.cxx:121 AliEmcalAodTrackFilterTask.cxx:122 AliEmcalAodTrackFilterTask.cxx:123 AliEmcalAodTrackFilterTask.cxx:124 AliEmcalAodTrackFilterTask.cxx:125 AliEmcalAodTrackFilterTask.cxx:126 AliEmcalAodTrackFilterTask.cxx:127 AliEmcalAodTrackFilterTask.cxx:128 AliEmcalAodTrackFilterTask.cxx:129 AliEmcalAodTrackFilterTask.cxx:130 AliEmcalAodTrackFilterTask.cxx:131 AliEmcalAodTrackFilterTask.cxx:132 AliEmcalAodTrackFilterTask.cxx:133 AliEmcalAodTrackFilterTask.cxx:134 AliEmcalAodTrackFilterTask.cxx:135 AliEmcalAodTrackFilterTask.cxx:136 AliEmcalAodTrackFilterTask.cxx:137 AliEmcalAodTrackFilterTask.cxx:138 AliEmcalAodTrackFilterTask.cxx:139 AliEmcalAodTrackFilterTask.cxx:140 AliEmcalAodTrackFilterTask.cxx:141 AliEmcalAodTrackFilterTask.cxx:142 AliEmcalAodTrackFilterTask.cxx:143 AliEmcalAodTrackFilterTask.cxx:144 AliEmcalAodTrackFilterTask.cxx:145 AliEmcalAodTrackFilterTask.cxx:146 AliEmcalAodTrackFilterTask.cxx:147 AliEmcalAodTrackFilterTask.cxx:148 AliEmcalAodTrackFilterTask.cxx:149 AliEmcalAodTrackFilterTask.cxx:150 AliEmcalAodTrackFilterTask.cxx:151 AliEmcalAodTrackFilterTask.cxx:152 AliEmcalAodTrackFilterTask.cxx:153 AliEmcalAodTrackFilterTask.cxx:154 AliEmcalAodTrackFilterTask.cxx:155 AliEmcalAodTrackFilterTask.cxx:156 AliEmcalAodTrackFilterTask.cxx:157 AliEmcalAodTrackFilterTask.cxx:158 AliEmcalAodTrackFilterTask.cxx:159 AliEmcalAodTrackFilterTask.cxx:160 AliEmcalAodTrackFilterTask.cxx:161 AliEmcalAodTrackFilterTask.cxx:162 AliEmcalAodTrackFilterTask.cxx:163 AliEmcalAodTrackFilterTask.cxx:164 AliEmcalAodTrackFilterTask.cxx:165 AliEmcalAodTrackFilterTask.cxx:166 AliEmcalAodTrackFilterTask.cxx:167 AliEmcalAodTrackFilterTask.cxx:168 AliEmcalAodTrackFilterTask.cxx:169 AliEmcalAodTrackFilterTask.cxx:170 AliEmcalAodTrackFilterTask.cxx:171 AliEmcalAodTrackFilterTask.cxx:172 AliEmcalAodTrackFilterTask.cxx:173 AliEmcalAodTrackFilterTask.cxx:174 AliEmcalAodTrackFilterTask.cxx:175 AliEmcalAodTrackFilterTask.cxx:176 AliEmcalAodTrackFilterTask.cxx:177 AliEmcalAodTrackFilterTask.cxx:178 AliEmcalAodTrackFilterTask.cxx:179 AliEmcalAodTrackFilterTask.cxx:180 AliEmcalAodTrackFilterTask.cxx:181 AliEmcalAodTrackFilterTask.cxx:182 AliEmcalAodTrackFilterTask.cxx:183 AliEmcalAodTrackFilterTask.cxx:184 AliEmcalAodTrackFilterTask.cxx:185 AliEmcalAodTrackFilterTask.cxx:186 AliEmcalAodTrackFilterTask.cxx:187 AliEmcalAodTrackFilterTask.cxx:188 AliEmcalAodTrackFilterTask.cxx:189 AliEmcalAodTrackFilterTask.cxx:190 AliEmcalAodTrackFilterTask.cxx:191 AliEmcalAodTrackFilterTask.cxx:192 AliEmcalAodTrackFilterTask.cxx:193 AliEmcalAodTrackFilterTask.cxx:194 AliEmcalAodTrackFilterTask.cxx:195 AliEmcalAodTrackFilterTask.cxx:196