23 #include "Riostream.h"
28 #include "TTimeStamp.h"
29 #include "TStopwatch.h"
38 #include <TParticle.h>
39 #include "TProfile2D.h"
40 #include "TProfile3D.h"
42 #include "AliAnalysisManager.h"
43 #include "AliInputEventHandler.h"
44 #include "AliVEvent.h"
46 #include "AliESDEvent.h"
47 #include "AliESDHeader.h"
48 #include "AliESDInputHandler.h"
49 #include "AliESDZDC.h"
50 #include "AliMultiplicity.h"
51 #include "AliAnalysisUtils.h"
52 #include "AliAODHandler.h"
53 #include "AliAODTrack.h"
54 #include "AliAODEvent.h"
55 #include "AliAODHeader.h"
56 #include "AliAODVertex.h"
57 #include "AliAODVZERO.h"
58 #include "AliAODZDC.h"
59 #include "AliAODMCHeader.h"
60 #include "AliMCEventHandler.h"
61 #include "AliMCEvent.h"
62 #include "AliHeader.h"
63 #include "AliVParticle.h"
65 #include "AliAODMCParticle.h"
66 #include "AliAnalysisTaskSE.h"
67 #include "AliGenEventHeader.h"
68 #include "AliPhysicsSelectionTask.h"
69 #include "AliPhysicsSelection.h"
70 #include "AliBackgroundSelection.h"
71 #include "AliTriggerAnalysis.h"
72 #include "AliCentrality.h"
74 #include "AliMultSelection.h"
75 #include "AliLumiTools.h"
78 #include "AliCFManager.h"
81 #include "AliGenCocktailEventHeader.h"
82 #include "AliGenPythiaEventHeader.h"
83 #include "AliGenHijingEventHeader.h"
84 #include "AliGenGeVSimEventHeader.h"
85 #include "AliGenEposEventHeader.h"
88 #include "TObjArray.h"
102 fAnalysisType("AUTOMATIC"),
109 fCutContainer(new
TList()),
118 fPythiaGenHeader(NULL),
119 fHijingGenHeader(NULL),
123 fLoadCandidates(kFALSE),
135 fPhiMax(TMath::TwoPi()),
142 fHistWeightvsPhiMin(0.),
143 fHistWeightvsPhiMax(3.),
148 fAfterburnerOn(kFALSE),
149 fNonFlowNumberOfTrackClones(0),
157 fShuffleTracks(kFALSE),
159 fAnalysisInput(kAOD),
162 fRejectPileUp(kTRUE),
163 fRejectPileUpTight(kFALSE),
164 fResetNegativeZDC(kFALSE),
167 fCentrEstimator(
kV0M),
176 fhZDCvsTracklets(0x0),
182 fhZNCvscentrality(0x0),
183 fhZNAvscentrality(0x0),
185 fZDCGainAlpha(0.395),
193 fPileUpMultSelCount(0x0),
195 fMultTOFHighCut(0x0),
198 fUseBadTowerCalib(kFALSE),
199 fBadTowerCalibList(NULL),
200 fVZEROGainEqList(NULL),
201 fVZEROQVecRecList(NULL),
202 fUseZDCSpectraCorr(kFALSE),
203 fZDCSpectraCorrList(NULL),
204 fSpectraMCList(NULL),
205 fBadTowerStuffList(NULL),
206 fVZEROStuffList(NULL),
213 for(
int i=0; i<5; i++){
217 for(
int i=0; i<4; i++){
218 fhZNCPMQiPMC[i] = 0x0;
219 fhZNAPMQiPMC[i] = 0x0;
221 for(
Int_t r=0; r<fCRCMaxnRun; r++) {
225 for(
Int_t i=0; i<5; i++) {
226 fTowerGainEq[
c][i] = NULL;
230 fBadTowerCalibHist[
c] = NULL;
232 fVZEROGainEqHist = NULL;
233 for (
Int_t k=0; k<fkVZEROnHar; k++) {
236 fVZEROQVectorRecQxStored[k] = NULL;
237 fVZEROQVectorRecQyStored[k] = NULL;
238 for (
Int_t t=0; t<fkVZEROnQAplots; t++) {
239 fVZEROQVectorRecFinal[k][t] = NULL;
242 for(
Int_t i=0; i<8; i++) {
243 SpecCorMu1[i] = NULL;
244 SpecCorMu2[i] = NULL;
248 this->InitializeRunArrays();
249 fMyTRandom3 =
new TRandom3(1);
250 gRandom->SetSeed(fMyTRandom3->Integer(65539));
251 for(
Int_t j=0; j<2; j++) {
253 fPtSpecGen[j][
c] = NULL;
254 fPtSpecFB32[j][
c] = NULL;
255 fPtSpecFB96[j][
c] = NULL;
256 fPtSpecFB128[j][
c] = NULL;
257 fPtSpecFB768[j][
c] = NULL;
261 fhZNCenDis[
c] = NULL;
272 fAnalysisType(
"AUTOMATIC"),
279 fCutContainer(new
TList()),
288 fLoadCandidates(bCandidates),
300 fPhiMax(TMath::TwoPi()),
307 fHistWeightvsPhiMin(0.),
308 fHistWeightvsPhiMax(3.),
313 fAfterburnerOn(kFALSE),
314 fNonFlowNumberOfTrackClones(0),
322 fShuffleTracks(kFALSE),
324 fAnalysisInput(kAOD),
327 fRejectPileUp(kTRUE),
328 fRejectPileUpTight(kFALSE),
329 fResetNegativeZDC(kFALSE),
332 fCentrEstimator(
kV0M),
341 fhZDCvsTracklets(0x0),
347 fhZNCvscentrality(0x0),
348 fhZNAvscentrality(0x0),
351 fZDCGainAlpha(0.395),
353 fPythiaGenHeader(NULL),
354 fHijingGenHeader(NULL),
363 fPileUpMultSelCount(0x0),
365 fMultTOFHighCut(0x0),
368 fUseBadTowerCalib(kFALSE),
369 fBadTowerCalibList(NULL),
370 fVZEROGainEqList(NULL),
371 fVZEROQVecRecList(NULL),
372 fUseZDCSpectraCorr(kFALSE),
373 fZDCSpectraCorrList(NULL),
374 fSpectraMCList(NULL),
375 fBadTowerStuffList(NULL),
376 fVZEROStuffList(NULL),
384 for(
int i=0; i<5; i++){
388 for(
int i=0; i<4; i++){
396 for(
Int_t i=0; i<5; i++) {
413 for(
Int_t i=0; i<8; i++) {
423 DefineInput(0, TChain::Class());
426 DefineOutput(1, AliFlowEventSimple::Class());
427 DefineOutput(2, TList::Class());
429 for(
Int_t j=0; j<2; j++) {
451 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
493 AliError(
"WRONG ANALYSIS TYPE! only MCESD, MCkine, MCAOD, AOD and AUTOMATIC are allowed.");
531 fQAList->SetName(
"AliFlowEventCuts QA");
548 fCenDis =
new TH1F(
"fCenDis",
"fCenDis", 100, 0., 100.);
550 fPileUpCount =
new TH1F(
"fPileUpCount",
"fPileUpCount", 9, 0., 9.);
553 fPileUpCount->GetXaxis()->SetBinLabel(3,
"RefMultiplicityComb08");
554 fPileUpCount->GetXaxis()->SetBinLabel(4,
"IncompleteDAQ");
555 fPileUpCount->GetXaxis()->SetBinLabel(5,
"abs(V0M-CL1)>7.5");
557 fPileUpCount->GetXaxis()->SetBinLabel(7,
"inconsistentVtx");
558 fPileUpCount->GetXaxis()->SetBinLabel(8,
"multESDTPCDif");
559 fPileUpCount->GetXaxis()->SetBinLabel(9,
"extraPileUpMultSel");
572 fMultTOFLowCut =
new TF1(
"fMultTOFLowCut",
"[0]+[1]*x+[2]*x*x+[3]*x*x*x - 4.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x+[9]*x*x*x*x*x)", 0, 10000);
573 fMultTOFLowCut->SetParameters(-1.0178, 0.333132, 9.10282e-05, -1.61861e-08, 1.47848, 0.0385923, -5.06153e-05, 4.37641e-08, -1.69082e-11, 2.35085e-15);
575 fMultTOFHighCut =
new TF1(
"fMultTOFHighCut",
"[0]+[1]*x+[2]*x*x+[3]*x*x*x + 4.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x+[9]*x*x*x*x*x)", 0, 10000);
576 fMultTOFHighCut->SetParameters(-1.0178, 0.333132, 9.10282e-05, -1.61861e-08, 1.47848, 0.0385923, -5.06153e-05, 4.37641e-08, -1.69082e-11, 2.35085e-15);
580 for(
Int_t i=0; i<5; i++) {
587 fhZNCenDis[
c] =
new TH3D(Form(
"fhZNCenDis[%d]",
c), Form(
"fhZNCenDis[%d]",
c), 100, 0., 100., 100, -2., 2. , 100., -2., 2.);
598 for(
Int_t i=0; i<8; i++) {
610 fhZNSpectra =
new TH3D(
"fhZNSpectra",
"fhZNSpectra",100,0.,100.,8,0.,8.,1000,0.,1.E5);
612 fhZNSpectraCor =
new TH3D(
"fhZNSpectraCor",
"fhZNSpectraCor",100,0.,100.,8,0.,8.,1000,0.,1.E5);
614 fhZNSpectraPow =
new TH3D(
"fhZNSpectraPow",
"fhZNSpectraPow",100,0.,100.,8,0.,8.,1000,0.,TMath::Power(1.E5,
fZDCGainAlpha));
616 fhZNBCCorr =
new TH3D(
"fhZNBCCorr",
"fhZNBCCorr",100,0.,100.,500,0.,1.E5,500,0.,1.E5);
626 Double_t xmin[] = {0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.,1.2,1.4,1.6,1.8,2.,2.33,2.66,3.,3.5,4.,5.,6.,9.,20.};
627 for(
Int_t j=0; j<2; j++) {
629 fPtSpecGen[j][
c] =
new TH1F(Form(
"fPtSpecGen[%d][%d]",j,
c), Form(
"fPtSpecGen[%d][%d]",j,
c), 23, xmin);
631 fPtSpecFB32[j][
c] =
new TH1F(Form(
"fPtSpecFB32[%d][%d]",j,c), Form(
"fPtSpecFB32[%d][%d]",j,c), 23, xmin);
633 fPtSpecFB96[j][
c] =
new TH1F(Form(
"fPtSpecFB96[%d][%d]",j,c), Form(
"fPtSpecFB96[%d][%d]",j,c), 23, xmin);
635 fPtSpecFB128[j][
c] =
new TH1F(Form(
"fPtSpecFB128[%d][%d]",j,c), Form(
"fPtSpecFB128[%d][%d]",j,c), 23, xmin);
637 fPtSpecFB768[j][
c] =
new TH1F(Form(
"fPtSpecFB768[%d][%d]",j,c), Form(
"fPtSpecFB768[%d][%d]",j,c), 23, xmin);
647 for(
int i=0; i<5; i++){
649 sprintf(hname,
"hZNCPM%d",i);
650 fhZNCPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
653 sprintf(hname,
"hZNAPM%d",i);
654 fhZNAPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
660 sprintf(hnamenc,
"hZNCPMQ%dPMC",i+1);
661 fhZNCPMQiPMC[i] =
new TH1F(hnamenc, hnamenc, 100, 0., 1.);
665 sprintf(hnamena,
"hZNAPMQ%dPMC",i+1);
666 fhZNAPMQiPMC[i] =
new TH1F(hnamena, hnamena, 100, 0., 1.);
671 fhZNCvsZNA =
new TH2F(
"hZNCvsZNA",
"hZNCvsZNA",200,-50.,140000,200,-50.,140000);
673 fhZDCCvsZDCCA =
new TH2F(
"hZDCCvsZDCCA",
"hZDCCvsZDCCA",200,0.,180000.,200,0.,200000.);
675 fhZNCvsZPC =
new TH2F(
"hZNCvsZPC",
"hZNCvsZPC",200,-50.,50000,200,-50.,140000);
677 fhZNAvsZPA =
new TH2F(
"hZNAvsZPA",
"hZNAvsZPA",200,-50.,50000,200,-50.,140000);
679 fhZNvsZP =
new TH2F(
"hZNvsZP",
"hZNvsZP",200,-50.,80000,200,-50.,200000);
681 fhZNvsVZERO =
new TH2F(
"hZNvsVZERO",
"hZNvsVZERO",250,0.,25000.,200,0.,200000.);
683 fhZDCvsVZERO =
new TH2F(
"hZDCvsVZERO",
"hZDCvsVZERO",250,0.,25000.,250,0.,250000.);
687 fhZDCvsNclu1 =
new TH2F(
"hZDCvsNclu1",
"hZDCvsNclu1", 200, 0.,8000.,200,0.,250000.);
689 fhDebunch =
new TH2F(
"hDebunch",
"hDebunch",240,-100.,-40.,240,-30.,30.);
692 fhAsymm =
new TH1F(
"hAsymm" ,
"Asimmetry ",200,-1.,1.);
694 fhZNAvsAsymm =
new TH2F(
"hZNAvsAsymm",
"ZNA vs. asymm.",200,-1.,1.,200,0.,80.);
696 fhZNCvsAsymm =
new TH2F(
"hZNCvsAsymm",
"ZNC vs. asymm.",200,-1.,1.,200,0.,80.);
706 Int_t dRun10h[] = {139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137230, 137162, 137161};
708 Int_t dRun11h[] = {167902, 167903, 167915, 167920, 167985, 167987, 167988, 168066, 168068, 168069, 168076, 168104, 168105, 168107, 168108, 168115, 168212, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362, 168458, 168460, 168461, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168984, 168988, 168992, 169035, 169040, 169044, 169045, 169091, 169094, 169099, 169138, 169143, 169144, 169145, 169148, 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169418, 169419, 169420, 169475, 169498, 169504, 169506, 169512, 169515, 169550, 169553, 169554, 169555, 169557, 169586, 169587, 169588, 169590, 169591, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169923, 169956, 169965, 170027, 170036,170040, 170081, 170083, 170084, 170085, 170088, 170089, 170091, 170155, 170159, 170163, 170193, 170203, 170204, 170207, 170228, 170230, 170268, 170269, 170270, 170306, 170308, 170309, 170311, 170312, 170313, 170315, 170387, 170388, 170572, 170593};
713 Int_t dRun15o[] = {244917, 244918, 244975, 244980, 244982, 244983, 245064, 245066, 245068, 246390, 246391, 246392, 246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424, 246276, 246275, 246272, 246271, 246225, 246222, 246217, 246185, 246182, 246181, 246180, 246178, 246153, 246152, 246151, 246115, 246113, 246089, 246087, 246053, 246052, 246049, 246048, 246042, 246037, 246036, 246012, 246003, 246001, 245954, 245952, 245949, 245923, 245833, 245831, 245829, 245705, 245702, 245700, 245692, 245683};
715 Int_t dRun15ov6[] = {244918, 244975, 244980, 244982, 244983, 245064, 245066, 245068, 246390, 246391, 246392, 246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424, 246276, 246275, 246272, 246271, 246225, 246222, 246217, 246185, 246182, 246181, 246180, 246178, 246153, 246152, 246151, 246148, 246115, 246113, 246089, 246087, 246053, 246052, 246049, 246048, 246042, 246037, 246036, 246012, 246003, 246001, 245963, 245954, 245952, 245949, 245923, 245833, 245831, 245829, 245705, 245702, 245700, 245692, 245683};
733 fVZEROMult =
new TProfile2D(
"fVZEROMult",
"fVZEROMult",fCRCnRun,0.,1.*fCRCnRun,64,0.,64.);
754 fVZEROQVectorRecFinal[k][t] =
new TProfile2D(Form(
"fVZEROQVectorRecFinal[%d][%d]",k,t),Form(
"fVZEROQVectorRecFinal[%d][%d]",k,t),fCRCnRun,0.,1.*fCRCnRun,100,0.,100.,
"s");
770 Double_t ptmin[] = {0.2,0.4,0.6,0.8,1.,1.2,1.4,1.8,2.2,3.,4.,6.,8.,12.,20.};
771 Double_t phimin[] = {0.,TMath::Pi()/8.,2*TMath::Pi()/8.,3*TMath::Pi()/8.,4*TMath::Pi()/8.,5*TMath::Pi()/8.,6*TMath::Pi()/8.,7*TMath::Pi()/8.,8*TMath::Pi()/8.,9*TMath::Pi()/8.,10*TMath::Pi()/8.,11*TMath::Pi()/8.,12*TMath::Pi()/8.,13*TMath::Pi()/8.,14*TMath::Pi()/8.,15*TMath::Pi()/8.,16*TMath::Pi()/8.};
772 Double_t etamin[] = {-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8};
782 fZNCTower[r][k] =
new TProfile(Form(
"fZNCTower[%d][%d]",
fRunList[r],k),Form(
"fZNCTower[%d][%d]",
fRunList[r],k),100,0.,100.,
"s");
785 fZNATower[r][k] =
new TProfile(Form(
"fZNATower[%d][%d]",
fRunList[r],k),Form(
"fZNATower[%d][%d]",
fRunList[r],k),100,0.,100.,
"s");
809 AliMCEvent* McEvent = MCEvent();
817 AliError(
"cuts not set");
821 Int_t RunBin=-1, bin=0;
822 Int_t RunNum = aod->GetRunNumber();
827 if(RunBin==-1)
return;
834 Double_t centrV0M=300, centrCL1=300, centrCL0=300, centrTRK=300;
836 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
837 centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL1");
838 centrCL0 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL0");
839 centrTRK = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"TRK");
841 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
844 AliWarning(
"AliMultSelection object not found!");
867 Short_t isPileup = aod->IsPileupFromSPD(3);
873 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
878 if (aod->IsIncompleteDAQ()) {
884 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
885 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
887 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
892 double covTrc[6], covSPD[6];
893 vtTrc->GetCovarianceMatrix(covTrc);
894 vtSPD->GetCovarianceMatrix(covSPD);
896 double dz = vtTrc->GetZ() - vtSPD->GetZ();
898 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
899 double errTrc = TMath::Sqrt(covTrc[5]);
900 double nsigTot = dz/errTot;
901 double nsigTrc = dz/errTrc;
903 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
933 Short_t isPileup = aod->IsPileupFromSPD(3);
939 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
944 if (aod->IsIncompleteDAQ()) {
949 if(fabs(centrV0M-centrCL1)>7.5) {
955 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
956 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
958 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
963 double covTrc[6], covSPD[6];
964 vtTrc->GetCovarianceMatrix(covTrc);
965 vtSPD->GetCovarianceMatrix(covSPD);
967 double dz = vtTrc->GetZ() - vtSPD->GetZ();
969 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
970 double errTrc = TMath::Sqrt(covTrc[5]);
971 double nsigTot = dz/errTot;
972 double nsigTrc = dz/errTrc;
974 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
980 const Int_t nTracks = aod->GetNumberOfTracks();
981 Int_t multEsd = ((AliAODHeader*)aod->GetHeader())->GetNumberOfESDTracks();
984 Int_t multTrkBefC = 0;
985 Int_t multTrkTOFBefC = 0;
988 for (
Int_t it = 0; it < nTracks; it++) {
990 AliAODTrack* aodTrk = (AliAODTrack*)aod->GetTrack(it);
1006 if (aodTrk->TestFilterBit(128))
1013 Double_t multESDTPCDif = multEsdn - multTPCn*3.38;
1021 if(BisPileup==kFALSE) {
1023 if(!
fMultSelection->GetThisEventIsNotPileupMV()) BisPileup=kTRUE;
1024 if(!
fMultSelection->GetThisEventIsNotPileupInMultBins()) BisPileup=kTRUE;
1025 if(!
fMultSelection->GetThisEventHasNoInconsistentVertices()) BisPileup=kTRUE;
1026 if(!
fMultSelection->GetThisEventPassesTrackletVsCluster()) BisPileup=kTRUE;
1027 if(!
fMultSelection->GetThisEventIsNotIncompleteDAQ()) BisPileup=kTRUE;
1028 if(!
fMultSelection->GetThisEventHasGoodVertex2016()) BisPileup=kTRUE;
1033 if(BisPileup)
return;
1055 for(
Int_t i=0; i<64; i++) {
1056 if(std::isfinite(aod->GetVZEROEqMultiplicity(i))) SumV0 += aod->GetVZEROEqMultiplicity(i);
1061 vtxpos[0] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetX();
1062 vtxpos[1] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetY();
1063 vtxpos[2] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetZ();
1092 AliError(
"ERROR: Could not retrieve MCEvent");
1095 fStack = (TClonesArray*)aod->FindListObject(AliAODMCParticle::StdBranchName());
1097 AliError(
"ERROR: Could not retrieve MCStack");
1104 fMultSelection = (AliMultSelection*)aod->FindListObject(
"MultSelection");
1107 AliWarning(
"AliMultSelection object not found!");
1112 centr = (((AliVAODHeader*)aod->GetHeader())->GetCentralityP())->GetCentralityPercentile(
"V0M");
1115 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
1118 if(CenBin==-1)
return;
1121 for(
Int_t jTracks = 0; jTracks<aod->GetNumberOfTracks(); jTracks++){
1123 AliAODTrack* track = (AliAODTrack*)aod->GetTrack(jTracks);
1124 if(!track)
continue;
1127 Int_t lp = TMath::Abs(track->GetLabel());
1130 if (track->Pt() < .2 || track->Pt() > 20. || TMath::Abs(track->Eta()) > .8 || track->GetTPCNcls() < 70)
continue;
1151 if (((AliAODMCParticle*)
fStack->At(lp))->IsPhysicalPrimary()) {
1152 if (track->TestFilterBit(32))
fPtSpecFB32[0][CenBin]->Fill(track->Pt());
1153 if (track->TestFilterBit(96))
fPtSpecFB96[0][CenBin]->Fill(track->Pt());
1154 if (track->TestFilterBit(128))
fPtSpecFB128[0][CenBin]->Fill(track->Pt());
1155 if (track->TestFilterBit(768))
fPtSpecFB768[0][CenBin]->Fill(track->Pt());
1157 if (track->TestFilterBit(32))
fPtSpecFB32[1][CenBin]->Fill(track->Pt());
1158 if (track->TestFilterBit(96))
fPtSpecFB96[1][CenBin]->Fill(track->Pt());
1159 if (track->TestFilterBit(128))
fPtSpecFB128[1][CenBin]->Fill(track->Pt());
1160 if (track->TestFilterBit(768))
fPtSpecFB768[1][CenBin]->Fill(track->Pt());
1168 for(
Int_t jTracks = 0; jTracks<
fStack->GetEntriesFast(); jTracks++) {
1169 AliAODMCParticle *MCpart = (AliAODMCParticle*)
fStack->At(jTracks);
1171 printf(
"ERROR: Could not receive MC track %d\n", jTracks);
1175 if ( MCpart->Pt() < .2 || MCpart->Pt() > 20. || TMath::Abs(MCpart->Eta()) > .8 )
continue;
1177 if ( MCpart->Charge() == 0. || !MCpart->IsPhysicalPrimary())
continue;
1197 AliError(
"ERROR: Could not retrieve ESDEvent");
1201 AliError(
"ERROR: Could not retrieve MCEvent");
1204 AliStack*
fStack = fMCEvent->Stack();
1206 AliError(
"ERROR: Could not retrieve MCStack");
1210 AliESDVertex *vertex = (AliESDVertex*) esd->GetPrimaryVertex();
1211 if (!vertex)
return;
1212 if (TMath::Abs(vertex->GetZ()) > 10. )
return;
1213 if (vertex->GetNContributors() < 1 )
return;
1214 AliCentrality *
centrality = esd->GetCentrality();
1215 if (!centrality)
return;
1216 Double_t centr = centrality->GetCentralityPercentile(
"V0M");
1217 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
1219 if (centr>0. && centr<5.) CenBin=0;
1220 if (centr>5. && centr<10.) CenBin=1;
1221 if (centr>10. && centr<20.) CenBin=2;
1222 if (centr>20. && centr<30.) CenBin=3;
1223 if (centr>30. && centr<40.) CenBin=4;
1224 if (centr>40. && centr<50.) CenBin=5;
1225 if (centr>50. && centr<60.) CenBin=6;
1226 if (centr>60. && centr<70.) CenBin=7;
1227 if (centr>70. && centr<80.) CenBin=8;
1228 if (centr>80. && centr<90.) CenBin=9;
1229 if(CenBin==-1)
return;
1233 for (
Int_t i=0 ; i<fStack->GetNtrack() ; i++ ) {
1236 TParticle *particle = (TParticle*)fStack->Particle(i);
1237 if (!particle)
continue;
1238 if (!fStack->IsPhysicalPrimary(i))
continue;
1239 if ( particle->GetPDG()->Charge() == 0.)
continue;
1242 if ( particle->Pt()<0.2 || particle->Pt()>10. )
continue;
1243 if ( TMath::Abs(particle->Eta())>0.8 )
continue;
1261 for (
Int_t i=0 ; i<esd->GetNumberOfTracks() ; i++) {
1264 AliVTrack *vtrack =
static_cast<AliVTrack*
>(esd->GetTrack(i));
1265 AliESDtrack *track =
dynamic_cast<AliESDtrack*
>(vtrack);
1266 if (!track)
continue;
1269 Int_t lp = TMath::Abs(track->GetLabel());
1270 if (!fStack->IsPhysicalPrimary(lp))
continue;
1271 TParticle *particle = (TParticle*)fStack->Particle(lp);
1272 if (!particle)
continue;
1273 if (particle->GetPDG()->Charge() == 0.)
continue;
1281 UShort_t ntpccls = track->GetTPCNcls();
1282 Double_t tpcchi2 = track->GetTPCchi2();
1283 if (tpcchi2<0.2 || tpcchi2 >=4.) {
1295 track->GetImpactParameters(dcaxy,dcaz);
1296 if (dcaxy > 0.3 || dcaz > 0.3) {
1303 if ( track->Pt()<0.2 || track->Pt()>10. )
continue;
1304 if ( TMath::Abs(track->Eta())>0.8 )
continue;
1331 AliInputEventHandler* McHandler =
dynamic_cast<AliInputEventHandler*
> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1333 AliError(
"ERROR: Could not retrieve MCtruthEventHandler");
1336 McEvent = McHandler->MCEvent();
1338 AliError(
"ERROR: Could not retrieve MC event");
1342 Int_t nTracks = McEvent->GetNumberOfTracks();
1346 for (
Int_t itrkN=0; itrkN<nTracks; itrkN++) {
1348 AliMCParticle* pParticle =
dynamic_cast<AliMCParticle*
>(McEvent->GetTrack(itrkN));
1349 if (!pParticle)
continue;
1352 if (McEvent->IsPhysicalPrimary(itrkN) && pParticle->Charge()!=0) {
1377 if(ImpPar) CenPer = 0.3859796743103508*pow(ImpPar,2.);
1390 if (mult<fMinMult || mult>
fMaxMult) {
1391 AliWarning(
"FlowEvent cut on multiplicity");
return;
1431 AliInputEventHandler *hdr = (AliInputEventHandler*)am->GetInputEventHandler();
1433 if(hdr->IsEventSelected() && AliVEvent::kAny) {
1438 AliAODTracklets *trackl = aod->GetTracklets();
1439 Int_t nTracklets = trackl->GetNumberOfTracklets();
1444 AliAODVZERO *vzeroAOD = aod->GetVZEROData();
1445 Double_t multV0A = vzeroAOD->GetMTotV0A();
1446 Double_t multV0C = vzeroAOD->GetMTotV0C();
1447 Int_t CachednRing = 1;
1453 for(
Int_t i=0; i<64; i++) {
1456 Double_t mult = vzeroAOD->GetMultiplicity(i);
1459 if(EqFactor>0.) mult *= EqFactor;
1465 Double_t ChPhi = TMath::PiOver4()*(0.5+i%8);
1469 QxTot[k] += mult*TMath::Cos((k+1.)*ChPhi);
1470 QyTot[k] += mult*TMath::Sin((k+1.)*ChPhi);
1476 if(nRing!=CachednRing) {
1490 V0TotQC[k][0] += QxRec*denom;
1491 V0TotQC[k][1] += QyRec*denom;
1495 V0TotQA[k][0] += QxRec*denom;
1496 V0TotQA[k][1] += QyRec*denom;
1503 CachednRing = nRing;
1506 QxTot[k] += mult*TMath::Cos((k+1.)*ChPhi);
1507 QyTot[k] += mult*TMath::Sin((k+1.)*ChPhi);
1513 if(MultC[k]>0. && MultA[k]>0.) {
1514 Double_t QCx = V0TotQC[k][0]/MultC[k], QCy = V0TotQC[k][1]/MultC[k], QAx = V0TotQA[k][0]/MultA[k], QAy = V0TotQA[k][1]/MultA[k];
1515 if(!std::isnan(QCx) && !std::isnan(QCy) && !std::isnan(QAx) && !std::isnan(QAy)) {
1551 AliAODZDC *aodZDC = aod->GetZDCData();
1560 const Double_t * towZNCraw = aodZDC->GetZNCTowerEnergy();
1561 const Double_t * towZNAraw = aodZDC->GetZNATowerEnergy();
1565 Double_t Enucl = (RunNum < 209122 ? 1380. : 2511.);
1566 Double_t xyZNC[2]={0.,0.}, xyZNA[2]={0.,0.};
1567 Double_t towZNC[5]={0.}, towZNA[5]={0.};
1572 for(
Int_t i=0; i<5; i++) {
1577 for(
Int_t i=0; i<5; i++) {
1581 if(towZNC[i]<0.) towZNC[i] = 0.;
1582 if(towZNA[i]<0.) towZNA[i] = 0.;
1586 for(
Int_t i=0; i<5; i++) {
1587 towZNC[i] = towZNCraw[i];
1588 towZNA[i] = towZNAraw[i];
1590 if(towZNC[i]<0.) towZNC[i] = 0.;
1591 if(towZNA[i]<0.) towZNA[i] = 0.;
1593 fZNCTower[RunBin][i]->Fill(centrperc,towZNC[i]);
1594 fZNATower[RunBin][i]->Fill(centrperc,towZNA[i]);
1598 if(RunNum>=245829) towZNA[2] = 0.;
1599 Double_t zncEnergy=0., znaEnergy=0.;
1600 for(
Int_t i=0; i<5; i++){
1601 zncEnergy += towZNC[i];
1602 znaEnergy += towZNA[i];
1604 if(RunNum>=245829) znaEnergy *= 8./7.;
1608 const Double_t x[4] = {-1.75, 1.75, -1.75, 1.75};
1609 const Double_t y[4] = {-1.75, -1.75, 1.75, 1.75};
1610 Double_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC, EZNC, SumEZNC=0.;
1611 Double_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA, EZNA, SumEZNA=0., BadChOr;
1612 Bool_t fAllChONZNC=kTRUE, fAllChONZNA=kTRUE;
1615 for(
Int_t i=0; i<4; i++){
1626 EZNC = exp( (log(EZNC) - mu1 + mu2*cor1)/cor1 ) + av;
1635 numXZNC += x[i]*wZNC;
1636 numYZNC += y[i]*wZNC;
1642 EZNA = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
1656 EZNA = exp( (log(EZNA) - mu1 + mu2*cor1)/cor1 ) + av;
1664 numXZNA += x[i]*wZNA;
1665 numYZNA += y[i]*wZNA;
1671 Double_t recoE = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
1677 cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
1678 xyZNC[0] = cZNC*numXZNC/denZNC;
1679 xyZNC[1] = cZNC*numYZNC/denZNC;
1683 xyZNC[0] = xyZNC[1] = 0.;
1687 cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
1688 xyZNA[0] = cZNA*numXZNA/denZNA;
1689 xyZNA[1] = cZNA*numYZNA/denZNA;
1693 xyZNA[0] = xyZNA[1] = 0.;
1696 for(
Int_t i=0; i<4; i++) {
1697 if(towZNC[i+1]>0.) {
1699 numXZNC += x[i]*wZNC;
1700 numYZNC += y[i]*wZNC;
1703 if(towZNA[i+1]>0.) {
1705 numXZNA += x[i]*wZNA;
1706 numYZNA += y[i]*wZNA;
1711 xyZNC[0] = numXZNC/denZNC;
1712 xyZNC[1] = numYZNC/denZNC;
1715 xyZNC[0] = xyZNC[1] = 999.;
1719 xyZNA[0] = numXZNA/denZNA;
1720 xyZNA[1] = numYZNA/denZNA;
1723 xyZNA[0] = xyZNA[1] = 999.;
1728 if(!fAllChONZNC) denZNC=-1.;
1729 if(!fAllChONZNA) denZNA=-1.;
1731 if(denZNC>0. && pow(xyZNC[0]*xyZNC[0]+xyZNC[1]*xyZNC[1],0.5)>1.E-6)
fhZNCenDis[0]->Fill(centrperc,xyZNC[0],xyZNC[1]);
1732 if(denZNA>0. && pow(xyZNA[0]*xyZNA[0]+xyZNA[1]*xyZNA[1],0.5)>1.E-6)
fhZNCenDis[1]->Fill(centrperc,-xyZNA[0], xyZNA[1]);
1738 Double_t tdcSum = aodZDC->GetZDCTimeSum();
1739 Double_t tdcDiff = aodZDC->GetZDCTimeDiff();
1742 for(
int i=0; i<5; i++){
1744 if((i<4) && (towZNC[0]>0.))
fhZNCPMQiPMC[i]->Fill(towZNC[i+1]/towZNC[0]);
1746 for(
int i=0; i<5; i++){
1748 if(((i<4) && towZNA[0]>0.))
fhZNAPMQiPMC[i]->Fill(towZNA[i+1]/towZNA[0]);
1752 fhZDCCvsZDCCA->Fill(energyZNA+energyZPA, energyZNC+energyZPC);
1755 fhZNvsZP->Fill(energyZPA+energyZPC, energyZNA+energyZNC);
1756 fhZNvsVZERO->Fill(multV0A+multV0C, energyZNC+energyZNA);
1757 fhZDCvsVZERO->Fill(multV0A+multV0C, energyZNA+energyZPA+energyZNC+energyZPC);
1761 if((energyZNC+energyZNA)>0.) asymmetry = (energyZNC-energyZNA)/(energyZNC+energyZNA);
1786 Double_t EtC = BadTowerCalibHist->ProjectionY(
"",BadTowerCalibHist->GetXaxis()->FindBin(Et),BadTowerCalibHist->GetXaxis()->FindBin(Et))->GetRandom();
1795 if (Centrality>0. && Centrality<5.) CenBin=0;
1796 if (Centrality>5. && Centrality<10.) CenBin=1;
1797 if (Centrality>10. && Centrality<20.) CenBin=2;
1798 if (Centrality>20. && Centrality<30.) CenBin=3;
1799 if (Centrality>30. && Centrality<40.) CenBin=4;
1800 if (Centrality>40. && Centrality<50.) CenBin=5;
1801 if (Centrality>50. && Centrality<60.) CenBin=6;
1802 if (Centrality>60. && Centrality<70.) CenBin=7;
1803 if (Centrality>70. && Centrality<80.) CenBin=8;
1804 if (Centrality>80. && Centrality<90.) CenBin=9;
1805 if (CenBin>=
fnCen) CenBin=-1;
1806 if (
fnCen==1) CenBin=0;
1815 printf(
"One of vertices is not valid\n");
1818 static TMatrixDSym vVb(3);
1820 double dx = v0->GetX()-v1->GetX();
1821 double dy = v0->GetY()-v1->GetY();
1822 double dz = v0->GetZ()-v1->GetZ();
1823 double cov0[6],cov1[6];
1824 v0->GetCovarianceMatrix(cov0);
1825 v1->GetCovarianceMatrix(cov1);
1826 vVb(0,0) = cov0[0]+cov1[0];
1827 vVb(1,1) = cov0[2]+cov1[2];
1828 vVb(2,2) = cov0[5]+cov1[5];
1829 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
1830 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
1832 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
1833 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
1834 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
1835 return dist>0 ? TMath::Sqrt(dist) : -1;
1843 const int kMinPlpContrib = 5;
1844 const double kMaxPlpChi2 = 5.0;
1845 const double kMinWDist = 15;
1847 const AliVVertex* vtPrm = 0;
1848 const AliVVertex* vtPlp = 0;
1851 if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) )
return kFALSE;
1852 vtPrm = aod->GetPrimaryVertex();
1853 if (vtPrm == aod->GetPrimaryVertexSPD())
return kTRUE;
1857 for (
int ipl=0;ipl<nPlp;ipl++) {
1858 vtPlp = (
const AliVVertex*)aod->GetPileupVertexTracks(ipl);
1860 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
1861 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
1865 double wDst =
GetWDist(vtPrm,vtPlp);
1866 if (wDst<kMinWDist)
continue;
void SetMassMin(Double_t i)
TH2F * fhZDCCvsZDCCA
ZNC vs ZNA;.
static const Int_t fkVZEROnQAplots
TH2F * fhZNvsVZERO
ZNC+ZNA vs ZPC+ZPA;.
TH1F * fPtSpecFB128[2][10]
PtSpecRec FB96.
void FindDaughters(Bool_t keepDaughtersInRPselection=kFALSE)
TH3D * fhZNSpectraCor
ZNA vs. centrality.
virtual void SetV02Qsub(Double_t QVCx, Double_t QVCy, Double_t MC, Double_t QVAx, Double_t QVAy, Double_t MA, Int_t har)
void SetEta(Double_t eta)
TH1F * fPileUpCount
centrality distribution
Int_t fRunList[fCRCMaxnRun]
TH2F * fhZDCvsTracklets
ZDC vs VZERO;.
static const Int_t fCRCnTow
TH1F * fhZNCPMQiPMC[4]
ZNA PM high res.
TH2F * fhZNCvsZPC
ZDCC vs ZDCCA.
AliFlowTrack * fFlowTrack
static const Int_t fkVZEROnHar
virtual void SetZDC2Qsub(Double_t *QVC, Double_t MC, Double_t *QVA, Double_t MA)
Bool_t fRejectPileUpTight
void AddFlow(Double_t v1, Double_t v2, Double_t v3, Double_t v4, Double_t v5)
Int_t GetReferenceMultiplicity(AliVEvent *event, AliMCEvent *mcEvent)
void SetNbinsPhi(Int_t i)
void Set(const AliVParticle *p)
void SetPhiMin(Double_t i)
TList * fVZEROQVecRecList
TH2F * fhZNCvsAsymm
ZNA vs asymmetry.
void SetMCReactionPlaneAngle(const AliMCEvent *mcEvent)
TH3D * fhZNCenDis[2]
Debunch;.
void SetCutsPOI(AliFlowTrackCuts *cutsPOI)
TH1D * fTowerGainEq[2][5]
TH1F * fPtSpecFB768[2][10]
PtSpecRec FB128.
TH1F * fPtSpecGen[2][10]
list with pt spectra
virtual void UserExec(Option_t *option)
void SetHistWeightvsPhiMax(Double_t d)
TH2F * fhZNCvscentrality
ZNC vs asymmetry.
Bool_t fUseZDCSpectraCorr
void SetZNAEnergy(Double_t const en)
Int_t fNonFlowNumberOfTrackClones
void SetEtaMax(Double_t i)
void SetReferenceMultiplicity(Int_t m)
virtual Int_t GetCenBin(Double_t Centrality)
void SetCutsRP(AliFlowTrackCuts *cutsRP)
TH2F * fhZNCvsZNA
PMQi/PMC for ZNA.
TH2F * fhDebunch
ZDC vs N_cluster layer 1;.
CentrEstimator fCentrEstimator
TH1F * fhAsymm
ZN centroid vs centrality.
void SetCentralityCL1(Double_t c)
virtual void SetVertexPosition(Double_t *pos)
void IncrementNumberOfPOIs(Int_t poiType=1)
TH3D * fhZNBCCorr
ZNA vs. centrality.
void SetForRPSelection(Bool_t b=kTRUE)
void Fill(AliFlowTrackCuts *rpCuts, AliFlowTrackCuts *poiCuts)
TH2F * fhZNAvsZPA
ZNC vs ZPC;.
TH1F * fhZNAPM[5]
ZNC PM high res.
TProfile3D * fVZEROQVectorRecQxStored[fkVZEROnHar]
TF1 * fMultTOFLowCut
centrality distribution
void SetShuffleTracks(Bool_t b)
void CloneTracks(Int_t n)
void SetNbinsEta(Int_t i)
AliMultSelection * fMultSelection
AliFlowEvent * fFlowEvent
void SetNITSCL1(Double_t c)
TList * fBadTowerStuffList
virtual void UserCreateOutputObjects()
void SetNbinsMult(Int_t i)
void SetMassMax(Double_t i)
static AliFlowCommonConstants * GetMaster()
TH3D * fhZNSpectra
ZNA vs. centrality.
TH2F * fhZDCvsNclu1
ZDC vs N_tracklets;.
void SetNbinsMass(Int_t i)
AliFlowEventCuts * fCutsEvent
TH1F * fPileUpMultSelCount
centrality distribution
Double_t GetCentrality() const
Bool_t fUseTowerEq
MultSelection (RUN2 centrality estimator)
TH2D * fBadTowerCalibHist[100]
ClassImp(AliAnalysisTaskCRCZDC) AliAnalysisTaskCRCZDC
Bool_t plpMV(const AliAODEvent *aod)
void SetCentrality(Double_t c)
AliFlowTrackCuts * fCutsPOI
void SetRun(Int_t const run)
Double_t fHistWeightvsPhiMin
void SetSource(trackSource s)
void SetPhi(Double_t phi)
TProfile3D * fVZEROQVectorRecQyStored[fkVZEROnHar]
void DefineDeadZone(Double_t etaMin, Double_t etaMax, Double_t phiMin, Double_t phiMax)
void SetMultMax(Double_t i)
AliGenEventHeader * fGenHeader
virtual void InitializeRunArrays()
void SetPtMax(Double_t i)
TProfile * fZNCTower[fCRCMaxnRun][fCRCnTow]
Q Vectors list per run.
TList * fCRCQVecListRun[fCRCMaxnRun]
Run list.
void SetZNCEnergy(Double_t const en)
TList * fZDCSpectraCorrList
virtual ~AliAnalysisTaskCRCZDC()
virtual void Terminate(Option_t *option)
TProfile * fZNATower[fCRCMaxnRun][fCRCnTow]
ZNC tower spectra.
void SetEvent(AliVEvent *event, AliMCEvent *mcEvent=NULL)
Bool_t IsSetMCReactionPlaneAngle() const
TClonesArray * fStack
ZNA tower spectra.
void SetPhiMax(Double_t i)
Double_t fHistWeightvsPhiMax
void SetEtaMin(Double_t i)
TProfile2D * fVZEROQVectorRecFinal[fkVZEROnHar][fkVZEROnQAplots]
static const Int_t fCRCMaxnRun
ZNA vs. centrality.
Double_t GetBadTowerResp(Double_t Et, TH2D *BadTowerCalibHist)
void SetForPOISelection(Bool_t b=kTRUE)
void SetHistWeightvsPhiMin(Double_t d)
TH1F * fhZNAPMQiPMC[4]
PMQi/PMC for ZNC.
TH2F * fhZDCvsVZERO
ZN vs VZERO;.
void TagSubeventsInEta(Double_t etaMinA, Double_t etaMaxA, Double_t etaMinB, Double_t etaMaxB)
TList * fBadTowerCalibList
TH1F * fPtSpecFB96[2][10]
PtSpecRec FB32.
TH3D * fhZNSpectraPow
ZNA vs. centrality.
void SetMultMin(Double_t i)
TH2F * fhZNAvsAsymm
ZN asymmetry.
TH2F * fhZNAvscentrality
ZNC vs. centrality.
virtual Bool_t IsSelected(TObject *obj, TObject *objmc)
TH1F * fPtSpecFB32[2][10]
PtSpecGen.
TH1F * fhZNCPM[5]
list send on output slot 0
void SetCentralityTRK(Double_t c)
Double_t GetWDist(const AliVVertex *v0, const AliVVertex *v1)
Bool_t fCutTPC
PtSpecRec FB768.
void SetPtMin(Double_t i)
AliFlowTrackCuts * fCutsRP
void InsertTrack(AliFlowTrack *)
Bool_t fUseBadTowerCalib
list for storing calib files
AliAnalysisUtils * fAnalysisUtil
Event selection.
TH2F * fhZNvsZP
ZNA vs ZPA;.
AliGenHijingEventHeader * fHijingGenHeader
AliGenPythiaEventHeader * fPythiaGenHeader
Int_t NumberOfTracks() const