15 #include <THashList.h>
19 #include "AliAnalysisManager.h"
21 #include "AliAnalysisUtils.h"
22 #include "AliAODTrack.h"
23 #include "AliESDtrack.h"
24 #include "AliInputEventHandler.h"
25 #include "AliVEvent.h"
26 #include "AliVTrack.h"
27 #include "AliVVertex.h"
31 namespace EMCalTriggerPtAnalysis {
33 AliAnalysisTaskCountITStracks::AliAnalysisTaskCountITStracks() :
35 fAnalysisUtils(
nullptr),
41 AliAnalysisTaskCountITStracks::AliAnalysisTaskCountITStracks(
const char *name) :
43 fAnalysisUtils(
nullptr),
46 DefineOutput(1, TList::Class());
49 AliAnalysisTaskCountITStracks::~AliAnalysisTaskCountITStracks() {
50 if(fAnalysisUtils)
delete fAnalysisUtils;
51 if(fHistos)
delete fHistos;
54 void AliAnalysisTaskCountITStracks::UserCreateOutputObjects(){
55 fAnalysisUtils =
new AliAnalysisUtils;
58 fHistos->CreateTH1(
"countITStracksACside",
"Total ITS track count for A- and C-side", 2, -0.5, 1.5);
59 fHistos->CreateTH1(
"countITStracksEventAside",
"Multiplicity distribution ITS tracks in EMCAL area A-side", 101, 0.5, 100.5);
60 fHistos->CreateTH1(
"countITStracksEventCside",
"Multiplicity distribution ITS tracks in EMCAL area C-side", 101, 0.5, 100.5);
61 PostData(1, fHistos->GetListOfHistograms());
64 void AliAnalysisTaskCountITStracks::UserExec(
Option_t *){
70 const int kAside = 0, kCside = 1;
73 if(!(fInputHandler->IsEventSelected() & AliVEvent::kINT7))
return;
74 double vz = fInputEvent->GetPrimaryVertex()->GetZ();
75 if(TMath::Abs(vz) > 10.)
return;
76 if(!fAnalysisUtils->IsVertexSelected2013pA(fInputEvent))
return;
77 if(fAnalysisUtils->IsPileUpEvent(fInputEvent))
return;
79 int nTracksAside(0), nTracksCside(0);
81 for(
int itrk = 0; itrk < fInputEvent->GetNumberOfTracks(); itrk++){
82 AliVTrack *trk =
static_cast<AliVTrack *
>(fInputEvent->GetTrack(itrk));
85 double eta = trk->Eta(), phi = trk->Phi();
86 if(TMath::Abs(eta) > 0.5)
continue;
87 if(phi < 1.4 || phi > 3.1)
continue;
90 AliESDtrack *esdtrack(
nullptr);
91 AliAODTrack *aodtrack(
nullptr);
93 if((esdtrack = static_cast<AliESDtrack *>(trk))) {
94 if(!esdtrack->GetStatus() & AliESDtrack::kITSpureSA)
continue;
95 esdtrack->GetImpactParameters(dr, dz);
96 }
else if((aodtrack = static_cast<AliAODTrack *>(trk))) {
97 if(!aodtrack->IsPureITSStandalone())
continue;
98 aodtrack->GetImpactParameters(dr, dz);
104 if(TMath::Abs(dr) > 3.2)
continue;
105 if(TMath::Abs(dz) > 2.)
continue;
108 if(TMath::Abs(trk->Pt()) < 0.5)
continue;
119 fHistos->FillTH1(
"countITStracksACside", side);
123 fHistos->FillTH1(
"countITStracksEventAside", nTracksAside);
124 fHistos->FillTH1(
"countITStracksEventCside", nTracksCside);
126 PostData(1, fHistos->GetListOfHistograms());
129 AliAnalysisTaskCountITStracks *AliAnalysisTaskCountITStracks::AddTaskCountITStracks(
const char *name) {
131 AliAnalysisTaskCountITStracks *task =
new AliAnalysisTaskCountITStracks(name);
134 TString outputcont = mgr->GetCommonFileName();
135 outputcont +=
":CountITStracks";
137 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
138 mgr->ConnectOutput(task, 1, mgr->CreateContainer(
"histosCountITStracks", TList::Class(), AliAnalysisManager::kOutputContainer, outputcont));
ClassImp(EMCalTriggerPtAnalysis::AliAnalysisTaskCountITStracks) namespace EMCalTriggerPtAnalysis
Container class for histograms.