15 #include <TClonesArray.h>
20 #include "AliAnalysisTaskEmcalJet.h"
21 #include "AliAnalysisUtils.h"
22 #include "AliAODMCParticle.h"
23 #include "AliEmcalJet.h"
24 #include "AliGenPythiaEventHeader.h"
25 #include "AliJetContainer.h"
26 #include "AliMCEvent.h"
27 #include "AliMCParticle.h"
28 #include "AliParticleContainer.h"
29 #include "AliVEvent.h"
30 #include "AliVParticle.h"
31 #include "AliVTrack.h"
32 #include "AliVVertex.h"
39 namespace EMCalTriggerPtAnalysis {
41 AliAnalysisTaskPtEfficiencyJets::AliAnalysisTaskPtEfficiencyJets() :
42 AliAnalysisTaskEmcalJet(),
50 AliAnalysisTaskPtEfficiencyJets::AliAnalysisTaskPtEfficiencyJets(
const char *name) :
51 AliAnalysisTaskEmcalJet(name, kTRUE),
57 fAnalysisUtils =
new AliAnalysisUtils();
58 SetMakeGeneralHistograms(kTRUE);
61 AliAnalysisTaskPtEfficiencyJets::~AliAnalysisTaskPtEfficiencyJets() {
62 if(fAnalysisUtils)
delete fAnalysisUtils;
63 if(fTrackCuts)
delete fTrackCuts;
64 if(fTrackNtuple)
delete fTrackNtuple;
67 void AliAnalysisTaskPtEfficiencyJets::UserCreateOutputObjects() {
69 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
70 fTrackNtuple =
new TNtuple(
"tracktuple",
"track tuple",
"partpt:trackpt:jetpt:pthard:parteta:partphi:tracketa:trackphi:vertexz");
71 fOutput->Add(fTrackNtuple);
75 Bool_t AliAnalysisTaskPtEfficiencyJets::Run() {
77 if(!fAnalysisUtils->IsVertexSelected2013pA(fInputEvent))
return kFALSE;
78 const AliVVertex *primvertex = fInputEvent->GetPrimaryVertex();
81 AliGenPythiaEventHeader *evheader =
dynamic_cast<AliGenPythiaEventHeader *
>(fMCEvent->GenEventHeader());
82 if(evheader) pthard = evheader->GetPtHard();
84 AliJetContainer *jcmc =
dynamic_cast<AliJetContainer *
>(fJetCollArray.FindObject(fMCJetContainer.Data()));
85 if(!jcmc)
return kFALSE;
86 TClonesArray *particleArray = jcmc->GetParticleContainer()->GetArray();
88 for(TIter partIter = TIter(particleArray).Begin(); partIter != TIter::End(); ++partIter){
89 AliVParticle *part =
static_cast<AliVParticle *
>(*partIter);
90 if(!SelectTrueParticle(part))
continue;
91 AliVTrack *reconstructed = FindAssociatedTrack(part);
92 AliEmcalJet *jet = FindAssociatedJet(part, jcmc);
103 Float_t data[] = {(Float_t)TMath::Abs(part->Pt()), reconstructed ? TMath::Abs(reconstructed->Pt()) : 0,
104 jet ? TMath::Abs(jet->Pt()) : 0, pthard, (Float_t)part->Eta(), (Float_t)part->Phi(), reconstructed ? reconstructed->Eta() : -1000000.,
105 reconstructed ? reconstructed->Phi() : -1000000., primvertex ? primvertex->GetZ() : -1000000.
107 fTrackNtuple->Fill(data);
109 PostData(1, fOutput);
113 AliVTrack* AliAnalysisTaskPtEfficiencyJets::FindAssociatedTrack(AliVParticle* trueParticle) {
114 AliVTrack *result = NULL, *tmp = NULL;
115 for(
int itrk = 0; itrk < fInputEvent->GetNumberOfTracks(); itrk++){
116 AliVTrack *trk =
static_cast<AliVTrack *
>(fInputEvent->GetTrack(itrk));
117 if(TMath::Abs(trk->GetLabel()) != TMath::Abs(trueParticle->GetLabel()))
continue;
118 if(!fTrackCuts->IsTrackAccepted(trk))
continue;
125 AliEmcalJet* AliAnalysisTaskPtEfficiencyJets::FindAssociatedJet(AliVParticle* trueParticle, AliJetContainer* jets) {
126 AliEmcalJet *result = NULL;
127 for(
int ijet = 0; ijet < jets->GetNJets(); ijet++){
128 AliEmcalJet *nextjet = jets->GetJet(ijet);
129 if(nextjet->ContainsTrack(trueParticle, jets->GetParticleContainer()->GetArray())){
137 bool AliAnalysisTaskPtEfficiencyJets::SelectTrueParticle(AliVParticle* part) {
138 if(part->IsA() == AliAODMCParticle::Class()){
139 AliAODMCParticle *aodpart =
static_cast<AliAODMCParticle *
>(part);
140 if(!aodpart->IsPhysicalPrimary())
return kFALSE;
141 if(!aodpart->Charge())
return kFALSE;
142 if(TMath::Abs(aodpart->Eta()) > 0.8)
return kFALSE;
143 if(TMath::Abs(aodpart->Pt()) < 5.)
return kFALSE;
146 AliMCParticle *esdpart =
static_cast<AliMCParticle *
>(part);
147 if(!fMCEvent->IsPhysicalPrimary(esdpart->GetLabel()))
return kFALSE;
148 if(!esdpart->Charge())
return kFALSE;
149 if(TMath::Abs(esdpart->Eta()) > 0.8)
return kFALSE;
150 if(TMath::Abs(esdpart->Pt()) < 5.)
return kFALSE;
ClassImp(EMCalTriggerPtAnalysis::AliAnalysisTaskPtEfficiencyJets) namespace EMCalTriggerPtAnalysis
Declartion of class AliEMCalPtTaskVTrackSelection.