#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "TParticle.h"
#include "TObjArray.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliESDtrackCuts.h"
#include "AliCentrality.h"
#include "AliEbyEFluctuationAnalysisTask.h"
ClassImp(AliEbyEFluctuationAnalysisTask)
AliEbyEFluctuationAnalysisTask::AliEbyEFluctuationAnalysisTask(const char *name)
: AliAnalysisTaskSE(name), fESD(0), fOutputList(0),
fHistEventStats(0), fHistCentrality(0),
fHistNMultMC(0), fHistNPlusNMinusMC(0),
fESDtrackCuts(0),
fAnalysisType("ESD"), fAnalysisMode("TPC"),
fCentralityEstimator("V0M"), fCentralityBins20(kFALSE),
fVxMax(3.), fVyMax(3.), fVzMax(10.) {
for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++) {
fHistNMult[iBin-1] = NULL;
fHistNPlusNMinus[iBin-1] = NULL;
}
DefineInput(0, TChain::Class());
DefineOutput(1, TList::Class());
}
void AliEbyEFluctuationAnalysisTask::UserCreateOutputObjects() {
fOutputList = new TList();
fOutputList->SetOwner();
TString gCutName[4] = {"Total","Offline trigger",
"Vertex","Analyzed"};
fHistEventStats = new TH1F("fHistEventStats",
"Event statistics;;N_{events}",
4,0.5,4.5);
for(Int_t i = 1; i <= 4; i++)
fHistEventStats->GetXaxis()->SetBinLabel(i,gCutName[i-1].Data());
fOutputList->Add(fHistEventStats);
if(fAnalysisType == "ESD") {
fHistCentrality = new TH1F("fHistCentrality",";Centrality bin;Events",
nCentralityBins,0.5,nCentralityBins+0.5);
fOutputList->Add(fHistCentrality);
TString histName;
for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++) {
histName = "fHistNMult"; histName += "Centrality"; histName += iBin;
fHistNMult[iBin-1] = new TH1F(histName.Data(),
";N_{mult.}",
500,0,3000);
fOutputList->Add(fHistNMult[iBin-1]);
}
for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++) {
histName = "fHistNPlusNMinus"; histName += "Centrality"; histName += iBin;
fHistNPlusNMinus[iBin-1] = new TH2F(histName.Data(),
";N_{+};N_{-}",
2000,0.5,2000.5,2000,0.5,2000.5);
fOutputList->Add(fHistNPlusNMinus[iBin-1]);
}
}
else if(fAnalysisType == "MC") {
TString histName = "fHistNMultMC";
fHistNMultMC = new TH1F(histName.Data(),
";N_{mult.}",
600,0,6000);
fOutputList->Add(fHistNMultMC);
histName = "fHistNPlusNMinusMC";
fHistNPlusNMinusMC = new TH2F(histName.Data(),
";N_{+};N_{-}",
3000,0.5,3000.5,3000,0.5,3000.5);
fOutputList->Add(fHistNPlusNMinusMC);
}
}
void AliEbyEFluctuationAnalysisTask::UserExec(Option_t *) {
Int_t nPlus = 0, nMinus = 0;
if(fAnalysisType == "ESD") {
fESD = dynamic_cast<AliESDEvent*>(InputEvent());
if (!fESD) {
printf("ERROR: fESD not available\n");
return;
}
fHistEventStats->Fill(1);
fHistEventStats->Fill(2);
Printf("Event accepted");
AliCentrality *centrality = fESD->GetCentrality();
Int_t nCentrality = 0;
if(fCentralityBins20)
nCentrality = centrality->GetCentralityClass5(fCentralityEstimator.Data());
else
nCentrality = centrality->GetCentralityClass10(fCentralityEstimator.Data());
if((nCentrality < 0)||(nCentrality > 19)) return;
if(fAnalysisMode == "TPC") {
const AliESDVertex *vertex = fESD->GetPrimaryVertexTPC();
if(vertex) {
if(vertex->GetNContributors() > 0) {
if(vertex->GetZRes() != 0) {
fHistEventStats->Fill(3);
if(TMath::Abs(vertex->GetX()) < fVxMax) {
if(TMath::Abs(vertex->GetY()) < fVyMax) {
if(TMath::Abs(vertex->GetZ()) < fVzMax) {
fHistEventStats->Fill(4);
Int_t nAcceptedTracks = 0;
TObjArray *gTrackArray = 0;
if(fESDtrackCuts)
gTrackArray = fESDtrackCuts->GetAcceptedTracks(fESD,kTRUE);
if(gTrackArray) {
nAcceptedTracks = gTrackArray->GetEntries();
AliESDtrack* track = 0;
for (Int_t iTracks = 0; iTracks < nAcceptedTracks; iTracks++) {
track = dynamic_cast<AliESDtrack *>(gTrackArray->At(iTracks));
if (!track) {
printf("ERROR: Could not receive track %d\n", iTracks);
continue;
}
Short_t gCharge = track->Charge();
if(gCharge > 0) nPlus += 1;
if(gCharge < 0) nMinus += 1;
}
}
fHistCentrality->Fill(nCentrality);
fHistNPlusNMinus[nCentrality-1]->Fill(nPlus,nMinus);
fHistNMult[nCentrality-1]->Fill(nPlus+nMinus);
}
}
}
}
}
}
}
}
if(fAnalysisType == "MC") {
AliMCEvent* mcEvent = MCEvent();
if (!mcEvent) {
Printf("ERROR: Could not retrieve MC event");
return;
}
AliStack* stack = mcEvent->Stack();
if (!stack) {
Printf("ERROR: Could not retrieve MC stack");
return;
}
fHistEventStats->Fill(1);
fHistEventStats->Fill(2);
fHistEventStats->Fill(3);
fHistEventStats->Fill(4);
for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfTracks(); iTracks++) {
AliVParticle* track = mcEvent->GetTrack(iTracks);
if (!track) {
Printf("ERROR: Could not receive track %d (mc loop)", iTracks);
continue;
}
if(!stack->IsPhysicalPrimary(iTracks)) continue;
if((track->Pt() < 0.3) && (track->Pt() > 1.5)) continue;
if(TMath::Abs(track->Eta()) > 0.8) continue;
Short_t gCharge = track->Charge();
if(gCharge > 0) nPlus += 1;
if(gCharge < 0) nMinus += 1;
}
fHistNPlusNMinusMC->Fill(nPlus,nMinus);
fHistNMultMC->Fill(nPlus+nMinus);
}
PostData(1, fOutputList);
}
void AliEbyEFluctuationAnalysisTask::Terminate(Option_t *) {
fOutputList = dynamic_cast<TList*> (GetOutputData(1));
if (!fOutputList) {
printf("ERROR: Output list not available\n");
return;
}
}
AliEbyEFluctuationAnalysisTask.cxx:1 AliEbyEFluctuationAnalysisTask.cxx:2 AliEbyEFluctuationAnalysisTask.cxx:3 AliEbyEFluctuationAnalysisTask.cxx:4 AliEbyEFluctuationAnalysisTask.cxx:5 AliEbyEFluctuationAnalysisTask.cxx:6 AliEbyEFluctuationAnalysisTask.cxx:7 AliEbyEFluctuationAnalysisTask.cxx:8 AliEbyEFluctuationAnalysisTask.cxx:9 AliEbyEFluctuationAnalysisTask.cxx:10 AliEbyEFluctuationAnalysisTask.cxx:11 AliEbyEFluctuationAnalysisTask.cxx:12 AliEbyEFluctuationAnalysisTask.cxx:13 AliEbyEFluctuationAnalysisTask.cxx:14 AliEbyEFluctuationAnalysisTask.cxx:15 AliEbyEFluctuationAnalysisTask.cxx:16 AliEbyEFluctuationAnalysisTask.cxx:17 AliEbyEFluctuationAnalysisTask.cxx:18 AliEbyEFluctuationAnalysisTask.cxx:19 AliEbyEFluctuationAnalysisTask.cxx:20 AliEbyEFluctuationAnalysisTask.cxx:21 AliEbyEFluctuationAnalysisTask.cxx:22 AliEbyEFluctuationAnalysisTask.cxx:23 AliEbyEFluctuationAnalysisTask.cxx:24 AliEbyEFluctuationAnalysisTask.cxx:25 AliEbyEFluctuationAnalysisTask.cxx:26 AliEbyEFluctuationAnalysisTask.cxx:27 AliEbyEFluctuationAnalysisTask.cxx:28 AliEbyEFluctuationAnalysisTask.cxx:29 AliEbyEFluctuationAnalysisTask.cxx:30 AliEbyEFluctuationAnalysisTask.cxx:31 AliEbyEFluctuationAnalysisTask.cxx:32 AliEbyEFluctuationAnalysisTask.cxx:33 AliEbyEFluctuationAnalysisTask.cxx:34 AliEbyEFluctuationAnalysisTask.cxx:35 AliEbyEFluctuationAnalysisTask.cxx:36 AliEbyEFluctuationAnalysisTask.cxx:37 AliEbyEFluctuationAnalysisTask.cxx:38 AliEbyEFluctuationAnalysisTask.cxx:39 AliEbyEFluctuationAnalysisTask.cxx:40 AliEbyEFluctuationAnalysisTask.cxx:41 AliEbyEFluctuationAnalysisTask.cxx:42 AliEbyEFluctuationAnalysisTask.cxx:43 AliEbyEFluctuationAnalysisTask.cxx:44 AliEbyEFluctuationAnalysisTask.cxx:45 AliEbyEFluctuationAnalysisTask.cxx:46 AliEbyEFluctuationAnalysisTask.cxx:47 AliEbyEFluctuationAnalysisTask.cxx:48 AliEbyEFluctuationAnalysisTask.cxx:49 AliEbyEFluctuationAnalysisTask.cxx:50 AliEbyEFluctuationAnalysisTask.cxx:51 AliEbyEFluctuationAnalysisTask.cxx:52 AliEbyEFluctuationAnalysisTask.cxx:53 AliEbyEFluctuationAnalysisTask.cxx:54 AliEbyEFluctuationAnalysisTask.cxx:55 AliEbyEFluctuationAnalysisTask.cxx:56 AliEbyEFluctuationAnalysisTask.cxx:57 AliEbyEFluctuationAnalysisTask.cxx:58 AliEbyEFluctuationAnalysisTask.cxx:59 AliEbyEFluctuationAnalysisTask.cxx:60 AliEbyEFluctuationAnalysisTask.cxx:61 AliEbyEFluctuationAnalysisTask.cxx:62 AliEbyEFluctuationAnalysisTask.cxx:63 AliEbyEFluctuationAnalysisTask.cxx:64 AliEbyEFluctuationAnalysisTask.cxx:65 AliEbyEFluctuationAnalysisTask.cxx:66 AliEbyEFluctuationAnalysisTask.cxx:67 AliEbyEFluctuationAnalysisTask.cxx:68 AliEbyEFluctuationAnalysisTask.cxx:69 AliEbyEFluctuationAnalysisTask.cxx:70 AliEbyEFluctuationAnalysisTask.cxx:71 AliEbyEFluctuationAnalysisTask.cxx:72 AliEbyEFluctuationAnalysisTask.cxx:73 AliEbyEFluctuationAnalysisTask.cxx:74 AliEbyEFluctuationAnalysisTask.cxx:75 AliEbyEFluctuationAnalysisTask.cxx:76 AliEbyEFluctuationAnalysisTask.cxx:77 AliEbyEFluctuationAnalysisTask.cxx:78 AliEbyEFluctuationAnalysisTask.cxx:79 AliEbyEFluctuationAnalysisTask.cxx:80 AliEbyEFluctuationAnalysisTask.cxx:81 AliEbyEFluctuationAnalysisTask.cxx:82 AliEbyEFluctuationAnalysisTask.cxx:83 AliEbyEFluctuationAnalysisTask.cxx:84 AliEbyEFluctuationAnalysisTask.cxx:85 AliEbyEFluctuationAnalysisTask.cxx:86 AliEbyEFluctuationAnalysisTask.cxx:87 AliEbyEFluctuationAnalysisTask.cxx:88 AliEbyEFluctuationAnalysisTask.cxx:89 AliEbyEFluctuationAnalysisTask.cxx:90 AliEbyEFluctuationAnalysisTask.cxx:91 AliEbyEFluctuationAnalysisTask.cxx:92 AliEbyEFluctuationAnalysisTask.cxx:93 AliEbyEFluctuationAnalysisTask.cxx:94 AliEbyEFluctuationAnalysisTask.cxx:95 AliEbyEFluctuationAnalysisTask.cxx:96 AliEbyEFluctuationAnalysisTask.cxx:97 AliEbyEFluctuationAnalysisTask.cxx:98 AliEbyEFluctuationAnalysisTask.cxx:99 AliEbyEFluctuationAnalysisTask.cxx:100 AliEbyEFluctuationAnalysisTask.cxx:101 AliEbyEFluctuationAnalysisTask.cxx:102 AliEbyEFluctuationAnalysisTask.cxx:103 AliEbyEFluctuationAnalysisTask.cxx:104 AliEbyEFluctuationAnalysisTask.cxx:105 AliEbyEFluctuationAnalysisTask.cxx:106 AliEbyEFluctuationAnalysisTask.cxx:107 AliEbyEFluctuationAnalysisTask.cxx:108 AliEbyEFluctuationAnalysisTask.cxx:109 AliEbyEFluctuationAnalysisTask.cxx:110 AliEbyEFluctuationAnalysisTask.cxx:111 AliEbyEFluctuationAnalysisTask.cxx:112 AliEbyEFluctuationAnalysisTask.cxx:113 AliEbyEFluctuationAnalysisTask.cxx:114 AliEbyEFluctuationAnalysisTask.cxx:115 AliEbyEFluctuationAnalysisTask.cxx:116 AliEbyEFluctuationAnalysisTask.cxx:117 AliEbyEFluctuationAnalysisTask.cxx:118 AliEbyEFluctuationAnalysisTask.cxx:119 AliEbyEFluctuationAnalysisTask.cxx:120 AliEbyEFluctuationAnalysisTask.cxx:121 AliEbyEFluctuationAnalysisTask.cxx:122 AliEbyEFluctuationAnalysisTask.cxx:123 AliEbyEFluctuationAnalysisTask.cxx:124 AliEbyEFluctuationAnalysisTask.cxx:125 AliEbyEFluctuationAnalysisTask.cxx:126 AliEbyEFluctuationAnalysisTask.cxx:127 AliEbyEFluctuationAnalysisTask.cxx:128 AliEbyEFluctuationAnalysisTask.cxx:129 AliEbyEFluctuationAnalysisTask.cxx:130 AliEbyEFluctuationAnalysisTask.cxx:131 AliEbyEFluctuationAnalysisTask.cxx:132 AliEbyEFluctuationAnalysisTask.cxx:133 AliEbyEFluctuationAnalysisTask.cxx:134 AliEbyEFluctuationAnalysisTask.cxx:135 AliEbyEFluctuationAnalysisTask.cxx:136 AliEbyEFluctuationAnalysisTask.cxx:137 AliEbyEFluctuationAnalysisTask.cxx:138 AliEbyEFluctuationAnalysisTask.cxx:139 AliEbyEFluctuationAnalysisTask.cxx:140 AliEbyEFluctuationAnalysisTask.cxx:141 AliEbyEFluctuationAnalysisTask.cxx:142 AliEbyEFluctuationAnalysisTask.cxx:143 AliEbyEFluctuationAnalysisTask.cxx:144 AliEbyEFluctuationAnalysisTask.cxx:145 AliEbyEFluctuationAnalysisTask.cxx:146 AliEbyEFluctuationAnalysisTask.cxx:147 AliEbyEFluctuationAnalysisTask.cxx:148 AliEbyEFluctuationAnalysisTask.cxx:149 AliEbyEFluctuationAnalysisTask.cxx:150 AliEbyEFluctuationAnalysisTask.cxx:151 AliEbyEFluctuationAnalysisTask.cxx:152 AliEbyEFluctuationAnalysisTask.cxx:153 AliEbyEFluctuationAnalysisTask.cxx:154 AliEbyEFluctuationAnalysisTask.cxx:155 AliEbyEFluctuationAnalysisTask.cxx:156 AliEbyEFluctuationAnalysisTask.cxx:157 AliEbyEFluctuationAnalysisTask.cxx:158 AliEbyEFluctuationAnalysisTask.cxx:159 AliEbyEFluctuationAnalysisTask.cxx:160 AliEbyEFluctuationAnalysisTask.cxx:161 AliEbyEFluctuationAnalysisTask.cxx:162 AliEbyEFluctuationAnalysisTask.cxx:163 AliEbyEFluctuationAnalysisTask.cxx:164 AliEbyEFluctuationAnalysisTask.cxx:165 AliEbyEFluctuationAnalysisTask.cxx:166 AliEbyEFluctuationAnalysisTask.cxx:167 AliEbyEFluctuationAnalysisTask.cxx:168 AliEbyEFluctuationAnalysisTask.cxx:169 AliEbyEFluctuationAnalysisTask.cxx:170 AliEbyEFluctuationAnalysisTask.cxx:171 AliEbyEFluctuationAnalysisTask.cxx:172 AliEbyEFluctuationAnalysisTask.cxx:173 AliEbyEFluctuationAnalysisTask.cxx:174 AliEbyEFluctuationAnalysisTask.cxx:175 AliEbyEFluctuationAnalysisTask.cxx:176 AliEbyEFluctuationAnalysisTask.cxx:177 AliEbyEFluctuationAnalysisTask.cxx:178 AliEbyEFluctuationAnalysisTask.cxx:179 AliEbyEFluctuationAnalysisTask.cxx:180 AliEbyEFluctuationAnalysisTask.cxx:181 AliEbyEFluctuationAnalysisTask.cxx:182 AliEbyEFluctuationAnalysisTask.cxx:183 AliEbyEFluctuationAnalysisTask.cxx:184 AliEbyEFluctuationAnalysisTask.cxx:185 AliEbyEFluctuationAnalysisTask.cxx:186 AliEbyEFluctuationAnalysisTask.cxx:187 AliEbyEFluctuationAnalysisTask.cxx:188 AliEbyEFluctuationAnalysisTask.cxx:189 AliEbyEFluctuationAnalysisTask.cxx:190 AliEbyEFluctuationAnalysisTask.cxx:191 AliEbyEFluctuationAnalysisTask.cxx:192 AliEbyEFluctuationAnalysisTask.cxx:193 AliEbyEFluctuationAnalysisTask.cxx:194 AliEbyEFluctuationAnalysisTask.cxx:195 AliEbyEFluctuationAnalysisTask.cxx:196 AliEbyEFluctuationAnalysisTask.cxx:197 AliEbyEFluctuationAnalysisTask.cxx:198 AliEbyEFluctuationAnalysisTask.cxx:199 AliEbyEFluctuationAnalysisTask.cxx:200 AliEbyEFluctuationAnalysisTask.cxx:201 AliEbyEFluctuationAnalysisTask.cxx:202 AliEbyEFluctuationAnalysisTask.cxx:203 AliEbyEFluctuationAnalysisTask.cxx:204 AliEbyEFluctuationAnalysisTask.cxx:205 AliEbyEFluctuationAnalysisTask.cxx:206 AliEbyEFluctuationAnalysisTask.cxx:207 AliEbyEFluctuationAnalysisTask.cxx:208 AliEbyEFluctuationAnalysisTask.cxx:209 AliEbyEFluctuationAnalysisTask.cxx:210 AliEbyEFluctuationAnalysisTask.cxx:211 AliEbyEFluctuationAnalysisTask.cxx:212 AliEbyEFluctuationAnalysisTask.cxx:213 AliEbyEFluctuationAnalysisTask.cxx:214 AliEbyEFluctuationAnalysisTask.cxx:215 AliEbyEFluctuationAnalysisTask.cxx:216 AliEbyEFluctuationAnalysisTask.cxx:217 AliEbyEFluctuationAnalysisTask.cxx:218 AliEbyEFluctuationAnalysisTask.cxx:219 AliEbyEFluctuationAnalysisTask.cxx:220 AliEbyEFluctuationAnalysisTask.cxx:221 AliEbyEFluctuationAnalysisTask.cxx:222 AliEbyEFluctuationAnalysisTask.cxx:223 AliEbyEFluctuationAnalysisTask.cxx:224 AliEbyEFluctuationAnalysisTask.cxx:225 AliEbyEFluctuationAnalysisTask.cxx:226 AliEbyEFluctuationAnalysisTask.cxx:227 AliEbyEFluctuationAnalysisTask.cxx:228 AliEbyEFluctuationAnalysisTask.cxx:229 AliEbyEFluctuationAnalysisTask.cxx:230 AliEbyEFluctuationAnalysisTask.cxx:231 AliEbyEFluctuationAnalysisTask.cxx:232 AliEbyEFluctuationAnalysisTask.cxx:233 AliEbyEFluctuationAnalysisTask.cxx:234 AliEbyEFluctuationAnalysisTask.cxx:235 AliEbyEFluctuationAnalysisTask.cxx:236 AliEbyEFluctuationAnalysisTask.cxx:237 AliEbyEFluctuationAnalysisTask.cxx:238 AliEbyEFluctuationAnalysisTask.cxx:239 AliEbyEFluctuationAnalysisTask.cxx:240 AliEbyEFluctuationAnalysisTask.cxx:241 AliEbyEFluctuationAnalysisTask.cxx:242