24 #include <TClonesArray.h>
28 #include <TDatabasePDG.h>
32 #include <THnSparse.h>
34 #include "AliAnalysisManager.h"
40 #include "AliAODHandler.h"
41 #include "AliAODEvent.h"
42 #include "AliAODVertex.h"
43 #include "AliAODTrack.h"
47 #include "AliAnalysisTaskSE.h"
51 #include "AliAODVZERO.h"
52 #include "AliESDUtils.h"
66 fHistNtrEta16vsNtrEta1EvSel(0),
67 fHistNtrEta05vsNtrEta1EvSel(0),
68 fHistNtrEta03vsNtrEta1EvSel(0),
69 fHistNtrEtaV0AvsNtrEta1EvSel(0),
70 fHistNtrEtaV0MvsNtrEta1EvSel(0),
71 fHistNtrEtaV0AvsV0AEqEvSel(0),
72 fHistNtrEtaV0MvsV0MEqEvSel(0),
73 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
74 fHistMultCorrvsMultRawEvSel(0),
75 fHistNtrEta16vsNtrEta1EvWithCand(0),
76 fHistNtrEta05vsNtrEta1EvWithCand(0),
77 fHistNtrEta03vsNtrEta1EvWithCand(0),
78 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
79 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
80 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
81 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
82 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
83 fHistMultCorrvsMultRawEvWithCand(0),
84 fHistNtrEta16vsNtrEta1EvWithD(0),
85 fHistNtrEta05vsNtrEta1EvWithD(0),
86 fHistNtrEta03vsNtrEta1EvWithD(0),
87 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
88 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
89 fHistNtrEtaV0AvsV0AEqEvWithD(0),
90 fHistNtrEtaV0MvsV0MEqEvWithD(0),
91 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
92 fHistMultCorrvsMultRawEvWithD(0),
94 fHistNtrCorrVsZvtx(0),
96 fHistNtrCorrVsNchMC(0),
97 fHistNtrVsNchMCPrimary(0),
98 fHistNtrCorrVsNchMCPrimary(0),
99 fHistNtrVsNchMCPhysicalPrimary(0),
100 fHistNtrCorrVsNchMCPhysicalPrimary(0),
101 fHistGenPrimaryParticlesInelGt0(0),
102 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
103 fHistNtrUnCorrPSSel(0),
104 fHistNtrUnCorrPSTrigSel(0),
105 fHistNtrUnCorrPSTrigPileUpSel(0),
106 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
107 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
108 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
109 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
110 fHistNtrUnCorrEvSel(0),
111 fHistNtrUnCorrEvWithCand(0),
112 fHistNtrUnCorrEvWithD(0),
113 fHistNtrCorrPSSel(0),
114 fHistNtrCorrEvSel(0),
115 fHistNtrCorrEvWithCand(0),
116 fHistNtrCorrEvWithD(0),
118 fPtVsMassVsMultNoPid(0),
119 fPtVsMassVsMultUncorr(0),
120 fPtVsMassVsMultPart(0),
121 fPtVsMassVsMultAntiPart(0),
122 fPtVsMassVsMultMC(0),
124 fLowmasslimit(1.765),
129 fCounterCandidates(0),
132 fLowerImpPar(-2000.),
133 fHigherImpPar(2000.),
138 fSubtractTrackletsFromDau(kFALSE),
139 fKeepCorrPlots(kFALSE),
146 fMultiplicityEstimator(kNtrk10),
147 fMCPrimariesEstimator(kEta10),
148 fDoVZER0ParamVertexCorr(1),
164 fHistNtrEta16vsNtrEta1EvSel(0),
165 fHistNtrEta05vsNtrEta1EvSel(0),
166 fHistNtrEta03vsNtrEta1EvSel(0),
167 fHistNtrEtaV0AvsNtrEta1EvSel(0),
168 fHistNtrEtaV0MvsNtrEta1EvSel(0),
169 fHistNtrEtaV0AvsV0AEqEvSel(0),
170 fHistNtrEtaV0MvsV0MEqEvSel(0),
171 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
172 fHistMultCorrvsMultRawEvSel(0),
173 fHistNtrEta16vsNtrEta1EvWithCand(0),
174 fHistNtrEta05vsNtrEta1EvWithCand(0),
175 fHistNtrEta03vsNtrEta1EvWithCand(0),
176 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
177 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
178 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
179 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
180 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
181 fHistMultCorrvsMultRawEvWithCand(0),
182 fHistNtrEta16vsNtrEta1EvWithD(0),
183 fHistNtrEta05vsNtrEta1EvWithD(0),
184 fHistNtrEta03vsNtrEta1EvWithD(0),
185 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
186 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
187 fHistNtrEtaV0AvsV0AEqEvWithD(0),
188 fHistNtrEtaV0MvsV0MEqEvWithD(0),
189 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
190 fHistMultCorrvsMultRawEvWithD(0),
192 fHistNtrCorrVsZvtx(0),
194 fHistNtrCorrVsNchMC(0),
195 fHistNtrVsNchMCPrimary(0),
196 fHistNtrCorrVsNchMCPrimary(0),
197 fHistNtrVsNchMCPhysicalPrimary(0),
198 fHistNtrCorrVsNchMCPhysicalPrimary(0),
199 fHistGenPrimaryParticlesInelGt0(0),
200 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
201 fHistNtrUnCorrPSSel(0),
202 fHistNtrUnCorrPSTrigSel(0),
203 fHistNtrUnCorrPSTrigPileUpSel(0),
204 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
205 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
206 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
207 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
208 fHistNtrUnCorrEvSel(0),
209 fHistNtrUnCorrEvWithCand(0),
210 fHistNtrUnCorrEvWithD(0),
211 fHistNtrCorrPSSel(0),
212 fHistNtrCorrEvSel(0),
213 fHistNtrCorrEvWithCand(0),
214 fHistNtrCorrEvWithD(0),
216 fPtVsMassVsMultNoPid(0),
217 fPtVsMassVsMultUncorr(0),
218 fPtVsMassVsMultPart(0),
219 fPtVsMassVsMultAntiPart(0),
220 fPtVsMassVsMultMC(0),
222 fLowmasslimit(1.765),
224 fRDCutsAnalysis(cuts),
227 fCounterCandidates(0),
230 fLowerImpPar(-2000.),
231 fHigherImpPar(2000.),
234 fisPPbData(switchPPb),
236 fSubtractTrackletsFromDau(kFALSE),
237 fKeepCorrPlots(kFALSE),
244 fMultiplicityEstimator(kNtrk10),
245 fMCPrimariesEstimator(kEta10),
246 fDoVZER0ParamVertexCorr(1),
260 Int_t nInvMassBins = (
Int_t)(0.7/MassBinSize+0.5);
261 Double_t massDs = TDatabasePDG::Instance()->GetParticle(431)->Mass();
273 DefineOutput(1,TList::Class());
275 DefineOutput(2,TList::Class());
277 DefineOutput(3,TList::Class());
279 DefineOutput(4,TList::Class());
295 for(
Int_t i=0; i<4; i++) {
299 for(
Int_t i=0; i<5; i++){
309 if(uplimit>lowlimit){
313 AliError(
"Wrong mass limits: upper value should be larger than lower one");
319 Double_t mass=TDatabasePDG::Instance()->GetParticle(TMath::Abs(pdg))->Mass();
327 printf(
"AnalysisTaskSEDvsMultiplicity_0::Init() \n");
332 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");
357 copycut->SetName(
"AnalysisCutsDs");
375 period[0]=
"LHC16qt_1stBunch";
376 period[1]=
"LHC16qt_2ndBunch";
377 period[2]=
"LHC16qt_3rdBunch";
378 period[3]=
"LHC16qt_4thBunch";
390 for(
Int_t i=0; i<nProfiles; i++){
393 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
408 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects() \n");
413 fOutput->SetName(
"OutputHistos");
415 Int_t nMultBins = 200;
418 Int_t nMultBinsNtrk = nMultBins;
419 Float_t lastMultBinNtrk = lastMultBin;
420 Int_t nMultBinsV0 = 400;
422 const char *estimatorName=
"tracklets";
425 lastMultBinNtrk = 374.5;
426 nMultBins = nMultBinsNtrk;
427 lastMultBin = lastMultBinNtrk;
430 nMultBins = nMultBinsV0;
431 lastMultBin = lastMultBinV0;
432 estimatorName =
"vzero";
435 fHistNtrUnCorrPSSel =
new TH1F(
"hNtrUnCorrPSSel",Form(
"Uncorrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
436 fHistNtrUnCorrPSTrigSel =
new TH1F(
"hNtrUnCorrPSTrigSel",Form(
"Uncorrected %s multiplicity for PS + trigger name selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
437 fHistNtrUnCorrPSTrigPileUpSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
438 fHistNtrUnCorrPSTrigPileUpVtxSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
439 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);
440 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);
441 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);
442 fHistNtrUnCorrEvSel =
new TH1F(
"hNtrUnCorrEvSel",Form(
"Uncorrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
443 fHistNtrUnCorrEvWithCand =
new TH1F(
"hNtrUnCorrEvWithCand",Form(
"Uncorrected %s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
444 fHistNtrUnCorrEvWithD =
new TH1F(
"hNtrUnCorrEvWithD",Form(
"Uncorrected %s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
445 fHistNtrCorrPSSel =
new TH1F(
"hNtrCorrPSSel",Form(
"Corrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
446 fHistNtrCorrEvSel =
new TH1F(
"hNtrCorrEvSel",Form(
"Corrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
447 fHistNtrCorrEvWithCand =
new TH1F(
"hNtrCorrEvWithCand", Form(
"%s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
448 fHistNtrCorrEvWithD =
new TH1F(
"hNtrCorrEvWithD", Form(
"%s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
451 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);
452 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);
453 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);
454 fHistNtrEtaV0AvsNtrEta1EvSel =
new TH2F(
"hNtrEtaV0AvsNtrEta1EvSel",
"Uncorrected Eta-V0A vs Eta1.0 (events selected); Ntracklets #eta<1.0; Multiplicity V0A",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
455 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);
456 fHistNtrEtaV0AvsV0AEqEvSel =
new TH2F(
"hNtrEtaV0AvsV0AEqEvSel",
"Corrected V0A vs corrected V0A-Equalized (events selected); Vzero-A; Vzero-A Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
457 fHistNtrEtaV0MvsV0MEqEvSel =
new TH2F(
"hNtrEtaV0MvsV0MEqEvSel",
"Corrected V0M vs corrected V0M-Equalized (events selected); Vzero-M; Vzero-M Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
458 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);
459 fHistMultCorrvsMultRawEvSel =
new TH2F(
"hMultCorrvsMultRawEvSel",Form(
"Corrected multiplicity vs uncorrected multiplicity (events selected); %s corrected; %s",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
461 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);
462 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);
463 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);
464 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);
465 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);
466 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);
467 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);
468 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);
469 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);
472 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);
473 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);
474 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);
475 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);
476 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);
477 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);
478 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);
479 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);
480 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);
483 fHistNtrVsZvtx =
new TH2F(
"hNtrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
484 fHistNtrCorrVsZvtx =
new TH2F(
"hNtrCorrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
486 fHistNtrVsNchMC =
new TH2F(
"hNtrVsNchMC",Form(
"N%s vs NchMC; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
487 fHistNtrCorrVsNchMC =
new TH2F(
"hNtrCorrVsNchMC",Form(
"N%s vs Nch; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
489 fHistNtrVsNchMCPrimary =
new TH2F(
"hNtrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch (Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
490 fHistNtrCorrVsNchMCPrimary =
new TH2F(
"hNtrCorrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch(Primary) ;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
492 fHistNtrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrVsNchMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
493 fHistNtrCorrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrCorrVsMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
495 fHistGenPrimaryParticlesInelGt0 =
new TH1F(
"hGenPrimaryParticlesInelGt0",
"Multiplcity of generated charged particles ; Nparticles ; Entries",nMultBins,firstMultBin,lastMultBin);
497 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);
570 fHistNEvents =
new TH1F(
"fHistNEvents",
"number of events ",11,-0.5,10.5);
571 fHistNEvents->GetXaxis()->SetBinLabel(1,
"nEvents total");
572 fHistNEvents->GetXaxis()->SetBinLabel(2,
"nEvents with Z vertex");
573 fHistNEvents->GetXaxis()->SetBinLabel(3,
"nEvents selected");
574 fHistNEvents->GetXaxis()->SetBinLabel(4,
"Rejected due to trigger");
575 fHistNEvents->GetXaxis()->SetBinLabel(5,
"Rejected due to phys sel");
576 fHistNEvents->GetXaxis()->SetBinLabel(6,
"Rejected due to vertex cuts");
577 fHistNEvents->GetXaxis()->SetBinLabel(7,
"Rejected due to pileup");
578 fHistNEvents->GetXaxis()->SetBinLabel(8,
"Total no. of candidate");
579 fHistNEvents->GetXaxis()->SetBinLabel(9,
"no. of cand wo bitmask");
580 fHistNEvents->GetXaxis()->SetBinLabel(10,
"D after cuts (No PID)");
581 fHistNEvents->GetXaxis()->SetBinLabel(11,
"D after cuts + PID)");
587 fPtVsMassVsMult=
new TH3F(
"hPtVsMassvsMult",
"D 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.);
589 fPtVsMassVsMultNoPid=
new TH3F(
"hPtVsMassvsMultNoPid",
"D 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.);
591 fPtVsMassVsMultUncorr=
new TH3F(
"hPtVsMassvsMultUncorr",
"D 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.);
593 fPtVsMassVsMultPart=
new TH3F(
"hPtVsMassvsMultPart",
"D 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.);
595 fPtVsMassVsMultAntiPart=
new TH3F(
"hPtVsMassvsMultAntiPart",
"D 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.);
597 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.);
653 if (matchingAODdeltaAODlevel<0 || (matchingAODdeltaAODlevel==0 &&
fAODProtection==1)) {
660 TClonesArray *arrayCand = 0;
666 arrayName=
"Charm3Prong";
667 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=211;
672 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=0;
677 pdgDau[0]=321; pdgDau[1]=211; pdgDau[2]=0;
681 arrayName=
"Charm3Prong";
682 pdgDau[0]=321; pdgDau[1]=321; pdgDau[2]=211;
687 if(!aod && AODEvent() && IsStandardAOD()) {
693 AliAODHandler* aodHandler = (AliAODHandler*)
694 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
695 if(aodHandler->GetExtensions()) {
696 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
698 arrayCand=(TClonesArray*)aodFromExt->GetList()->FindObject(arrayName.Data());
701 arrayCand=(TClonesArray*)aod->GetList()->FindObject(arrayName.Data());
704 if(!aod || !arrayCand) {
705 printf(
"AliAnalysisTaskSEDvsMultiplicity::UserExec: Charm3Prong branch not found!\n");
710 Int_t runnumber = aod->GetRunNumber();
711 if(aod->GetTriggerMask()==0 &&
712 (runnumber>=195344 && runnumber<=195677)){
713 AliDebug(3,
"Event rejected because of null trigger mask");
721 if(!aod->GetPrimaryVertex()||TMath::Abs(aod->GetMagneticField())<0.001)
return;
727 Int_t countTreta1=0, countTreta03=0, countTreta05=0, countTreta16=0;
728 AliAODTracklets* tracklets=aod->GetTracklets();
729 Int_t nTr=tracklets->GetNumberOfTracklets();
730 for(
Int_t iTr=0; iTr<nTr; iTr++){
731 Double_t theta=tracklets->GetTheta(iTr);
732 Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
733 if(eta>-0.3 && eta<0.3) countTreta03++;
734 if(eta>-0.5 && eta<0.5) countTreta05++;
735 if(eta>-1.0 && eta<1.0) countTreta1++;
736 if(eta>-1.6 && eta<1.6) countTreta16++;
740 Int_t vzeroMult=0, vzeroMultA=0, vzeroMultC=0;
741 Int_t vzeroMultEq=0, vzeroMultAEq=0, vzeroMultCEq=0;
742 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aod->GetVZEROData();
744 vzeroMultA =
static_cast<Int_t>(vzeroAOD->GetMTotV0A());
745 vzeroMultC =
static_cast<Int_t>(vzeroAOD->GetMTotV0C());
746 vzeroMult = vzeroMultA + vzeroMultC;
749 vzeroMultEq = vzeroMultAEq + vzeroMultCEq;
752 Int_t countMult = countTreta1;
765 Double_t countTreta1corr=countTreta1;
767 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
770 Bool_t isDataDrivenZvtxCorr=kTRUE;
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;
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){
836 if(!isEvTrigNameRejected){
838 if(!isEvPileUpRejected){
840 if(!isEvNoVtxRejected){
842 if(!isEvVtxContribRejected){
844 if(!isEvVtxRangeRejected){
846 if(!isEvCentralityRejected){
874 TClonesArray *arrayMC=0;
875 AliAODMCHeader *mcHeader=0;
882 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
884 printf(
"AliAnalysisTaskSEDvsMultiplicity::UserExec: MC particles branch not found!\n");
888 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
890 printf(
"AliAnalysisTaskSEDvsMultiplicity::UserExec: MC header branch not found!\n");
899 Int_t nChargedMCEta10=0, nChargedMCEta03=0, nChargedMCEta05=0, nChargedMCEta16=0, nChargedMCEtam37tm17=0, nChargedMCEta28t51=0;
900 Int_t nChargedMCPrimaryEta10=0, nChargedMCPrimaryEta03=0, nChargedMCPrimaryEta05=0, nChargedMCPrimaryEta16=0, nChargedMCPrimaryEtam37tm17=0, nChargedMCPrimaryEta28t51=0;
901 Int_t nChargedMCPhysicalPrimaryEta10=0, nChargedMCPhysicalPrimaryEta03=0, nChargedMCPhysicalPrimaryEta05=0, nChargedMCPhysicalPrimaryEta16=0, nChargedMCPhysicalPrimaryEtam37tm17=0, nChargedMCPhysicalPrimaryEta28t51=0;
902 for(
Int_t i=0; i<arrayMC->GetEntriesFast(); i++){
903 AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
906 Bool_t isPrim = part->IsPrimary();
907 Bool_t isPhysPrim = part->IsPhysicalPrimary();
909 if(eta>-0.3 && eta< 0.3) {
911 if(isPrim) nChargedMCPrimaryEta03++;
912 if(isPhysPrim) nChargedMCPhysicalPrimaryEta03++;
914 if(eta>-0.5 && eta< 0.5) {
916 if(isPrim) nChargedMCPrimaryEta05++;
917 if(isPhysPrim) nChargedMCPhysicalPrimaryEta05++;
919 if(eta>-1.0 && eta< 1.0) {
921 if(isPrim) nChargedMCPrimaryEta10++;
922 if(isPhysPrim) nChargedMCPhysicalPrimaryEta10++;
924 if(eta>-1.6 && eta< 1.6) {
926 if(isPrim) nChargedMCPrimaryEta16++;
927 if(isPhysPrim) nChargedMCPhysicalPrimaryEta16++;
929 if(eta>-3.7 && eta<-1.7) {
930 nChargedMCEtam37tm17++;
931 if(isPrim) nChargedMCPrimaryEtam37tm17++;
932 if(isPhysPrim) nChargedMCPhysicalPrimaryEtam37tm17++;
934 if(eta> 2.8 && eta< 5.1) {
935 nChargedMCEta28t51++;
936 if(isPrim) nChargedMCPrimaryEta28t51++;
937 if(isPhysPrim) nChargedMCPhysicalPrimaryEta28t51++;
941 Int_t nChargedMC=nChargedMCEta10;
942 Int_t nChargedMCPrimary=nChargedMCPrimaryEta10;
943 Int_t nChargedMCPhysicalPrimary=nChargedMCPhysicalPrimaryEta10;
949 Double_t tmpXweight=nChargedMCPhysicalPrimary;
952 if(tmpXweight<=0) tmpweight = 0.0;
957 tmpweight = pMC>0 ? pMeas/pMC : 0.;
959 nchWeight *= tmpweight;
960 AliDebug(2,Form(
"Using Nch weights, Mult=%f Weight=%f\n",tmpXweight,nchWeight));
984 nChargedMC = nChargedMCEta16 - nChargedMCEta10;
985 nChargedMCPrimary = nChargedMCPrimaryEta16 - nChargedMCPrimaryEta10;
986 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta16 - nChargedMCPhysicalPrimaryEta10;
988 nChargedMC = nChargedMCEta05;
989 nChargedMCPrimary = nChargedMCPrimaryEta05;
990 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta05;
992 nChargedMC = nChargedMCEta03;
993 nChargedMCPrimary = nChargedMCPrimaryEta03;
994 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta03;
996 nChargedMC = nChargedMCEtam37tm17 + nChargedMCEta28t51;
997 nChargedMCPrimary = nChargedMCPrimaryEtam37tm17 + nChargedMCPrimaryEta28t51;
998 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEtam37tm17 + nChargedMCPhysicalPrimaryEta28t51;
1000 nChargedMC = nChargedMCEta28t51;
1001 nChargedMCPrimary = nChargedMCPrimaryEta28t51;
1002 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta28t51;
1006 if(nChargedMCPhysicalPrimary>0){
1022 Int_t nCand = arrayCand->GetEntriesFast();
1023 Int_t nSelectedNoPID=0,nSelectedPID=0,nSelectedInMassPeak=0;
1024 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1025 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
1026 Double_t mDstarPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
1027 Double_t mDsPDG = TDatabasePDG::Instance()->GetParticle(431)->Mass();
1030 UInt_t pdgDgDStartoD0pi[2]={421,211};
1034 for (
Int_t iCand = 0; iCand < nCand; iCand++) {
1048 if(!isFidAcc)
continue;
1062 if(
fPdgMeson != 431 && passTopolCuts==0)
continue;
1065 if(
fPdgMeson == 431 && passAllCuts==0)
continue;
1077 for(
Int_t iDau=0; iDau<nDau; iDau++){
1078 AliAODTrack *t = NULL;
1079 if(
fPdgMeson==413){ t = (AliAODTrack*)d0fromDstar->GetDaughter(iDau); }
1080 else{ t = (AliAODTrack*)d->GetDaughter(iDau); }
1082 if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
1083 if(multForCand>0) multForCand-=1;
1093 mass[0]=d->InvMass(nDau,pdgDau);
1095 if(TMath::Abs(mass[0]-mDplusPDG)<0.02) nSelectedInMassPeak++;
1097 UInt_t pdgdaughtersD0[2]={211,321};
1098 UInt_t pdgdaughtersD0bar[2]={321,211};
1099 mass[0]=d->InvMass(2,pdgdaughtersD0);
1100 mass[1]=d->InvMass(2,pdgdaughtersD0bar);
1101 if(TMath::Abs(mass[0]-mD0PDG)<0.02 || TMath::Abs(mass[1]-mD0PDG)<0.02 ) nSelectedInMassPeak++;
1106 if(TMath::Abs(mass[0]-(mDstarPDG-mD0PDG))<0.0015) nSelectedInMassPeak++;
1108 UInt_t pdgDsKKpi[3]={321,321,211};
1109 UInt_t pdgDspiKK[3]={211,321,321};
1110 mass[0]=d->InvMass(nDau,pdgDsKKpi);
1111 mass[1]=d->InvMass(nDau,pdgDspiKK);
1112 if(TMath::Abs(mass[0]-mDsPDG)<0.02 || TMath::Abs(mass[1]-mDsPDG)<0.02 ) nSelectedInMassPeak++;
1115 for(
Int_t iHyp=0; iHyp<2; iHyp++){
1116 if(mass[iHyp]<0.)
continue;
1118 Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
1130 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1131 Int_t code=partD->GetPdgCode();
1132 if(
CheckOrigin(arrayMC,partD)==5) isPrimary=kFALSE;
1133 if(code<0 && iHyp==0) fillHisto=kFALSE;
1134 if(code>0 && iHyp==1) fillHisto=kFALSE;
1143 Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
1144 if(fillHisto && passAllCuts){
1161 if(iHyp==0 && !(passTopolCuts&1))
continue;
1162 if(iHyp==1 && !(passTopolCuts&2))
continue;
1168 if(iHyp==0 && !(passAllCuts&1))
continue;
1169 if(iHyp==1 && !(passAllCuts&2))
continue;
1172 if(iHyp==0 && !(passAllCuts&4))
continue;
1173 if(iHyp==1 && !(passAllCuts&8))
continue;
1177 aveMult+=multForCand;
1210 if(nSelectedPID>0) {
1225 if(nSelectedInMassPeak>0) {
1258 "Mass vs. pt vs.imppar - All",
1261 "Mass vs. pt vs.imppar - promptD",
1264 "Mass vs. pt vs.imppar - DfromB",
1267 "Mass vs. pt vs.true imppar -DfromB",
1270 "Mass vs. pt vs.imppar - backgr.",
1272 for(
Int_t i=0; i<5;i++){
1282 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity: Terminate() \n");
1286 printf(
"ERROR: fOutput not available\n");
1292 printf(
"ERROR: fHistNEvents not available\n");
1295 printf(
"Number of Analyzed Events = %d\n",(
Int_t)
fHistNEvents->GetBinContent(3));
1305 Int_t pdgGranma = 0;
1307 mother = mcPartCandidate->GetMother();
1309 Int_t abspdgGranma =0;
1314 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1316 pdgGranma = mcGranma->GetPdgCode();
1317 abspdgGranma = TMath::Abs(pdgGranma);
1318 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1322 mother = mcGranma->GetMother();
1324 AliError(
"Failed casting the mother particle!");
1329 if(isFromB)
return 5;
1342 Int_t runNo =
event->GetRunNumber();
1348 if (runNo>195343 && runNo<195484) period = 0;
1349 else if (runNo>195528 && runNo<195678) period = 1;
1350 if (period < 0 || period > 1)
return 0;
1353 if ((runNo>=265499 && runNo<=265525) || (runNo>=265309 && runNo<=265387)) period = 0;
1354 else if (runNo == 265435) period = 1;
1355 else if (runNo>=265388 && runNo<=265427) period = 2;
1356 else if (runNo>=267163 && runNo<=267166) period = 3;
1357 if (period < 0 || period > 3)
return 0;
1361 if(runNo>114930 && runNo<117223) period = 0;
1362 if(runNo>119158 && runNo<120830) period = 1;
1363 if(runNo>122373 && runNo<126438) period = 2;
1364 if(runNo>127711 && runNo<130851) period = 3;
1365 if(period<0 || period>3)
return 0;
1380 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1381 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1382 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1383 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1384 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1385 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1386 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1387 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1389 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1390 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1391 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1392 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1393 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1394 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1395 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1396 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1401 for(
Int_t i=0; i<81; i++){
1415 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
Bool_t IsEventRejectedDueToCentrality() const
TH2F * fHistMultCorrvsMultRawEvSel
!hist. for multiplicity with and w/o corrections
TH3F * fPtVsMassVsMult
! hist. of Pt vs Mult vs. mass (
Bool_t IsEventRejectedDueToZVertexOutsideFiducialRegion() const
Int_t fAODProtection
flag to look at the correlation of different estimators (eta ranges)
TH2F * fHistNtrCorrVsZvtx
! hist of ntracklets vs Zvertex
Int_t fDoVZER0ParamVertexCorr
Definition of the primaries estimator eta range: |eta|<1.0=0, -1.6<|eta|<1.0=1, VZEROrange=2.
TH2F * fHistNtrVsNchMCPhysicalPrimary
! hist of ntracklets vs Nch (Physical Primary)
TH2F * fHistNtrEtaV0MvsNtrEta1EvSel
!hist. for Ntracklets in eta-V0M vs. eta<1.
TH1F * fHistNtrCorrEvSel
! hist. of ntracklets for selected events
TH2F * fHistNtrEta05vsNtrEta1EvSel
!hist. for Ntracklets in eta<0.5 vs. eta<1.
Bool_t IsEventRejectedDueToNotRecoVertex() const
TH3F * fPtVsMassVsMultPart
! hist. of Pt vs Mult vs. mass (particle)
TH2F * fHistNtrEtaV0MvsNtrEta1EvWithD
!hist. for Ntracklets in eta-V0M vs. eta<1. for events with a candidate in D mass peak ...
TH2F * fHistNtrVsNchMCPrimary
! hist of ntracklets vs Nch (Primary)
TH2F * fHistMultCorrvsMultRawEvWithD
!hist. for multiplicity with and w/o corrections for events with a candidate in D mass peak ...
TH1F * fHistNtrUnCorrPSTrigPileUpVtxSel
! hist. of ntracklets for physics selection + trigger name + pileup + with-vertex selected events ...
TH2F * fHistNtrEta03vsNtrEta1EvSel
!hist. for Ntracklets in eta<0.3 vs. eta<1.
AliRDHFCuts * fRDCutsAnalysis
nbins for invariant mass histos
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
Double_t fHigherImpPar
lower limit in impact parameter (um)
Double_t DeltaInvMass() const
TH1F * fHistNtrUnCorrPSSel
! hist. of ntracklets for physics selection only selected events
Int_t GetIsSelectedCuts() const
TH1F * fHistoMCNch
weight on the MC on the generated multiplicity (0->no weights, 1->Nch weights, 2->Ntrk weights) ...
TH3F * fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary
! hist of Nch (generated) vs Nch (Primary) vs Nch (Physical Primary)
Bool_t HasSelectionBit(Int_t i) const
Int_t fUseNchWeight
-1: no protection, 0: check AOD/dAOD nEvents only, 1: check AOD/dAOD nEvents + TProcessID names ...
Int_t MatchToMC(Int_t pdgabs, Int_t pdgabs2prong, Int_t *pdgDg, Int_t *pdgDg2prong, TClonesArray *mcArray, Bool_t isV0=kFALSE) const
TH2F * fHistNtrCorrVsNchMC
! hist of ntracklets vs Nch (Generated)
TH1F * fHistNtrUnCorrEvSel
! hist. of ntracklets for selected events
virtual void UserCreateOutputObjects()
Implementation of interface methods.
Double_t ImpParXY() const
TH1F * fHistNtrUnCorrPSTrigPileUpVtxRangeSel
! hist. of ntracklets for physics selection + trigger name + pileup + with-vertex-contrib-range selec...
static Int_t CheckMatchingAODdeltaAODevents()
TH2F * fHistNtrEta16vsNtrEta1EvSel
!hist. for Ntracklets in eta<1.6 vs. eta<1.
TH2F * fHistNtrEta03vsNtrEta1EvWithD
!hist. for Ntracklets in eta<0.3 vs. eta<1. for events with a candidate in D mass peak ...
TH2F * fHistNtrVsNchMC
! hist of ntracklets vs Nch (Generated)
Bool_t IsEventRejectedDueToVertexContributors() const
TH1F * fHistNtrCorrPSSel
! hist. of ntracklets for physics selection only selected events
TH2F * fHistNtrEta05vsNtrEta1EvWithD
!hist. for Ntracklets in eta<0.5 vs. eta<1. for events with a candidate in D mass peak ...
Int_t GetWhyRejection() const
AliNormalizationCounter * fCounterU
!Counter for normalization, uncorrected multiplicity
TH1F * fHistNtrUnCorrPSTrigSel
! hist. of ntracklets for physics selection + trigger name selected events
AliNormalizationCounter * fCounterC
Cuts for Analysis.
TH1F * fHistNtrCorrEvWithCand
! hist. of ntracklets for evnts with a candidate
virtual void UserExec(Option_t *option)
TH1F * fHistNtrCorrEvWithD
! hist. of ntracklets for evnts with a candidate in D mass peak
void SetNMassBins(Int_t nbins)
Int_t fMCPrimariesEstimator
Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2.
void SetMassLimits(Double_t lowlimit, Double_t uplimit)
TH2F * fHistNtrEtaV0MvsV0MEqEvWithCand
!hist. for V0M raw mult vs V0M equalized multiplicity for events with a candidate ...
Int_t fYearNumber
Flag to use the zvtx correction from (0=none, 1=usual d2h, 2=AliESDUtils for VZERO multiplicity) ...
TH1F * fHistNtrUnCorrPSTrigPileUpSel
! hist. of ntracklets for physics selection + trigger name + pileup selected events ...
TH1F * fHistNtrUnCorrEvWithD
! hist. of ntracklets for evnts with a candidate in D mass peak
void FillMCMassHistos(TClonesArray *arrayMC, Int_t labD, Int_t countMult, Double_t nchWeight)
static Double_t GetVZEROCEqualizedMultiplicity(AliAODEvent *ev)
Class for cuts on AOD reconstructed D+->Kpipi.
void SetStudyMultiplicity(Bool_t flag, Float_t etaRange)
TH2F * fHistNtrEtaV0AvsNtrEta1EvSel
!hist. for Ntracklets in eta-V0A vs. eta<1.
TH2F * fHistNtrEtaV0MvsNtrEta1EvWithCand
!hist. for Ntracklets in eta-V0M vs. eta<1. for events with a candidate
Bool_t fisPPbData
0=keep all cand, 1=keep only signal, 2= keep only back
AliNormalizationCounter * fCounterCandidates
!Counter for normalization, corrected multiplicity for candidates
TH2F * fHistNtrEtaV0MvsV0MEqEvWithD
!hist. for V0M raw mult vs V0M equalized multiplicity with a candidate in D mass peak ...
Int_t fMultiplicityEstimator
pdg code of analyzed meson
TH3F * fPtVsMassVsMultMC
! hist. of Pt vs Mult vs. mass (MC true candidates before reconstruction)
TList * fOutput
! list send on output slot 1
virtual ~AliAnalysisTaskSEDvsMultiplicity()
TH2F * fHistNtrEtaV0MvsV0MEqEvSel
!hist. for V0M raw mult vs V0M equalized multiplicity
TProfile * fMultEstimatorAvg[4]
weight histogram on the true measured multiplicity
TH2F * fHistNtrEta16vsNtrEta1EvWithD
!hist. for Ntracklets in eta<1.6 vs. eta<1. for events with a candidate in D mass peak ...
TH1F * fHistGenPrimaryParticlesInelGt0
!hist. of geenrated multiplcity
Bool_t IsEventRejectedDueToPileup() const
TH1F * fHistNtrUnCorrEvWithCand
! hist. of ntracklets for evnts with a candidate
TH2F * fHistNtrEtaV0AvsNtrEta1EvWithD
!hist. for Ntracklets in eta-V0A vs. eta<1. for events with a candidate in D mass peak ...
Int_t fNImpParBins
swicth for D impact parameter THnSparse
TH2F * fHistNtrEtaV0AvsNtrEta1EvWithCand
!hist. for Ntracklets in eta-V0A vs. eta<1. for events with a candidate
Int_t fNMassBins
lower inv mass limit for histos
TH2F * fHistNtrEtaV0AvsV0AEqEvSel
!hist. for V0A raw mult vs V0A equalized multiplicity
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)
TH2F * fHistNtrEta05vsNtrEta1EvWithCand
!hist. for Ntracklets in eta<0.5 vs. eta<1. for events with a candidate
Bool_t IsEventRejectedDuePhysicsSelection() const
TH1F * fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel
! hist. of ntracklets for physics selection + trigger name + pileup + with-vertex-contrib-range + cen...
Int_t fMCOption
flag for access to MC
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvSel
!hist. for Ntracklets in eta<1 with and w/o corrections
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvWithCand
!hist. for Ntracklets in eta<1 with and w/o corrections for events with a candidate ...
ClassImp(AliAnalysisTaskDeltaPt) AliAnalysisTaskDeltaPt
TH1F * fHistNtrUnCorrPSTrigPileUpVtxContSel
! hist. of ntracklets for physics selection + trigger name + pileup + with-vertex-contrib selected ev...
Bool_t fUseBit
flag to run on pPb data (differen histogram bining)
static Double_t GetCorrectedNtracklets(TProfile *estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult)
TH3F * fPtVsMassVsMultAntiPart
! hist. of Pt vs Mult vs. mass (antiparticle)
Bool_t IsEventSelected(AliVEvent *event)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
AliAnalysisTaskSEDvsMultiplicity()
THnSparseF * fHistMassPtImpPar[5]
! histograms for impact paramter studies
TH2F * fHistNtrEtaV0AvsV0AEqEvWithCand
!hist. for V0A raw mult vs V0A equalized multiplicity for events with a candidate ...
TH3F * fPtVsMassVsMultNoPid
! hist. of Pt vs Mult vs. mass (no pid)
void CreateImpactParameterHistos()
Bool_t IsSelected(TObject *obj)
TH2F * fHistMultCorrvsMultRawEvWithCand
!hist. for multiplicity with and w/o corrections for events with a candidate
TH2F * fHistNtrEtaV0AvsV0AEqEvWithD
!hist. for V0A raw mult vs V0A equalized multiplicity with a candidate in D mass peak ...
void CreateMeasuredNchHisto()
Double_t fLowerImpPar
nunber of bins in impact parameter histos
TH2F * fHistNtrCorrVsNchMCPrimary
! hist of ntracklets vs Nch (Primary)
TH2F * fHistNtrEta03vsNtrEta1EvWithCand
!hist. for Ntracklets in eta<0.3 vs. eta<1. for events with a candidate
static Double_t GetVZEROAEqualizedMultiplicity(AliAODEvent *ev)
Utilities for V0 multiplicity checks.
Bool_t IsEventRejectedDueToTrigger() const
TH2F * fHistNtrVsZvtx
! hist of ntracklets vs Zvertex
TH1F * fHistNEvents
list of profile histos for z-vtx correction
static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
Functions for computing true impact parameter of D meson.
TH2F * fHistNtrCorrEta1vsNtrRawEta1EvWithD
!hist. for Ntracklets in eta<1 with and w/o corrections for events with a candidate in D mass peak ...
TList * fOutputCounters
list of cuts
Int_t CheckOrigin(TClonesArray *arrayMC, AliAODMCParticle *mcPartCandidate) const
Bool_t fKeepCorrPlots
flag for subtracting D meson daughter contribution to N of tracklets
AliAODRecoDecayHF2Prong * Get2Prong() const
static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
Bool_t fSubtractTrackletsFromDau
flag to use bitmask
TProfile * GetEstimatorHistogram(const AliVEvent *event)
virtual Bool_t IsInFiducialAcceptance(Double_t, Double_t) const
Double_t fRefMult
TProfile with mult vs. Z per period.
Double_t fLowmasslimit
upper inv mass limit for histos
TH2F * fHistNtrEta16vsNtrEta1EvWithCand
!hist. for Ntracklets in eta<1.6 vs. eta<1. for events with a candidate
Bool_t fReadMC
higher limit in impact parameter (um)
TH3F * fPtVsMassVsMultUncorr
! hist. of Pt vs Mult vs. mass (raw mult)
virtual void Terminate(Option_t *option)
TH1F * fHistoMeasNch
weight histogram for the MC on the generated multiplicity
TH2F * fHistNtrCorrVsNchMCPhysicalPrimary
! hist of ntracklets vs Nch (Physical Primary)
Int_t fPdgMeson
refrence multiplcity (period b)