26 #include <TClonesArray.h>
30 #include <TDatabasePDG.h>
34 #include <THnSparse.h>
36 #include "AliAnalysisManager.h"
41 #include "AliAODHandler.h"
42 #include "AliAODEvent.h"
43 #include "AliAODVertex.h"
44 #include "AliAODTrack.h"
48 #include "AliAnalysisTaskSE.h"
52 #include "AliAODVZERO.h"
53 #include "AliESDUtils.h"
65 fHistNtrEta16vsNtrEta1EvSel(0),
66 fHistNtrEta05vsNtrEta1EvSel(0),
67 fHistNtrEta03vsNtrEta1EvSel(0),
68 fHistNtrEtaV0AvsNtrEta1EvSel(0),
69 fHistNtrEtaV0MvsNtrEta1EvSel(0),
70 fHistNtrEtaV0AvsV0AEqEvSel(0),
71 fHistNtrEtaV0MvsV0MEqEvSel(0),
72 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
73 fHistMultCorrvsMultRawEvSel(0),
74 fHistNtrEta16vsNtrEta1EvWithCand(0),
75 fHistNtrEta05vsNtrEta1EvWithCand(0),
76 fHistNtrEta03vsNtrEta1EvWithCand(0),
77 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
78 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
79 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
80 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
81 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
82 fHistMultCorrvsMultRawEvWithCand(0),
83 fHistNtrEta16vsNtrEta1EvWithD(0),
84 fHistNtrEta05vsNtrEta1EvWithD(0),
85 fHistNtrEta03vsNtrEta1EvWithD(0),
86 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
87 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
88 fHistNtrEtaV0AvsV0AEqEvWithD(0),
89 fHistNtrEtaV0MvsV0MEqEvWithD(0),
90 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
91 fHistMultCorrvsMultRawEvWithD(0),
93 fHistNtrCorrVsZvtx(0),
97 fHistNtrCorrVsNchMC(0),
98 fHistNtrVsNchMCPrimary(0),
99 fHistNtrCorrVsNchMCPrimary(0),
100 fHistNtrVsNchMCPhysicalPrimary(0),
101 fHistNtrCorrVsNchMCPhysicalPrimary(0),
102 fHistGenPrimaryParticlesInelGt0(0),
103 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
104 fHistNtrUnCorrPSSel(0),
105 fHistNtrUnCorrPSTrigSel(0),
106 fHistNtrUnCorrPSTrigPileUpSel(0),
107 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
108 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
109 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
110 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
111 fHistNtrUnCorrEvSel(0),
112 fHistNtrUnCorrEvWithCand(0),
113 fHistNtrUnCorrEvWithD(0),
114 fHistNtrCorrPSSel(0),
115 fHistNtrCorrEvSel(0),
116 fHistNtrCorrEvWithCand(0),
117 fHistNtrCorrEvWithD(0),
118 fSparseSpherocity(0),
119 fSparseSpherocitywithNoPid(0),
121 fMCAccGenFeeddown(0),
124 fMCRecoBothPromptFD(0),
125 fPtVsMassVsMultMC(0),
127 fLowmasslimit(1.765),
132 fCounterCandidates(0),
135 fLowerImpPar(-2000.),
136 fHigherImpPar(2000.),
141 fSubtractTrackletsFromDau(kFALSE),
142 fKeepCorrPlots(kFALSE),
148 fMultiplicityEstimator(kNtrk10),
149 fMCPrimariesEstimator(kEta10),
150 fFillSoSparseChecks(0),
158 fphiStepSizeDeg(0.1),
162 fCalculateSphericity(kFALSE),
163 fDoVZER0ParamVertexCorr(1)
166 for(Int_t i=0; i<5; i++) fHistMassPtImpPar[i]=0;
167 for(Int_t i=0; i<4; i++) fMultEstimatorAvg[i]=0;
172 AliAnalysisTaskSE(name),
179 fHistNtrEta16vsNtrEta1EvSel(0),
180 fHistNtrEta05vsNtrEta1EvSel(0),
181 fHistNtrEta03vsNtrEta1EvSel(0),
182 fHistNtrEtaV0AvsNtrEta1EvSel(0),
183 fHistNtrEtaV0MvsNtrEta1EvSel(0),
184 fHistNtrEtaV0AvsV0AEqEvSel(0),
185 fHistNtrEtaV0MvsV0MEqEvSel(0),
186 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
187 fHistMultCorrvsMultRawEvSel(0),
188 fHistNtrEta16vsNtrEta1EvWithCand(0),
189 fHistNtrEta05vsNtrEta1EvWithCand(0),
190 fHistNtrEta03vsNtrEta1EvWithCand(0),
191 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
192 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
193 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
194 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
195 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
196 fHistMultCorrvsMultRawEvWithCand(0),
197 fHistNtrEta16vsNtrEta1EvWithD(0),
198 fHistNtrEta05vsNtrEta1EvWithD(0),
199 fHistNtrEta03vsNtrEta1EvWithD(0),
200 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
201 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
202 fHistNtrEtaV0AvsV0AEqEvWithD(0),
203 fHistNtrEtaV0MvsV0MEqEvWithD(0),
204 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
205 fHistMultCorrvsMultRawEvWithD(0),
207 fHistNtrCorrVsZvtx(0),
211 fHistNtrCorrVsNchMC(0),
212 fHistNtrVsNchMCPrimary(0),
213 fHistNtrCorrVsNchMCPrimary(0),
214 fHistNtrVsNchMCPhysicalPrimary(0),
215 fHistNtrCorrVsNchMCPhysicalPrimary(0),
216 fHistGenPrimaryParticlesInelGt0(0),
217 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
218 fHistNtrUnCorrPSSel(0),
219 fHistNtrUnCorrPSTrigSel(0),
220 fHistNtrUnCorrPSTrigPileUpSel(0),
221 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
222 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
223 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
224 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
225 fHistNtrUnCorrEvSel(0),
226 fHistNtrUnCorrEvWithCand(0),
227 fHistNtrUnCorrEvWithD(0),
228 fHistNtrCorrPSSel(0),
229 fHistNtrCorrEvSel(0),
230 fHistNtrCorrEvWithCand(0),
231 fHistNtrCorrEvWithD(0),
232 fSparseSpherocity(0),
233 fSparseSpherocitywithNoPid(0),
235 fMCAccGenFeeddown(0),
238 fMCRecoBothPromptFD(0),
239 fPtVsMassVsMultMC(0),
241 fLowmasslimit(1.765),
243 fRDCutsAnalysis(cuts),
246 fCounterCandidates(0),
249 fLowerImpPar(-2000.),
250 fHigherImpPar(2000.),
253 fisPPbData(switchPPb),
255 fSubtractTrackletsFromDau(kFALSE),
256 fKeepCorrPlots(kFALSE),
262 fMultiplicityEstimator(kNtrk10),
263 fMCPrimariesEstimator(kEta10),
264 fFillSoSparseChecks(0),
272 fphiStepSizeDeg(0.1),
276 fCalculateSphericity(kFALSE),
277 fDoVZER0ParamVertexCorr(1)
294 DefineOutput(1,TList::Class());
296 DefineOutput(2,TList::Class());
298 DefineOutput(3,TList::Class());
300 DefineOutput(4,TList::Class());
302 DefineOutput(5,TList::Class());
320 for(Int_t i=0; i<4; i++) {
324 for(Int_t i=0; i<5; i++){
334 if(uplimit>lowlimit){
338 AliError(
"Wrong mass limits: upper value should be larger than lower one");
344 Double_t
mass=TDatabasePDG::Instance()->GetParticle(TMath::Abs(pdg))->Mass();
352 printf(
"AnalysisTaskSEDvsMultiplicity_0::Init() \n");
357 if(
fisPPbData){ AliFatal(
"Nch weights can only be used with MC and data histogram in pPb");
return; }
368 copycut->SetName(
"AnalysisCutsDplus");
372 copycut->SetName(
"AnalysisCutsDzero");
376 copycut->SetName(
"AnalysisCutsDStar");
388 if (
fisPPbData) {period[0]=
"LHC13b"; period[1]=
"LHC13c"; nProfiles = 2;}
389 else {period[0]=
"LHC10b"; period[1]=
"LHC10c"; period[2]=
"LHC10d"; period[3]=
"LHC10e"; nProfiles = 4;}
391 for(Int_t i=0; i<nProfiles; i++){
394 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
409 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects() \n");
414 fOutput->SetName(
"OutputHistos");
420 Int_t nMultBins = 200;
421 Float_t firstMultBin = -0.5;
422 Float_t lastMultBin = 199.5;
423 Int_t nMultBinsNtrk = nMultBins;
424 Float_t lastMultBinNtrk = lastMultBin;
425 Int_t nMultBinsV0 = 400;
426 Float_t lastMultBinV0 = 799.5;
427 const char *estimatorName=
"tracklets";
430 lastMultBinNtrk = 374.5;
431 nMultBins = nMultBinsNtrk;
432 lastMultBin = lastMultBinNtrk;
435 nMultBins = nMultBinsV0;
436 lastMultBin = lastMultBinV0;
437 estimatorName =
"vzero";
440 fHistNtrUnCorrPSSel =
new TH1F(
"hNtrUnCorrPSSel",Form(
"Uncorrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
441 fHistNtrUnCorrPSTrigSel =
new TH1F(
"hNtrUnCorrPSTrigSel",Form(
"Uncorrected %s multiplicity for PS + trigger name selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
442 fHistNtrUnCorrPSTrigPileUpSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
443 fHistNtrUnCorrPSTrigPileUpVtxSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
444 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);
445 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);
446 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);
447 fHistNtrUnCorrEvSel =
new TH1F(
"hNtrUnCorrEvSel",Form(
"Uncorrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
448 fHistNtrUnCorrEvWithCand =
new TH1F(
"hNtrUnCorrEvWithCand",Form(
"Uncorrected %s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
449 fHistNtrUnCorrEvWithD =
new TH1F(
"hNtrUnCorrEvWithD",Form(
"Uncorrected %s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
450 fHistNtrCorrPSSel =
new TH1F(
"hNtrCorrPSSel",Form(
"Corrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
451 fHistNtrCorrEvSel =
new TH1F(
"hNtrCorrEvSel",Form(
"Corrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
452 fHistNtrCorrEvWithCand =
new TH1F(
"hNtrCorrEvWithCand", Form(
"%s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
453 fHistNtrCorrEvWithD =
new TH1F(
"hNtrCorrEvWithD", Form(
"%s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
456 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);
457 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);
458 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);
459 fHistNtrEtaV0AvsNtrEta1EvSel =
new TH2F(
"hNtrEtaV0AvsNtrEta1EvSel",
"Uncorrected Eta-V0A vs Eta1.0 (events selected); Ntracklets #eta<1.0; Multiplicity V0A",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
460 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);
461 fHistNtrEtaV0AvsV0AEqEvSel =
new TH2F(
"hNtrEtaV0AvsV0AEqEvSel",
"Corrected V0A vs corrected V0A-Equalized (events selected); Vzero-A; Vzero-A Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
462 fHistNtrEtaV0MvsV0MEqEvSel =
new TH2F(
"hNtrEtaV0MvsV0MEqEvSel",
"Corrected V0M vs corrected V0M-Equalized (events selected); Vzero-M; Vzero-M Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
463 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);
464 fHistMultCorrvsMultRawEvSel =
new TH2F(
"hMultCorrvsMultRawEvSel",Form(
"Corrected multiplicity vs uncorrected multiplicity (events selected); %s corrected; %s",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
466 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);
467 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);
468 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);
469 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);
470 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);
471 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);
472 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);
473 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);
474 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);
477 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);
478 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);
479 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);
480 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);
481 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);
482 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);
483 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);
484 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);
485 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);
488 fHistNtrVsZvtx =
new TH2F(
"hNtrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
489 fHistNtrCorrVsZvtx =
new TH2F(
"hNtrCorrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
491 TString histoNtrName;
492 TString histoNtrCorrName;
495 histoNtrName =
"hNtrVsSpheri";
496 histoNtrCorrName =
"hNtrCorrVsSpheri";
497 parNameNtr =
"Spheri";
500 histoNtrName =
"hNtrVsSphero";
501 histoNtrCorrName =
"hNtrCorrVsSphero";
502 parNameNtr =
"Sphero";
505 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);
506 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);
508 fHistNtrVsNchMC =
new TH2F(
"hNtrVsNchMC",Form(
"N%s vs NchMC; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
509 fHistNtrCorrVsNchMC =
new TH2F(
"hNtrCorrVsNchMC",Form(
"N%s vs Nch; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
511 fHistNtrVsNchMCPrimary =
new TH2F(
"hNtrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch (Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
512 fHistNtrCorrVsNchMCPrimary =
new TH2F(
"hNtrCorrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch(Primary) ;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
514 fHistNtrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrVsNchMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
515 fHistNtrCorrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrCorrVsMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
517 fHistGenPrimaryParticlesInelGt0 =
new TH1F(
"hGenPrimaryParticlesInelGt0",
"Multiplcity of generated charged particles ; Nparticles ; Entries",nMultBins,firstMultBin,lastMultBin);
519 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);
593 fHistNEvents =
new TH1F(
"fHistNEvents",
"number of events ",11,-0.5,10.5);
594 fHistNEvents->GetXaxis()->SetBinLabel(1,
"nEvents total");
595 fHistNEvents->GetXaxis()->SetBinLabel(2,
"nEvents with Z vertex");
596 fHistNEvents->GetXaxis()->SetBinLabel(3,
"nEvents selected");
597 fHistNEvents->GetXaxis()->SetBinLabel(4,
"Rejected due to trigger");
598 fHistNEvents->GetXaxis()->SetBinLabel(5,
"Rejected due to phys sel");
599 fHistNEvents->GetXaxis()->SetBinLabel(6,
"Rejected due to vertex cuts");
600 fHistNEvents->GetXaxis()->SetBinLabel(7,
"Rejected due to pileup");
601 fHistNEvents->GetXaxis()->SetBinLabel(8,
"Total no. of candidate");
602 fHistNEvents->GetXaxis()->SetBinLabel(9,
"no. of cand wo bitmask");
603 fHistNEvents->GetXaxis()->SetBinLabel(10,
"D after cuts (No PID)");
604 fHistNEvents->GetXaxis()->SetBinLabel(11,
"D after cuts + PID)");
610 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.);
613 Int_t nbinsSo[4]={48,
fNMassBins, 20, nMultBins};
615 Double_t xmaxSo[4]={24.,
fUpmasslimit, 1., lastMultBin};
618 TString histoNameNoPid;
622 histoName =
"hSparseSphericity";
623 histoNameNoPid =
"hSparseSphericitywithNoPid";
624 parName =
"Sphericity";
627 histoName =
"hSparseSpherocity";
628 histoNameNoPid =
"hSparseSpherocitywithNoPid";
629 parName =
"Spherocity";
632 Int_t nbinsSowithMultUncorr[5]={48,
fNMassBins, 20, nMultBins, nMultBins};
633 Double_t xminSowithMultUncorr[5]={0.,
fLowmasslimit,0., firstMultBin, firstMultBin};
634 Double_t xmaxSowithMultUncorr[5]={24.,
fUpmasslimit, 1., lastMultBin, lastMultBin};
635 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);
638 fSparseSpherocity =
new THnSparseD(histoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity;", parName.Data()), 4 , nbinsSo, xminSo, xmaxSo);
647 Int_t nbinsPrompt[4]={48, nMultBins, 20, 100};
648 Int_t nbinsFeeddown[4]={48, nMultBins, 20, 100};
649 Double_t xminPrompt[4] = {0.,firstMultBin, 0., -1.};
650 Double_t xmaxPrompt[4] = {24.,lastMultBin, 1., 1.};
651 Double_t xminFeeddown[4] = {0.,firstMultBin, 0., -1.};
652 Double_t xmaxFeeddown[4] = {24.,lastMultBin, 1., 1.};
655 fMCAccGenPrompt =
new THnSparseD(
"hMCAccGenPrompt",
"kStepMCAcceptance pt vs. Multiplicity vs. Spherocity vs. y - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
661 fMCRecoPrompt =
new THnSparseD(
"hMCRecoPrompt",
"kStepRecoPID pt vs. Multiplicity vs. Spherocity vs. y - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
668 fMCAccGenFeeddown =
new THnSparseD(
"hMCAccGenBFeeddown",
"kStepMCAcceptance pt vs. Multiplicity vs. Spherocity vs. y - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
674 fMCRecoFeeddown =
new THnSparseD(
"hMCRecoFeeddown",
"kStepRecoPID pt vs. Multiplicity vs. Spherocity vs. y - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
681 fMCRecoBothPromptFD =
new THnSparseD(
"hMCRecoBothPromptFD",
"kStepRecoPID pt vs. Multiplicity vs. Spherocity vs. y - BothPromptFD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
735 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
737 TClonesArray *arrayCand = 0;
738 TString arrayName=
"";
743 arrayName=
"Charm3Prong";
744 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=211;
749 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=0;
754 pdgDau[0]=321; pdgDau[1]=211; pdgDau[2]=0;
759 if(!aod && AODEvent() && IsStandardAOD()) {
762 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
765 AliAODHandler* aodHandler = (AliAODHandler*)
766 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
767 if(aodHandler->GetExtensions()) {
768 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
769 AliAODEvent *aodFromExt = ext->GetAOD();
770 arrayCand=(TClonesArray*)aodFromExt->GetList()->FindObject(arrayName.Data());
773 arrayCand=(TClonesArray*)aod->GetList()->FindObject(arrayName.Data());
776 if(!aod || !arrayCand) {
777 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: Charm3Prong branch not found!\n");
782 Int_t runnumber = aod->GetRunNumber();
783 if(aod->GetTriggerMask()==0 &&
784 (runnumber>=195344 && runnumber<=195677)){
785 AliDebug(3,
"Event rejected because of null trigger mask");
792 if(!aod->GetPrimaryVertex()||TMath::Abs(aod->GetMagneticField())<0.001)
return;
794 Int_t countTreta1=0, countTreta03=0, countTreta05=0, countTreta16=0;
795 AliAODTracklets* tracklets=aod->GetTracklets();
796 Int_t nTr=tracklets->GetNumberOfTracklets();
797 for(Int_t iTr=0; iTr<nTr; iTr++){
798 Double_t theta=tracklets->GetTheta(iTr);
799 Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
800 if(eta>-0.3 && eta<0.3) countTreta03++;
801 if(eta>-0.5 && eta<0.5) countTreta05++;
802 if(eta>-1.0 && eta<1.0) countTreta1++;
803 if(eta>-1.6 && eta<1.6) countTreta16++;
807 Int_t vzeroMult=0, vzeroMultA=0, vzeroMultC=0;
808 Int_t vzeroMultEq=0, vzeroMultAEq=0, vzeroMultCEq=0;
809 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aod->GetVZEROData();
811 vzeroMultA =
static_cast<Int_t
>(vzeroAOD->GetMTotV0A());
812 vzeroMultC =
static_cast<Int_t
>(vzeroAOD->GetMTotV0C());
813 vzeroMult = vzeroMultA + vzeroMultC;
816 vzeroMultEq = vzeroMultAEq + vzeroMultCEq;
819 Int_t countMult = countTreta1;
840 Double_t countTreta1corr=countTreta1;
841 Double_t countCorr=countMult;
842 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
845 Bool_t isDataDrivenZvtxCorr=kTRUE;
846 Bool_t isVtxOk=kFALSE;
847 Int_t vzeroMultACorr=vzeroMultA, vzeroMultCCorr=vzeroMultC, vzeroMultCorr=vzeroMult;
848 Int_t vzeroMultAEqCorr=vzeroMultAEq, vzeroMultCEqCorr=vzeroMultCEq, vzeroMultEqCorr=vzeroMultEq;
850 if(vtx1->GetNContributors()>0){
860 isDataDrivenZvtxCorr=kFALSE;
863 Float_t zvtx = vtx1->GetZ();
864 isDataDrivenZvtxCorr=kFALSE;
865 vzeroMultACorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0A(vzeroMultA,zvtx));
866 vzeroMultCCorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0C(vzeroMultC,zvtx));
867 vzeroMultCorr = vzeroMultACorr + vzeroMultCCorr;
868 vzeroMultAEqCorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0A(vzeroMultAEq,zvtx));
869 vzeroMultCEqCorr =
static_cast<Int_t
>( AliESDUtils::GetCorrV0C(vzeroMultCEq,zvtx));
870 vzeroMultEqCorr = vzeroMultAEqCorr + vzeroMultCEqCorr;
879 if(isVtxOk && isDataDrivenZvtxCorr){
906 if(!isEvTrigNameRejected){
908 if(!isEvPileUpRejected){
910 if(!isEvNoVtxRejected){
912 if(!isEvVtxContribRejected){
914 if(!isEvVtxRangeRejected){
916 if(!isEvCentralityRejected){
926 TClonesArray *arrayMC=0;
927 AliAODMCHeader *mcHeader=0;
932 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
934 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: MC particles branch not found!\n");
938 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
940 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: MC header branch not found!\n");
970 Double_t nchWeight=1.0;
973 Int_t nChargedMCEta10=0, nChargedMCEta03=0, nChargedMCEta05=0, nChargedMCEta16=0, nChargedMCEtam37tm17=0, nChargedMCEta28t51=0;
974 Int_t nChargedMCPrimaryEta10=0, nChargedMCPrimaryEta03=0, nChargedMCPrimaryEta05=0, nChargedMCPrimaryEta16=0, nChargedMCPrimaryEtam37tm17=0, nChargedMCPrimaryEta28t51=0;
975 Int_t nChargedMCPhysicalPrimaryEta10=0, nChargedMCPhysicalPrimaryEta03=0, nChargedMCPhysicalPrimaryEta05=0, nChargedMCPhysicalPrimaryEta16=0, nChargedMCPhysicalPrimaryEtam37tm17=0, nChargedMCPhysicalPrimaryEta28t51=0;
976 for(Int_t i=0; i<arrayMC->GetEntriesFast(); i++){
977 AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
978 Int_t
charge = part->Charge();
979 Double_t eta = part->Eta();
980 Bool_t isPrim = part->IsPrimary();
981 Bool_t isPhysPrim = part->IsPhysicalPrimary();
983 if(eta>-0.3 && eta< 0.3) {
985 if(isPrim) nChargedMCPrimaryEta03++;
986 if(isPhysPrim) nChargedMCPhysicalPrimaryEta03++;
988 if(eta>-0.5 && eta< 0.5) {
990 if(isPrim) nChargedMCPrimaryEta05++;
991 if(isPhysPrim) nChargedMCPhysicalPrimaryEta05++;
993 if(eta>-1.0 && eta< 1.0) {
995 if(isPrim) nChargedMCPrimaryEta10++;
996 if(isPhysPrim) nChargedMCPhysicalPrimaryEta10++;
998 if(eta>-1.6 && eta< 1.6) {
1000 if(isPrim) nChargedMCPrimaryEta16++;
1001 if(isPhysPrim) nChargedMCPhysicalPrimaryEta16++;
1003 if(eta>-3.7 && eta<-1.7) {
1004 nChargedMCEtam37tm17++;
1005 if(isPrim) nChargedMCPrimaryEtam37tm17++;
1006 if(isPhysPrim) nChargedMCPhysicalPrimaryEtam37tm17++;
1008 if(eta> 2.8 && eta< 5.1) {
1009 nChargedMCEta28t51++;
1010 if(isPrim) nChargedMCPrimaryEta28t51++;
1011 if(isPhysPrim) nChargedMCPhysicalPrimaryEta28t51++;
1015 Int_t nChargedMC=nChargedMCEta10;
1016 Int_t nChargedMCPrimary=nChargedMCPrimaryEta10;
1017 Int_t nChargedMCPhysicalPrimary=nChargedMCPhysicalPrimaryEta10;
1022 Double_t tmpweight = 1.0;
1023 Double_t tmpXweight=nChargedMCPhysicalPrimary;
1026 if(tmpXweight<=0) tmpweight = 0.0;
1031 tmpweight = pMC>0 ? pMeas/pMC : 0.;
1033 nchWeight *= tmpweight;
1034 AliDebug(2,Form(
"Using Nch weights, Mult=%f Weight=%f\n",tmpXweight,nchWeight));
1040 nChargedMC = nChargedMCEta16 - nChargedMCEta10;
1041 nChargedMCPrimary = nChargedMCPrimaryEta16 - nChargedMCPrimaryEta10;
1042 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta16 - nChargedMCPhysicalPrimaryEta10;
1044 nChargedMC = nChargedMCEta05;
1045 nChargedMCPrimary = nChargedMCPrimaryEta05;
1046 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta05;
1048 nChargedMC = nChargedMCEta03;
1049 nChargedMCPrimary = nChargedMCPrimaryEta03;
1050 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta03;
1052 nChargedMC = nChargedMCEtam37tm17 + nChargedMCEta28t51;
1053 nChargedMCPrimary = nChargedMCPrimaryEtam37tm17 + nChargedMCPrimaryEta28t51;
1054 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEtam37tm17 + nChargedMCPhysicalPrimaryEta28t51;
1056 nChargedMC = nChargedMCEta28t51;
1057 nChargedMCPrimary = nChargedMCPrimaryEta28t51;
1058 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta28t51;
1062 if(nChargedMCPhysicalPrimary>0){
1078 Int_t nCand = arrayCand->GetEntriesFast();
1079 Int_t nSelectedNoPID=0,nSelectedPID=0,nSelectedInMassPeak=0;
1080 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1081 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
1082 Double_t mDstarPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
1085 UInt_t pdgDgDStartoD0pi[2]={421,211};
1087 Double_t aveMult=0.;
1088 Double_t nSelCand=0.;
1089 for (Int_t iCand = 0; iCand < nCand; iCand++) {
1100 Double_t ptCand = d->Pt();
1103 if(!isFidAcc)
continue;
1108 labD = dCascade->
MatchToMC(
fPdgMeson,421,(Int_t*)pdgDgDStartoD0pi,(Int_t*)pdgDau,arrayMC);
1110 labD = d->MatchToMC(
fPdgMeson,arrayMC,nDau,(Int_t*)pdgDau);
1114 AliAODMCParticle *parD = (AliAODMCParticle*)arrayMC->At(labD);
1115 Double_t
massD = parD->M();
1116 Double_t ptD = parD->Pt();
1123 if(passTopolCuts==0)
continue;
1130 Double_t multForCand = countCorr;
1137 for(Int_t iDau=0; iDau<nDau; iDau++){
1138 AliAODTrack *t = NULL;
1139 if(
fPdgMeson==413){ t = (AliAODTrack*)d0fromDstar->GetDaughter(iDau); }
1140 else{ t = (AliAODTrack*)d->GetDaughter(iDau); }
1142 if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
1143 if(multForCand>0) multForCand-=1;
1147 Bool_t isPrimary=kTRUE;
1148 Double_t trueImpParXY=9999.;
1149 Double_t impparXY=d->
ImpParXY()*10000.;
1153 mass[0]=d->InvMass(nDau,pdgDau);
1155 if(TMath::Abs(mass[0]-mDplusPDG)<0.02) nSelectedInMassPeak++;
1157 UInt_t pdgdaughtersD0[2]={211,321};
1158 UInt_t pdgdaughtersD0bar[2]={321,211};
1159 mass[0]=d->InvMass(2,pdgdaughtersD0);
1160 mass[1]=d->InvMass(2,pdgdaughtersD0bar);
1161 if(TMath::Abs(mass[0]-mD0PDG)<0.02 || TMath::Abs(mass[1]-mD0PDG)<0.02 ) nSelectedInMassPeak++;
1166 if(TMath::Abs(mass[0]-(mDstarPDG-mD0PDG))<0.0015) nSelectedInMassPeak++;
1168 for(Int_t iHyp=0; iHyp<2; iHyp++){
1169 if(mass[iHyp]<0.)
continue;
1170 Double_t invMass=mass[iHyp];
1171 Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
1176 labD = dCascade->
MatchToMC(
fPdgMeson,421,(Int_t*)pdgDgDStartoD0pi,(Int_t*)pdgDau,arrayMC);
1178 labD = d->MatchToMC(
fPdgMeson,arrayMC,nDau,(Int_t*)pdgDau);
1183 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1184 Int_t code=partD->GetPdgCode();
1186 if(Origin==5) isPrimary=kFALSE;
1187 if(code<0 && iHyp==0) fillHisto=kFALSE;
1188 if(code>0 && iHyp==1) fillHisto=kFALSE;
1197 Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
1198 if(fillHisto && passAllCuts){
1215 if(iHyp==0 && !(passTopolCuts&1))
continue;
1216 if(iHyp==1 && !(passTopolCuts&2))
continue;
1221 Double_t arrayForSparseSoNoPid[4]={ptCand, invMass, spherocity, multForCand};
1225 if(iHyp==0 && !(passAllCuts&1))
continue;
1226 if(iHyp==1 && !(passAllCuts&2))
continue;
1229 aveMult+=multForCand;
1234 Double_t arrayForSparseSowithMultUnncorr[5]={ptCand, invMass, spherocity, multForCand, (Double_t)countTreta1};
1239 Double_t arrayForSparseSo[4]={ptCand, invMass, spherocity, multForCand};
1265 if(nSelectedPID>0) {
1280 if(nSelectedInMassPeak>0) {
1314 "Mass vs. pt vs.imppar - All",
1317 "Mass vs. pt vs.imppar - promptD",
1320 "Mass vs. pt vs.imppar - DfromB",
1323 "Mass vs. pt vs.true imppar -DfromB",
1326 "Mass vs. pt vs.imppar - backgr.",
1328 for(Int_t i=0; i<5;i++){
1338 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity: Terminate() \n");
1340 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1342 printf(
"ERROR: fOutput not available\n");
1348 printf(
"ERROR: fHistNEvents not available\n");
1351 printf(
"Number of Analyzed Events = %d\n",(Int_t)
fHistNEvents->GetBinContent(3));
1363 Int_t runNo =
event->GetRunNumber();
1367 if (runNo>195343 && runNo<195484) period = 0;
1368 if (runNo>195528 && runNo<195678) period = 1;
1369 if (period < 0 || period > 1)
return 0;
1372 if(runNo>114930 && runNo<117223) period = 0;
1373 if(runNo>119158 && runNo<120830) period = 1;
1374 if(runNo>122373 && runNo<126438) period = 2;
1375 if(runNo>127711 && runNo<130841) period = 3;
1376 if(period<0 || period>3)
return 0;
1391 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1392 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1393 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1394 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1395 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1396 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1397 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1398 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1400 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1401 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1402 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1403 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1404 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1405 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1406 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1407 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1412 for(Int_t i=0; i<81; i++){
1423 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1425 Double_t
mass = partD->M();
1426 Double_t pt = partD->Pt();
1427 Double_t rapid = partD->Y();
1434 Double_t arrayMCRecoPrompt[4] = {pt, countMult, spherocity, rapid};
1440 Double_t arrayMCRecoFeeddown[4] = {pt, countMult, spherocity, rapid};
1444 Double_t arrayMCReco[4] = {pt, countMult, spherocity, rapid};
1455 Int_t totPart = arrayMC->GetEntriesFast();
1463 Double_t zMCVertex = mcHeader->GetVtxZ();
1465 for(Int_t iPart=0; iPart<totPart; iPart++){
1466 AliAODMCParticle* mcGenPart =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(iPart));
1468 if (TMath::Abs(mcGenPart->GetPdgCode()) ==
fPdgMeson){
1472 Bool_t isGoodDecay=kFALSE;
1473 Int_t labDau[4]={-1,-1,-1,-1};
1474 Bool_t isInAcc = kFALSE;
1475 Bool_t isFidAcc = kFALSE;
1479 if(mcGenPart->GetNDaughters()!=2)
continue;
1480 if(deca==1) isGoodDecay=kTRUE;
1483 if(deca>0) isGoodDecay=kTRUE;
1486 if(deca==1) isGoodDecay=kTRUE;
1489 if(deca==1) isGoodDecay=kTRUE;
1496 Double_t pt = mcGenPart->Pt();
1497 Double_t rapid = mcGenPart->Y();
1506 Double_t arrayMCGenPrompt[4] = {pt, countMult, spherocity, rapid};
1512 Double_t arrayMCGenFeeddown[4] = {pt, countMult, spherocity, rapid};
1525 for (Int_t iProng = 0; iProng<nProng; iProng++){
1526 AliAODMCParticle* mcPartDaughter=
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(labDau[iProng]));
1527 if(!mcPartDaughter)
return kFALSE;
1528 Double_t eta = mcPartDaughter->Eta();
1529 Double_t pt = mcPartDaughter->Pt();
Double_t fetaMin
pt limits for acceptance step
Bool_t IsEventRejectedDueToCentrality() const
Bool_t CheckGenAcc(TClonesArray *arrayMC, Int_t nProng, Int_t *labDau)
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
static Int_t CheckDplusDecay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
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
void FillMCGenAccHistos(TClonesArray *arrayMC, AliAODMCHeader *mcHeader, Double_t countMult, Double_t spherocity)
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
static Int_t CheckDstarDecay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
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 ...
THnSparseD * fMCAccGenFeeddown
histo for StepMCGenAcc for D meson prompt
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
THnSparseD * fMCRecoFeeddown
histo for StepMCReco for D meson feeddown
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
static Int_t CheckDsDecay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
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)
static Int_t CheckOrigin(TClonesArray *arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE)
Double_t GetMaxVtxZ() const
void FillMCMassHistos(TClonesArray *arrayMC, Int_t labD, Double_t countMult, Double_t spherocity)
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]
histo for StepMCReco for D meson Both Prompt Feeddown
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
THnSparseD * fMCRecoPrompt
histo for StepMCGenAcc for D meson feeddown
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.
static Int_t CheckD0Decay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
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
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)
THnSparseD * fMCRecoBothPromptFD
histo for StepMCReco for D meson feeddown
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
TList * fOutputEffCorr
list of profile histos for z-vtx correction
Double_t fPtAccCut
eta limits for acceptance step
TList * fOutputCounters
list of cuts
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
THnSparseD * fMCAccGenPrompt
THnSparse histograms for Spherocity studies.
static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
Double_t fEtaAccCut
flag for quark/hadron level identification of prompt and feeddown
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
TH1F * fHistNEvents
list send on output slot 5
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvSel
hist. for V0M raw mult vs V0M equalized multiplicity