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(kAUTOMATIC),
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 fCorrectPhiTracklets(kFALSE),
204 fZDCSpectraCorrList(NULL),
205 fSpectraMCList(NULL),
207 fBadTowerStuffList(NULL),
208 fVZEROStuffList(NULL),
215 for(
int i=0; i<5; i++){
219 for(
int i=0; i<4; i++){
220 fhZNCPMQiPMC[i] = 0x0;
221 fhZNAPMQiPMC[i] = 0x0;
223 for(
Int_t r=0; r<fCRCMaxnRun; r++) {
227 for(
Int_t i=0; i<5; i++) {
228 fTowerGainEq[
c][i] = NULL;
232 fBadTowerCalibHist[
c] = NULL;
234 fVZEROGainEqHist = NULL;
235 for (
Int_t k=0; k<fkVZEROnHar; k++) {
238 fVZEROQVectorRecQxStored[k] = NULL;
239 fVZEROQVectorRecQyStored[k] = NULL;
240 for (
Int_t t=0; t<fkVZEROnQAplots; t++) {
241 fVZEROQVectorRecFinal[k][t] = NULL;
244 for(
Int_t i=0; i<8; i++) {
245 SpecCorMu1[i] = NULL;
246 SpecCorMu2[i] = NULL;
250 this->InitializeRunArrays();
251 fMyTRandom3 =
new TRandom3(1);
252 gRandom->SetSeed(fMyTRandom3->Integer(65539));
253 for(
Int_t j=0; j<2; j++) {
255 fPtSpecGen[j][
c] = NULL;
256 fPtSpecFB32[j][
c] = NULL;
257 fPtSpecFB96[j][
c] = NULL;
258 fPtSpecFB128[j][
c] = NULL;
259 fPtSpecFB768[j][
c] = NULL;
263 fhZNCenDis[
c] = NULL;
269 for(
Int_t fb=0; fb<fKNFBs; fb++){
270 for (
Int_t i=0; i<4; i++) {
271 fTrackQADCAxy[fb][i] = NULL;
272 fTrackQADCAz[fb][i] = NULL;
273 fTrackQApT[fb][i] = NULL;
274 fTrackQADphi[fb][i] = NULL;
275 fEbEQRe[fb][i] = NULL;
276 fEbEQIm[fb][i] = NULL;
277 fEbEQMu[fb][i] = NULL;
285 fAnalysisType(kAUTOMATIC),
292 fCutContainer(new
TList()),
301 fLoadCandidates(bCandidates),
313 fPhiMax(TMath::TwoPi()),
320 fHistWeightvsPhiMin(0.),
321 fHistWeightvsPhiMax(3.),
326 fAfterburnerOn(kFALSE),
327 fNonFlowNumberOfTrackClones(0),
335 fShuffleTracks(kFALSE),
337 fAnalysisInput(kAOD),
340 fRejectPileUp(kTRUE),
341 fRejectPileUpTight(kFALSE),
342 fResetNegativeZDC(kFALSE),
345 fCentrEstimator(
kV0M),
354 fhZDCvsTracklets(0x0),
360 fhZNCvscentrality(0x0),
361 fhZNAvscentrality(0x0),
364 fZDCGainAlpha(0.395),
366 fPythiaGenHeader(NULL),
367 fHijingGenHeader(NULL),
376 fPileUpMultSelCount(0x0),
378 fMultTOFHighCut(0x0),
381 fUseBadTowerCalib(kFALSE),
382 fBadTowerCalibList(NULL),
383 fVZEROGainEqList(NULL),
384 fVZEROQVecRecList(NULL),
385 fUseZDCSpectraCorr(kFALSE),
386 fCorrectPhiTracklets(kFALSE),
387 fZDCSpectraCorrList(NULL),
388 fSpectraMCList(NULL),
390 fBadTowerStuffList(NULL),
391 fVZEROStuffList(NULL),
399 for(
int i=0; i<5; i++){
403 for(
int i=0; i<4; i++){
411 for(
Int_t i=0; i<5; i++) {
428 for(
Int_t i=0; i<8; i++) {
438 DefineInput(0, TChain::Class());
441 DefineOutput(1, AliFlowEventSimple::Class());
442 DefineOutput(2, TList::Class());
444 for(
Int_t j=0; j<2; j++) {
461 for (
Int_t i=0; i<4; i++) {
477 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
551 fQAList->SetName(
"AliFlowEventCuts QA");
568 fCenDis =
new TH1F(
"fCenDis",
"fCenDis", 100, 0., 100.);
570 fPileUpCount =
new TH1F(
"fPileUpCount",
"fPileUpCount", 9, 0., 9.);
573 fPileUpCount->GetXaxis()->SetBinLabel(3,
"RefMultiplicityComb08");
574 fPileUpCount->GetXaxis()->SetBinLabel(4,
"IncompleteDAQ");
575 fPileUpCount->GetXaxis()->SetBinLabel(5,
"abs(V0M-CL1)>7.5");
577 fPileUpCount->GetXaxis()->SetBinLabel(7,
"inconsistentVtx");
578 fPileUpCount->GetXaxis()->SetBinLabel(8,
"multESDTPCDif");
579 fPileUpCount->GetXaxis()->SetBinLabel(9,
"extraPileUpMultSel");
592 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);
593 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);
595 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);
596 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);
600 for(
Int_t i=0; i<5; i++) {
607 fhZNCenDis[
c] =
new TH3D(Form(
"fhZNCenDis[%d]",
c), Form(
"fhZNCenDis[%d]",
c), 100, 0., 100., 100, -2., 2. , 100., -2., 2.);
618 for(
Int_t i=0; i<8; i++) {
630 fhZNSpectra =
new TH3D(
"fhZNSpectra",
"fhZNSpectra",100,0.,100.,8,0.,8.,1000,0.,1.E5);
632 fhZNSpectraCor =
new TH3D(
"fhZNSpectraCor",
"fhZNSpectraCor",100,0.,100.,8,0.,8.,1000,0.,1.E5);
634 fhZNSpectraPow =
new TH3D(
"fhZNSpectraPow",
"fhZNSpectraPow",100,0.,100.,8,0.,8.,1000,0.,TMath::Power(1.E5,
fZDCGainAlpha));
636 fhZNBCCorr =
new TH3D(
"fhZNBCCorr",
"fhZNBCCorr",100,0.,100.,500,0.,1.E5,500,0.,1.E5);
646 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.};
647 for(
Int_t j=0; j<2; j++) {
649 fPtSpecGen[j][
c] =
new TH1F(Form(
"fPtSpecGen[%d][%d]",j,
c), Form(
"fPtSpecGen[%d][%d]",j,
c), 23, xmin);
651 fPtSpecFB32[j][
c] =
new TH1F(Form(
"fPtSpecFB32[%d][%d]",j,c), Form(
"fPtSpecFB32[%d][%d]",j,c), 23, xmin);
653 fPtSpecFB96[j][
c] =
new TH1F(Form(
"fPtSpecFB96[%d][%d]",j,c), Form(
"fPtSpecFB96[%d][%d]",j,c), 23, xmin);
655 fPtSpecFB128[j][
c] =
new TH1F(Form(
"fPtSpecFB128[%d][%d]",j,c), Form(
"fPtSpecFB128[%d][%d]",j,c), 23, xmin);
657 fPtSpecFB768[j][
c] =
new TH1F(Form(
"fPtSpecFB768[%d][%d]",j,c), Form(
"fPtSpecFB768[%d][%d]",j,c), 23, xmin);
667 for(
int i=0; i<5; i++){
669 sprintf(hname,
"hZNCPM%d",i);
670 fhZNCPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
673 sprintf(hname,
"hZNAPM%d",i);
674 fhZNAPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
680 sprintf(hnamenc,
"hZNCPMQ%dPMC",i+1);
681 fhZNCPMQiPMC[i] =
new TH1F(hnamenc, hnamenc, 100, 0., 1.);
685 sprintf(hnamena,
"hZNAPMQ%dPMC",i+1);
686 fhZNAPMQiPMC[i] =
new TH1F(hnamena, hnamena, 100, 0., 1.);
691 fhZNCvsZNA =
new TH2F(
"hZNCvsZNA",
"hZNCvsZNA",200,-50.,140000,200,-50.,140000);
693 fhZDCCvsZDCCA =
new TH2F(
"hZDCCvsZDCCA",
"hZDCCvsZDCCA",200,0.,180000.,200,0.,200000.);
695 fhZNCvsZPC =
new TH2F(
"hZNCvsZPC",
"hZNCvsZPC",200,-50.,50000,200,-50.,140000);
697 fhZNAvsZPA =
new TH2F(
"hZNAvsZPA",
"hZNAvsZPA",200,-50.,50000,200,-50.,140000);
699 fhZNvsZP =
new TH2F(
"hZNvsZP",
"hZNvsZP",200,-50.,80000,200,-50.,200000);
701 fhZNvsVZERO =
new TH2F(
"hZNvsVZERO",
"hZNvsVZERO",250,0.,25000.,200,0.,200000.);
703 fhZDCvsVZERO =
new TH2F(
"hZDCvsVZERO",
"hZDCvsVZERO",250,0.,25000.,250,0.,250000.);
707 fhZDCvsNclu1 =
new TH2F(
"hZDCvsNclu1",
"hZDCvsNclu1", 200, 0.,8000.,200,0.,250000.);
709 fhDebunch =
new TH2F(
"hDebunch",
"hDebunch",240,-100.,-40.,240,-30.,30.);
712 fhAsymm =
new TH1F(
"hAsymm" ,
"Asimmetry ",200,-1.,1.);
714 fhZNAvsAsymm =
new TH2F(
"hZNAvsAsymm",
"ZNA vs. asymm.",200,-1.,1.,200,0.,80.);
716 fhZNCvsAsymm =
new TH2F(
"hZNCvsAsymm",
"ZNC vs. asymm.",200,-1.,1.,200,0.,80.);
726 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};
728 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};
730 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};
732 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};
734 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};
754 fVZEROMult =
new TProfile2D(
"fVZEROMult",
"fVZEROMult",fCRCnRun,0.,1.*fCRCnRun,64,0.,64.);
775 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");
801 Double_t dBinsEta[]={-0.8,-0.64,-0.48,-0.32,-0.16,0.,0.16,0.32,0.48,0.64,0.8};
803 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.};
806 for (
Int_t i=0; i<4; i++) {
808 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);
810 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);
813 fTrackQApT[fb][i] =
new TH2D(Form(
"fTrackQApT[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c]",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
816 fTrackQADphi[fb][i] =
new TProfile2D(Form(
"fTrackQADphi[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];cos(#Delta#phi)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
819 fEbEQRe[fb][i] =
new TH2D(Form(
"fEbEQRe[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];QRe(EbE)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
821 fEbEQIm[fb][i] =
new TH2D(Form(
"fEbEQIm[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];QRe(EbE)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
823 fEbEQMu[fb][i] =
new TH2D(Form(
"fEbEQMu[%d][%d]",fb,i),
";#eta;p_{T} [GeV/c];QRe(EbE)",nBinsEta,dBinsEta,nBinsPt,dBinsPt);
833 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.};
834 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.};
835 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};
844 fZNCTower[r][k] =
new TProfile(Form(
"fZNCTower[%d][%d]",
fRunList[r],k),Form(
"fZNCTower[%d][%d]",
fRunList[r],k),100,0.,100.,
"s");
847 fZNATower[r][k] =
new TProfile(Form(
"fZNATower[%d][%d]",
fRunList[r],k),Form(
"fZNATower[%d][%d]",
fRunList[r],k),100,0.,100.,
"s");
871 AliMCEvent* McEvent = MCEvent();
879 AliError(
"cuts not set");
883 Int_t RunBin=-1, bin=0;
884 Int_t RunNum = aod->GetRunNumber();
889 if(RunBin==-1)
return;
896 Double_t centrV0M=300, centrCL1=300, centrCL0=300, centrTRK=300;
898 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
899 centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL1");
900 centrCL0 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL0");
901 centrTRK = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"TRK");
903 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
906 AliWarning(
"AliMultSelection object not found!");
933 AliAODTracklets* anInputTracklets = (AliAODTracklets*)aod->GetTracklets();
934 Int_t multSPD = anInputTracklets->GetNumberOfTracklets();
935 Double_t BField = aod->GetMagneticField();
937 for (
Int_t itracklet=0; itracklet<multSPD; ++itracklet) {
938 Float_t thetaTr= anInputTracklets->GetTheta(itracklet);
939 Float_t phiTr= anInputTracklets->GetPhi(itracklet);
941 Float_t etaTr = -TMath::Log(TMath::Tan(thetaTr/2.));
947 Double_t DeltaPhi = anInputTracklets->GetDeltaPhi(itracklet);
948 if(BField>0. && DeltaPhi>0.) pTrack->
SetCharge(1);
949 if(BField>0. && DeltaPhi<0.) pTrack->
SetCharge(-1);
950 if(BField<0. && DeltaPhi>0.) pTrack->
SetCharge(-1);
951 if(BField<0. && DeltaPhi<0.) pTrack->
SetCharge(1);
954 phiTr += 39./34.*DeltaPhi;
955 if (phiTr < 0.) phiTr += 2.*TMath::Pi();
956 if (phiTr > 2.*TMath::Pi()) phiTr -= 2.*TMath::Pi();
978 for(
Int_t i=0; i<64; i++) {
979 if(std::isfinite(aod->GetVZEROEqMultiplicity(i))) SumV0 += aod->GetVZEROEqMultiplicity(i);
984 UInt_t period = aod->GetPeriodNumber();
985 UInt_t orbit24 = aod->GetOrbitNumber();
988 orbit24 = (1<<24) - 1;
990 if (orbit24 >= (1<<24)) {
992 orbit24 = (1<<24) - 1;
994 UInt_t orbit = period * (1<<24) + orbit24;
998 vtxpos[0] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetX();
999 vtxpos[1] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetY();
1000 vtxpos[2] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetZ();
1026 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
1028 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
1031 AliWarning(
"AliMultSelection object not found!");
1036 if(centrV0M<10. || centrV0M>40.)
return;
1043 if(IsPileUp)
return;
1047 Double_t BField = aod->GetMagneticField();
1049 for(
Int_t jTracks = 0; jTracks<aod->GetNumberOfTracks(); jTracks++){
1051 AliAODTrack* track = (AliAODTrack*)aod->GetTrack(jTracks);
1052 if(!track)
continue;
1057 Double_t dCharge = track->Charge();
1059 if(BField>0. && dCharge>0.) cw=0;
1060 if(BField>0. && dCharge<0.) cw=1;
1061 if(BField<0. && dCharge>0.) cw=2;
1062 if(BField<0. && dCharge<0.) cw=3;
1065 if (dPt < .2 || dPt > 50. || TMath::Abs(dEta) > 0.8)
continue;
1070 if (std::abs((
Int_t)DCAxy)==999 || std::abs((
Int_t)DCAz)==999) {
1073 Double_t pos[3] = {-99., -99., -99.};
1074 track->GetPosition(pos);
1075 if(pos[0]*pos[0]+pos[1]*pos[1] <= 3.*3.) {
1076 AliAODTrack copy(*track);
1078 Double_t bCov[3] = {-99., -99., -99.};
1079 if(copy.PropagateToDCA(aod->GetPrimaryVertex(), aod->GetMagneticField(), 100., b, bCov)) {
1085 if(fabs(DCAxy)>2.4 || fabs(DCAz)>3.2)
continue;
1088 if (track->GetTPCNcls() < 70)
continue;
1089 Double_t chi2_per_tpc = track->Chi2perNDF();
1090 if (chi2_per_tpc < 0.1 || chi2_per_tpc > 4.)
continue;
1091 Double_t fraction_shared_tpccls = 1.*track->GetTPCnclsS()/track->GetTPCncls();
1092 if (fraction_shared_tpccls > 0.4)
continue;
1094 Int_t FBarray[4] = {32,96,128,768};
1098 if (track->TestFilterBit(FBarray[fb])) {
1102 fEbEQRe[fb][cw]->Fill(dEta,dPt,TMath::Cos(dPhi));
1103 fEbEQIm[fb][cw]->Fill(dEta,dPt,TMath::Sin(dPhi));
1104 fEbEQMu[fb][cw]->Fill(dEta,dPt);
1110 for(
Int_t bx=1; bx<=
fEbEQRe[0][0]->GetXaxis()->GetNbins(); bx++) {
1111 for(
Int_t by=1; by<=
fEbEQRe[0][0]->GetYaxis()->GetNbins(); by++) {
1124 Double_t c1 = (QRe*QRe+QIm*QIm-M)/(M*(M-1.));
1155 AliError(
"ERROR: Could not retrieve MCEvent");
1158 fStack = (TClonesArray*)aod->FindListObject(AliAODMCParticle::StdBranchName());
1160 AliError(
"ERROR: Could not retrieve MCStack");
1167 fMultSelection = (AliMultSelection*)aod->FindListObject(
"MultSelection");
1170 AliWarning(
"AliMultSelection object not found!");
1175 centr = (((AliVAODHeader*)aod->GetHeader())->GetCentralityP())->GetCentralityPercentile(
"V0M");
1178 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
1181 if(CenBin==-1)
return;
1185 for(
Int_t jTracks = 0; jTracks<aod->GetNumberOfTracks(); jTracks++){
1187 AliAODTrack* track = (AliAODTrack*)aod->GetTrack(jTracks);
1188 if(!track)
continue;
1191 Int_t lp = TMath::Abs(track->GetLabel());
1194 if (track->Pt() < .2 || track->Pt() > 20. || TMath::Abs(track->Eta()) > 0.8)
continue;
1199 if(fabs(DCAxy)>2.4 || fabs(DCAz)>3.2)
continue;
1202 if (track->GetTPCNcls() < 70)
continue;
1203 Double_t chi2_per_tpc = track->Chi2perNDF();
1204 if (chi2_per_tpc < 0.1 || chi2_per_tpc > 4.)
continue;
1205 Double_t fraction_shared_tpccls = 1.*track->GetTPCnclsS()/track->GetTPCncls();
1206 if (fraction_shared_tpccls > 0.4)
continue;
1209 if (((AliAODMCParticle*)
fStack->At(lp))->IsPhysicalPrimary()) {
1210 if (track->TestFilterBit(32))
fPtSpecFB32[0][CenBin]->Fill(track->Pt());
1211 if (track->TestFilterBit(96))
fPtSpecFB96[0][CenBin]->Fill(track->Pt());
1212 if (track->TestFilterBit(128))
fPtSpecFB128[0][CenBin]->Fill(track->Pt());
1213 if (track->TestFilterBit(768))
fPtSpecFB768[0][CenBin]->Fill(track->Pt());
1215 if (track->TestFilterBit(32))
fPtSpecFB32[1][CenBin]->Fill(track->Pt());
1216 if (track->TestFilterBit(96))
fPtSpecFB96[1][CenBin]->Fill(track->Pt());
1217 if (track->TestFilterBit(128))
fPtSpecFB128[1][CenBin]->Fill(track->Pt());
1218 if (track->TestFilterBit(768))
fPtSpecFB768[1][CenBin]->Fill(track->Pt());
1225 for(
Int_t jTracks = 0; jTracks<
fStack->GetEntriesFast(); jTracks++) {
1226 AliAODMCParticle *MCpart = (AliAODMCParticle*)
fStack->At(jTracks);
1228 printf(
"ERROR: Could not receive MC track %d\n", jTracks);
1232 if ( MCpart->Pt() < .2 || MCpart->Pt() > 20. || TMath::Abs(MCpart->Eta()) > .8 )
continue;
1234 if ( MCpart->Charge() == 0. || !MCpart->IsPhysicalPrimary())
continue;
1254 AliError(
"ERROR: Could not retrieve ESDEvent");
1258 AliError(
"ERROR: Could not retrieve MCEvent");
1261 AliStack*
fStack = fMCEvent->Stack();
1263 AliError(
"ERROR: Could not retrieve MCStack");
1267 AliESDVertex *vertex = (AliESDVertex*) esd->GetPrimaryVertex();
1268 if (!vertex)
return;
1269 if (TMath::Abs(vertex->GetZ()) > 10. )
return;
1270 if (vertex->GetNContributors() < 1 )
return;
1271 AliCentrality *
centrality = esd->GetCentrality();
1272 if (!centrality)
return;
1273 Double_t centr = centrality->GetCentralityPercentile(
"V0M");
1274 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
1276 if (centr>0. && centr<5.) CenBin=0;
1277 if (centr>5. && centr<10.) CenBin=1;
1278 if (centr>10. && centr<20.) CenBin=2;
1279 if (centr>20. && centr<30.) CenBin=3;
1280 if (centr>30. && centr<40.) CenBin=4;
1281 if (centr>40. && centr<50.) CenBin=5;
1282 if (centr>50. && centr<60.) CenBin=6;
1283 if (centr>60. && centr<70.) CenBin=7;
1284 if (centr>70. && centr<80.) CenBin=8;
1285 if (centr>80. && centr<90.) CenBin=9;
1286 if(CenBin==-1)
return;
1290 for (
Int_t i=0 ; i<fStack->GetNtrack() ; i++ ) {
1293 TParticle *particle = (TParticle*)fStack->Particle(i);
1294 if (!particle)
continue;
1295 if (!fStack->IsPhysicalPrimary(i))
continue;
1296 if ( particle->GetPDG()->Charge() == 0.)
continue;
1299 if ( particle->Pt()<0.2 || particle->Pt()>10. )
continue;
1300 if ( TMath::Abs(particle->Eta())>0.8 )
continue;
1318 for (
Int_t i=0 ; i<esd->GetNumberOfTracks() ; i++) {
1321 AliVTrack *vtrack =
static_cast<AliVTrack*
>(esd->GetTrack(i));
1322 AliESDtrack *track =
dynamic_cast<AliESDtrack*
>(vtrack);
1323 if (!track)
continue;
1326 Int_t lp = TMath::Abs(track->GetLabel());
1327 if (!fStack->IsPhysicalPrimary(lp))
continue;
1328 TParticle *particle = (TParticle*)fStack->Particle(lp);
1329 if (!particle)
continue;
1330 if (particle->GetPDG()->Charge() == 0.)
continue;
1338 UShort_t ntpccls = track->GetTPCNcls();
1339 Double_t tpcchi2 = track->GetTPCchi2();
1340 if (tpcchi2<0.2 || tpcchi2 >=4.) {
1352 track->GetImpactParameters(dcaxy,dcaz);
1353 if (dcaxy > 0.3 || dcaz > 0.3) {
1360 if ( track->Pt()<0.2 || track->Pt()>10. )
continue;
1361 if ( TMath::Abs(track->Eta())>0.8 )
continue;
1388 AliInputEventHandler* McHandler =
dynamic_cast<AliInputEventHandler*
> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1390 AliError(
"ERROR: Could not retrieve MCtruthEventHandler");
1393 McEvent = McHandler->MCEvent();
1395 AliError(
"ERROR: Could not retrieve MC event");
1399 Int_t nTracks = McEvent->GetNumberOfTracks();
1403 for (
Int_t itrkN=0; itrkN<nTracks; itrkN++) {
1405 AliMCParticle* pParticle =
dynamic_cast<AliMCParticle*
>(McEvent->GetTrack(itrkN));
1406 if (!pParticle)
continue;
1409 if (McEvent->IsPhysicalPrimary(itrkN) && pParticle->Charge()!=0) {
1434 if(ImpPar) CenPer = 0.3859796743103508*pow(ImpPar,2.);
1447 if (mult<fMinMult || mult>
fMaxMult) {
1448 AliWarning(
"FlowEvent cut on multiplicity");
return;
1488 AliInputEventHandler *hdr = (AliInputEventHandler*)am->GetInputEventHandler();
1490 if(hdr->IsEventSelected() && AliVEvent::kAny) {
1495 AliAODTracklets *trackl = aod->GetTracklets();
1496 Int_t nTracklets = trackl->GetNumberOfTracklets();
1499 AliAODVZERO *vzeroAOD = aod->GetVZEROData();
1500 Double_t multV0A = vzeroAOD->GetMTotV0A();
1501 Double_t multV0C = vzeroAOD->GetMTotV0C();
1505 Int_t CachednRing = 1;
1511 for(
Int_t i=0; i<64; i++) {
1514 Double_t mult = vzeroAOD->GetMultiplicity(i);
1517 if(EqFactor>0.) mult *= EqFactor;
1523 Double_t ChPhi = TMath::PiOver4()*(0.5+i%8);
1527 QxTot[k] += mult*TMath::Cos((k+1.)*ChPhi);
1528 QyTot[k] += mult*TMath::Sin((k+1.)*ChPhi);
1534 if(nRing!=CachednRing) {
1548 V0TotQC[k][0] += QxRec*denom;
1549 V0TotQC[k][1] += QyRec*denom;
1553 V0TotQA[k][0] += QxRec*denom;
1554 V0TotQA[k][1] += QyRec*denom;
1561 CachednRing = nRing;
1564 QxTot[k] += mult*TMath::Cos((k+1.)*ChPhi);
1565 QyTot[k] += mult*TMath::Sin((k+1.)*ChPhi);
1571 if(MultC[k]>0. && MultA[k]>0.) {
1572 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];
1573 if(!std::isnan(QCx) && !std::isnan(QCy) && !std::isnan(QAx) && !std::isnan(QAy)) {
1608 AliAODZDC *aodZDC = aod->GetZDCData();
1617 const Double_t * towZNCraw = aodZDC->GetZNCTowerEnergy();
1618 const Double_t * towZNAraw = aodZDC->GetZNATowerEnergy();
1622 Double_t Enucl = (RunNum < 209122 ? 1380. : 2511.);
1623 Double_t xyZNC[2]={0.,0.}, xyZNA[2]={0.,0.};
1624 Double_t towZNC[5]={0.}, towZNA[5]={0.};
1629 for(
Int_t i=0; i<5; i++) {
1634 for(
Int_t i=0; i<5; i++) {
1638 if(towZNC[i]<0.) towZNC[i] = 0.;
1639 if(towZNA[i]<0.) towZNA[i] = 0.;
1643 for(
Int_t i=0; i<5; i++) {
1644 towZNC[i] = towZNCraw[i];
1645 towZNA[i] = towZNAraw[i];
1647 if(towZNC[i]<0.) towZNC[i] = 0.;
1648 if(towZNA[i]<0.) towZNA[i] = 0.;
1650 fZNCTower[RunBin][i]->Fill(centrperc,towZNC[i]);
1651 fZNATower[RunBin][i]->Fill(centrperc,towZNA[i]);
1655 if(RunNum>=245829) towZNA[2] = 0.;
1656 Double_t zncEnergy=0., znaEnergy=0.;
1657 for(
Int_t i=0; i<5; i++){
1658 zncEnergy += towZNC[i];
1659 znaEnergy += towZNA[i];
1661 if(RunNum>=245829) znaEnergy *= 8./7.;
1665 const Double_t x[4] = {-1.75, 1.75, -1.75, 1.75};
1666 const Double_t y[4] = {-1.75, -1.75, 1.75, 1.75};
1667 Double_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC, EZNC, SumEZNC=0.;
1668 Double_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA, EZNA, SumEZNA=0., BadChOr;
1669 Bool_t fAllChONZNC=kTRUE, fAllChONZNA=kTRUE;
1672 for(
Int_t i=0; i<4; i++){
1683 EZNC = exp( (log(EZNC) - mu1 + mu2*cor1)/cor1 ) + av;
1692 numXZNC += x[i]*wZNC;
1693 numYZNC += y[i]*wZNC;
1700 EZNA = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
1717 EZNA = exp( (log(EZNA) - mu1 + mu2*cor1)/cor1 ) + av;
1725 numXZNA += x[i]*wZNA;
1726 numYZNA += y[i]*wZNA;
1732 Double_t recoE = towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4];
1738 cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
1739 xyZNC[0] = cZNC*numXZNC/denZNC;
1740 xyZNC[1] = cZNC*numYZNC/denZNC;
1744 xyZNC[0] = xyZNC[1] = 0.;
1748 cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
1749 xyZNA[0] = cZNA*numXZNA/denZNA;
1750 xyZNA[1] = cZNA*numYZNA/denZNA;
1754 xyZNA[0] = xyZNA[1] = 0.;
1757 for(
Int_t i=0; i<4; i++) {
1758 if(towZNC[i+1]>0.) {
1760 numXZNC += x[i]*wZNC;
1761 numYZNC += y[i]*wZNC;
1764 if(towZNA[i+1]>0.) {
1766 numXZNA += x[i]*wZNA;
1767 numYZNA += y[i]*wZNA;
1772 xyZNC[0] = numXZNC/denZNC;
1773 xyZNC[1] = numYZNC/denZNC;
1776 xyZNC[0] = xyZNC[1] = 999.;
1780 xyZNA[0] = numXZNA/denZNA;
1781 xyZNA[1] = numYZNA/denZNA;
1784 xyZNA[0] = xyZNA[1] = 999.;
1789 if(!fAllChONZNC) denZNC=-1.;
1790 if(!fAllChONZNA) denZNA=-1.;
1792 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]);
1793 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]);
1799 Double_t tdcSum = aodZDC->GetZDCTimeSum();
1800 Double_t tdcDiff = aodZDC->GetZDCTimeDiff();
1803 for(
int i=0; i<5; i++){
1805 if((i<4) && (towZNC[0]>0.))
fhZNCPMQiPMC[i]->Fill(towZNC[i+1]/towZNC[0]);
1807 for(
int i=0; i<5; i++){
1809 if(((i<4) && towZNA[0]>0.))
fhZNAPMQiPMC[i]->Fill(towZNA[i+1]/towZNA[0]);
1813 fhZDCCvsZDCCA->Fill(energyZNA+energyZPA, energyZNC+energyZPC);
1816 fhZNvsZP->Fill(energyZPA+energyZPC, energyZNA+energyZNC);
1817 fhZNvsVZERO->Fill(multV0A+multV0C, energyZNC+energyZNA);
1818 fhZDCvsVZERO->Fill(multV0A+multV0C, energyZNA+energyZPA+energyZNC+energyZPC);
1822 if((energyZNC+energyZNA)>0.) asymmetry = (energyZNC-energyZNA)/(energyZNC+energyZNA);
1848 Double_t centrV0M=300., centrCL1=300.;
1854 centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"V0M");
1855 centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile(
"CL1");
1863 Short_t isPileup = aod->IsPileupFromSPD(3);
1864 if (isPileup != 0) {
1869 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
1874 if (aod->IsIncompleteDAQ()) {
1880 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
1881 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
1883 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
1888 double covTrc[6], covSPD[6];
1889 vtTrc->GetCovarianceMatrix(covTrc);
1890 vtSPD->GetCovarianceMatrix(covSPD);
1892 double dz = vtTrc->GetZ() - vtSPD->GetZ();
1894 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
1895 double errTrc = TMath::Sqrt(covTrc[5]);
1896 double nsigTot = dz/errTot;
1897 double nsigTrc = dz/errTrc;
1899 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
1937 Short_t isPileup = aod->IsPileupFromSPD(3);
1938 if (isPileup != 0) {
1943 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0) {
1948 if (aod->IsIncompleteDAQ()) {
1953 if(fabs(centrV0M-centrCL1)>7.5) {
1959 const AliAODVertex* vtTrc = aod->GetPrimaryVertex();
1960 const AliAODVertex* vtSPD = aod->GetPrimaryVertexSPD();
1962 if (vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
1967 double covTrc[6], covSPD[6];
1968 vtTrc->GetCovarianceMatrix(covTrc);
1969 vtSPD->GetCovarianceMatrix(covSPD);
1971 double dz = vtTrc->GetZ() - vtSPD->GetZ();
1973 double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
1974 double errTrc = TMath::Sqrt(covTrc[5]);
1975 double nsigTot = dz/errTot;
1976 double nsigTrc = dz/errTrc;
1978 if (TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
1984 const Int_t nTracks = aod->GetNumberOfTracks();
1985 Int_t multEsd = ((AliAODHeader*)aod->GetHeader())->GetNumberOfESDTracks();
1988 Int_t multTrkBefC = 0;
1989 Int_t multTrkTOFBefC = 0;
1992 for (
Int_t it = 0; it < nTracks; it++) {
1994 AliAODTrack* aodTrk = (AliAODTrack*)aod->GetTrack(it);
2010 if (aodTrk->TestFilterBit(128))
2017 Double_t multESDTPCDif = multEsdn - multTPCn*3.38;
2025 if(BisPileup==kFALSE) {
2027 if(!
fMultSelection->GetThisEventIsNotPileupMV()) BisPileup=kTRUE;
2028 if(!
fMultSelection->GetThisEventIsNotPileupInMultBins()) BisPileup=kTRUE;
2029 if(!
fMultSelection->GetThisEventHasNoInconsistentVertices()) BisPileup=kTRUE;
2030 if(!
fMultSelection->GetThisEventPassesTrackletVsCluster()) BisPileup=kTRUE;
2031 if(!
fMultSelection->GetThisEventIsNotIncompleteDAQ()) BisPileup=kTRUE;
2032 if(!
fMultSelection->GetThisEventHasGoodVertex2016()) BisPileup=kTRUE;
2045 Double_t EtC = BadTowerCalibHist->ProjectionY(
"",BadTowerCalibHist->GetXaxis()->FindBin(Et),BadTowerCalibHist->GetXaxis()->FindBin(Et))->GetRandom();
2054 if (Centrality>0. && Centrality<5.) CenBin=0;
2055 if (Centrality>5. && Centrality<10.) CenBin=1;
2056 if (Centrality>10. && Centrality<20.) CenBin=2;
2057 if (Centrality>20. && Centrality<30.) CenBin=3;
2058 if (Centrality>30. && Centrality<40.) CenBin=4;
2059 if (Centrality>40. && Centrality<50.) CenBin=5;
2060 if (Centrality>50. && Centrality<60.) CenBin=6;
2061 if (Centrality>60. && Centrality<70.) CenBin=7;
2062 if (Centrality>70. && Centrality<80.) CenBin=8;
2063 if (Centrality>80. && Centrality<90.) CenBin=9;
2064 if (CenBin>=
fnCen) CenBin=-1;
2065 if (
fnCen==1) CenBin=0;
2074 printf(
"One of vertices is not valid\n");
2077 static TMatrixDSym vVb(3);
2079 double dx = v0->GetX()-v1->GetX();
2080 double dy = v0->GetY()-v1->GetY();
2081 double dz = v0->GetZ()-v1->GetZ();
2082 double cov0[6],cov1[6];
2083 v0->GetCovarianceMatrix(cov0);
2084 v1->GetCovarianceMatrix(cov1);
2085 vVb(0,0) = cov0[0]+cov1[0];
2086 vVb(1,1) = cov0[2]+cov1[2];
2087 vVb(2,2) = cov0[5]+cov1[5];
2088 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
2089 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
2091 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
2092 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
2093 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
2094 return dist>0 ? TMath::Sqrt(dist) : -1;
2102 const int kMinPlpContrib = 5;
2103 const double kMaxPlpChi2 = 5.0;
2104 const double kMinWDist = 15;
2106 const AliVVertex* vtPrm = 0;
2107 const AliVVertex* vtPlp = 0;
2110 if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) )
return kFALSE;
2111 vtPrm = aod->GetPrimaryVertex();
2112 if (vtPrm == aod->GetPrimaryVertexSPD())
return kTRUE;
2116 for (
int ipl=0;ipl<nPlp;ipl++) {
2117 vtPlp = (
const AliVVertex*)aod->GetPileupVertexTracks(ipl);
2119 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
2120 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
2124 double wDst =
GetWDist(vtPrm,vtPlp);
2125 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]
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)
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.
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)
TH2D * fEbEQMu[fKNFBs][4]
static AliFlowCommonConstants * GetMaster()
TH3D * fhZNSpectra
ZNA vs. centrality.
TH2F * fhZDCvsNclu1
ZDC vs N_tracklets;.
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]
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)
TH2D * fEbEQIm[fKNFBs][4]
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)
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
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.
TH3D * fTrackQADCAz[fKNFBs][4]
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 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