#include <TClonesArray.h>
#include <TRandom3.h>
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAnalysisManager.h"
#include "AliESDtrack.h"
#include "AliESDtrackCuts.h"
#include "AliEmcalPicoTrackMaker.h"
#include "AliLog.h"
#include "AliPicoTrack.h"
#include "AliVTrack.h"
#include "AliAODMCParticle.h"
#include "AliNamedArrayI.h"
ClassImp(AliEmcalPicoTrackMaker)
AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker() :
AliAnalysisTaskSE("AliEmcalPicoTrackMaker"),
fTracksOutName("PicoTracks"),
fTracksInName("tracks"),
fMCParticlesName("mcparticles"),
fMinTrackPt(0),
fMaxTrackPt(1000),
fMinTrackEta(-10),
fMaxTrackEta(10),
fMinTrackPhi(-10),
fMaxTrackPhi(10),
fTrackEfficiency(1),
fCopyMCFlag(kFALSE),
fTracksIn(0),
fTracksOut(0),
fMCParticles(0),
fMCParticlesMap(0),
fInit(kFALSE)
{
fAODfilterBits[0] = -1;
fAODfilterBits[1] = -1;
}
AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker(const char *name) :
AliAnalysisTaskSE(name),
fTracksOutName("PicoTracks"),
fTracksInName("tracks"),
fMCParticlesName("mcparticles"),
fMinTrackPt(0),
fMaxTrackPt(1000),
fMinTrackEta(-10),
fMaxTrackEta(10),
fMinTrackPhi(-10),
fMaxTrackPhi(10),
fTrackEfficiency(1),
fCopyMCFlag(kFALSE),
fTracksIn(0),
fTracksOut(0),
fMCParticles(0),
fMCParticlesMap(0),
fInit(kFALSE)
{
fAODfilterBits[0] = -1;
fAODfilterBits[1] = -1;
fBranchNames = "ESD:AliESDHeader.,AliESDRun.,SPDVertex.,Tracks";
}
AliEmcalPicoTrackMaker::~AliEmcalPicoTrackMaker()
{
}
void AliEmcalPicoTrackMaker::UserCreateOutputObjects()
{
}
void AliEmcalPicoTrackMaker::UserExec(Option_t *)
{
if (!fInit) {
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 = new TClonesArray("AliPicoTrack");
fTracksOut->SetName(fTracksOutName);
if (InputEvent()->FindListObject(fTracksOutName)) {
AliFatal(Form("Object %s already present in the event!",fTracksOutName.Data()));
}
else {
InputEvent()->AddObject(fTracksOut);
}
if (fCopyMCFlag) {
fMCParticles = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fMCParticlesName));
if (!fMCParticles) {
AliError(Form("Could not retrieve MC particles %s!", fMCParticlesName.Data()));
}
if (!fMCParticles->GetClass()->GetBaseClass("AliVParticle")) {
AliError(Form("%s: Collection %s does not contain AliVParticle objects!", GetName(), fMCParticlesName.Data()));
fMCParticles = 0;
}
TString mapName(fMCParticlesName);
mapName += "_Map";
fMCParticlesMap = dynamic_cast<AliNamedArrayI*>(InputEvent()->FindListObject(mapName));
}
fInit = kTRUE;
}
fTracksOut->Delete();
const Int_t Ntracks = fTracksIn->GetEntriesFast();
for (Int_t iTracks = 0, nacc = 0; iTracks < Ntracks; ++iTracks) {
AliVTrack *track = static_cast<AliVTrack*>(fTracksIn->At(iTracks));
if (!track)
continue;
if (track->Pt() > fMaxTrackPt || track->Pt() < fMinTrackPt)
continue;
if (track->Eta() < fMinTrackEta || track->Eta() > fMaxTrackEta ||
track->Phi() < fMinTrackPhi || track->Phi() > fMaxTrackPhi)
continue;
if (fTrackEfficiency < 1) {
Double_t r = gRandom->Rndm();
if (fTrackEfficiency < r)
continue;
}
Bool_t isEmc = kFALSE;
if (TMath::Abs(track->GetTrackEtaOnEMCal()) < 0.75 &&
track->GetTrackPhiOnEMCal() > 70 * TMath::DegToRad() &&
track->GetTrackPhiOnEMCal() < 190 * TMath::DegToRad())
isEmc = kTRUE;
AliPicoTrack *picotrack = new ((*fTracksOut)[nacc]) AliPicoTrack(track->Pt(),
track->Eta(),
track->Phi(),
track->Charge(),
track->GetLabel(),
AliPicoTrack::GetTrackType(track),
track->GetTrackEtaOnEMCal(),
track->GetTrackPhiOnEMCal(),
track->GetTrackPtOnEMCal(),
isEmc);
picotrack->SetTrack(track);
if (fCopyMCFlag && track->GetLabel() != 0) {
AliVParticle *mcpart = GetMCParticle(TMath::Abs(track->GetLabel()));
if (mcpart) {
UInt_t mcFlag = mcpart->GetFlag();
picotrack->SetFlag(mcFlag);
Short_t genIndex = mcpart->GetGeneratorIndex();
picotrack->SetGeneratorIndex(genIndex);
}
}
++nacc;
}
}
AliVParticle* AliEmcalPicoTrackMaker::GetMCParticle(Int_t label)
{
if (!fMCParticles) return 0;
Int_t index = label;
if (fMCParticlesMap) index = fMCParticlesMap->At(label);
if (index < 0 || index >= fMCParticles->GetEntriesFast()) return 0;
AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
return part;
}
AliEmcalPicoTrackMaker.cxx:1 AliEmcalPicoTrackMaker.cxx:2 AliEmcalPicoTrackMaker.cxx:3 AliEmcalPicoTrackMaker.cxx:4 AliEmcalPicoTrackMaker.cxx:5 AliEmcalPicoTrackMaker.cxx:6 AliEmcalPicoTrackMaker.cxx:7 AliEmcalPicoTrackMaker.cxx:8 AliEmcalPicoTrackMaker.cxx:9 AliEmcalPicoTrackMaker.cxx:10 AliEmcalPicoTrackMaker.cxx:11 AliEmcalPicoTrackMaker.cxx:12 AliEmcalPicoTrackMaker.cxx:13 AliEmcalPicoTrackMaker.cxx:14 AliEmcalPicoTrackMaker.cxx:15 AliEmcalPicoTrackMaker.cxx:16 AliEmcalPicoTrackMaker.cxx:17 AliEmcalPicoTrackMaker.cxx:18 AliEmcalPicoTrackMaker.cxx:19 AliEmcalPicoTrackMaker.cxx:20 AliEmcalPicoTrackMaker.cxx:21 AliEmcalPicoTrackMaker.cxx:22 AliEmcalPicoTrackMaker.cxx:23 AliEmcalPicoTrackMaker.cxx:24 AliEmcalPicoTrackMaker.cxx:25 AliEmcalPicoTrackMaker.cxx:26 AliEmcalPicoTrackMaker.cxx:27 AliEmcalPicoTrackMaker.cxx:28 AliEmcalPicoTrackMaker.cxx:29 AliEmcalPicoTrackMaker.cxx:30 AliEmcalPicoTrackMaker.cxx:31 AliEmcalPicoTrackMaker.cxx:32 AliEmcalPicoTrackMaker.cxx:33 AliEmcalPicoTrackMaker.cxx:34 AliEmcalPicoTrackMaker.cxx:35 AliEmcalPicoTrackMaker.cxx:36 AliEmcalPicoTrackMaker.cxx:37 AliEmcalPicoTrackMaker.cxx:38 AliEmcalPicoTrackMaker.cxx:39 AliEmcalPicoTrackMaker.cxx:40 AliEmcalPicoTrackMaker.cxx:41 AliEmcalPicoTrackMaker.cxx:42 AliEmcalPicoTrackMaker.cxx:43 AliEmcalPicoTrackMaker.cxx:44 AliEmcalPicoTrackMaker.cxx:45 AliEmcalPicoTrackMaker.cxx:46 AliEmcalPicoTrackMaker.cxx:47 AliEmcalPicoTrackMaker.cxx:48 AliEmcalPicoTrackMaker.cxx:49 AliEmcalPicoTrackMaker.cxx:50 AliEmcalPicoTrackMaker.cxx:51 AliEmcalPicoTrackMaker.cxx:52 AliEmcalPicoTrackMaker.cxx:53 AliEmcalPicoTrackMaker.cxx:54 AliEmcalPicoTrackMaker.cxx:55 AliEmcalPicoTrackMaker.cxx:56 AliEmcalPicoTrackMaker.cxx:57 AliEmcalPicoTrackMaker.cxx:58 AliEmcalPicoTrackMaker.cxx:59 AliEmcalPicoTrackMaker.cxx:60 AliEmcalPicoTrackMaker.cxx:61 AliEmcalPicoTrackMaker.cxx:62 AliEmcalPicoTrackMaker.cxx:63 AliEmcalPicoTrackMaker.cxx:64 AliEmcalPicoTrackMaker.cxx:65 AliEmcalPicoTrackMaker.cxx:66 AliEmcalPicoTrackMaker.cxx:67 AliEmcalPicoTrackMaker.cxx:68 AliEmcalPicoTrackMaker.cxx:69 AliEmcalPicoTrackMaker.cxx:70 AliEmcalPicoTrackMaker.cxx:71 AliEmcalPicoTrackMaker.cxx:72 AliEmcalPicoTrackMaker.cxx:73 AliEmcalPicoTrackMaker.cxx:74 AliEmcalPicoTrackMaker.cxx:75 AliEmcalPicoTrackMaker.cxx:76 AliEmcalPicoTrackMaker.cxx:77 AliEmcalPicoTrackMaker.cxx:78 AliEmcalPicoTrackMaker.cxx:79 AliEmcalPicoTrackMaker.cxx:80 AliEmcalPicoTrackMaker.cxx:81 AliEmcalPicoTrackMaker.cxx:82 AliEmcalPicoTrackMaker.cxx:83 AliEmcalPicoTrackMaker.cxx:84 AliEmcalPicoTrackMaker.cxx:85 AliEmcalPicoTrackMaker.cxx:86 AliEmcalPicoTrackMaker.cxx:87 AliEmcalPicoTrackMaker.cxx:88 AliEmcalPicoTrackMaker.cxx:89 AliEmcalPicoTrackMaker.cxx:90 AliEmcalPicoTrackMaker.cxx:91 AliEmcalPicoTrackMaker.cxx:92 AliEmcalPicoTrackMaker.cxx:93 AliEmcalPicoTrackMaker.cxx:94 AliEmcalPicoTrackMaker.cxx:95 AliEmcalPicoTrackMaker.cxx:96 AliEmcalPicoTrackMaker.cxx:97 AliEmcalPicoTrackMaker.cxx:98 AliEmcalPicoTrackMaker.cxx:99 AliEmcalPicoTrackMaker.cxx:100 AliEmcalPicoTrackMaker.cxx:101 AliEmcalPicoTrackMaker.cxx:102 AliEmcalPicoTrackMaker.cxx:103 AliEmcalPicoTrackMaker.cxx:104 AliEmcalPicoTrackMaker.cxx:105 AliEmcalPicoTrackMaker.cxx:106 AliEmcalPicoTrackMaker.cxx:107 AliEmcalPicoTrackMaker.cxx:108 AliEmcalPicoTrackMaker.cxx:109 AliEmcalPicoTrackMaker.cxx:110 AliEmcalPicoTrackMaker.cxx:111 AliEmcalPicoTrackMaker.cxx:112 AliEmcalPicoTrackMaker.cxx:113 AliEmcalPicoTrackMaker.cxx:114 AliEmcalPicoTrackMaker.cxx:115 AliEmcalPicoTrackMaker.cxx:116 AliEmcalPicoTrackMaker.cxx:117 AliEmcalPicoTrackMaker.cxx:118 AliEmcalPicoTrackMaker.cxx:119 AliEmcalPicoTrackMaker.cxx:120 AliEmcalPicoTrackMaker.cxx:121 AliEmcalPicoTrackMaker.cxx:122 AliEmcalPicoTrackMaker.cxx:123 AliEmcalPicoTrackMaker.cxx:124 AliEmcalPicoTrackMaker.cxx:125 AliEmcalPicoTrackMaker.cxx:126 AliEmcalPicoTrackMaker.cxx:127 AliEmcalPicoTrackMaker.cxx:128 AliEmcalPicoTrackMaker.cxx:129 AliEmcalPicoTrackMaker.cxx:130 AliEmcalPicoTrackMaker.cxx:131 AliEmcalPicoTrackMaker.cxx:132 AliEmcalPicoTrackMaker.cxx:133 AliEmcalPicoTrackMaker.cxx:134 AliEmcalPicoTrackMaker.cxx:135 AliEmcalPicoTrackMaker.cxx:136 AliEmcalPicoTrackMaker.cxx:137 AliEmcalPicoTrackMaker.cxx:138 AliEmcalPicoTrackMaker.cxx:139 AliEmcalPicoTrackMaker.cxx:140 AliEmcalPicoTrackMaker.cxx:141 AliEmcalPicoTrackMaker.cxx:142 AliEmcalPicoTrackMaker.cxx:143 AliEmcalPicoTrackMaker.cxx:144 AliEmcalPicoTrackMaker.cxx:145 AliEmcalPicoTrackMaker.cxx:146 AliEmcalPicoTrackMaker.cxx:147 AliEmcalPicoTrackMaker.cxx:148 AliEmcalPicoTrackMaker.cxx:149 AliEmcalPicoTrackMaker.cxx:150 AliEmcalPicoTrackMaker.cxx:151 AliEmcalPicoTrackMaker.cxx:152 AliEmcalPicoTrackMaker.cxx:153 AliEmcalPicoTrackMaker.cxx:154 AliEmcalPicoTrackMaker.cxx:155 AliEmcalPicoTrackMaker.cxx:156 AliEmcalPicoTrackMaker.cxx:157 AliEmcalPicoTrackMaker.cxx:158 AliEmcalPicoTrackMaker.cxx:159 AliEmcalPicoTrackMaker.cxx:160 AliEmcalPicoTrackMaker.cxx:161 AliEmcalPicoTrackMaker.cxx:162 AliEmcalPicoTrackMaker.cxx:163 AliEmcalPicoTrackMaker.cxx:164 AliEmcalPicoTrackMaker.cxx:165 AliEmcalPicoTrackMaker.cxx:166 AliEmcalPicoTrackMaker.cxx:167 AliEmcalPicoTrackMaker.cxx:168 AliEmcalPicoTrackMaker.cxx:169 AliEmcalPicoTrackMaker.cxx:170 AliEmcalPicoTrackMaker.cxx:171 AliEmcalPicoTrackMaker.cxx:172 AliEmcalPicoTrackMaker.cxx:173 AliEmcalPicoTrackMaker.cxx:174 AliEmcalPicoTrackMaker.cxx:175 AliEmcalPicoTrackMaker.cxx:176 AliEmcalPicoTrackMaker.cxx:177 AliEmcalPicoTrackMaker.cxx:178 AliEmcalPicoTrackMaker.cxx:179 AliEmcalPicoTrackMaker.cxx:180 AliEmcalPicoTrackMaker.cxx:181 AliEmcalPicoTrackMaker.cxx:182 AliEmcalPicoTrackMaker.cxx:183 AliEmcalPicoTrackMaker.cxx:184 AliEmcalPicoTrackMaker.cxx:185 AliEmcalPicoTrackMaker.cxx:186 AliEmcalPicoTrackMaker.cxx:187 AliEmcalPicoTrackMaker.cxx:188 AliEmcalPicoTrackMaker.cxx:189 AliEmcalPicoTrackMaker.cxx:190 AliEmcalPicoTrackMaker.cxx:191 AliEmcalPicoTrackMaker.cxx:192 AliEmcalPicoTrackMaker.cxx:193 AliEmcalPicoTrackMaker.cxx:194 AliEmcalPicoTrackMaker.cxx:195 AliEmcalPicoTrackMaker.cxx:196 AliEmcalPicoTrackMaker.cxx:197 AliEmcalPicoTrackMaker.cxx:198