10 #include <TClonesArray.h>
11 #include <TDirectory.h>
17 #include <TLorentzVector.h>
23 #include "AliESDMuonTrack.h"
24 #include "AliAODEvent.h"
25 #include "AliAnalysisManager.h"
26 #include "AliAnalysisUtils.h"
27 #include "AliCentrality.h"
28 #include "AliEMCALGeoParams.h"
29 #include "AliEMCALGeometry.h"
30 #include "AliESDEvent.h"
31 #include "AliEmcalJet.h"
32 #include "AliExternalTrackParam.h"
33 #include "AliInputEventHandler.h"
35 #include "AliPicoTrack.h"
36 #include "AliTrackerBase.h"
37 #include "AliVCluster.h"
38 #include "AliVEventHandler.h"
39 #include "AliVParticle.h"
40 #include "AliVTrack.h"
41 #include "AliAnalysisTaskCLQA.h"
43 ClassImp(AliAnalysisTaskCLQA)
45 //________________________________________________________________________
46 AliAnalysisTaskCLQA::AliAnalysisTaskCLQA() :
47 AliAnalysisTaskEmcal("AliAnalysisTaskCLQA", kTRUE),
49 fDoTracking(1), fDoMuonTracking(0), fDoCumulants(0), fDoCumNtuple(0),
50 fCumPtMin(0.3), fCumPtMax(5.0), fCumEtaMin(-1.0), fCumEtaMax(1.0), fCumMmin(15),
51 fCumMbins(250), fCentCL1In(0), fCentV0AIn(0),
52 fNtupCum(0), fNtupCumInfo(0), fNtupZdcInfo(0)
54 // Default constructor.
56 for (Int_t i=0;i<1000;++i)
60 //________________________________________________________________________
61 AliAnalysisTaskCLQA::AliAnalysisTaskCLQA(const char *name) :
62 AliAnalysisTaskEmcal(name, kTRUE),
64 fDoTracking(1), fDoMuonTracking(0), fDoCumulants(0), fDoCumNtuple(0),
65 fCumPtMin(0.3), fCumPtMax(5.0), fCumEtaMin(-1.0), fCumEtaMax(1.0), fCumMmin(15),
66 fCumMbins(250), fCentCL1In(0), fCentV0AIn(0),
67 fNtupCum(0), fNtupCumInfo(0), fNtupZdcInfo(0)
69 // Standard constructor.
71 for (Int_t i=0;i<1000;++i)
75 //________________________________________________________________________
76 AliAnalysisTaskCLQA::~AliAnalysisTaskCLQA()
81 //________________________________________________________________________
82 Bool_t AliAnalysisTaskCLQA::FillHistograms()
86 AliVEvent *event = InputEvent();
87 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
89 UInt_t trig = ((AliInputEventHandler*)(am->GetInputEventHandler()))->IsEventSelected();
90 for (Int_t i=0;i<31;++i) {
92 fHists[0]->Fill(trig);
95 Double_t vz = event->GetPrimaryVertex()->GetZ();
98 Int_t run = event->GetRunNumber();
99 Int_t vzn = event->GetPrimaryVertex()->GetNContributors();
100 if ((vzn<1)&&(run>0))
104 if (TMath::Abs(vz)>10)
107 if (fDo2013VertexCut) {
108 if ((run>=188356&&run<=188366) || (run>=195344&&run<=197388)) {
109 AliAnalysisUtils anau;
110 if (anau.IsFirstEventInChunk(event))
112 if (!anau.IsVertexSelected2013pA(event))
118 fHists[9]->Fill(1,run);
120 AliCentrality *cent = InputEvent()->GetCentrality();
121 Double_t v0acent = cent->GetCentralityPercentile("V0A");
122 fHists[10]->Fill(v0acent);
123 Double_t znacent = cent->GetCentralityPercentile("ZNA");
124 fHists[11]->Fill(znacent);
127 const Int_t ntracks = fTracks->GetEntries();
129 for (Int_t i =0; i<ntracks; ++i) {
130 AliVParticle *track = dynamic_cast<AliVParticle*>(fTracks->At(i));
133 if (track->Charge()==0)
135 Double_t phi = track->Phi();
136 Double_t eta = track->Eta();
137 Double_t pt = track->Pt();
138 fHists[20]->Fill(phi,eta);
139 fHists[21]->Fill(phi,pt);
140 fHists[22]->Fill(eta,pt);
141 if (TMath::Abs(eta)<0.8) {
142 fHists[23]->Fill(pt,v0acent);
143 fHists[24]->Fill(pt,znacent);
145 AliPicoTrack *picot = dynamic_cast<AliPicoTrack*>(track);
147 Int_t ttype = picot->GetTrackType();
148 fHists[25+ttype]->Fill(phi,pt);
149 if (picot->IsEMCAL()) {
150 Double_t dphi = TVector2::Phi_mpi_pi(phi-picot->GetTrackPhiOnEMCal());
151 fHists[28]->Fill(dphi,pt);
158 if (fDoMuonTracking) {
159 AliAODEvent *aod = dynamic_cast<AliAODEvent*>(InputEvent());
161 for (Int_t iMu = 0; iMu<aod->GetNumberOfTracks(); ++iMu) {
162 AliAODTrack* muonTrack = dynamic_cast<AliAODTrack*>(aod->GetTrack(iMu));
163 if(!muonTrack) AliFatal("Not a standard AOD");
166 if (!muonTrack->IsMuonTrack())
168 Double_t dThetaAbs = TMath::ATan(muonTrack->GetRAtAbsorberEnd()/505.)* TMath::RadToDeg();
169 if ((dThetaAbs<2.) || (dThetaAbs>10.))
171 Double_t dEta = muonTrack->Eta();
172 if ((dEta<-4.) || (dEta>-2.5))
175 if (muonTrack->GetMatchTrigger()<0.5)
178 Double_t ptMu = muonTrack->Pt();
179 Double_t etaMu = muonTrack->Eta();
180 Double_t phiMu = muonTrack->Phi();
181 fHists[50]->Fill(phiMu,etaMu);
182 fHists[51]->Fill(phiMu,ptMu);
183 fHists[52]->Fill(etaMu,ptMu);
184 fHists[53]->Fill(ptMu,v0acent);
185 fHists[54]->Fill(ptMu,znacent);
188 AliESDEvent *esd = dynamic_cast<AliESDEvent*>(InputEvent());
190 for (Int_t iMu = 0; iMu<esd->GetNumberOfMuonTracks(); ++iMu) {
191 AliESDMuonTrack* muonTrack = esd->GetMuonTrack(iMu);
194 if (!muonTrack->ContainTrackerData())
196 Double_t thetaTrackAbsEnd = TMath::ATan(muonTrack->GetRAtAbsorberEnd()/505.) * TMath::RadToDeg();
197 if ((thetaTrackAbsEnd < 2.) || (thetaTrackAbsEnd > 10.))
199 Double_t eta = muonTrack->Eta();
200 if ((eta < -4.) || (eta > -2.5))
203 if (!muonTrack->ContainTriggerData())
205 if (muonTrack->GetMatchTrigger() < 0.5)
216 //________________________________________________________________________
217 Bool_t AliAnalysisTaskCLQA::RetrieveEventObjects()
219 // Retrieve event objects.
221 if (!AliAnalysisTaskEmcal::RetrieveEventObjects())
227 //________________________________________________________________________
228 Bool_t AliAnalysisTaskCLQA::Run()
230 // Run various functions.
232 RunCumulants(fCumMmin,fCumPtMin,fCumPtMax,fCumEtaMin,fCumEtaMax);
237 //________________________________________________________________________
238 void AliAnalysisTaskCLQA::RunCumulants(Double_t Mmin, Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax)
240 // Run cumulant analysis.
249 TString tname(fTracks->GetName());
250 if (tname.Contains("mc"))
253 const Int_t ntracks = fTracks->GetEntries();
254 Int_t Mall=0,M=0,Mall2=0;
255 Double_t ptmaxall=0,ptsumall=0,pt2sumall=0,ptsumall2=0;
256 Double_t tsa00=0,tsa10=0,tsa11=0;
257 Double_t Q2r=0,Q2i=0;
258 Double_t Q3r=0,Q3i=0;
259 Double_t Q4r=0,Q4i=0;
260 Double_t Q6r=0,Q6i=0;
261 Double_t mpt=0,mpt2=0,ptmaxq=0;
262 Double_t ts00=0,ts10=0,ts11=0;
263 Double_t v0ach=0, v0cch=0;
266 for (Int_t i =0; i<ntracks; ++i) {
267 AliVParticle *track = dynamic_cast<AliVParticle*>(fTracks->At(i));
270 if (track->Charge()==0)
272 Double_t eta = track->Eta();
273 if ((eta<5.1)&&(eta>2.8))
275 else if ((eta>-3.7)&&(eta<-1.7))
277 if (TMath::Abs(eta)<1.4) {
280 if ((eta<etamin) || (eta>etamax))
282 Double_t pt = track->Pt();
291 Double_t px = track->Px();
292 Double_t py = track->Py();
297 if ((pt<ptmin) || (pt>ptmax))
301 Double_t phi = track->Phi();
308 Q2r += TMath::Cos(2*phi);
309 Q2i += TMath::Sin(2*phi);
310 Q3r += TMath::Cos(3*phi);
311 Q3i += TMath::Sin(3*phi);
312 Q4r += TMath::Cos(4*phi);
313 Q4i += TMath::Sin(4*phi);
314 Q6r += TMath::Cos(6*phi);
315 Q6i += TMath::Sin(6*phi);
324 for (Int_t i=0; i<ntracks; ++i) {
325 AliVParticle *track1 = dynamic_cast<AliVParticle*>(fTracks->At(i));
328 if (track1->Charge()==0)
330 Double_t eta1 = track1->Eta();
331 if ((eta1<etamin) || (eta1>etamax))
333 Double_t pt1 = track1->Pt();
334 if ((pt1<ptmin) || (pt1>ptmax))
336 Double_t phi1 = track1->Phi();
337 for (Int_t j = i+1; j<ntracks; ++j) {
338 AliVParticle *track2 = dynamic_cast<AliVParticle*>(fTracks->At(j));
341 if (track2->Charge()==0)
343 Double_t eta2 = track2->Eta();
344 if ((eta2<etamin) || (eta2>etamax))
346 Double_t pt2 = track2->Pt();
347 if ((pt2<ptmin) || (pt2>ptmax))
349 Double_t deta=TMath::Abs(eta2-eta1);
352 Double_t dphi=TVector2::Phi_0_2pi(phi1-track2->Phi());
354 v2g+=TMath::Cos(2*dphi);
355 v3g+=TMath::Cos(3*dphi);
364 std::complex<double> q2(Q2r,Q2i);
365 std::complex<double> q3(Q3r,Q3i);
366 std::complex<double> q4(Q4r,Q4i);
367 std::complex<double> q6(Q6r,Q6i);
368 Double_t Q22 = std::abs(q2)*std::abs(q2);
369 Double_t Q32 = std::abs(q3)*std::abs(q3);
370 Double_t Q42 = std::abs(q4)*std::abs(q4);
371 Double_t Q62 = std::abs(q6)*std::abs(q6);
372 Double_t Q32re = std::real(q6*std::conj(q3)*std::conj(q3));
373 Double_t Q42re = std::real(q4*std::conj(q2)*std::conj(q2));
374 Double_t Q6are = std::real(q4*q2*std::conj(q2)*std::conj(q2)*std::conj(q2));
375 Double_t Q6bre = std::real(q6*std::conj(q2)*std::conj(q2)*std::conj(q2));
376 Double_t Q6cre = std::real(q6*std::conj(q4)*std::conj(q2));
379 Double_t tsax = (tsa00+tsa11)*(tsa00+tsa11)-4*(tsa00*tsa11-tsa10*tsa10);
381 Double_t l1 = 0.5*(tsa00+tsa11+TMath::Sqrt(tsax))/ptsumall;
382 Double_t l2 = 0.5*(tsa00+tsa11-TMath::Sqrt(tsax))/ptsumall;
383 tsall = 2*l2/(l1+l2);
387 Double_t tsx = (ts00+ts11)*(ts00+ts11)-4*(ts00*ts11-ts10*ts10);
389 Double_t l1 = 0.5*(ts00+ts11+TMath::Sqrt(tsx))/ptsumall;
390 Double_t l2 = 0.5*(ts00+ts11-TMath::Sqrt(tsx))/ptsumall;
395 fHists[106]->Fill(cl1ch);
396 fHists[107]->Fill(v0ach);
397 fHists[108]->Fill(v0cch);
398 AliCentrality *cent = InputEvent()->GetCentrality();
400 cent->SetCentralityCL1(100*fCentCL1In->GetBinContent(fCentCL1In->FindBin(cl1ch)));
404 cent->SetCentralityV0A(100*fCentV0AIn->GetBinContent(fCentV0AIn->FindBin(v0ach)));
409 AliAnalysisUtils anau;
410 AliVEvent *event = InputEvent();
411 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
413 fNtupCumInfo->fTrig = ((AliInputEventHandler*)(am->GetInputEventHandler()))->IsEventSelected();
414 fNtupCumInfo->fRun = event->GetRunNumber();
415 fNtupCumInfo->fVz = event->GetPrimaryVertex()->GetZ();
416 fNtupCumInfo->fIsFEC = anau.IsFirstEventInChunk(event);
417 fNtupCumInfo->fIsVSel = anau.IsVertexSelected2013pA(event);
418 fNtupCumInfo->fIsP = event->IsPileupFromSPD(3/*minContributors*/,
424 fNtupCumInfo->fMall = Mall;
425 fNtupCumInfo->fMall2 = Mall2;
426 fNtupCumInfo->fPtMaxall = ptmaxall;
427 fNtupCumInfo->fMPtall = ptsumall/Mall;
428 fNtupCumInfo->fMPt2all = pt2sumall/Mall;
430 fNtupCumInfo->fMPtall2 = ptsumall2/Mall2;
432 fNtupCumInfo->fMPtall2 = -1;
433 fNtupCumInfo->fTSall = tsall;
434 fNtupCumInfo->fM = M;
435 fNtupCumInfo->fQ2abs = Q22;
436 fNtupCumInfo->fQ4abs = Q42;
437 fNtupCumInfo->fQ42re = Q42re;
438 fNtupCumInfo->fCos2phi = Q2r;
439 fNtupCumInfo->fSin2phi = Q2i;
440 fNtupCumInfo->fPtMax = ptmaxq;
441 fNtupCumInfo->fMPt = mpt/M;
442 fNtupCumInfo->fMPt2 = mpt2/M;
443 fNtupCumInfo->fTS = ts;
446 fNtupCumInfo->fMV0M = v0ach + v0cch;
448 AliVVZERO *vzero = InputEvent()->GetVZEROData();
449 fNtupCumInfo->fMV0M = vzero->GetMTotV0A()+vzero->GetMTotV0C();
452 AliCentrality *cent = InputEvent()->GetCentrality();
453 fNtupCumInfo->fCl1 = cent->GetCentralityPercentile("CL1");
454 fNtupCumInfo->fV0M = cent->GetCentralityPercentile("V0M");
455 fNtupCumInfo->fV0MEq = cent->GetCentralityPercentile("V0MEq");
456 fNtupCumInfo->fV0A = cent->GetCentralityPercentile("V0A");
457 fNtupCumInfo->fV0AEq = cent->GetCentralityPercentile("V0AEq");
458 fNtupCumInfo->fZNA = cent->GetCentralityPercentile("ZNA");
460 AliVZDC *vZDC = InputEvent()->GetZDCData();
461 const Double_t *znaTowers = vZDC->GetZNATowerEnergy();
462 fNtupZdcInfo->fZna0 = znaTowers[0];
463 fNtupZdcInfo->fZna1 = znaTowers[1];
464 fNtupZdcInfo->fZna2 = znaTowers[2];
465 fNtupZdcInfo->fZna3 = znaTowers[3];
466 fNtupZdcInfo->fZna4 = znaTowers[4];
468 if (fDoCumNtuple && (M>=Mmin)) {
472 fHists[109]->Fill(fNtupCumInfo->fCl1);
473 fHists[110]->Fill(fNtupCumInfo->fV0A);
474 fHists[111]->Fill(fNtupCumInfo->fZNA);
476 Bool_t fillCumHist = kTRUE;
478 Int_t run = InputEvent()->GetRunNumber();
479 if (fDo2013VertexCut) {
480 if ((run>=188356&&run<=188366) || (run>=195344&&run<=197388)) {
481 if (anau.IsFirstEventInChunk(event))
482 fillCumHist = kFALSE;
483 if (!anau.IsVertexSelected2013pA(event))
484 fillCumHist = kFALSE;
487 Double_t vz = InputEvent()->GetPrimaryVertex()->GetZ();
488 if (TMath::Abs(vz)>10)
489 fillCumHist = kFALSE;
492 AliVVZERO *vzero = InputEvent()->GetVZEROData();
493 Double_t v0a = vzero->GetMTotV0A();
494 Double_t v0c = vzero->GetMTotV0C();
495 //Double_t v0m = vzero->GetMTotV0A()+vzero->GetMTotV0C();
496 fHists[112]->Fill(Mall);
497 fHists[113]->Fill(M);
498 fHists[117]->Fill(v0a,M);
499 fHists[118]->Fill(v0c,M);
500 fHists[119]->Fill(v0a+v0c,M);
502 fHists[114]->Fill(M,(Q22-M)/M/(M-1));
503 fHists[120]->Fill(M,(Q32-M)/M/(M-1));
504 fHists[122]->Fill(M,v2g);
505 fHists[123]->Fill(M,v3g);
508 Double_t qc4tmp = (Q22*Q22+Q42-2*Q42re-4*(M-2)*Q22+2*M*(M-3));
509 fHists[115]->Fill(M,qc4tmp/M/(M-1)/(M-2)/(M-3));
510 qc4tmp = (Q32*Q32+Q62-2*Q32re-4*(M-2)*Q32+2*M*(M-3));
511 fHists[121]->Fill(M,qc4tmp/M/(M-1)/(M-2)/(M-3));
514 Double_t qc6tmp = Q22*Q22*Q22 + 9*Q42*Q22 - 6*Q6are
516 + 18*(M-4)*Q42re + 4*Q62
517 - 9*(M-4)*Q22*Q22 - 9*(M-4)*Q42
520 fHists[116]->Fill(M,qc6tmp/M/(M-1)/(M-2)/(M-3)/(M-4)/(M-5));
525 ((TMath::Abs(fNtupCumInfo->fVz)<10) && !fNtupCumInfo->fIsFEC && fNtupCumInfo->fIsVSel)) {
526 for (Int_t i =0; i<ntracks; ++i) {
527 AliVParticle *track1 = dynamic_cast<AliVParticle*>(fTracks->At(i));
530 Double_t phi1 = track1->Phi();
531 Double_t eta1 = track1->Eta();
532 Double_t pt1 = track1->Pt();
533 ((TH3*)fHists[103])->Fill(pt1,eta1,fNtupCumInfo->fCl1);
534 ((TH3*)fHists[104])->Fill(pt1,eta1,fNtupCumInfo->fV0A);
535 ((TH3*)fHists[105])->Fill(pt1,eta1,fNtupCumInfo->fZNA);
536 if ((eta1<etamin) || (eta1>etamax))
538 if ((pt1<ptmin) || (pt1>ptmax))
540 for (Int_t j =0; j<ntracks; ++j) {
541 AliVParticle *track2 = dynamic_cast<AliVParticle*>(fTracks->At(j));
544 Double_t eta2 = track2->Eta();
545 if ((eta2<etamin) || (eta2>etamax))
547 Double_t pt2 = track2->Pt();
548 if ((pt2<ptmin) || (pt2>ptmax))
550 Double_t phi2 = track2->Phi();
551 Double_t deta = eta1-eta2;
552 Double_t dphi = phi1-phi2;
553 while (dphi<-TMath::Pi())
554 dphi+=TMath::TwoPi();
555 while (dphi>3*TMath::Pi()/2)
556 dphi-=TMath::TwoPi();
557 ((TH3*)fHists[100])->Fill(dphi,deta,fNtupCumInfo->fCl1);
558 ((TH3*)fHists[101])->Fill(dphi,deta,fNtupCumInfo->fV0A);
559 ((TH3*)fHists[102])->Fill(dphi,deta,fNtupCumInfo->fZNA);
565 //________________________________________________________________________
566 void AliAnalysisTaskCLQA::SetCumParams(Double_t Mmin, Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax)
568 // Set parameters for cumulants.
577 //________________________________________________________________________
578 void AliAnalysisTaskCLQA::UserCreateOutputObjects()
582 AliAnalysisTaskEmcal::UserCreateOutputObjects();
584 fHists[0] = new TH1D("fTrigBits",";bit",32,-0.5,31.5);
585 fOutput->Add(fHists[0]);
586 fHists[1] = new TH1D("fVertexZ",";vertex z (cm)",51,-25.5,25.5);
587 fOutput->Add(fHists[1]);
588 fHists[2] = new TH1D("fVertexZnc",";vertex z (cm)",51,-25.5,25.5);
589 fOutput->Add(fHists[2]);
590 fHists[9] = new TProfile("fAccepted","",1,0.5,1.5);
591 fOutput->Add(fHists[9]);
592 fHists[10] = new TH1D("fV0ACent",";percentile",20,0,100);
593 fOutput->Add(fHists[10]);
594 fHists[11] = new TH1D("fZNACent",";percentile",20,0,100);
595 fOutput->Add(fHists[11]);
598 fHists[20] = new TH2D("fPhiEtaTracks",";#phi;#eta",60,0,TMath::TwoPi(),20,-2,2);
600 fOutput->Add(fHists[20]);
601 fHists[21] = new TH2D("fPhiPtTracks",";#phi;p_{T} (GeV/c)",60,0,TMath::TwoPi(),40,0,20);
603 fOutput->Add(fHists[21]);
604 fHists[22] = new TH2D("fEtaPtTracks",";#eta;p_{T} (GeV/c)",20,-2,2,40,0,20);
606 fOutput->Add(fHists[22]);
607 fHists[23] = new TH2D("fPtV0ATracks",";#p_{T} (GeV/c);percentile",100,0,20,20,0,100);
609 fOutput->Add(fHists[23]);
610 fHists[24] = new TH2D("fPtZNATracks",";#p_{T} (GeV/c);percentile",100,0,20,20,0,100);
612 fOutput->Add(fHists[24]);
613 fHists[25] = new TH2D("fPhiPtTracks_type0",";#phi;p_{T} (GeV/c)",60,0,TMath::TwoPi(),40,0,20);
615 fOutput->Add(fHists[25]);
616 fHists[26] = new TH2D("fPhiPtTracks_type1",";#phi;p_{T} (GeV/c)",60,0,TMath::TwoPi(),40,0,20);
618 fOutput->Add(fHists[26]);
619 fHists[27] = new TH2D("fPhiPtTracks_type2",";#phi;p_{T} (GeV/c)",60,0,TMath::TwoPi(),40,0,20);
621 fOutput->Add(fHists[27]);
622 fHists[28] = new TH2D("fDPhiPtTracks",";#Delta#phi;p_{T} (GeV/c)",60,-TMath::Pi(),TMath::Pi(),40,0,20);
624 fOutput->Add(fHists[28]);
627 if (fDoMuonTracking) {
628 fHists[50] = new TH2D("fPhiEtaMuonTracks",";#phi;#eta",60,0,TMath::TwoPi(),15,-4,-2.5);
630 fOutput->Add(fHists[50]);
631 fHists[51] = new TH2D("fPhiPtMuonTracks",";#phi;p_{T} (GeV/c)",60,0,TMath::TwoPi(),200,0,20);
633 fOutput->Add(fHists[51]);
634 fHists[52] = new TH2D("fEtaPtMuonTracks",";#eta;p_{T} (GeV/c)",15,-4,-2.5,200,0,20);
636 fOutput->Add(fHists[52]);
637 fHists[53] = new TH2D("fPtV0AMuonTracks",";#p_{T} (GeV/c);percentile",100,0,10,20,0,100);
639 fOutput->Add(fHists[53]);
640 fHists[54] = new TH2D("fPtZNAMuonTracks",";#p_{T} (GeV/c);percentile",100,0,10,20,0,100);
642 fOutput->Add(fHists[54]);
646 fHists[100] = new TH3D("fCumPhiEtaCl1",";#Delta#phi;#Delta#eta",32,-TMath::Pi()/2,3*TMath::Pi()/2,60,-3,3,10,0,100);
647 fOutput->Add(fHists[100]);
648 fHists[101] = new TH3D("fCumPhiEtaV0A",";#Delta#phi;#Delta#eta",32,-TMath::Pi()/2,3*TMath::Pi()/2,60,-3,3,10,0,100);
649 fOutput->Add(fHists[101]);
650 fHists[102] = new TH3D("fCumPhiEtaZNA",";#Delta#phi;#Delta#eta",32,-TMath::Pi()/2,3*TMath::Pi()/2,60,-3,3,10,0,100);
651 fOutput->Add(fHists[102]);
652 fHists[103] = new TH3D("fCumPtEtaCl1",";p_{T} (GeV/c);#eta",100,0,25,20,-2,2,10,0,100);
653 fOutput->Add(fHists[103]);
654 fHists[104] = new TH3D("fCumPtEtaV0A",";p_{T} (GeV/c);#eta",100,0,25,20,-2,2,10,0,100);
655 fOutput->Add(fHists[104]);
656 fHists[105] = new TH3D("fCumPtEtaZNA",";p_{T} (GeV/c);#eta",100,0,25,20,-2,2,10,0,100);
657 fOutput->Add(fHists[105]);
658 fHists[106] = new TH1D("fCumCL1MC",";#tracks",fCumMbins,0,fCumMbins);
659 fOutput->Add(fHists[106]);
660 fHists[107] = new TH1D("fCumV0AMC",";#tracks",fCumMbins,0,fCumMbins);
661 fOutput->Add(fHists[107]);
662 fHists[108] = new TH1D("fCumV0CMC",";#tracks",fCumMbins,0,fCumMbins);
663 fOutput->Add(fHists[108]);
664 fHists[109] = new TH1D("fCumCl1Cent",";percentile",10,0,100);
665 fOutput->Add(fHists[109]);
666 fHists[110] = new TH1D("fCumV0ACent",";percentile",10,0,100);
667 fOutput->Add(fHists[110]);
668 fHists[111] = new TH1D("fCumZNACent",";percentile",10,0,100);
669 fOutput->Add(fHists[111]);
670 fHists[112] = new TH1D("fCumMall",";mult",fCumMbins,0,fCumMbins);
671 fOutput->Add(fHists[112]);
672 fHists[113] = new TH1D("fCumM",";mult",fCumMbins,0,fCumMbins);
673 fOutput->Add(fHists[113]);
674 fHists[114] = new TProfile("fCumQC2",";qc2",fCumMbins,0,fCumMbins);
675 fOutput->Add(fHists[114]);
676 fHists[115] = new TProfile("fCumQC4",";qc4",fCumMbins,0,fCumMbins);
677 fOutput->Add(fHists[115]);
678 fHists[116] = new TProfile("fCumQC6",";qc6",fCumMbins,0,fCumMbins);
679 fOutput->Add(fHists[116]);
683 fHists[117] = new TH2D("fCumV0ACentVsM",";v0a;M",v0bins,0,v0bins,fCumMbins,0,fCumMbins);
684 fOutput->Add(fHists[117]);
685 fHists[118] = new TH2D("fCumV0CCentVsM",";v0c;M",v0bins,0,v0bins,fCumMbins,0,fCumMbins);
686 fOutput->Add(fHists[118]);
687 fHists[119] = new TH2D("fCumV0MCentVsM",";v0m;M",v0bins,0,v0bins,fCumMbins,0,fCumMbins);
688 fOutput->Add(fHists[119]);
689 fHists[120] = new TProfile("fCum3QC2",";qc2",fCumMbins,0,fCumMbins);
690 fOutput->Add(fHists[120]);
691 fHists[121] = new TProfile("fCum3QC4",";qc4",fCumMbins,0,fCumMbins);
692 fOutput->Add(fHists[121]);
693 fHists[122] = new TProfile("fEtaGapV2",";M",fCumMbins,0,fCumMbins);
694 fOutput->Add(fHists[122]);
695 fHists[123] = new TProfile("fEtaGapV3",";M",fCumMbins,0,fCumMbins);
696 fOutput->Add(fHists[123]);
698 fNtupCum = new TTree("NtupCum", "Ntuple for cumulant analysis");
700 fNtupCum->SetDirectory(0);
702 TFile *f = OpenFile(1);
704 f->SetCompressionLevel(2);
705 fNtupCum->SetDirectory(f);
706 fNtupCum->SetAutoFlush(-4*1024*1024);
707 fNtupCum->SetAutoSave(0);
710 fNtupCumInfo = new AliNtupCumInfo;
711 fNtupCum->Branch("cumulants", &fNtupCumInfo, 32*1024, 99);
712 fNtupZdcInfo = new AliNtupZdcInfo;
713 fNtupCum->Branch("zdc", &fNtupZdcInfo, 32*1024, 99);
715 fOutput->Add(fNtupCum);
718 PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram