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" 98 #include "AliNanoAODTrack.h" 99 #include "AliNanoAODHeader.h" 106 fAnalysisType(kAUTOMATIC),
113 fCutContainer(new
TList()),
123 fPythiaGenHeader(NULL),
124 fHijingGenHeader(NULL),
127 fLoadCandidates(kFALSE),
139 fPhiMax(TMath::TwoPi()),
146 fHistWeightvsPhiMin(0.),
147 fHistWeightvsPhiMax(3.),
152 fAfterburnerOn(kFALSE),
153 fNonFlowNumberOfTrackClones(0),
161 fShuffleTracks(kFALSE),
163 fAnalysisInput(kAOD),
166 fRejectPileUp(kTRUE),
167 fRejectPileUpTight(kFALSE),
168 fResetNegativeZDC(kFALSE),
171 fCentrEstimator(
kV0M),
183 fhZNCvscentrality(0x0),
184 fhZNAvscentrality(0x0),
185 fhZPCvscentrality(0x0),
186 fhZPAvscentrality(0x0),
188 fZDCGainAlpha(0.395),
196 fPileUpMultSelCount(0x0),
198 fMultTOFHighCut(0x0),
201 fUseBadTowerCalib(kFALSE),
202 fBadTowerCalibList(NULL),
203 fVZEROGainEqList(NULL),
204 fVZEROQVecRecList(NULL),
205 fUseZDCSpectraCorr(kFALSE),
206 fCorrectPhiTracklets(kFALSE),
207 fZDCSpectraCorrList(NULL),
208 fSpectraMCList(NULL),
210 fBadTowerStuffList(NULL),
211 fVZEROStuffList(NULL),
212 fVZEROGainEqHist(NULL),
222 fQATrackTPCNcls(NULL),
223 fQATrackITSNcls(NULL),
224 fQATrackTPCchi2(NULL),
225 fQATrackITSchi2(NULL),
226 fQATrackTPCScls(NULL),
227 fQATrackITSScls(NULL)
229 for(
int i=0; i<5; i++){
233 for(
int i=0; i<4; i++){
234 fhZNCPMQiPMC[i] = 0x0;
235 fhZNAPMQiPMC[i] = 0x0;
237 for(
Int_t r=0; r<fCRCMaxnRun; r++) {
241 for(
Int_t i=0; i<5; i++) {
242 fTowerGainEq[
c][i] = NULL;
246 fBadTowerCalibHist[
c] = NULL;
248 for (
Int_t k=0; k<fkVZEROnHar; k++) {
251 fVZEROQVectorRecQxStored[k] = NULL;
252 fVZEROQVectorRecQyStored[k] = NULL;
253 for (
Int_t t=0; t<fkVZEROnQAplots; t++) {
254 fVZEROQVectorRecFinal[k][t] = NULL;
257 for(
Int_t i=0; i<8; i++) {
258 SpecCorMu1[i] = NULL;
259 SpecCorMu2[i] = NULL;
263 this->InitializeRunArrays();
264 fMyTRandom3 =
new TRandom3(1);
265 gRandom->SetSeed(fMyTRandom3->Integer(65539));
266 for(
Int_t j=0; j<2; j++) {
268 fPtSpecGen[j][
c] = NULL;
269 fPtSpecFB32[j][
c] = NULL;
270 fPtSpecFB96[j][
c] = NULL;
271 fPtSpecFB128[j][
c] = NULL;
272 fPtSpecFB768[j][
c] = NULL;
276 fhZNCenDis[
c] = NULL;
278 for(
Int_t fb=0; fb<fKNFBs; fb++){
279 for (
Int_t i=0; i<4; i++) {
280 fTrackQADCAxy[fb][i] = NULL;
281 fTrackQADCAz[fb][i] = NULL;
282 fTrackQApT[fb][i] = NULL;
283 fTrackQADphi[fb][i] = NULL;
284 fEbEQRe[fb][i] = NULL;
285 fEbEQIm[fb][i] = NULL;
286 fEbEQMu[fb][i] = NULL;
294 fAnalysisType(kAUTOMATIC),
301 fCutContainer(new
TList()),
311 fLoadCandidates(bCandidates),
323 fPhiMax(TMath::TwoPi()),
330 fHistWeightvsPhiMin(0.),
331 fHistWeightvsPhiMax(3.),
336 fAfterburnerOn(kFALSE),
337 fNonFlowNumberOfTrackClones(0),
345 fShuffleTracks(kFALSE),
347 fAnalysisInput(kAOD),
350 fRejectPileUp(kTRUE),
351 fRejectPileUpTight(kFALSE),
352 fResetNegativeZDC(kFALSE),
355 fCentrEstimator(
kV0M),
367 fhZNCvscentrality(0x0),
368 fhZNAvscentrality(0x0),
369 fhZPCvscentrality(0x0),
370 fhZPAvscentrality(0x0),
373 fZDCGainAlpha(0.395),
375 fPythiaGenHeader(NULL),
376 fHijingGenHeader(NULL),
384 fPileUpMultSelCount(0x0),
386 fMultTOFHighCut(0x0),
389 fUseBadTowerCalib(kFALSE),
390 fBadTowerCalibList(NULL),
391 fVZEROGainEqList(NULL),
392 fVZEROQVecRecList(NULL),
393 fUseZDCSpectraCorr(kFALSE),
394 fCorrectPhiTracklets(kFALSE),
395 fZDCSpectraCorrList(NULL),
396 fSpectraMCList(NULL),
398 fBadTowerStuffList(NULL),
399 fVZEROStuffList(NULL),
400 fVZEROGainEqHist(NULL),
410 fQATrackTPCNcls(NULL),
411 fQATrackITSNcls(NULL),
412 fQATrackTPCchi2(NULL),
413 fQATrackITSchi2(NULL),
414 fQATrackTPCScls(NULL),
415 fQATrackITSScls(NULL)
417 for(
int i=0; i<5; i++){
421 for(
int i=0; i<4; i++){
429 for(
Int_t i=0; i<5; i++) {
445 for(
Int_t i=0; i<8; i++) {
455 DefineInput(0, TChain::Class());
458 DefineOutput(1, AliFlowEventSimple::Class());
459 DefineOutput(2, TList::Class());
461 for(
Int_t j=0; j<2; j++) {
474 for (
Int_t i=0; i<4; i++) {
490 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
564 fQAList->SetName(
"AliFlowEventCuts QA");
581 fCenDis =
new TH1F(
"fCenDis",
"fCenDis", 100, 0., 100.);
583 fPileUpCount =
new TH1F(
"fPileUpCount",
"fPileUpCount", 9, 0., 9.);
586 fPileUpCount->GetXaxis()->SetBinLabel(3,
"RefMultiplicityComb08");
587 fPileUpCount->GetXaxis()->SetBinLabel(4,
"IncompleteDAQ");
588 fPileUpCount->GetXaxis()->SetBinLabel(5,
"abs(V0M-CL1)>7.5");
590 fPileUpCount->GetXaxis()->SetBinLabel(7,
"inconsistentVtx");
591 fPileUpCount->GetXaxis()->SetBinLabel(8,
"multESDTPCDif");
592 fPileUpCount->GetXaxis()->SetBinLabel(9,
"extraPileUpMultSel");
605 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);
606 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);
608 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);
609 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);
613 for(
Int_t i=0; i<5; i++) {
620 fhZNCenDis[
c] =
new TH3D(Form(
"fhZNCenDis[%d]",
c), Form(
"fhZNCenDis[%d]",
c), 100, 0., 100., 100, -2., 2. , 100., -2., 2.);
631 for(
Int_t i=0; i<8; i++) {
643 fhZNSpectra =
new TH3D(
"fhZNSpectra",
"fhZNSpectra",100,0.,100.,8,0.,8.,1000,0.,1.E5);
645 fhZNSpectraCor =
new TH3D(
"fhZNSpectraCor",
"fhZNSpectraCor",100,0.,100.,8,0.,8.,1000,0.,1.E5);
647 fhZNSpectraPow =
new TH3D(
"fhZNSpectraPow",
"fhZNSpectraPow",100,0.,100.,8,0.,8.,1000,0.,TMath::Power(1.E5,
fZDCGainAlpha));
649 fhZNBCCorr =
new TH3D(
"fhZNBCCorr",
"fhZNBCCorr",100,0.,100.,500,0.,1.E5,500,0.,1.E5);
652 fQATrackTPCNcls =
new TH3D(
"fQATrackTPCNcls",
"fQATrackTPCNcls",50,0.,TMath::TwoPi(),16,-0.8,0.8,50,50.,150.);
654 fQATrackITSNcls =
new TH3D(
"fQATrackITSNcls",
"fQATrackITSNcls",50,0.,TMath::TwoPi(),16,-0.8,0.8,6,0.,6.);
656 fQATrackTPCchi2 =
new TH3D(
"fQATrackTPCchi2",
"fQATrackTPCchi2",50,0.,TMath::TwoPi(),16,-0.8,0.8,50,0.,5.);
658 fQATrackITSchi2 =
new TH3D(
"fQATrackITSchi2",
"fQATrackITSchi2",50,0.,TMath::TwoPi(),16,-0.8,0.8,50,0.,50.);
660 fQATrackTPCScls =
new TH3D(
"fQATrackTPCScls",
"fQATrackTPCScls",50,0.,TMath::TwoPi(),16,-0.8,0.8,50,0.,1.);
662 fQATrackITSScls =
new TH3D(
"fQATrackITSScls",
"fQATrackITSScls",50,0.,TMath::TwoPi(),16,-0.8,0.8,50,0.,1.);
672 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.};
673 for(
Int_t j=0; j<2; j++) {
675 fPtSpecGen[j][
c] =
new TH1F(Form(
"fPtSpecGen[%d][%d]",j,
c), Form(
"fPtSpecGen[%d][%d]",j,
c), 23, xmin);
677 fPtSpecFB32[j][
c] =
new TH1F(Form(
"fPtSpecFB32[%d][%d]",j,c), Form(
"fPtSpecFB32[%d][%d]",j,c), 23, xmin);
679 fPtSpecFB96[j][
c] =
new TH1F(Form(
"fPtSpecFB96[%d][%d]",j,c), Form(
"fPtSpecFB96[%d][%d]",j,c), 23, xmin);
681 fPtSpecFB128[j][
c] =
new TH1F(Form(
"fPtSpecFB128[%d][%d]",j,c), Form(
"fPtSpecFB128[%d][%d]",j,c), 23, xmin);
683 fPtSpecFB768[j][
c] =
new TH1F(Form(
"fPtSpecFB768[%d][%d]",j,c), Form(
"fPtSpecFB768[%d][%d]",j,c), 23, xmin);
693 for(
int i=0; i<5; i++){
695 sprintf(hname,
"hZNCPM%d",i);
696 fhZNCPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
699 sprintf(hname,
"hZNAPM%d",i);
700 fhZNAPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
706 sprintf(hnamenc,
"hZNCPMQ%dPMC",i+1);
707 fhZNCPMQiPMC[i] =
new TH1F(hnamenc, hnamenc, 100, 0., 1.);
711 sprintf(hnamena,
"hZNAPMQ%dPMC",i+1);
712 fhZNAPMQiPMC[i] =
new TH1F(hnamena, hnamena, 100, 0., 1.);
717 fhZNCvsZNA =
new TH2F(
"hZNCvsZNA",
"hZNCvsZNA",200,-50.,2.E5,200,-50.,2.E5);
719 fhZDCCvsZDCCA =
new TH2F(
"hZDCCvsZDCCA",
"hZDCCvsZDCCA",200,0.,2.8E5,200,0.,2.8E5);
721 fhZNCvsZPC =
new TH2F(
"hZNCvsZPC",
"hZNCvsZPC",200,-50.,0.8E5,200,-50.,2.E5);
723 fhZNAvsZPA =
new TH2F(
"hZNAvsZPA",
"hZNAvsZPA",200,-50.,0.8E5,200,-50.,2.E5);
725 fhZNvsZP =
new TH2F(
"hZNvsZP",
"hZNvsZP",200,-50.,1.6E5,200,-50.,4.E5);
727 fhZNvsVZERO =
new TH2F(
"hZNvsVZERO",
"hZNvsVZERO",250,0.,35000.,200,0.,4.E5);
729 fhZDCvsVZERO =
new TH2F(
"hZDCvsVZERO",
"hZDCvsVZERO",250,0.,35000.,250,0.,5.6E5);
732 fhAsymm =
new TH1F(
"hAsymm" ,
"Asimmetry ",200,-1.,1.);
734 fhZNAvsAsymm =
new TH2F(
"hZNAvsAsymm",
"ZNA vs. asymm.",200,-1.,1.,200,-50.,2.E5);
736 fhZNCvsAsymm =
new TH2F(
"hZNCvsAsymm",
"ZNC vs. asymm.",200,-1.,1.,200,-50.,2.E5);
750 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};
752 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};
754 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};
756 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};
758 Int_t dRun15opidfix[] = {245145, 245146, 245151, 245152, 245231, 245232, 245259, 245343, 245345, 245346, 245347, 245349, 245353, 245396, 245397, 245401, 245407, 245409, 245441, 245446, 245450, 245454, 245496, 245497, 245501, 245504, 245505, 245507, 245535, 245540, 245542, 245543, 245544, 245545, 245554};
778 fVZEROMult =
new TProfile2D(
"fVZEROMult",
"fVZEROMult",fCRCnRun,0.,1.*fCRCnRun,64,0.,64.);
799 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");
825 Double_t dBinsEta[]={-0.8,-0.64,-0.48,-0.32,-0.16,0.,0.16,0.32,0.48,0.64,0.8};
827 Double_t dBinsPt[] = {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.,8.,10.,14.,20.,30.,50.};
830 for (
Int_t i=0; i<4; i++) {
832 fTrackQADCAxy[fb][i] =
new TH3D(Form(
"fTrackQADCAxy[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];DCAxy [cm]",10,-0.8,0.8,10,0.,5.,480,-2.4,2.4);
834 fTrackQADCAz[fb][i] =
new TH3D(Form(
"fTrackQADCAz[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];DCAz [cm]",10,-0.8,0.8,10,0.,5.,640,-3.2,3.2);
837 fTrackQApT[fb][i] =
new TH2D(Form(
"fTrackQApT[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c]",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
840 fTrackQADphi[fb][i] =
new TProfile2D(Form(
"fTrackQADphi[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];cos(#Delta#phi)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
843 fEbEQRe[fb][i] =
new TH2D(Form(
"fEbEQRe[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];QRe(EbE)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
845 fEbEQIm[fb][i] =
new TH2D(Form(
"fEbEQIm[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];QRe(EbE)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
847 fEbEQMu[fb][i] =
new TH2D(Form(
"fEbEQMu[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];QRe(EbE)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
857 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.};
858 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.};
859 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};
868 fZNCTower[r][k] =
new TProfile(Form(
"fZNCTower[%d][%d]",
fRunList[r],k),Form(
"fZNCTower[%d][%d]",
fRunList[r],k),100,0.,100.,
"s");
871 fZNATower[r][k] =
new TProfile(Form(
"fZNATower[%d][%d]",
fRunList[r],k),Form(
"fZNATower[%d][%d]",
fRunList[r],k),100,0.,100.,
"s");
895 AliMCEvent* McEvent = MCEvent();
903 AliError(
"cuts not set");
907 Int_t numTracks = aod->GetNumberOfTracks();
908 if (numTracks==0)
return;
910 TObject *head = aod->GetHeader();
911 Int_t RunBin=-1, bin=0, RunNum=-1;
913 if(!head->InheritsFrom(
"AliNanoAODStorage")){
914 RunNum = aod->GetRunNumber();
919 if(RunBin==-1)
return;
927 Double_t centrV0M=300, centrCL1=300, centrCL0=300, centrTRK=300;
928 if(!head->InheritsFrom(
"AliNanoAODStorage")){
930 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
931 centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL1");
932 centrCL0 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL0");
933 centrTRK = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"TRK");
935 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
938 AliWarning(
"AliMultSelection object not found!");
948 AliNanoAODHeader *nanoAodHeader = (AliNanoAODHeader*) head;
949 RunNum = nanoAodHeader->GetRunNumber();
955 if(RunBin==-1)
return;
958 centrV0M = nanoAodHeader->GetCentr(
"V0M");
959 centrTRK = nanoAodHeader->GetCentr(
"TRK");
960 centrCL1 = nanoAodHeader->GetCentr(
"CL1");
961 centrCL0 = nanoAodHeader->GetCentr(
"CL0");
982 AliAODTracklets* anInputTracklets = (AliAODTracklets*)aod->GetTracklets();
983 Int_t multSPD = anInputTracklets->GetNumberOfTracklets();
984 Double_t BField = aod->GetMagneticField();
986 for (
Int_t itracklet=0; itracklet<multSPD; ++itracklet) {
987 Float_t thetaTr= anInputTracklets->GetTheta(itracklet);
988 Float_t phiTr= anInputTracklets->GetPhi(itracklet);
990 Float_t etaTr = -TMath::Log(TMath::Tan(thetaTr/2.));
996 Double_t DeltaPhi = anInputTracklets->GetDeltaPhi(itracklet);
997 if(BField>0. && DeltaPhi>0.) pTrack->
SetCharge(1);
998 if(BField>0. && DeltaPhi<0.) pTrack->
SetCharge(-1);
999 if(BField<0. && DeltaPhi>0.) pTrack->
SetCharge(-1);
1000 if(BField<0. && DeltaPhi<0.) pTrack->
SetCharge(1);
1003 phiTr += 39./34.*DeltaPhi;
1004 if (phiTr < 0.) phiTr += 2.*TMath::Pi();
1005 if (phiTr > 2.*TMath::Pi()) phiTr -= 2.*TMath::Pi();
1030 if(!head->InheritsFrom(
"AliNanoAODStorage")){
1031 for(
Int_t i=0; i<64; i++) {
1032 if(std::isfinite(aod->GetVZEROEqMultiplicity(i))) SumV0 += aod->GetVZEROEqMultiplicity(i);
1034 period = aod->GetPeriodNumber();
1035 orbit24 = aod->GetOrbitNumber();
1037 AliNanoAODHeader *nanoAodHeader = (AliNanoAODHeader*) head;
1038 SumV0 = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstV0"));
1039 period = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstPeriod"));
1040 orbit24 = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstOrbit"));
1048 orbit24 = (1<<24) - 1;
1050 if (orbit24 >= (1<<24)) {
1052 orbit24 = (1<<24) - 1;
1054 UInt_t orbit = period * (1<<24) + orbit24;
1058 vtxpos[0] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetX();
1059 vtxpos[1] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetY();
1060 vtxpos[2] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetZ();
1086 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
1088 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
1091 AliWarning(
"AliMultSelection object not found!");
1096 if(centrV0M<10. || centrV0M>40.)
return;
1103 if(IsPileUp)
return;
1107 Double_t BField = aod->GetMagneticField();
1109 for(
Int_t jTracks = 0; jTracks<aod->GetNumberOfTracks(); jTracks++){
1111 AliAODTrack* track = (AliAODTrack*)aod->GetTrack(jTracks);
1112 if(!track)
continue;
1117 Double_t dCharge = track->Charge();
1119 if(BField>0. && dCharge>0.) cw=0;
1120 if(BField>0. && dCharge<0.) cw=1;
1121 if(BField<0. && dCharge>0.) cw=2;
1122 if(BField<0. && dCharge<0.) cw=3;
1125 if (dPt < .2 || dPt > 50. || TMath::Abs(dEta) > 0.8)
continue;
1130 if (std::abs((
Int_t)DCAxy)==999 || std::abs((
Int_t)DCAz)==999) {
1133 Double_t pos[3] = {-99., -99., -99.};
1134 track->GetPosition(pos);
1135 if(pos[0]*pos[0]+pos[1]*pos[1] <= 3.*3.) {
1136 AliAODTrack copy(*track);
1138 Double_t bCov[3] = {-99., -99., -99.};
1139 if(copy.PropagateToDCA(aod->GetPrimaryVertex(), aod->GetMagneticField(), 100., b, bCov)) {
1145 if(fabs(DCAxy)>2.4 || fabs(DCAz)>3.2)
continue;
1148 if (track->GetTPCNcls() < 70)
continue;
1149 Double_t chi2_per_tpc = track->Chi2perNDF();
1150 if (chi2_per_tpc < 0.1 || chi2_per_tpc > 4.)
continue;
1151 Double_t fraction_shared_tpccls = 1.*track->GetTPCnclsS()/track->GetTPCncls();
1152 if (fraction_shared_tpccls > 0.4)
continue;
1154 Int_t FBarray[4] = {32,96,128,768};
1158 if (track->TestFilterBit(FBarray[fb])) {
1162 fEbEQRe[fb][cw]->Fill(dEta,dPt,TMath::Cos(dPhi));
1163 fEbEQIm[fb][cw]->Fill(dEta,dPt,TMath::Sin(dPhi));
1164 fEbEQMu[fb][cw]->Fill(dEta,dPt);
1170 for(
Int_t bx=1; bx<=
fEbEQRe[0][0]->GetXaxis()->GetNbins(); bx++) {
1171 for(
Int_t by=1; by<=
fEbEQRe[0][0]->GetYaxis()->GetNbins(); by++) {
1184 Double_t c1 = (QRe*QRe+QIm*QIm-M)/(M*(M-1.));
1215 AliError(
"ERROR: Could not retrieve MCEvent");
1218 fStack = (TClonesArray*)aod->FindListObject(AliAODMCParticle::StdBranchName());
1220 AliError(
"ERROR: Could not retrieve MCStack");
1227 fMultSelection = (AliMultSelection*)aod->FindListObject(
"MultSelection");
1230 AliWarning(
"AliMultSelection object not found!");
1235 centr = (((AliVAODHeader*)aod->GetHeader())->GetCentralityP())->GetCentralityPercentile(
"V0M");
1238 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
1241 if(CenBin==-1)
return;
1244 AliMCEvent* McEventFake = NULL;
1258 for(
Int_t i=0; i<64; i++) {
1259 if(std::isfinite(aod->GetVZEROEqMultiplicity(i))) SumV0 += aod->GetVZEROEqMultiplicity(i);
1264 vtxpos[0] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetX();
1265 vtxpos[1] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetY();
1266 vtxpos[2] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetZ();
1270 for(
Int_t jTracks = 0; jTracks<aod->GetNumberOfTracks(); jTracks++){
1272 AliAODTrack* track = (AliAODTrack*)aod->GetTrack(jTracks);
1273 if(!track)
continue;
1276 Int_t lp = TMath::Abs(track->GetLabel());
1279 if (track->Pt() < .2 || track->Pt() > 20. || TMath::Abs(track->Eta()) > 0.8)
continue;
1284 if(fabs(DCAxy)>2.4 || fabs(DCAz)>3.2)
continue;
1287 if (track->GetTPCNcls() < 70)
continue;
1288 Double_t chi2_per_tpc = track->Chi2perNDF();
1289 if (chi2_per_tpc < 0.1 || chi2_per_tpc > 4.)
continue;
1290 Double_t fraction_shared_tpccls = 1.*track->GetTPCnclsS()/track->GetTPCncls();
1291 if (fraction_shared_tpccls > 0.4)
continue;
1294 if (((AliAODMCParticle*)
fStack->At(lp))->IsPhysicalPrimary()) {
1295 if (track->TestFilterBit(32))
fPtSpecFB32[0][CenBin]->Fill(track->Pt());
1296 if (track->TestFilterBit(96))
fPtSpecFB96[0][CenBin]->Fill(track->Pt());
1297 if (track->TestFilterBit(128))
fPtSpecFB128[0][CenBin]->Fill(track->Pt());
1298 if (track->TestFilterBit(768))
fPtSpecFB768[0][CenBin]->Fill(track->Pt());
1300 if (track->TestFilterBit(32))
fPtSpecFB32[1][CenBin]->Fill(track->Pt());
1301 if (track->TestFilterBit(96))
fPtSpecFB96[1][CenBin]->Fill(track->Pt());
1302 if (track->TestFilterBit(128))
fPtSpecFB128[1][CenBin]->Fill(track->Pt());
1303 if (track->TestFilterBit(768))
fPtSpecFB768[1][CenBin]->Fill(track->Pt());
1309 for(
Int_t jTracks = 0; jTracks<
fStack->GetEntriesFast(); jTracks++) {
1310 AliAODMCParticle *MCpart = (AliAODMCParticle*)
fStack->At(jTracks);
1312 printf(
"ERROR: Could not receive MC track %d\n", jTracks);
1317 if ( MCpart->Pt() < .2 || MCpart->Pt() > 20. || TMath::Abs(MCpart->Eta()) > .8 )
continue;
1319 if ( MCpart->Charge() == 0. || !MCpart->IsPhysicalPrimary())
continue;
1339 AliError(
"ERROR: Could not retrieve ESDEvent");
1343 AliError(
"ERROR: Could not retrieve MCEvent");
1346 AliStack*
fStack = fMCEvent->Stack();
1348 AliError(
"ERROR: Could not retrieve MCStack");
1352 AliESDVertex *vertex = (AliESDVertex*) esd->GetPrimaryVertex();
1353 if (!vertex)
return;
1354 if (TMath::Abs(vertex->GetZ()) > 10. )
return;
1355 if (vertex->GetNContributors() < 1 )
return;
1356 AliCentrality *
centrality = esd->GetCentrality();
1357 if (!centrality)
return;
1358 Double_t centr = centrality->GetCentralityPercentile(
"V0M");
1359 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
1361 if (centr>0. && centr<5.) CenBin=0;
1362 if (centr>5. && centr<10.) CenBin=1;
1363 if (centr>10. && centr<20.) CenBin=2;
1364 if (centr>20. && centr<30.) CenBin=3;
1365 if (centr>30. && centr<40.) CenBin=4;
1366 if (centr>40. && centr<50.) CenBin=5;
1367 if (centr>50. && centr<60.) CenBin=6;
1368 if (centr>60. && centr<70.) CenBin=7;
1369 if (centr>70. && centr<80.) CenBin=8;
1370 if (centr>80. && centr<90.) CenBin=9;
1371 if(CenBin==-1)
return;
1375 for (
Int_t i=0 ; i<fStack->GetNtrack() ; i++ ) {
1378 TParticle *particle = (TParticle*)fStack->Particle(i);
1379 if (!particle)
continue;
1380 if (!fStack->IsPhysicalPrimary(i))
continue;
1381 if ( particle->GetPDG()->Charge() == 0.)
continue;
1384 if ( particle->Pt()<0.2 || particle->Pt()>10. )
continue;
1385 if ( TMath::Abs(particle->Eta())>0.8 )
continue;
1403 for (
Int_t i=0 ; i<esd->GetNumberOfTracks() ; i++) {
1406 AliVTrack *vtrack =
static_cast<AliVTrack*
>(esd->GetTrack(i));
1407 AliESDtrack *track =
dynamic_cast<AliESDtrack*
>(vtrack);
1408 if (!track)
continue;
1411 Int_t lp = TMath::Abs(track->GetLabel());
1412 if (!fStack->IsPhysicalPrimary(lp))
continue;
1413 TParticle *particle = (TParticle*)fStack->Particle(lp);
1414 if (!particle)
continue;
1415 if (particle->GetPDG()->Charge() == 0.)
continue;
1423 UShort_t ntpccls = track->GetTPCNcls();
1424 Double_t tpcchi2 = track->GetTPCchi2();
1425 if (tpcchi2<0.2 || tpcchi2 >=4.) {
1437 track->GetImpactParameters(dcaxy,dcaz);
1438 if (dcaxy > 0.3 || dcaz > 0.3) {
1445 if ( track->Pt()<0.2 || track->Pt()>10. )
continue;
1446 if ( TMath::Abs(track->Eta())>0.8 )
continue;
1473 AliInputEventHandler* McHandler =
dynamic_cast<AliInputEventHandler*
> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1475 AliError(
"ERROR: Could not retrieve MCtruthEventHandler");
1478 McEvent = McHandler->MCEvent();
1480 AliError(
"ERROR: Could not retrieve MC event");
1484 Int_t nTracks = McEvent->GetNumberOfTracks();
1488 for (
Int_t itrkN=0; itrkN<nTracks; itrkN++) {
1490 AliMCParticle* pParticle =
dynamic_cast<AliMCParticle*
>(McEvent->GetTrack(itrkN));
1491 if (!pParticle)
continue;
1494 if (McEvent->IsPhysicalPrimary(itrkN) && pParticle->Charge()!=0) {
1519 if(ImpPar) CenPer = 0.3859796743103508*pow(ImpPar,2.);
1532 if (mult<fMinMult || mult>
fMaxMult) {
1533 AliWarning(
"FlowEvent cut on multiplicity");
return;
1573 AliInputEventHandler *hdr = (AliInputEventHandler*)am->GetInputEventHandler();
1575 if(hdr->IsEventSelected()==0 && !head->InheritsFrom(
"AliNanoAODStorage"))
return;
1582 if(!head->InheritsFrom(
"AliNanoAODStorage")){
1583 AliAODTracklets *trackl = aod->GetTracklets();
1584 nTracklets = trackl->GetNumberOfTracklets();
1586 AliNanoAODHeader *nanoAodHeader = (AliNanoAODHeader*) head;
1587 nTracklets = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstNTrackelets"));
1592 AliAODVZERO *vzeroAOD = aod->GetVZEROData();
1593 Double_t multV0A = vzeroAOD->GetMTotV0A();
1594 Double_t multV0C = vzeroAOD->GetMTotV0C();
1598 Int_t CachednRing = 1;
1604 for(
Int_t i=0; i<64; i++) {
1607 Double_t mult = vzeroAOD->GetMultiplicity(i);
1610 if(EqFactor>0.) mult *= EqFactor;
1616 Double_t ChPhi = TMath::PiOver4()*(0.5+i%8);
1620 QxTot[k] += mult*TMath::Cos((k+1.)*ChPhi);
1621 QyTot[k] += mult*TMath::Sin((k+1.)*ChPhi);
1627 if(nRing!=CachednRing) {
1641 V0TotQC[k][0] += QxRec*denom;
1642 V0TotQC[k][1] += QyRec*denom;
1646 V0TotQA[k][0] += QxRec*denom;
1647 V0TotQA[k][1] += QyRec*denom;
1654 CachednRing = nRing;
1657 QxTot[k] += mult*TMath::Cos((k+1.)*ChPhi);
1658 QyTot[k] += mult*TMath::Sin((k+1.)*ChPhi);
1664 if(MultC[k]>0. && MultA[k]>0.) {
1665 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];
1666 if(!std::isnan(QCx) && !std::isnan(QCy) && !std::isnan(QAx) && !std::isnan(QAy)) {
1701 AliAODZDC *aodZDC = aod->GetZDCData();
1703 const Double_t * towZNCraw = aodZDC->GetZNCTowerEnergy();
1704 const Double_t * towZNAraw = aodZDC->GetZNATowerEnergy();
1708 Double_t Enucl = (RunNum < 209122 ? 1380. : 2511.);
1709 Double_t xyZNC[2]={0.,0.}, xyZNA[2]={0.,0.};
1710 Double_t towZNC[5]={0.}, towZNA[5]={0.};
1715 for(
Int_t i=0; i<5; i++) {
1720 for(
Int_t i=0; i<5; i++) {
1724 if(towZNC[i]<0.) towZNC[i] = 0.;
1725 if(towZNA[i]<0.) towZNA[i] = 0.;
1729 for(
Int_t i=0; i<5; i++) {
1730 towZNC[i] = towZNCraw[i];
1731 towZNA[i] = towZNAraw[i];
1733 if(towZNC[i]<0.) towZNC[i] = 0.;
1734 if(towZNA[i]<0.) towZNA[i] = 0.;
1736 fZNCTower[RunBin][i]->Fill(centrperc,towZNC[i]);
1737 fZNATower[RunBin][i]->Fill(centrperc,towZNA[i]);
1741 if(RunNum>=245829) towZNA[2] = 0.;
1742 Double_t zncEnergy=0., znaEnergy=0.;
1743 for(
Int_t i=0; i<5; i++){
1744 zncEnergy += towZNC[i];
1745 znaEnergy += towZNA[i];
1747 if(RunNum>=245829) znaEnergy *= 8./7.;
1755 if(!head->InheritsFrom(
"AliNanoAODStorage")){
1756 energyZNC = ((AliVAODHeader*)aod->GetHeader())->GetZDCN1Energy();
1757 energyZNA = ((AliVAODHeader*)aod->GetHeader())->GetZDCN2Energy();
1758 energyZPC = ((AliVAODHeader*)aod->GetHeader())->GetZDCP1Energy();
1759 energyZPA = ((AliVAODHeader*)aod->GetHeader())->GetZDCP2Energy();
1761 AliNanoAODHeader *nanoAodHeader = (AliNanoAODHeader*) head;
1762 energyZNC = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstEnergyZNC"));
1763 energyZNA = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstEnergyZNA"));
1764 energyZPC = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstEnergyZPC"));
1765 energyZPA = nanoAodHeader->GetVar(nanoAodHeader->GetVarIndex(
"cstEnergyZPA"));
1774 const Double_t x[4] = {-1.75, 1.75, -1.75, 1.75};
1775 const Double_t y[4] = {-1.75, -1.75, 1.75, 1.75};
1776 Double_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC, EZNC, SumEZNC=0.;
1777 Double_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA, EZNA, SumEZNA=0., BadChOr;
1778 Bool_t fAllChONZNC=kTRUE, fAllChONZNA=kTRUE;
1781 for(
Int_t i=0; i<4; i++){
1792 EZNC = exp( (log(EZNC) - mu1 + mu2*cor1)/cor1 ) + av;
1801 numXZNC += x[i]*wZNC;
1802 numYZNC += y[i]*wZNC;
1809 EZNA = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
1826 EZNA = exp( (log(EZNA) - mu1 + mu2*cor1)/cor1 ) + av;
1834 numXZNA += x[i]*wZNA;
1835 numYZNA += y[i]*wZNA;
1841 Double_t recoE = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
1847 cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
1848 xyZNC[0] = cZNC*numXZNC/denZNC;
1849 xyZNC[1] = cZNC*numYZNC/denZNC;
1853 xyZNC[0] = xyZNC[1] = 0.;
1857 cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
1858 xyZNA[0] = cZNA*numXZNA/denZNA;
1859 xyZNA[1] = cZNA*numYZNA/denZNA;
1863 xyZNA[0] = xyZNA[1] = 0.;
1866 for(
Int_t i=0; i<4; i++) {
1867 if(towZNC[i+1]>0.) {
1869 numXZNC += x[i]*wZNC;
1870 numYZNC += y[i]*wZNC;
1873 if(towZNA[i+1]>0.) {
1875 numXZNA += x[i]*wZNA;
1876 numYZNA += y[i]*wZNA;
1881 xyZNC[0] = numXZNC/denZNC;
1882 xyZNC[1] = numYZNC/denZNC;
1885 xyZNC[0] = xyZNC[1] = 999.;
1889 xyZNA[0] = numXZNA/denZNA;
1890 xyZNA[1] = numYZNA/denZNA;
1893 xyZNA[0] = xyZNA[1] = 999.;
1898 if(!fAllChONZNC) denZNC=-1.;
1899 if(!fAllChONZNA) denZNA=-1.;
1901 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]);
1902 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]);
1908 for(
int i=0; i<5; i++){
1910 if((i<4) && (towZNC[0]>0.))
fhZNCPMQiPMC[i]->Fill(towZNC[i+1]/towZNC[0]);
1912 for(
int i=0; i<5; i++){
1914 if(((i<4) && towZNA[0]>0.))
fhZNAPMQiPMC[i]->Fill(towZNA[i+1]/towZNA[0]);
1918 fhZDCCvsZDCCA->Fill(energyZNA+energyZPA, energyZNC+energyZPC);
1921 fhZNvsZP->Fill(energyZPA+energyZPC, energyZNA+energyZNC);
1922 fhZNvsVZERO->Fill(multV0A+multV0C, energyZNC+energyZNA);
1923 fhZDCvsVZERO->Fill(multV0A+multV0C, energyZNA+energyZPA+energyZNC+energyZPC);
1926 if((energyZNC+energyZNA)>0.) asymmetry = (energyZNC-energyZNA)/(energyZNC+energyZNA);
1955 TObject *head =aod->GetHeader();
1956 if (head->InheritsFrom(
"AliNanoAODStorage")){
1958 AliNanoAODHeader * nanohead = (AliNanoAODHeader*)head;
1959 Int_t pileupIndex = nanohead->GetVarIndex(
"cstPileUp");
1960 if (nanohead->GetVar(pileupIndex)==0) BisPileup=kFALSE;
1961 if (nanohead->GetVar(pileupIndex)==1) BisPileup=kTRUE;
1965 Double_t centrV0M=300., centrCL1=300.;
1971 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
1972 centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL1");
1980 Short_t isPileup = aod->IsPileupFromSPD(3);
1981 if (isPileup != 0) {
1986 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
1991 if (aod->IsIncompleteDAQ()) {
1997 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
1998 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
2000 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
2005 double covTrc[6], covSPD[6];
2006 vtTrc->GetCovarianceMatrix(covTrc);
2007 vtSPD->GetCovarianceMatrix(covSPD);
2009 double dz = vtTrc->GetZ() - vtSPD->GetZ();
2011 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
2012 double errTrc = TMath::Sqrt(covTrc[5]);
2013 double nsigTot = dz/errTot;
2014 double nsigTrc = dz/errTrc;
2016 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
2054 Short_t isPileup = aod->IsPileupFromSPD(3);
2055 if (isPileup != 0) {
2060 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
2065 if (aod->IsIncompleteDAQ()) {
2070 if(fabs(centrV0M-centrCL1)>7.5) {
2076 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
2077 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
2079 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
2084 double covTrc[6], covSPD[6];
2085 vtTrc->GetCovarianceMatrix(covTrc);
2086 vtSPD->GetCovarianceMatrix(covSPD);
2088 double dz = vtTrc->GetZ() - vtSPD->GetZ();
2090 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
2091 double errTrc = TMath::Sqrt(covTrc[5]);
2092 double nsigTot = dz/errTot;
2093 double nsigTrc = dz/errTrc;
2095 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
2101 const Int_t nTracks = aod->GetNumberOfTracks();
2102 Int_t multEsd = ((AliAODHeader*)aod->GetHeader())->GetNumberOfESDTracks();
2105 Int_t multTrkBefC = 0;
2106 Int_t multTrkTOFBefC = 0;
2109 for (
Int_t it = 0; it < nTracks; it++) {
2111 AliAODTrack* aodTrk = (AliAODTrack*)aod->GetTrack(it);
2127 if (aodTrk->TestFilterBit(128))
2130 if (centrV0M<10. && aodTrk->TestFilterBit(768) && aodTrk->Pt()>0.2) {
2133 Int_t ntpccls = aodTrk->GetTPCNcls();
2137 Int_t nitscls = aodTrk->GetITSNcls();
2143 chi2tpc = aodTrk->Chi2perNDF();
2150 chi2its = aodTrk->GetITSchi2()/aodTrk->GetITSNcls();
2157 Int_t ntpcclsS = aodTrk->GetTPCnclsS();
2158 fshtpccls = 1.*ntpcclsS/ntpccls;
2166 for (
Int_t i=0; i<6; i++) {
2167 if(aodTrk->HasSharedPointOnITSLayer(i)) nshcl++;
2169 fshitscls = 1.*nshcl/nitscls;
2179 Double_t multESDTPCDif = multEsdn - multTPCn*3.38;
2187 if(BisPileup==kFALSE) {
2189 if(!
fMultSelection->GetThisEventIsNotPileupMV()) BisPileup=kTRUE;
2190 if(!
fMultSelection->GetThisEventIsNotPileupInMultBins()) BisPileup=kTRUE;
2191 if(!
fMultSelection->GetThisEventHasNoInconsistentVertices()) BisPileup=kTRUE;
2192 if(!
fMultSelection->GetThisEventPassesTrackletVsCluster()) BisPileup=kTRUE;
2193 if(!
fMultSelection->GetThisEventIsNotIncompleteDAQ()) BisPileup=kTRUE;
2194 if(!
fMultSelection->GetThisEventHasGoodVertex2016()) BisPileup=kTRUE;
2209 Double_t EtC = BadTowerCalibHist->ProjectionY(
"",BadTowerCalibHist->GetXaxis()->FindBin(Et),BadTowerCalibHist->GetXaxis()->FindBin(Et))->GetRandom();
2218 if (Centrality>0. && Centrality<5.) CenBin=0;
2219 if (Centrality>5. && Centrality<10.) CenBin=1;
2220 if (Centrality>10. && Centrality<20.) CenBin=2;
2221 if (Centrality>20. && Centrality<30.) CenBin=3;
2222 if (Centrality>30. && Centrality<40.) CenBin=4;
2223 if (Centrality>40. && Centrality<50.) CenBin=5;
2224 if (Centrality>50. && Centrality<60.) CenBin=6;
2225 if (Centrality>60. && Centrality<70.) CenBin=7;
2226 if (Centrality>70. && Centrality<80.) CenBin=8;
2227 if (Centrality>80. && Centrality<90.) CenBin=9;
2228 if (CenBin>=
fnCen) CenBin=-1;
2229 if (
fnCen==1) CenBin=0;
2238 printf(
"One of vertices is not valid\n");
2241 static TMatrixDSym vVb(3);
2243 double dx = v0->GetX()-v1->GetX();
2244 double dy = v0->GetY()-v1->GetY();
2245 double dz = v0->GetZ()-v1->GetZ();
2246 double cov0[6],cov1[6];
2247 v0->GetCovarianceMatrix(cov0);
2248 v1->GetCovarianceMatrix(cov1);
2249 vVb(0,0) = cov0[0]+cov1[0];
2250 vVb(1,1) = cov0[2]+cov1[2];
2251 vVb(2,2) = cov0[5]+cov1[5];
2252 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
2253 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
2255 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
2256 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
2257 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
2258 return dist>0 ? TMath::Sqrt(dist) : -1;
2266 const int kMinPlpContrib = 5;
2267 const double kMaxPlpChi2 = 5.0;
2268 const double kMinWDist = 15;
2270 const AliVVertex* vtPrm = 0;
2271 const AliVVertex* vtPlp = 0;
2274 if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) )
return kFALSE;
2275 vtPrm = aod->GetPrimaryVertex();
2276 if (vtPrm == aod->GetPrimaryVertexSPD())
return kTRUE;
2280 for (
int ipl=0;ipl<nPlp;ipl++) {
2281 vtPlp = (
const AliVVertex*)aod->GetPileupVertexTracks(ipl);
2283 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
2284 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
2288 double wDst =
GetWDist(vtPrm,vtPlp);
2289 if (wDst<kMinWDist)
continue;
void SetMassMin(Double_t i)
void SetCharge(Int_t charge)
TH2F * fhZDCCvsZDCCA
ZNC vs ZNA;.
static const Int_t fkVZEROnQAplots
TH2F * fhZNvsVZERO
ZNC+ZNA vs ZPC+ZPA;.
TH1F * fPtSpecFB128[2][10]
PtSpecRec FB96.
void SetPOItype(Int_t poiType, Bool_t b=kTRUE)
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]
static const Int_t fCRCnTow
TH1F * fhZNCPMQiPMC[4]
ZNA PM high res.
void SetZNCQ0(Double_t const en)
TH2F * fhZNCvsZPC
ZDCC vs ZDCCA.
AliFlowTrack * fFlowTrack
static const Int_t fkVZEROnHar
Int_t GetNumberOfRPs() const
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
void SetZPAEnergy(Double_t const en)
TH2F * fhZNCvsAsymm
ZNA vs asymmetry.
void SetMCReactionPlaneAngle(const AliMCEvent *mcEvent)
TH3D * fhZNCenDis[2]
ZDC vs VZERO;.
void SetCutsPOI(AliFlowTrackCuts *cutsPOI)
void SetZNAQ0(Double_t const en)
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)
static const Int_t fKNFBs
TH2F * fhZNCvscentrality
ZNC vs asymmetry.
Bool_t fUseZDCSpectraCorr
void SetZNAEnergy(Double_t const en)
Int_t fNonFlowNumberOfTrackClones
void AddTrack(AliFlowTrackSimple *track)
void SetEtaMax(Double_t i)
TH2D * fEbEQRe[fKNFBs][4]
void SetReferenceMultiplicity(Int_t m)
virtual Int_t GetCenBin(Double_t Centrality)
void SetCutsRP(AliFlowTrackCuts *cutsRP)
Bool_t fCorrectPhiTracklets
TH3D * fTrackQADCAxy[fKNFBs][4]
TH2F * fhZNCvsZNA
PMQi/PMC for ZNA.
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)
TH2D * fEbEQMu[fKNFBs][4]
static AliFlowCommonConstants * GetMaster()
TH3D * fhZNSpectra
ZNA vs. centrality.
void SetNbinsMass(Int_t i)
AliFlowEventCuts * fCutsEvent
void SetAbsOrbit(UInt_t const en)
TH1F * fPileUpMultSelCount
centrality distribution
Double_t GetCentrality() const
Bool_t fUseTowerEq
MultSelection (RUN2 centrality estimator)
TH2D * fBadTowerCalibHist[100]
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)
TH2D * fEbEQIm[fKNFBs][4]
TH2F * fhZPAvscentrality
ZNC vs. centrality.
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()
TProfile2D * fTrackQADphi[fKNFBs][4]
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)
TH2F * fhZPCvscentrality
ZNA vs. centrality.
Bool_t IsSetMCReactionPlaneAngle() const
TClonesArray * fStack
ZNA tower spectra.
void SetPhiMax(Double_t i)
Double_t fHistWeightvsPhiMax
TH2D * fTrackQApT[fKNFBs][4]
void SetEtaMin(Double_t i)
TProfile2D * fVZEROQVectorRecFinal[fkVZEROnHar][fkVZEROnQAplots]
static const Int_t fCRCMaxnRun
Double_t GetBadTowerResp(Double_t Et, TH2D *BadTowerCalibHist)
TH3D * fQATrackTPCNcls
ZNA vs. centrality.
void SetForPOISelection(Bool_t b=kTRUE)
void SetHistWeightvsPhiMin(Double_t d)
TH1F * fhZNAPMQiPMC[4]
PMQi/PMC for ZNC.
TH3D * fTrackQADCAz[fKNFBs][4]
TH2F * fhZDCvsVZERO
ZN vs VZERO;.
void TagSubeventsInEta(Double_t etaMinA, Double_t etaMaxA, Double_t etaMinB, Double_t etaMaxB)
void SetZPCEnergy(Double_t const en)
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 SelectPileup(AliAODEvent *aod)
Bool_t fCutTPC
PtSpecRec FB768.
void SetPtMin(Double_t i)
AliFlowTrackCuts * fCutsRP
void InsertTrack(AliFlowTrack *)
AnalysisType fAnalysisType
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