23 #include "Riostream.h"
28 #include "TTimeStamp.h"
29 #include "TStopwatch.h"
38 #include <TParticle.h>
39 #include "TProfile3D.h"
41 #include "AliAnalysisManager.h"
42 #include "AliInputEventHandler.h"
43 #include "AliVEvent.h"
45 #include "AliESDEvent.h"
46 #include "AliESDHeader.h"
47 #include "AliESDInputHandler.h"
48 #include "AliESDZDC.h"
49 #include "AliMultiplicity.h"
50 #include "AliAnalysisUtils.h"
51 #include "AliAODHandler.h"
52 #include "AliAODTrack.h"
53 #include "AliAODEvent.h"
54 #include "AliAODHeader.h"
55 #include "AliAODVertex.h"
56 #include "AliAODVZERO.h"
57 #include "AliAODZDC.h"
58 #include "AliAODMCHeader.h"
59 #include "AliMCEventHandler.h"
60 #include "AliMCEvent.h"
61 #include "AliHeader.h"
62 #include "AliVParticle.h"
64 #include "AliAODMCParticle.h"
65 #include "AliAnalysisTaskSE.h"
66 #include "AliGenEventHeader.h"
67 #include "AliPhysicsSelectionTask.h"
68 #include "AliPhysicsSelection.h"
69 #include "AliBackgroundSelection.h"
70 #include "AliTriggerAnalysis.h"
71 #include "AliCentrality.h"
73 #include "AliMultSelection.h"
74 #include "AliLumiTools.h"
77 #include "AliCFManager.h"
80 #include "AliGenCocktailEventHeader.h"
81 #include "AliGenPythiaEventHeader.h"
82 #include "AliGenHijingEventHeader.h"
83 #include "AliGenGeVSimEventHeader.h"
84 #include "AliGenEposEventHeader.h"
87 #include "TObjArray.h"
101 fAnalysisType("AUTOMATIC"),
108 fCutContainer(new
TList()),
117 fPythiaGenHeader(NULL),
118 fHijingGenHeader(NULL),
122 fLoadCandidates(kFALSE),
134 fPhiMax(TMath::TwoPi()),
141 fHistWeightvsPhiMin(0.),
142 fHistWeightvsPhiMax(3.),
147 fAfterburnerOn(kFALSE),
148 fNonFlowNumberOfTrackClones(0),
156 fShuffleTracks(kFALSE),
158 fAnalysisInput(kAOD),
161 fRejectPileUp(kTRUE),
164 fCentrEstimator("V0M"),
173 fhZDCvsTracklets(0x0),
181 fhZNCvscentrality(0x0),
182 fhZNAvscentrality(0x0),
184 fZDCGainAlpha(0.395),
192 fSpectraMCList(NULL),
195 for(
int i=0; i<5; i++){
199 for(
int i=0; i<4; i++){
200 fhZNCPMQiPMC[i] = 0x0;
201 fhZNAPMQiPMC[i] = 0x0;
203 for(
Int_t r=0; r<fCRCMaxnRun; r++) {
207 for(
Int_t i=0; i<5; i++) {
208 fTowerGainEq[
c][i] = NULL;
211 this->InitializeRunArrays();
212 fMyTRandom3 =
new TRandom3(1);
213 gRandom->SetSeed(fMyTRandom3->Integer(65539));
215 fPtSpecGen[
c] = NULL;
216 fPtSpecFB32[
c] = NULL;
217 fPtSpecFB96[
c] = NULL;
218 fPtSpecFB128[
c] = NULL;
219 fPtSpecFB768[
c] = NULL;
226 fAnalysisType(
"AUTOMATIC"),
233 fCutContainer(new
TList()),
242 fLoadCandidates(bCandidates),
254 fPhiMax(TMath::TwoPi()),
261 fHistWeightvsPhiMin(0.),
262 fHistWeightvsPhiMax(3.),
267 fAfterburnerOn(kFALSE),
268 fNonFlowNumberOfTrackClones(0),
276 fShuffleTracks(kFALSE),
278 fAnalysisInput(kAOD),
281 fRejectPileUp(kTRUE),
284 fCentrEstimator(
"V0M"),
293 fhZDCvsTracklets(0x0),
301 fhZNCvscentrality(0x0),
302 fhZNAvscentrality(0x0),
305 fZDCGainAlpha(0.395),
307 fPythiaGenHeader(NULL),
308 fHijingGenHeader(NULL),
320 for(
int i=0; i<5; i++){
324 for(
int i=0; i<4; i++){
332 for(
Int_t i=0; i<5; i++) {
340 DefineInput(0, TChain::Class());
343 DefineOutput(1, AliFlowEventSimple::Class());
344 DefineOutput(2, TList::Class());
360 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
401 AliError(
"WRONG ANALYSIS TYPE! only MCESD, MCkine, MCAOD, AOD and AUTOMATIC are allowed.");
439 fQAList->SetName(
"AliFlowEventCuts QA");
446 fCenDis =
new TH1F(
"fCenDis",
"fCenDis", 100, 0., 100.);
449 for(
Int_t i=0; i<5; i++) {
460 Float_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.,4.5,5.,6.,7.,8.};
462 fPtSpecGen[
c] =
new TH1F(Form(
"fPtSpecGen[%d]",
c), Form(
"fPtSpecGen[%d]",
c), 24, xmin);
464 fPtSpecFB32[
c] =
new TH1F(Form(
"fPtSpecFB32[%d]",c), Form(
"fPtSpecFB32[%d]",c), 24, xmin);
466 fPtSpecFB96[
c] =
new TH1F(Form(
"fPtSpecFB96[%d]",c), Form(
"fPtSpecFB96[%d]",c), 24, xmin);
468 fPtSpecFB128[
c] =
new TH1F(Form(
"fPtSpecFB128[%d]",c), Form(
"fPtSpecFB128[%d]",c), 24, xmin);
470 fPtSpecFB768[
c] =
new TH1F(Form(
"fPtSpecFB768[%d]",c), Form(
"fPtSpecFB768[%d]",c), 24, xmin);
476 for(
int i=0; i<5; i++){
478 sprintf(hname,
"hZNCPM%d",i);
479 fhZNCPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
482 sprintf(hname,
"hZNAPM%d",i);
483 fhZNAPM[i] =
new TH1F(hname, hname, 200, -50., 140000);
489 sprintf(hnamenc,
"hZNCPMQ%dPMC",i+1);
490 fhZNCPMQiPMC[i] =
new TH1F(hnamenc, hnamenc, 100, 0., 1.);
494 sprintf(hnamena,
"hZNAPMQ%dPMC",i+1);
495 fhZNAPMQiPMC[i] =
new TH1F(hnamena, hnamena, 100, 0., 1.);
500 fhZNCvsZNA =
new TH2F(
"hZNCvsZNA",
"hZNCvsZNA",200,-50.,140000,200,-50.,140000);
502 fhZDCCvsZDCCA =
new TH2F(
"hZDCCvsZDCCA",
"hZDCCvsZDCCA",200,0.,180000.,200,0.,200000.);
504 fhZNCvsZPC =
new TH2F(
"hZNCvsZPC",
"hZNCvsZPC",200,-50.,50000,200,-50.,140000);
506 fhZNAvsZPA =
new TH2F(
"hZNAvsZPA",
"hZNAvsZPA",200,-50.,50000,200,-50.,140000);
508 fhZNvsZP =
new TH2F(
"hZNvsZP",
"hZNvsZP",200,-50.,80000,200,-50.,200000);
510 fhZNvsVZERO =
new TH2F(
"hZNvsVZERO",
"hZNvsVZERO",250,0.,25000.,200,0.,200000.);
512 fhZDCvsVZERO =
new TH2F(
"hZDCvsVZERO",
"hZDCvsVZERO",250,0.,25000.,250,0.,250000.);
516 fhZDCvsNclu1 =
new TH2F(
"hZDCvsNclu1",
"hZDCvsNclu1", 200, 0.,8000.,200,0.,250000.);
518 fhDebunch =
new TH2F(
"hDebunch",
"hDebunch",240,-100.,-40.,240,-30.,30.);
520 fhZNCcentroid =
new TH2F(
"hZNCcentroid",
"hZNCcentroid",100,-3.5,3.5,100,-3.5,3.5);
522 fhZNAcentroid =
new TH2F(
"hZNAcentroid",
"hZNAcentroid",100,-3.5,3.5,100,-3.5,3.5);
525 fhAsymm =
new TH1F(
"hAsymm" ,
"Asimmetry ",200,-1.,1.);
527 fhZNAvsAsymm =
new TH2F(
"hZNAvsAsymm",
"ZNA vs. asymm.",200,-1.,1.,200,0.,80.);
529 fhZNCvsAsymm =
new TH2F(
"hZNCvsAsymm",
"ZNC vs. asymm.",200,-1.,1.,200,0.,80.);
539 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};
541 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};
546 Int_t dRun15h[] = {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};
577 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.};
578 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.};
579 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};
608 AliMCEvent* McEvent = MCEvent();
616 AliError(
"cuts not set");
620 Int_t RunBin=-1, bin=0;
621 Int_t RunNum = aod->GetRunNumber();
626 if(RunBin==-1)
return;
633 Float_t centr=300, centrCL1=300;
637 fMultSelection = (AliMultSelection*) InputEvent()->FindListObject(
"MultSelection");
640 AliWarning(
"AliMultSelection object not found!");
655 if (
plpMV(aod))
return;
657 Short_t isPileup = aod->IsPileupFromSPD(3);
658 if (isPileup != 0)
return;
660 if (((AliAODHeader*)aod->GetHeader())->GetRefMultiplicityComb08() < 0)
return;
662 if (aod->IsIncompleteDAQ())
return;
664 if(fabs(centr-centrCL1)>7.5)
return;
683 vtxpos[0] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetX();
684 vtxpos[1] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetY();
685 vtxpos[2] = ((AliAODVertex*)aod->GetPrimaryVertex())->GetZ();
713 AliError(
"ERROR: Could not retrieve MCEvent");
716 fStack = (TClonesArray*)aod->FindListObject(AliAODMCParticle::StdBranchName());
718 AliError(
"ERROR: Could not retrieve MCStack");
725 fMultSelection = (AliMultSelection*)aod->FindListObject(
"MultSelection");
728 AliWarning(
"AliMultSelection object not found!");
733 centr = (((AliVAODHeader*)aod->GetHeader())->GetCentralityP())->GetCentralityPercentile(
"V0M");
736 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
739 if(CenBin==-1)
return;
742 for(
Int_t jTracks = 0; jTracks<aod->GetNumberOfTracks(); jTracks++){
744 AliAODTrack* track = (AliAODTrack*)aod->GetTrack(jTracks);
748 Int_t lp = TMath::Abs(track->GetLabel());
749 if (!((AliAODMCParticle*)
fStack->At(lp))->IsPhysicalPrimary())
continue;
752 if (track->Pt() < .2 || track->Pt() > 8. || TMath::Abs(track->Eta()) > .8 || track->GetTPCNcls() < 70)
continue;
755 if (track->TestFilterBit(32))
fPtSpecFB32[CenBin]->Fill(track->Pt());
756 if (track->TestFilterBit(96))
fPtSpecFB96[CenBin]->Fill(track->Pt());
757 if (track->TestFilterBit(128))
fPtSpecFB128[CenBin]->Fill(track->Pt());
758 if (track->TestFilterBit(768))
fPtSpecFB768[CenBin]->Fill(track->Pt());
763 for(
Int_t jTracks = 0; jTracks<
fStack->GetEntriesFast(); jTracks++) {
764 AliAODMCParticle *MCpart = (AliAODMCParticle*)
fStack->At(jTracks);
766 printf(
"ERROR: Could not receive MC track %d\n", jTracks);
770 if ( MCpart->Pt() < 0.2 || MCpart->Pt() > 8. || TMath::Abs(MCpart->Eta()) > .8 )
continue;
772 if ( MCpart->Charge() == 0. || !MCpart->IsPhysicalPrimary())
continue;
792 AliError(
"ERROR: Could not retrieve ESDEvent");
796 AliError(
"ERROR: Could not retrieve MCEvent");
799 AliStack*
fStack = fMCEvent->Stack();
801 AliError(
"ERROR: Could not retrieve MCStack");
805 AliESDVertex *vertex = (AliESDVertex*) esd->GetPrimaryVertex();
807 if (TMath::Abs(vertex->GetZ()) > 10. )
return;
808 if (vertex->GetNContributors() < 1 )
return;
809 AliCentrality *
centrality = esd->GetCentrality();
810 if (!centrality)
return;
811 Double_t centr = centrality->GetCentralityPercentile(
"V0M");
812 if (centr<fCentrLowLim || centr>=
fCentrUpLim )
return;
814 if (centr>0. && centr<5.) CenBin=0;
815 if (centr>5. && centr<10.) CenBin=1;
816 if (centr>10. && centr<20.) CenBin=2;
817 if (centr>20. && centr<30.) CenBin=3;
818 if (centr>30. && centr<40.) CenBin=4;
819 if (centr>40. && centr<50.) CenBin=5;
820 if (centr>50. && centr<60.) CenBin=6;
821 if (centr>60. && centr<70.) CenBin=7;
822 if (centr>70. && centr<80.) CenBin=8;
823 if (centr>80. && centr<90.) CenBin=9;
824 if(CenBin==-1)
return;
828 for (
Int_t i=0 ; i<fStack->GetNtrack() ; i++ ) {
831 TParticle *particle = (TParticle*)fStack->Particle(i);
832 if (!particle)
continue;
833 if (!fStack->IsPhysicalPrimary(i))
continue;
834 if ( particle->GetPDG()->Charge() == 0.)
continue;
837 if ( particle->Pt()<0.2 || particle->Pt()>10. )
continue;
838 if ( TMath::Abs(particle->Eta())>0.8 )
continue;
856 for (
Int_t i=0 ; i<esd->GetNumberOfTracks() ; i++) {
859 AliVTrack *vtrack =
static_cast<AliVTrack*
>(esd->GetTrack(i));
860 AliESDtrack *track =
dynamic_cast<AliESDtrack*
>(vtrack);
861 if (!track)
continue;
864 Int_t lp = TMath::Abs(track->GetLabel());
865 if (!fStack->IsPhysicalPrimary(lp))
continue;
866 TParticle *particle = (TParticle*)fStack->Particle(lp);
867 if (!particle)
continue;
868 if (particle->GetPDG()->Charge() == 0.)
continue;
876 UShort_t ntpccls = track->GetTPCNcls();
877 Double_t tpcchi2 = track->GetTPCchi2();
878 if (tpcchi2<0.2 || tpcchi2 >=4.) {
890 track->GetImpactParameters(dcaxy,dcaz);
891 if (dcaxy > 0.3 || dcaz > 0.3) {
898 if ( track->Pt()<0.2 || track->Pt()>10. )
continue;
899 if ( TMath::Abs(track->Eta())>0.8 )
continue;
926 AliInputEventHandler* McHandler =
dynamic_cast<AliInputEventHandler*
> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
928 AliError(
"ERROR: Could not retrieve MCtruthEventHandler");
931 McEvent = McHandler->MCEvent();
933 AliError(
"ERROR: Could not retrieve MC event");
937 Int_t nTracks = McEvent->GetNumberOfTracks();
941 for (
Int_t itrkN=0; itrkN<nTracks; itrkN++) {
943 AliMCParticle* pParticle =
dynamic_cast<AliMCParticle*
>(McEvent->GetTrack(itrkN));
944 if (!pParticle)
continue;
947 if (McEvent->IsPhysicalPrimary(itrkN) && pParticle->Charge()!=0) {
972 if(ImpPar) CenPer = 0.3859796743103508*pow(ImpPar,2.);
985 if (mult<fMinMult || mult>
fMaxMult) {
986 AliWarning(
"FlowEvent cut on multiplicity");
return;
1026 AliInputEventHandler *hdr = (AliInputEventHandler*)am->GetInputEventHandler();
1028 if(hdr->IsEventSelected() && AliVEvent::kAny) {
1032 AliAODTracklets *trackl = aod->GetTracklets();
1033 Int_t nTracklets = trackl->GetNumberOfTracklets();
1035 AliAODVZERO *vzeroAOD = aod->GetVZEROData();
1036 Float_t multV0A = vzeroAOD->GetMTotV0A();
1037 Float_t multV0C = vzeroAOD->GetMTotV0C();
1039 AliAODZDC *aodZDC = aod->GetZDCData();
1048 const Double_t * towZNCraw = aodZDC->GetZNCTowerEnergy();
1049 const Double_t * towZNAraw = aodZDC->GetZNATowerEnergy();
1053 Double_t Enucl = (RunNum < 209122 ? 1380. : 2511.);
1054 Double_t xyZNC[2]={999.,999.}, xyZNA[2]={999.,999.};
1055 Double_t towZNC[5]={0.}, towZNA[5]={0.};
1060 for(
Int_t i=0; i<5; i++) {
1065 for(
Int_t i=0; i<5; i++) {
1070 for(
Int_t i=0; i<5; i++) {
1071 towZNC[i] = towZNCraw[i];
1072 towZNA[i] = towZNAraw[i];
1076 if(RunNum>=245829) towZNA[2] = 0.;
1077 Float_t zncEnergy=0., znaEnergy=0.;
1078 for(
Int_t i=0; i<5; i++){
1079 zncEnergy += towZNC[i];
1080 znaEnergy += towZNA[i];
1082 if(RunNum>=245829) znaEnergy *= 8./7.;
1089 const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
1090 const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
1092 Float_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC;
1093 Float_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA;
1094 for(
Int_t i=0; i<4; i++){
1096 numXZNC += x[i]*wZNC;
1097 numYZNC += y[i]*wZNC;
1100 if(i==1) wZNA = TMath::Power(towZNA[0]-towZNA[1]-towZNA[3]-towZNA[4],
fZDCGainAlpha);
1102 numXZNA += x[i]*wZNA;
1103 numYZNA += y[i]*wZNA;
1107 Float_t nSpecnC = zncEnergy/Enucl;
1108 cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
1109 xyZNC[0] = cZNC*numXZNC/denZNC;
1110 xyZNC[1] = cZNC*numYZNC/denZNC;
1113 xyZNC[0] = xyZNC[1] = 999.;
1116 Float_t nSpecnA = znaEnergy/Enucl;
1117 cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
1118 xyZNA[0] = cZNA*numXZNA/denZNA;
1119 xyZNA[1] = cZNA*numYZNA/denZNA;
1122 xyZNA[0] = xyZNA[1] = 999.;
1125 const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
1126 const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
1127 Float_t numXZNC=0., numYZNC=0., denZNC=0., wZNC;
1128 Float_t numXZNA=0., numYZNA=0., denZNA=0., wZNA;
1129 for(
Int_t i=0; i<4; i++) {
1130 if(towZNC[i+1]>0.) {
1132 numXZNC += x[i]*wZNC;
1133 numYZNC += y[i]*wZNC;
1136 if(towZNA[i+1]>0.) {
1138 numXZNA += x[i]*wZNA;
1139 numYZNA += y[i]*wZNA;
1144 xyZNC[0] = numXZNC/denZNC;
1145 xyZNC[1] = numYZNC/denZNC;
1148 xyZNC[0] = xyZNC[1] = 999.;
1152 xyZNA[0] = numXZNA/denZNA;
1153 xyZNA[1] = numYZNA/denZNA;
1156 xyZNA[0] = xyZNA[1] = 999.;
1162 for(
Int_t i=0; i<4; i++) {
1163 if(towZNC[i+1]>0.) {
1166 if(towZNA[i+1]>0.) {
1177 Float_t tdcSum = aodZDC->GetZDCTimeSum();
1178 Float_t tdcDiff = aodZDC->GetZDCTimeDiff();
1181 for(
int i=0; i<5; i++){
1183 if((i<4) && (towZNC[0]>0.))
fhZNCPMQiPMC[i]->Fill(towZNC[i+1]/towZNC[0]);
1185 for(
int i=0; i<5; i++){
1187 if(((i<4) && towZNA[0]>0.))
fhZNAPMQiPMC[i]->Fill(towZNA[i+1]/towZNA[0]);
1191 fhZDCCvsZDCCA->Fill(energyZNA+energyZPA, energyZNC+energyZPC);
1194 fhZNvsZP->Fill(energyZPA+energyZPC, energyZNA+energyZNC);
1195 fhZNvsVZERO->Fill(multV0A+multV0C, energyZNC+energyZNA);
1196 fhZDCvsVZERO->Fill(multV0A+multV0C, energyZNA+energyZPA+energyZNC+energyZPC);
1200 if((energyZNC+energyZNA)>0.) asymmetry = (energyZNC-energyZNA)/(energyZNC+energyZNA);
1226 if (Centrality>0. && Centrality<5.) CenBin=0;
1227 if (Centrality>5. && Centrality<10.) CenBin=1;
1228 if (Centrality>10. && Centrality<20.) CenBin=2;
1229 if (Centrality>20. && Centrality<30.) CenBin=3;
1230 if (Centrality>30. && Centrality<40.) CenBin=4;
1231 if (Centrality>40. && Centrality<50.) CenBin=5;
1232 if (Centrality>50. && Centrality<60.) CenBin=6;
1233 if (Centrality>60. && Centrality<70.) CenBin=7;
1234 if (Centrality>70. && Centrality<80.) CenBin=8;
1235 if (Centrality>80. && Centrality<90.) CenBin=9;
1236 if (CenBin>=
fnCen) CenBin=-1;
1237 if (
fnCen==1) CenBin=0;
1246 printf(
"One of vertices is not valid\n");
1249 static TMatrixDSym vVb(3);
1251 double dx = v0->GetX()-v1->GetX();
1252 double dy = v0->GetY()-v1->GetY();
1253 double dz = v0->GetZ()-v1->GetZ();
1254 double cov0[6],cov1[6];
1255 v0->GetCovarianceMatrix(cov0);
1256 v1->GetCovarianceMatrix(cov1);
1258 vVb(1,1) = cov0[2]+cov1[2];
1259 vVb(2,2) = cov0[5]+cov1[5];
1260 vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
1261 vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
1263 if (!vVb.IsValid()) {printf(
"Singular Matrix\n");
return dist;}
1264 dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
1265 + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
1266 return dist>0 ? TMath::Sqrt(dist) : -1;
1275 const int kMinPlpContrib = 5;
1276 const double kMaxPlpChi2 = 5.0;
1277 const double kMinWDist = 15;
1279 const AliVVertex* vtPrm = 0;
1280 const AliVVertex* vtPlp = 0;
1283 if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) )
return kFALSE;
1284 vtPrm = aod->GetPrimaryVertex();
1285 if (vtPrm == aod->GetPrimaryVertexSPD())
return kTRUE;
1289 for (
int ipl=0;ipl<nPlp;ipl++) {
1290 vtPlp = (
const AliVVertex*)aod->GetPileupVertexTracks(ipl);
1292 if (vtPlp->GetNContributors() < kMinPlpContrib)
continue;
1293 if (vtPlp->GetChi2perNDF() > kMaxPlpChi2)
continue;
1297 double wDst =
GetWDist(vtPrm,vtPlp);
1298 if (wDst<kMinWDist)
continue;
void SetMassMin(Double_t i)
TH2F * fhZDCCvsZDCCA
ZNC vs ZNA;.
TH2F * fhZNvsVZERO
ZNC+ZNA vs ZPC+ZPA;.
void FindDaughters(Bool_t keepDaughtersInRPselection=kFALSE)
Float_t GetCentrality(AliVEvent *event, AliMCEvent *mcEvent)
void SetEta(Double_t eta)
Int_t fRunList[fCRCMaxnRun]
TH2F * fhZDCvsTracklets
ZDC vs VZERO;.
TH1F * fhZNCPMQiPMC[4]
ZNA PM high res.
TH1F * fPtSpecGen[10]
list with pt spectra
TH2F * fhZNCvsZPC
ZDCC vs ZDCCA.
AliFlowTrack * fFlowTrack
virtual void SetZDC2Qsub(Double_t *QVC, Double_t MC, Double_t *QVA, Double_t MA)
TH1F * fPtSpecFB32[10]
PtSpecGen.
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)
TH2F * fhZNCvsAsymm
ZNA vs asymmetry.
void SetMCReactionPlaneAngle(const AliMCEvent *mcEvent)
void SetCutsPOI(AliFlowTrackCuts *cutsPOI)
TH1D * fTowerGainEq[2][5]
virtual void UserExec(Option_t *option)
void SetHistWeightvsPhiMax(Double_t d)
TH2F * fhZNCvscentrality
ZNC vs asymmetry.
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;.
TH1F * fhAsymm
ZNA centroid.
void SetCentralityCL1(Double_t c)
virtual void SetVertexPosition(Double_t *pos)
void IncrementNumberOfPOIs(Int_t poiType=1)
void SetForRPSelection(Bool_t b=kTRUE)
void Fill(AliFlowTrackCuts *rpCuts, AliFlowTrackCuts *poiCuts)
TH2F * fhZNAvsZPA
ZNC vs ZPC;.
TH1F * fhZNAPM[5]
ZNC PM high res.
void SetShuffleTracks(Bool_t b)
void CloneTracks(Int_t n)
void SetNbinsEta(Int_t i)
AliMultSelection * fMultSelection
centrality distribution
AliFlowEvent * fFlowEvent
void SetNITSCL1(Double_t c)
virtual void UserCreateOutputObjects()
void SetNbinsMult(Int_t i)
void SetMassMax(Double_t i)
static AliFlowCommonConstants * GetMaster()
TH2F * fhZDCvsNclu1
ZDC vs N_tracklets;.
void SetNbinsMass(Int_t i)
AliFlowEventCuts * fCutsEvent
Double_t GetCentrality() const
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)
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)
TList * fCRCQVecListRun[fCRCMaxnRun]
Run list.
void SetZNCEnergy(Double_t const en)
TH1F * fPtSpecFB128[10]
PtSpecRec FB96.
virtual ~AliAnalysisTaskCRCZDC()
virtual void Terminate(Option_t *option)
void SetEvent(AliVEvent *event, AliMCEvent *mcEvent=NULL)
TH2F * fhZNAcentroid
ZNC centroid.
Bool_t IsSetMCReactionPlaneAngle() const
TClonesArray * fStack
Q Vectors list per run.
void SetPhiMax(Double_t i)
Double_t fHistWeightvsPhiMax
void SetEtaMin(Double_t i)
static const Int_t fCRCMaxnRun
ZNA vs. centrality.
void SetForPOISelection(Bool_t b=kTRUE)
TH1F * fPtSpecFB96[10]
PtSpecRec FB32.
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)
void SetMultMin(Double_t i)
TH2F * fhZNAvsAsymm
ZN asymmetry.
TH2F * fhZNAvscentrality
ZNC vs. centrality.
virtual Bool_t IsSelected(TObject *obj, TObject *objmc)
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)
TH1F * fPtSpecFB768[10]
PtSpecRec FB128.
AliFlowTrackCuts * fCutsRP
void InsertTrack(AliFlowTrack *)
AliAnalysisUtils * fAnalysisUtil
Event selection.
TH2F * fhZNCcentroid
Debunch;.
TH2F * fhZNvsZP
ZNA vs ZPA;.
AliGenHijingEventHeader * fHijingGenHeader
AliGenPythiaEventHeader * fPythiaGenHeader
Int_t NumberOfTracks() const