24 #include <TClonesArray.h>
28 #include <TDatabasePDG.h>
32 #include <THnSparse.h>
34 #include "AliAnalysisManager.h"
39 #include "AliAODHandler.h"
40 #include "AliAODEvent.h"
41 #include "AliAODVertex.h"
42 #include "AliAODTrack.h"
46 #include "AliAnalysisTaskSE.h"
50 #include "AliAODVZERO.h"
51 #include "AliESDUtils.h"
62 fHistNtrEta16vsNtrEta1EvSel(0),
63 fHistNtrEta05vsNtrEta1EvSel(0),
64 fHistNtrEta03vsNtrEta1EvSel(0),
65 fHistNtrEtaV0AvsNtrEta1EvSel(0),
66 fHistNtrEtaV0MvsNtrEta1EvSel(0),
67 fHistNtrEtaV0AvsV0AEqEvSel(0),
68 fHistNtrEtaV0MvsV0MEqEvSel(0),
69 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
70 fHistMultCorrvsMultRawEvSel(0),
71 fHistNtrEta16vsNtrEta1EvWithCand(0),
72 fHistNtrEta05vsNtrEta1EvWithCand(0),
73 fHistNtrEta03vsNtrEta1EvWithCand(0),
74 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
75 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
76 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
77 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
78 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
79 fHistMultCorrvsMultRawEvWithCand(0),
80 fHistNtrEta16vsNtrEta1EvWithD(0),
81 fHistNtrEta05vsNtrEta1EvWithD(0),
82 fHistNtrEta03vsNtrEta1EvWithD(0),
83 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
84 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
85 fHistNtrEtaV0AvsV0AEqEvWithD(0),
86 fHistNtrEtaV0MvsV0MEqEvWithD(0),
87 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
88 fHistMultCorrvsMultRawEvWithD(0),
90 fHistNtrCorrVsZvtx(0),
94 fHistNtrCorrVsNchMC(0),
95 fHistNtrVsNchMCPrimary(0),
96 fHistNtrCorrVsNchMCPrimary(0),
97 fHistNtrVsNchMCPhysicalPrimary(0),
98 fHistNtrCorrVsNchMCPhysicalPrimary(0),
99 fHistGenPrimaryParticlesInelGt0(0),
100 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
101 fHistNtrUnCorrPSSel(0),
102 fHistNtrUnCorrPSTrigSel(0),
103 fHistNtrUnCorrPSTrigPileUpSel(0),
104 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
105 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
106 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
107 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
108 fHistNtrUnCorrEvSel(0),
109 fHistNtrUnCorrEvWithCand(0),
110 fHistNtrUnCorrEvWithD(0),
111 fHistNtrCorrPSSel(0),
112 fHistNtrCorrEvSel(0),
113 fHistNtrCorrEvWithCand(0),
114 fHistNtrCorrEvWithD(0),
115 fSparseSpherocity(0),
116 fSparseSpherocitywithNoPid(0),
117 fPtVsMassVsMultMC(0),
119 fLowmasslimit(1.765),
124 fCounterCandidates(0),
127 fLowerImpPar(-2000.),
128 fHigherImpPar(2000.),
133 fSubtractTrackletsFromDau(kFALSE),
134 fKeepCorrPlots(kFALSE),
140 fMultiplicityEstimator(kNtrk10),
141 fMCPrimariesEstimator(kEta10),
142 fFillSoSparseChecks(0),
150 fphiStepSizeDeg(0.1),
151 fCalculateSphericity(kFALSE),
152 fDoVZER0ParamVertexCorr(1)
155 for(Int_t i=0; i<5; i++) fHistMassPtImpPar[i]=0;
156 for(Int_t i=0; i<4; i++) fMultEstimatorAvg[i]=0;
161 AliAnalysisTaskSE(name),
167 fHistNtrEta16vsNtrEta1EvSel(0),
168 fHistNtrEta05vsNtrEta1EvSel(0),
169 fHistNtrEta03vsNtrEta1EvSel(0),
170 fHistNtrEtaV0AvsNtrEta1EvSel(0),
171 fHistNtrEtaV0MvsNtrEta1EvSel(0),
172 fHistNtrEtaV0AvsV0AEqEvSel(0),
173 fHistNtrEtaV0MvsV0MEqEvSel(0),
174 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
175 fHistMultCorrvsMultRawEvSel(0),
176 fHistNtrEta16vsNtrEta1EvWithCand(0),
177 fHistNtrEta05vsNtrEta1EvWithCand(0),
178 fHistNtrEta03vsNtrEta1EvWithCand(0),
179 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
180 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
181 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
182 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
183 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
184 fHistMultCorrvsMultRawEvWithCand(0),
185 fHistNtrEta16vsNtrEta1EvWithD(0),
186 fHistNtrEta05vsNtrEta1EvWithD(0),
187 fHistNtrEta03vsNtrEta1EvWithD(0),
188 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
189 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
190 fHistNtrEtaV0AvsV0AEqEvWithD(0),
191 fHistNtrEtaV0MvsV0MEqEvWithD(0),
192 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
193 fHistMultCorrvsMultRawEvWithD(0),
195 fHistNtrCorrVsZvtx(0),
199 fHistNtrCorrVsNchMC(0),
200 fHistNtrVsNchMCPrimary(0),
201 fHistNtrCorrVsNchMCPrimary(0),
202 fHistNtrVsNchMCPhysicalPrimary(0),
203 fHistNtrCorrVsNchMCPhysicalPrimary(0),
204 fHistGenPrimaryParticlesInelGt0(0),
205 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
206 fHistNtrUnCorrPSSel(0),
207 fHistNtrUnCorrPSTrigSel(0),
208 fHistNtrUnCorrPSTrigPileUpSel(0),
209 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
210 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
211 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
212 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
213 fHistNtrUnCorrEvSel(0),
214 fHistNtrUnCorrEvWithCand(0),
215 fHistNtrUnCorrEvWithD(0),
216 fHistNtrCorrPSSel(0),
217 fHistNtrCorrEvSel(0),
218 fHistNtrCorrEvWithCand(0),
219 fHistNtrCorrEvWithD(0),
220 fSparseSpherocity(0),
221 fSparseSpherocitywithNoPid(0),
222 fPtVsMassVsMultMC(0),
224 fLowmasslimit(1.765),
226 fRDCutsAnalysis(cuts),
229 fCounterCandidates(0),
232 fLowerImpPar(-2000.),
233 fHigherImpPar(2000.),
236 fisPPbData(switchPPb),
238 fSubtractTrackletsFromDau(kFALSE),
239 fKeepCorrPlots(kFALSE),
245 fMultiplicityEstimator(kNtrk10),
246 fMCPrimariesEstimator(kEta10),
247 fFillSoSparseChecks(0),
255 fphiStepSizeDeg(0.1),
256 fCalculateSphericity(kFALSE),
257 fDoVZER0ParamVertexCorr(1)
274 DefineOutput(1,TList::Class());
276 DefineOutput(2,TList::Class());
278 DefineOutput(3,TList::Class());
280 DefineOutput(4,TList::Class());
297 for(Int_t i=0; i<4; i++) {
301 for(Int_t i=0; i<5; i++){
311 if(uplimit>lowlimit){
315 AliError(
"Wrong mass limits: upper value should be larger than lower one");
321 Double_t
mass=TDatabasePDG::Instance()->GetParticle(TMath::Abs(pdg))->Mass();
329 printf(
"AnalysisTaskSEDvsMultiplicity_0::Init() \n");
334 if(
fisPPbData){ AliFatal(
"Nch weights can only be used with MC and data histogram in pPb");
return; }
345 copycut->SetName(
"AnalysisCutsDplus");
349 copycut->SetName(
"AnalysisCutsDzero");
353 copycut->SetName(
"AnalysisCutsDStar");
365 if (
fisPPbData) {period[0]=
"LHC13b"; period[1]=
"LHC13c"; nProfiles = 2;}
366 else {period[0]=
"LHC10b"; period[1]=
"LHC10c"; period[2]=
"LHC10d"; period[3]=
"LHC10e"; nProfiles = 4;}
368 for(Int_t i=0; i<nProfiles; i++){
371 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
386 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects() \n");
391 fOutput->SetName(
"OutputHistos");
393 Int_t nMultBins = 200;
394 Float_t firstMultBin = -0.5;
395 Float_t lastMultBin = 199.5;
396 Int_t nMultBinsNtrk = nMultBins;
397 Float_t lastMultBinNtrk = lastMultBin;
398 Int_t nMultBinsV0 = 400;
399 Float_t lastMultBinV0 = 799.5;
400 const char *estimatorName=
"tracklets";
403 lastMultBinNtrk = 374.5;
404 nMultBins = nMultBinsNtrk;
405 lastMultBin = lastMultBinNtrk;
408 nMultBins = nMultBinsV0;
409 lastMultBin = lastMultBinV0;
410 estimatorName =
"vzero";
413 fHistNtrUnCorrPSSel =
new TH1F(
"hNtrUnCorrPSSel",Form(
"Uncorrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
414 fHistNtrUnCorrPSTrigSel =
new TH1F(
"hNtrUnCorrPSTrigSel",Form(
"Uncorrected %s multiplicity for PS + trigger name selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
415 fHistNtrUnCorrPSTrigPileUpSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
416 fHistNtrUnCorrPSTrigPileUpVtxSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
417 fHistNtrUnCorrPSTrigPileUpVtxContSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxContSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex-contrib selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
418 fHistNtrUnCorrPSTrigPileUpVtxRangeSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxRangeSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex-contrib-range selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
419 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxRangeCentrSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex-contrib-range + centrality selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
420 fHistNtrUnCorrEvSel =
new TH1F(
"hNtrUnCorrEvSel",Form(
"Uncorrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
421 fHistNtrUnCorrEvWithCand =
new TH1F(
"hNtrUnCorrEvWithCand",Form(
"Uncorrected %s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
422 fHistNtrUnCorrEvWithD =
new TH1F(
"hNtrUnCorrEvWithD",Form(
"Uncorrected %s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
423 fHistNtrCorrPSSel =
new TH1F(
"hNtrCorrPSSel",Form(
"Corrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
424 fHistNtrCorrEvSel =
new TH1F(
"hNtrCorrEvSel",Form(
"Corrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
425 fHistNtrCorrEvWithCand =
new TH1F(
"hNtrCorrEvWithCand", Form(
"%s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
426 fHistNtrCorrEvWithD =
new TH1F(
"hNtrCorrEvWithD", Form(
"%s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
429 fHistNtrEta16vsNtrEta1EvSel =
new TH2F(
"hNtrEta16vsNtrEta1EvSel",
"Uncorrected Eta1.6 vs Eta1.0 (events selected); Ntracklets #eta<1.0; Ntracklets #eta<1.6",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
430 fHistNtrEta05vsNtrEta1EvSel =
new TH2F(
"hNtrEta05vsNtrEta1EvSel",
"Uncorrected Eta0.5 vs Eta1.0 (events selected); Ntracklets #eta<1.0; Ntracklets #eta<0.5",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
431 fHistNtrEta03vsNtrEta1EvSel =
new TH2F(
"hNtrEta03vsNtrEta1EvSel",
"Uncorrected Eta0.3 vs Eta1.0 (events selected); Ntracklets #eta<1.0; Ntracklets #eta<0.3",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
432 fHistNtrEtaV0AvsNtrEta1EvSel =
new TH2F(
"hNtrEtaV0AvsNtrEta1EvSel",
"Uncorrected Eta-V0A vs Eta1.0 (events selected); Ntracklets #eta<1.0; Multiplicity V0A",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
433 fHistNtrEtaV0MvsNtrEta1EvSel =
new TH2F(
"hNtrEtaV0MvsNtrEta1EvSel",
"Uncorrected Eta-V0M vs Eta1.0 (events selected); Ntracklets #eta<1.0; Multiplicity V0A+V0C",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
434 fHistNtrEtaV0AvsV0AEqEvSel =
new TH2F(
"hNtrEtaV0AvsV0AEqEvSel",
"Corrected V0A vs corrected V0A-Equalized (events selected); Vzero-A; Vzero-A Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
435 fHistNtrEtaV0MvsV0MEqEvSel =
new TH2F(
"hNtrEtaV0MvsV0MEqEvSel",
"Corrected V0M vs corrected V0M-Equalized (events selected); Vzero-M; Vzero-M Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
436 fHistNtrCorrEta1vsNtrRawEta1EvSel =
new TH2F(
"hNtrCorrEta1vsNtrRawEta1EvSel",
"Corrected Eta1 vs Eta1.0 (events selected); Ntracklets #eta<1.0 corrected; Ntracklets #eta<1",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
437 fHistMultCorrvsMultRawEvSel =
new TH2F(
"hMultCorrvsMultRawEvSel",Form(
"Corrected multiplicity vs uncorrected multiplicity (events selected); %s corrected; %s",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
439 fHistNtrEta16vsNtrEta1EvWithCand =
new TH2F(
"hNtrEta16vsNtrEta1EvWithCand",
"Uncorrected Eta1.6 vs Eta1.0 (events selected with a D candidate); Ntracklets #eta<1.0; Ntracklets #eta<1.6",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
440 fHistNtrEta05vsNtrEta1EvWithCand =
new TH2F(
"hNtrEta05vsNtrEta1EvWithCand",
"Uncorrected Eta0.5 vs Eta1.0 (events selected with a D candidate); Ntracklets #eta<1.0; Ntracklets #eta<0.5",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
441 fHistNtrEta03vsNtrEta1EvWithCand =
new TH2F(
"hNtrEta03vsNtrEta1EvWithCand",
"Uncorrected Eta0.3 vs Eta1.0 (events selected with a D candidate); Ntracklets #eta<1.0; Ntracklets #eta<0.3",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
442 fHistNtrEtaV0AvsNtrEta1EvWithCand =
new TH2F(
"hNtrEtaV0AvsNtrEta1EvWithCand",
"Uncorrected Eta-V0A vs Eta1.0 (events selected with a D candidate); Ntracklets #eta<1.0; Multiplicity V0A",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
443 fHistNtrEtaV0MvsNtrEta1EvWithCand =
new TH2F(
"hNtrEtaV0MvsNtrEta1EvWithCand",
"Uncorrected Eta-V0M vs Eta1.0 (events selected with a D candidate); Ntracklets #eta<1.0; Multiplicity V0A+V0C",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
444 fHistNtrEtaV0AvsV0AEqEvWithCand =
new TH2F(
"hNtrEtaV0AvsV0AEqEvWithCand",
"Corrected V0A vs corrected V0A-Equalized (events selected with a D candidate); Vzero-A; Vzero-A Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
445 fHistNtrEtaV0MvsV0MEqEvWithCand =
new TH2F(
"hNtrEtaV0MvsV0MEqEvWithCand",
"Corrected V0M vs corrected V0M-Equalized (events selected with a D candidate); Vzero-M; Vzero-M Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
446 fHistNtrCorrEta1vsNtrRawEta1EvWithCand =
new TH2F(
"hNtrCorrEta1vsNtrRawEta1EvWithCand",
"Corrected Eta1 vs Eta1.0 (events selected with a D candidate); Ntracklets #eta<1.0 corrected; Ntracklets #eta<1",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
447 fHistMultCorrvsMultRawEvWithCand =
new TH2F(
"hMultCorrvsMultRawEvWithCand",Form(
"Corrected multiplicity vs uncorrected multiplicity (events selected) with a D candidate; %s corrected; %s",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
450 fHistNtrEta16vsNtrEta1EvWithD =
new TH2F(
"hNtrEta16vsNtrEta1EvWithD",
"Uncorrected Eta1.6 vs Eta1.0 (events selected with D in mass range); Ntracklets #eta<1.0; Ntracklets #eta<1.6",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
451 fHistNtrEta05vsNtrEta1EvWithD =
new TH2F(
"hNtrEta05vsNtrEta1EvWithD",
"Uncorrected Eta0.5 vs Eta1.0 (events selected with D in mass range); Ntracklets #eta<1.0; Ntracklets #eta<0.5",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
452 fHistNtrEta03vsNtrEta1EvWithD =
new TH2F(
"hNtrEta03vsNtrEta1EvWithD",
"Uncorrected Eta0.3 vs Eta1.0 (events selected with D in mass range); Ntracklets #eta<1.0; Ntracklets #eta<0.3",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
453 fHistNtrEtaV0AvsNtrEta1EvWithD =
new TH2F(
"hNtrEtaV0AvsNtrEta1EvWithD",
"Uncorrected Eta-V0A vs Eta1.0 (events selected with D in mass range); Ntracklets #eta<1.0; Multiplicity V0A",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
454 fHistNtrEtaV0MvsNtrEta1EvWithD =
new TH2F(
"hNtrEtaV0MvsNtrEta1EvWithD",
"Uncorrected Eta-V0M vs Eta1.0 (events selected with D in mass range); Ntracklets #eta<1.0; Multiplicity V0A+V0C",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
455 fHistNtrEtaV0AvsV0AEqEvWithD =
new TH2F(
"hNtrEtaV0AvsV0AEqEvWithD",
"Corrected V0A vs corrected V0A-Equalized (events selected with D in mass range); Vzero-A; Vzero-A Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
456 fHistNtrEtaV0MvsV0MEqEvWithD =
new TH2F(
"hNtrEtaV0MvsV0MEqEvWithD",
"Corrected V0M vs corrected V0M-Equalized (events selected with D in mass range); Vzero-M; Vzero-M Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
457 fHistNtrCorrEta1vsNtrRawEta1EvWithD =
new TH2F(
"hNtrCorrEta1vsNtrRawEta1EvWithD",
"Corrected Eta1 vs Eta1.0 (events selected with D in mass range); Ntracklets #eta<1.0 corrected; Ntracklets #eta<1",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsNtrk,firstMultBin,lastMultBinNtrk);
458 fHistMultCorrvsMultRawEvWithD =
new TH2F(
"hMultCorrvsMultRawEvWithD",Form(
"Corrected multiplicity vs uncorrected multiplicity (events selected with D in mass range); %s corrected; %s",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
461 fHistNtrVsZvtx =
new TH2F(
"hNtrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
462 fHistNtrCorrVsZvtx =
new TH2F(
"hNtrCorrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
464 TString HistoNtrName;
465 TString HistoNtrCorrName;
468 HistoNtrName =
"hNtrVsSpheri";
469 HistoNtrCorrName =
"hNtrCorrVsSpheri";
470 ParNameNtr =
"Spheri";
473 HistoNtrName =
"hNtrVsSphero";
474 HistoNtrCorrName =
"hNtrCorrVsSphero";
475 ParNameNtr =
"Sphero";
478 fHistNtrVsSo =
new TH2F(HistoNtrName.Data(),Form(
"N_{%s} vs %s; %s; N_{%s};",estimatorName,ParNameNtr.Data(),ParNameNtr.Data(),estimatorName), 20, 0., 1., nMultBins,firstMultBin,lastMultBin);
479 fHistNtrCorrVsSo =
new TH2F(HistoNtrCorrName.Data(),Form(
"N_{%s} vs %s; %s; N_{%s};",estimatorName,ParNameNtr.Data(),ParNameNtr.Data(),estimatorName), 20, 0., 1., nMultBins, firstMultBin,lastMultBin);
481 fHistNtrVsNchMC =
new TH2F(
"hNtrVsNchMC",Form(
"N%s vs NchMC; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
482 fHistNtrCorrVsNchMC =
new TH2F(
"hNtrCorrVsNchMC",Form(
"N%s vs Nch; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
484 fHistNtrVsNchMCPrimary =
new TH2F(
"hNtrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch (Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
485 fHistNtrCorrVsNchMCPrimary =
new TH2F(
"hNtrCorrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch(Primary) ;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
487 fHistNtrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrVsNchMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
488 fHistNtrCorrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrCorrVsMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
490 fHistGenPrimaryParticlesInelGt0 =
new TH1F(
"hGenPrimaryParticlesInelGt0",
"Multiplcity of generated charged particles ; Nparticles ; Entries",nMultBins,firstMultBin,lastMultBin);
492 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary =
new TH3F(
"fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary",
"MC: Nch (Physical Primary) vs Nch (Primary) vs Nch (Generated); Nch (Generated); Nch (Primary); Nch (Physical Primary)",nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
566 fHistNEvents =
new TH1F(
"fHistNEvents",
"number of events ",11,-0.5,10.5);
567 fHistNEvents->GetXaxis()->SetBinLabel(1,
"nEvents total");
568 fHistNEvents->GetXaxis()->SetBinLabel(2,
"nEvents with Z vertex");
569 fHistNEvents->GetXaxis()->SetBinLabel(3,
"nEvents selected");
570 fHistNEvents->GetXaxis()->SetBinLabel(4,
"Rejected due to trigger");
571 fHistNEvents->GetXaxis()->SetBinLabel(5,
"Rejected due to phys sel");
572 fHistNEvents->GetXaxis()->SetBinLabel(6,
"Rejected due to vertex cuts");
573 fHistNEvents->GetXaxis()->SetBinLabel(7,
"Rejected due to pileup");
574 fHistNEvents->GetXaxis()->SetBinLabel(8,
"Total no. of candidate");
575 fHistNEvents->GetXaxis()->SetBinLabel(9,
"no. of cand wo bitmask");
576 fHistNEvents->GetXaxis()->SetBinLabel(10,
"D after cuts (No PID)");
577 fHistNEvents->GetXaxis()->SetBinLabel(11,
"D after cuts + PID)");
583 fPtVsMassVsMultMC=
new TH3F(
"hPtVsMassvsMultMC",
"D true candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",nMultBins,firstMultBin,lastMultBin,
fNMassBins,
fLowmasslimit,
fUpmasslimit,48,0.,24.);
586 Int_t nbinsSo[4]={48,
fNMassBins, 20, nMultBins};
588 Double_t xmaxSo[4]={24.,
fUpmasslimit, 1., lastMultBin};
591 TString HistoNameNoPid;
595 HistoName =
"hSparseSphericity";
596 HistoNameNoPid =
"hSparseSphericitywithNoPid";
597 ParName =
"Sphericity";
600 HistoName =
"hSparseSpherocity";
601 HistoNameNoPid =
"hSparseSpherocitywithNoPid";
602 ParName =
"Spherocity";
605 Int_t nbinsSowithMultUncorr[5]={48,
fNMassBins, 20, nMultBins, nMultBins};
606 Double_t xminSowithMultUncorr[5]={0.,
fLowmasslimit,0., firstMultBin, firstMultBin};
607 Double_t xmaxSowithMultUncorr[5]={24.,
fUpmasslimit, 1., lastMultBin, lastMultBin};
608 fSparseSpherocity =
new THnSparseD(HistoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; MultipicityUncorr;", ParName.Data()), 5 , nbinsSowithMultUncorr, xminSowithMultUncorr, xmaxSowithMultUncorr);
611 fSparseSpherocity =
new THnSparseD(HistoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity;", ParName.Data()), 4 , nbinsSo, xminSo, xmaxSo);
660 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
662 TClonesArray *arrayCand = 0;
663 TString arrayName=
"";
668 arrayName=
"Charm3Prong";
669 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=211;
674 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=0;
679 pdgDau[0]=321; pdgDau[1]=211; pdgDau[2]=0;
684 if(!aod && AODEvent() && IsStandardAOD()) {
687 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
690 AliAODHandler* aodHandler = (AliAODHandler*)
691 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
692 if(aodHandler->GetExtensions()) {
693 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
694 AliAODEvent *aodFromExt = ext->GetAOD();
695 arrayCand=(TClonesArray*)aodFromExt->GetList()->FindObject(arrayName.Data());
698 arrayCand=(TClonesArray*)aod->GetList()->FindObject(arrayName.Data());
701 if(!aod || !arrayCand) {
702 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: Charm3Prong branch not found!\n");
707 Int_t runnumber = aod->GetRunNumber();
708 if(aod->GetTriggerMask()==0 &&
709 (runnumber>=195344 && runnumber<=195677)){
710 AliDebug(3,
"Event rejected because of null trigger mask");
717 if(!aod->GetPrimaryVertex()||TMath::Abs(aod->GetMagneticField())<0.001)
return;
719 Int_t countTreta1=0, countTreta03=0, countTreta05=0, countTreta16=0;
720 AliAODTracklets* tracklets=aod->GetTracklets();
721 Int_t nTr=tracklets->GetNumberOfTracklets();
722 for(Int_t iTr=0; iTr<nTr; iTr++){
723 Double_t theta=tracklets->GetTheta(iTr);
724 Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
725 if(eta>-0.3 && eta<0.3) countTreta03++;
726 if(eta>-0.5 && eta<0.5) countTreta05++;
727 if(eta>-1.0 && eta<1.0) countTreta1++;
728 if(eta>-1.6 && eta<1.6) countTreta16++;
732 Int_t vzeroMult=0, vzeroMultA=0, vzeroMultC=0;
733 Int_t vzeroMultEq=0, vzeroMultAEq=0, vzeroMultCEq=0;
734 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aod->GetVZEROData();
736 vzeroMultA =
static_cast<Int_t
>(vzeroAOD->GetMTotV0A());
737 vzeroMultC =
static_cast<Int_t
>(vzeroAOD->GetMTotV0C());
738 vzeroMult = vzeroMultA + vzeroMultC;
741 vzeroMultEq = vzeroMultAEq + vzeroMultCEq;
744 Int_t countMult = countTreta1;
765 Double_t countTreta1corr=countTreta1;
766 Double_t countCorr=countMult;
767 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
770 Bool_t isDataDrivenZvtxCorr=kTRUE;
771 Bool_t isVtxOk=kFALSE;
772 Int_t vzeroMultACorr=vzeroMultA, vzeroMultCCorr=vzeroMultC, vzeroMultCorr=vzeroMult;
773 Int_t vzeroMultAEqCorr=vzeroMultAEq, vzeroMultCEqCorr=vzeroMultCEq, vzeroMultEqCorr=vzeroMultEq;
775 if(vtx1->GetNContributors()>0){
785 isDataDrivenZvtxCorr=kFALSE;
788 Float_t zvtx = vtx1->GetZ();
789 isDataDrivenZvtxCorr=kFALSE;
790 vzeroMultACorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0A(vzeroMultA,zvtx));
791 vzeroMultCCorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0C(vzeroMultC,zvtx));
792 vzeroMultCorr = vzeroMultACorr + vzeroMultCCorr;
793 vzeroMultAEqCorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0A(vzeroMultAEq,zvtx));
794 vzeroMultCEqCorr =
static_cast<Int_t
>( AliESDUtils::GetCorrV0C(vzeroMultCEq,zvtx));
795 vzeroMultEqCorr = vzeroMultAEqCorr + vzeroMultCEqCorr;
804 if(isVtxOk && isDataDrivenZvtxCorr){
831 if(!isEvTrigNameRejected){
833 if(!isEvPileUpRejected){
835 if(!isEvNoVtxRejected){
837 if(!isEvVtxContribRejected){
839 if(!isEvVtxRangeRejected){
841 if(!isEvCentralityRejected){
870 TClonesArray *arrayMC=0;
871 AliAODMCHeader *mcHeader=0;
873 Double_t nchWeight=1.0;
878 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
880 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: MC particles branch not found!\n");
884 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
886 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: MC header branch not found!\n");
891 Int_t nChargedMCEta10=0, nChargedMCEta03=0, nChargedMCEta05=0, nChargedMCEta16=0, nChargedMCEtam37tm17=0, nChargedMCEta28t51=0;
892 Int_t nChargedMCPrimaryEta10=0, nChargedMCPrimaryEta03=0, nChargedMCPrimaryEta05=0, nChargedMCPrimaryEta16=0, nChargedMCPrimaryEtam37tm17=0, nChargedMCPrimaryEta28t51=0;
893 Int_t nChargedMCPhysicalPrimaryEta10=0, nChargedMCPhysicalPrimaryEta03=0, nChargedMCPhysicalPrimaryEta05=0, nChargedMCPhysicalPrimaryEta16=0, nChargedMCPhysicalPrimaryEtam37tm17=0, nChargedMCPhysicalPrimaryEta28t51=0;
894 for(Int_t i=0; i<arrayMC->GetEntriesFast(); i++){
895 AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
896 Int_t
charge = part->Charge();
897 Double_t eta = part->Eta();
898 Bool_t isPrim = part->IsPrimary();
899 Bool_t isPhysPrim = part->IsPhysicalPrimary();
901 if(eta>-0.3 && eta< 0.3) {
903 if(isPrim) nChargedMCPrimaryEta03++;
904 if(isPhysPrim) nChargedMCPhysicalPrimaryEta03++;
906 if(eta>-0.5 && eta< 0.5) {
908 if(isPrim) nChargedMCPrimaryEta05++;
909 if(isPhysPrim) nChargedMCPhysicalPrimaryEta05++;
911 if(eta>-1.0 && eta< 1.0) {
913 if(isPrim) nChargedMCPrimaryEta10++;
914 if(isPhysPrim) nChargedMCPhysicalPrimaryEta10++;
916 if(eta>-1.6 && eta< 1.6) {
918 if(isPrim) nChargedMCPrimaryEta16++;
919 if(isPhysPrim) nChargedMCPhysicalPrimaryEta16++;
921 if(eta>-3.7 && eta<-1.7) {
922 nChargedMCEtam37tm17++;
923 if(isPrim) nChargedMCPrimaryEtam37tm17++;
924 if(isPhysPrim) nChargedMCPhysicalPrimaryEtam37tm17++;
926 if(eta> 2.8 && eta< 5.1) {
927 nChargedMCEta28t51++;
928 if(isPrim) nChargedMCPrimaryEta28t51++;
929 if(isPhysPrim) nChargedMCPhysicalPrimaryEta28t51++;
933 Int_t nChargedMC=nChargedMCEta10;
934 Int_t nChargedMCPrimary=nChargedMCPrimaryEta10;
935 Int_t nChargedMCPhysicalPrimary=nChargedMCPhysicalPrimaryEta10;
940 Double_t tmpweight = 1.0;
941 Double_t tmpXweight=nChargedMCPhysicalPrimary;
944 if(tmpXweight<=0) tmpweight = 0.0;
949 tmpweight = pMC>0 ? pMeas/pMC : 0.;
951 nchWeight *= tmpweight;
952 AliDebug(2,Form(
"Using Nch weights, Mult=%f Weight=%f\n",tmpXweight,nchWeight));
958 nChargedMC = nChargedMCEta16 - nChargedMCEta10;
959 nChargedMCPrimary = nChargedMCPrimaryEta16 - nChargedMCPrimaryEta10;
960 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta16 - nChargedMCPhysicalPrimaryEta10;
962 nChargedMC = nChargedMCEta05;
963 nChargedMCPrimary = nChargedMCPrimaryEta05;
964 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta05;
966 nChargedMC = nChargedMCEta03;
967 nChargedMCPrimary = nChargedMCPrimaryEta03;
968 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta03;
970 nChargedMC = nChargedMCEtam37tm17 + nChargedMCEta28t51;
971 nChargedMCPrimary = nChargedMCPrimaryEtam37tm17 + nChargedMCPrimaryEta28t51;
972 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEtam37tm17 + nChargedMCPhysicalPrimaryEta28t51;
974 nChargedMC = nChargedMCEta28t51;
975 nChargedMCPrimary = nChargedMCPrimaryEta28t51;
976 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta28t51;
980 if(nChargedMCPhysicalPrimary>0){
996 Int_t nCand = arrayCand->GetEntriesFast();
997 Int_t nSelectedNoPID=0,nSelectedPID=0,nSelectedInMassPeak=0;
998 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
999 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
1000 Double_t mDstarPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
1003 UInt_t pdgDgDStartoD0pi[2]={421,211};
1005 Double_t aveMult=0.;
1006 Double_t nSelCand=0.;
1007 for (Int_t iCand = 0; iCand < nCand; iCand++) {
1018 Double_t ptCand = d->Pt();
1021 if(!isFidAcc)
continue;
1026 labD = dCascade->
MatchToMC(
fPdgMeson,421,(Int_t*)pdgDgDStartoD0pi,(Int_t*)pdgDau,arrayMC);
1028 labD = d->MatchToMC(
fPdgMeson,arrayMC,nDau,(Int_t*)pdgDau);
1035 if(passTopolCuts==0)
continue;
1042 Double_t multForCand = countCorr;
1049 for(Int_t iDau=0; iDau<nDau; iDau++){
1050 AliAODTrack *t = NULL;
1051 if(
fPdgMeson==413){ t = (AliAODTrack*)d0fromDstar->GetDaughter(iDau); }
1052 else{ t = (AliAODTrack*)d->GetDaughter(iDau); }
1054 if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
1055 if(multForCand>0) multForCand-=1;
1059 Bool_t isPrimary=kTRUE;
1060 Double_t trueImpParXY=9999.;
1061 Double_t impparXY=d->
ImpParXY()*10000.;
1065 mass[0]=d->InvMass(nDau,pdgDau);
1067 if(TMath::Abs(mass[0]-mDplusPDG)<0.02) nSelectedInMassPeak++;
1069 UInt_t pdgdaughtersD0[2]={211,321};
1070 UInt_t pdgdaughtersD0bar[2]={321,211};
1071 mass[0]=d->InvMass(2,pdgdaughtersD0);
1072 mass[1]=d->InvMass(2,pdgdaughtersD0bar);
1073 if(TMath::Abs(mass[0]-mD0PDG)<0.02 || TMath::Abs(mass[1]-mD0PDG)<0.02 ) nSelectedInMassPeak++;
1078 if(TMath::Abs(mass[0]-(mDstarPDG-mD0PDG))<0.0015) nSelectedInMassPeak++;
1080 for(Int_t iHyp=0; iHyp<2; iHyp++){
1081 if(mass[iHyp]<0.)
continue;
1082 Double_t invMass=mass[iHyp];
1083 Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
1088 labD = dCascade->
MatchToMC(
fPdgMeson,421,(Int_t*)pdgDgDStartoD0pi,(Int_t*)pdgDau,arrayMC);
1090 labD = d->MatchToMC(
fPdgMeson,arrayMC,nDau,(Int_t*)pdgDau);
1095 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1096 Int_t code=partD->GetPdgCode();
1097 if(
CheckOrigin(arrayMC,partD)==5) isPrimary=kFALSE;
1098 if(code<0 && iHyp==0) fillHisto=kFALSE;
1099 if(code>0 && iHyp==1) fillHisto=kFALSE;
1108 Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
1109 if(fillHisto && passAllCuts){
1126 if(iHyp==0 && !(passTopolCuts&1))
continue;
1127 if(iHyp==1 && !(passTopolCuts&2))
continue;
1132 Double_t arrayForSparseSoNoPid[4]={ptCand, invMass, spherocity, multForCand};
1136 if(iHyp==0 && !(passAllCuts&1))
continue;
1137 if(iHyp==1 && !(passAllCuts&2))
continue;
1140 aveMult+=multForCand;
1145 Double_t arrayForSparseSowithMultUnncorr[5]={ptCand, invMass, spherocity, multForCand, (Double_t)countTreta1};
1150 Double_t arrayForSparseSo[4]={ptCand, invMass, spherocity, multForCand};
1173 if(nSelectedPID>0) {
1188 if(nSelectedInMassPeak>0) {
1221 "Mass vs. pt vs.imppar - All",
1224 "Mass vs. pt vs.imppar - promptD",
1227 "Mass vs. pt vs.imppar - DfromB",
1230 "Mass vs. pt vs.true imppar -DfromB",
1233 "Mass vs. pt vs.imppar - backgr.",
1235 for(Int_t i=0; i<5;i++){
1245 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity: Terminate() \n");
1247 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1249 printf(
"ERROR: fOutput not available\n");
1255 printf(
"ERROR: fHistNEvents not available\n");
1258 printf(
"Number of Analyzed Events = %d\n",(Int_t)
fHistNEvents->GetBinContent(3));
1268 Int_t pdgGranma = 0;
1270 mother = mcPartCandidate->GetMother();
1272 Int_t abspdgGranma =0;
1273 Bool_t isFromB=kFALSE;
1277 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1279 pdgGranma = mcGranma->GetPdgCode();
1280 abspdgGranma = TMath::Abs(pdgGranma);
1281 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1285 mother = mcGranma->GetMother();
1287 AliError(
"Failed casting the mother particle!");
1292 if(isFromB)
return 5;
1305 Int_t runNo =
event->GetRunNumber();
1309 if (runNo>195343 && runNo<195484) period = 0;
1310 if (runNo>195528 && runNo<195678) period = 1;
1311 if (period < 0 || period > 1)
return 0;
1314 if(runNo>114930 && runNo<117223) period = 0;
1315 if(runNo>119158 && runNo<120830) period = 1;
1316 if(runNo>122373 && runNo<126438) period = 2;
1317 if(runNo>127711 && runNo<130841) period = 3;
1318 if(period<0 || period>3)
return 0;
1333 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1334 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1335 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1336 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1337 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1338 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1339 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1340 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1342 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1343 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1344 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1345 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1346 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1347 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1348 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1349 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1354 for(Int_t i=0; i<81; i++){
1368 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1369 Double_t
mass = partD->M();
1370 Double_t pt = partD->Pt();
Bool_t IsEventRejectedDueToCentrality() const
TH2F * fHistMultCorrvsMultRawEvWithD
hist. for Ntracklets in eta<1 with and w/o corrections for events with a candidate in D mass peak ...
Bool_t IsEventRejectedDueToZVertexOutsideFiducialRegion() const
TH2F * fHistNtrEta05vsNtrEta1EvWithD
hist. for Ntracklets in eta<1.6 vs. eta<1. for events with a candidate in D mass peak ...
TH2F * fHistNtrEta05vsNtrEta1EvSel
hist. for Ntracklets in eta<1.6 vs. eta<1.
TH2F * fHistNtrCorrVsSo
hist of ntracklets vs So
TH2F * fHistNtrEtaV0AvsNtrEta1EvWithCand
hist. for Ntracklets in eta<0.3 vs. eta<1. for events with a candidate
Bool_t IsEventRejectedDueToNotRecoVertex() const
Bool_t fCalculateSphericity
TH1F * fHistNtrUnCorrPSTrigPileUpVtxContSel
hist. of ntracklets for physics selection + trigger name + pileup + with-vertex selected events ...
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
TH2F * fHistNtrEta03vsNtrEta1EvWithD
hist. for Ntracklets in eta<0.5 vs. eta<1. for events with a candidate in D mass peak ...
Double_t DeltaInvMass() const
Int_t fMultiplicityEstimator
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvWithCand
hist. for V0M raw mult vs V0M equalized multiplicity for events with a candidate
AliNormalizationCounter * fCounterCandidates
Counter for normalization, uncorrected multiplicity.
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvWithD
hist. for V0M raw mult vs V0M equalized multiplicity with a candidate in D mass peak ...
Int_t GetIsSelectedCuts() const
TH1F * fHistNtrUnCorrPSSel
hist of Nch (generated) vs Nch (Primary) vs Nch (Physical Primary)
Bool_t fSubtractTrackletsFromDau
TH2F * fHistNtrEta03vsNtrEta1EvSel
hist. for Ntracklets in eta<0.5 vs. eta<1.
Bool_t HasSelectionBit(Int_t i) const
TH2F * fHistNtrEta16vsNtrEta1EvWithCand
hist. for multiplicity with and w/o corrections
Int_t MatchToMC(Int_t pdgabs, Int_t pdgabs2prong, Int_t *pdgDg, Int_t *pdgDg2prong, TClonesArray *mcArray, Bool_t isV0=kFALSE) const
TH1F * fHistNtrUnCorrPSTrigPileUpVtxRangeSel
hist. of ntracklets for physics selection + trigger name + pileup + with-vertex-contrib selected even...
TH2F * fHistNtrEtaV0AvsV0AEqEvWithCand
hist. for Ntracklets in eta-V0M vs. eta<1. for events with a candidate
TH2F * fHistMultCorrvsMultRawEvWithCand
hist. for Ntracklets in eta<1 with and w/o corrections for events with a candidate ...
TH2F * fHistNtrEtaV0AvsV0AEqEvWithD
hist. for Ntracklets in eta-V0M vs. eta<1. for events with a candidate in D mass peak ...
THnSparseD * fSparseSpherocity
hist. of Pt vs Mult vs. mass (MC true candidates before reconstruction)
Double_t ImpParXY() const
Int_t fFillSoSparseChecks
TH2F * fHistNtrVsNchMCPhysicalPrimary
hist of ntracklets vs Nch (Primary)
TH2F * fHistNtrCorrVsNchMCPhysicalPrimary
hist of ntracklets vs Nch (Physical Primary)
Bool_t IsEventRejectedDueToVertexContributors() const
TH3F * fPtVsMassVsMultMC
hist. of ntracklets for evnts with a candidate in D mass peak
Int_t CheckOrigin(TClonesArray *arrayMC, AliAODMCParticle *mcPartCandidate) const
Int_t fMCPrimariesEstimator
Int_t GetWhyRejection() const
virtual void UserCreateOutputObjects()
TH2F * fHistNtrVsNchMC
hist of ntracklets vs So
TH1F * fHistNtrCorrPSSel
hist. of ntracklets for evnts with a candidate in D mass peak
TH2F * fHistNtrEtaV0AvsNtrEta1EvWithD
hist. for Ntracklets in eta<0.3 vs. eta<1. for events with a candidate in D mass peak ...
virtual void UserExec(Option_t *option)
TH2F * fHistNtrCorrVsZvtx
hist of ntracklets vs Zvertex
TH2F * fHistNtrEta16vsNtrEta1EvWithD
hist. for multiplicity with and w/o corrections for events with a candidate
THnSparseF * fHistMassPtImpPar[5]
THnSparse histograms for Spherocity studies.
TH2F * fHistNtrVsZvtx
hist. for multiplicity with and w/o corrections for events with a candidate in D mass peak ...
TH1F * fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel
hist. of ntracklets for physics selection + trigger name + pileup + with-vertex-contrib-range selecte...
Bool_t fDoImpPar
Counter for normalization, corrected multiplicity for candidates.
TList * fListProfiles
list send on output slot 3
static Double_t GetVZEROCEqualizedMultiplicity(AliAODEvent *ev)
virtual ~AliAnalysisTaskSEDvsEventShapes()
Class for cuts on AOD reconstructed D+->Kpipi.
void SetStudyMultiplicity(Bool_t flag, Float_t etaRange)
static Double_t GetSpherocity(AliAODEvent *aod, Double_t etaMin=-0.8, Double_t etaMax=0.8, Double_t ptMin=0.15, Double_t ptMax=10., Int_t filtbit1=256, Int_t filtbit2=512, Int_t minMult=3, Double_t phiStepSizeDeg=0.1)
Functions for event shape variables.
TH2F * fHistNtrCorrVsNchMC
hist of ntracklets vs Nch (Generated)
TH2F * fHistNtrEtaV0MvsNtrEta1EvWithD
hist. for Ntracklets in eta-V0A vs. eta<1. for events with a candidate in D mass peak ...
TH2F * fHistNtrEtaV0MvsV0MEqEvSel
hist. for V0A raw mult vs V0A equalized multiplicity
AliAnalysisTaskSEDvsEventShapes()
Int_t fDoVZER0ParamVertexCorr
THnSparseD * fSparseSpherocitywithNoPid
THnSparse histograms for Spherocity studies.
TH2F * fHistNtrEtaV0MvsV0MEqEvWithD
hist. for V0A raw mult vs V0A equalized multiplicity with a candidate in D mass peak ...
TH2F * fHistNtrVsNchMCPrimary
hist of ntracklets vs Nch (Generated)
TH3F * fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary
hist. of geenrated multiplcity
AliNormalizationCounter * fCounterU
Counter for normalization, corrected multiplicity.
AliRDHFCuts * fRDCutsAnalysis
TH2F * fHistNtrEtaV0AvsV0AEqEvSel
hist. for Ntracklets in eta-V0M vs. eta<1.
void SetStudySpherocity(Bool_t flag, Double_t nsteps=100.)
TH2F * fHistNtrEta05vsNtrEta1EvWithCand
hist. for Ntracklets in eta<1.6 vs. eta<1. for events with a candidate
Bool_t IsEventRejectedDueToPileup() const
TH1F * fHistNtrCorrEvSel
hist. of ntracklets for physics selection only selected events
void SetMassLimits(Double_t lowlimit, Double_t uplimit)
TH2F * fHistNtrEtaV0MvsV0MEqEvWithCand
hist. for V0A raw mult vs V0A equalized multiplicity for events with a candidate
TH2F * fHistNtrEta16vsNtrEta1EvSel
hist. for No. of events
void CreateImpactParameterHistos()
TH2F * fHistNtrVsSo
hist of ntracklets vs Zvertex
TH1F * fHistNtrUnCorrEvWithD
hist. of ntracklets for evnts with a candidate
TH2F * fHistNtrEta03vsNtrEta1EvWithCand
hist. for Ntracklets in eta<0.5 vs. eta<1. for events with a candidate
TProfile * fMultEstimatorAvg[4]
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH1F * fHistNtrCorrEvWithD
hist. of ntracklets for evnts with a candidate
Bool_t IsEventRejectedDuePhysicsSelection() const
void FillMCMassHistos(TClonesArray *arrayMC, Int_t labD, Int_t countMult, Double_t nchWeight)
TProfile * GetEstimatorHistogram(const AliVEvent *event)
TH1F * fHistNtrCorrEvWithCand
hist. of ntracklets for selected events
ClassImp(AliAnalysisTaskSEDvsEventShapes) AliAnalysisTaskSEDvsEventShapes
static Double_t GetCorrectedNtracklets(TProfile *estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult)
Bool_t IsEventSelected(AliVEvent *event)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
Double_t fUpmasslimit
histograms for impact paramter studies
Bool_t IsSelected(TObject *obj)
TH1F * fHistNtrUnCorrPSTrigSel
hist. of ntracklets for physics selection only selected events
TH1F * fHistNtrUnCorrEvSel
hist. of ntracklets for physics selection + trigger name + pileup + with-vertex-contrib-range + centr...
TList * fListCuts
list send on output slot 1
TH1F * fHistGenPrimaryParticlesInelGt0
hist of ntracklets vs Nch (Physical Primary)
static Double_t GetVZEROAEqualizedMultiplicity(AliAODEvent *ev)
Utilities for V0 multiplicity checks.
Bool_t IsEventRejectedDueToTrigger() const
TH1F * fHistNtrUnCorrPSTrigPileUpSel
hist. of ntracklets for physics selection + trigger name selected events
static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
Functions for computing true impact parameter of D meson.
TH2F * fHistMultCorrvsMultRawEvSel
hist. for Ntracklets in eta<1 with and w/o corrections
AliNormalizationCounter * fCounterC
void CreateMeasuredNchHisto()
TH2F * fHistNtrCorrVsNchMCPrimary
hist of ntracklets vs Nch (Primary)
TH1F * fHistNtrUnCorrPSTrigPileUpVtxSel
hist. of ntracklets for physics selection + trigger name + pileup selected events ...
AliAODRecoDecayHF2Prong * Get2Prong() const
static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
TH2F * fHistNtrEtaV0MvsNtrEta1EvSel
hist. for Ntracklets in eta-V0A vs. eta<1.
virtual Bool_t IsInFiducialAcceptance(Double_t, Double_t) const
virtual void Terminate(Option_t *option)
TH2F * fHistNtrEtaV0MvsNtrEta1EvWithCand
hist. for Ntracklets in eta-V0A vs. eta<1. for events with a candidate
static Double_t GetSphericity(AliAODEvent *aod, Double_t etaMin=-0.8, Double_t etaMax=0.8, Double_t ptMin=0.15, Double_t ptMax=10., Int_t filtbit1=256, Int_t filtbit2=512, Int_t minMult=3)
TH2F * fHistNtrEtaV0AvsNtrEta1EvSel
hist. for Ntracklets in eta<0.3 vs. eta<1.
TH1F * fHistNtrUnCorrEvWithCand
hist. of ntracklets for selected events
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvSel
hist. for V0M raw mult vs V0M equalized multiplicity