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"
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),
95 fHistNtrCorrVsNchMC(0),
96 fHistNtrVsNchMCPrimary(0),
97 fHistNtrCorrVsNchMCPrimary(0),
98 fHistNtrVsNchMCPhysicalPrimary(0),
99 fHistNtrCorrVsNchMCPhysicalPrimary(0),
100 fHistGenPrimaryParticlesInelGt0(0),
101 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
102 fHistNtrUnCorrPSSel(0),
103 fHistNtrUnCorrPSTrigSel(0),
104 fHistNtrUnCorrPSTrigPileUpSel(0),
105 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
106 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
107 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
108 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
109 fHistNtrUnCorrEvSel(0),
110 fHistNtrUnCorrEvWithCand(0),
111 fHistNtrUnCorrEvWithD(0),
112 fHistNtrCorrPSSel(0),
113 fHistNtrCorrEvSel(0),
114 fHistNtrCorrEvWithCand(0),
115 fHistNtrCorrEvWithD(0),
117 fPtVsMassVsMultNoPid(0),
118 fPtVsMassVsMultUncorr(0),
119 fPtVsMassVsMultPart(0),
120 fPtVsMassVsMultAntiPart(0),
121 fPtVsMassVsMultMC(0),
123 fLowmasslimit(1.765),
128 fCounterCandidates(0),
131 fLowerImpPar(-2000.),
132 fHigherImpPar(2000.),
137 fSubtractTrackletsFromDau(kFALSE),
138 fKeepCorrPlots(kFALSE),
144 fMultiplicityEstimator(kNtrk10),
145 fMCPrimariesEstimator(kEta10),
146 fDoVZER0ParamVertexCorr(1)
155 AliAnalysisTaskSE(name),
161 fHistNtrEta16vsNtrEta1EvSel(0),
162 fHistNtrEta05vsNtrEta1EvSel(0),
163 fHistNtrEta03vsNtrEta1EvSel(0),
164 fHistNtrEtaV0AvsNtrEta1EvSel(0),
165 fHistNtrEtaV0MvsNtrEta1EvSel(0),
166 fHistNtrEtaV0AvsV0AEqEvSel(0),
167 fHistNtrEtaV0MvsV0MEqEvSel(0),
168 fHistNtrCorrEta1vsNtrRawEta1EvSel(0),
169 fHistMultCorrvsMultRawEvSel(0),
170 fHistNtrEta16vsNtrEta1EvWithCand(0),
171 fHistNtrEta05vsNtrEta1EvWithCand(0),
172 fHistNtrEta03vsNtrEta1EvWithCand(0),
173 fHistNtrEtaV0AvsNtrEta1EvWithCand(0),
174 fHistNtrEtaV0MvsNtrEta1EvWithCand(0),
175 fHistNtrEtaV0AvsV0AEqEvWithCand(0),
176 fHistNtrEtaV0MvsV0MEqEvWithCand(0),
177 fHistNtrCorrEta1vsNtrRawEta1EvWithCand(0),
178 fHistMultCorrvsMultRawEvWithCand(0),
179 fHistNtrEta16vsNtrEta1EvWithD(0),
180 fHistNtrEta05vsNtrEta1EvWithD(0),
181 fHistNtrEta03vsNtrEta1EvWithD(0),
182 fHistNtrEtaV0AvsNtrEta1EvWithD(0),
183 fHistNtrEtaV0MvsNtrEta1EvWithD(0),
184 fHistNtrEtaV0AvsV0AEqEvWithD(0),
185 fHistNtrEtaV0MvsV0MEqEvWithD(0),
186 fHistNtrCorrEta1vsNtrRawEta1EvWithD(0),
187 fHistMultCorrvsMultRawEvWithD(0),
189 fHistNtrCorrVsZvtx(0),
191 fHistNtrCorrVsNchMC(0),
192 fHistNtrVsNchMCPrimary(0),
193 fHistNtrCorrVsNchMCPrimary(0),
194 fHistNtrVsNchMCPhysicalPrimary(0),
195 fHistNtrCorrVsNchMCPhysicalPrimary(0),
196 fHistGenPrimaryParticlesInelGt0(0),
197 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
198 fHistNtrUnCorrPSSel(0),
199 fHistNtrUnCorrPSTrigSel(0),
200 fHistNtrUnCorrPSTrigPileUpSel(0),
201 fHistNtrUnCorrPSTrigPileUpVtxSel(0),
202 fHistNtrUnCorrPSTrigPileUpVtxContSel(0),
203 fHistNtrUnCorrPSTrigPileUpVtxRangeSel(0),
204 fHistNtrUnCorrPSTrigPileUpVtxRangeCentrSel(0),
205 fHistNtrUnCorrEvSel(0),
206 fHistNtrUnCorrEvWithCand(0),
207 fHistNtrUnCorrEvWithD(0),
208 fHistNtrCorrPSSel(0),
209 fHistNtrCorrEvSel(0),
210 fHistNtrCorrEvWithCand(0),
211 fHistNtrCorrEvWithD(0),
213 fPtVsMassVsMultNoPid(0),
214 fPtVsMassVsMultUncorr(0),
215 fPtVsMassVsMultPart(0),
216 fPtVsMassVsMultAntiPart(0),
217 fPtVsMassVsMultMC(0),
219 fLowmasslimit(1.765),
221 fRDCutsAnalysis(cuts),
224 fCounterCandidates(0),
227 fLowerImpPar(-2000.),
228 fHigherImpPar(2000.),
231 fisPPbData(switchPPb),
233 fSubtractTrackletsFromDau(kFALSE),
234 fKeepCorrPlots(kFALSE),
240 fMultiplicityEstimator(kNtrk10),
241 fMCPrimariesEstimator(kEta10),
242 fDoVZER0ParamVertexCorr(1)
259 DefineOutput(1,TList::Class());
261 DefineOutput(2,TList::Class());
263 DefineOutput(3,TList::Class());
265 DefineOutput(4,TList::Class());
281 for(Int_t i=0; i<4; i++) {
285 for(Int_t i=0; i<5; i++){
295 if(uplimit>lowlimit){
299 AliError(
"Wrong mass limits: upper value should be larger than lower one");
305 Double_t
mass=TDatabasePDG::Instance()->GetParticle(TMath::Abs(pdg))->Mass();
313 printf(
"AnalysisTaskSEDvsMultiplicity_0::Init() \n");
318 if(
fisPPbData){ AliFatal(
"Nch weights can only be used with MC and data histogram in pPb");
return; }
331 copycut->SetName(
"AnalysisCutsDplus");
335 copycut->SetName(
"AnalysisCutsDzero");
339 copycut->SetName(
"AnalysisCutsDStar");
351 if (
fisPPbData) {period[0]=
"LHC13b"; period[1]=
"LHC13c"; nProfiles = 2;}
352 else {period[0]=
"LHC10b"; period[1]=
"LHC10c"; period[2]=
"LHC10d"; period[3]=
"LHC10e"; nProfiles = 4;}
354 for(Int_t i=0; i<nProfiles; i++){
357 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
372 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects() \n");
377 fOutput->SetName(
"OutputHistos");
379 Int_t nMultBins = 200;
380 Float_t firstMultBin = -0.5;
381 Float_t lastMultBin = 199.5;
382 Int_t nMultBinsNtrk = nMultBins;
383 Float_t lastMultBinNtrk = lastMultBin;
384 Int_t nMultBinsV0 = 400;
385 Float_t lastMultBinV0 = 799.5;
386 const char *estimatorName=
"tracklets";
389 lastMultBinNtrk = 374.5;
390 nMultBins = nMultBinsNtrk;
391 lastMultBin = lastMultBinNtrk;
394 nMultBins = nMultBinsV0;
395 lastMultBin = lastMultBinV0;
396 estimatorName =
"vzero";
399 fHistNtrUnCorrPSSel =
new TH1F(
"hNtrUnCorrPSSel",Form(
"Uncorrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
400 fHistNtrUnCorrPSTrigSel =
new TH1F(
"hNtrUnCorrPSTrigSel",Form(
"Uncorrected %s multiplicity for PS + trigger name selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
401 fHistNtrUnCorrPSTrigPileUpSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
402 fHistNtrUnCorrPSTrigPileUpVtxSel =
new TH1F(
"hNtrUnCorrPSTrigPileUpVtxSel",Form(
"Uncorrected %s multiplicity for PS + trigger name + pileup + with-vertex selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
403 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);
404 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);
405 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);
406 fHistNtrUnCorrEvSel =
new TH1F(
"hNtrUnCorrEvSel",Form(
"Uncorrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
407 fHistNtrUnCorrEvWithCand =
new TH1F(
"hNtrUnCorrEvWithCand",Form(
"Uncorrected %s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
408 fHistNtrUnCorrEvWithD =
new TH1F(
"hNtrUnCorrEvWithD",Form(
"Uncorrected %s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
409 fHistNtrCorrPSSel =
new TH1F(
"hNtrCorrPSSel",Form(
"Corrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
410 fHistNtrCorrEvSel =
new TH1F(
"hNtrCorrEvSel",Form(
"Corrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
411 fHistNtrCorrEvWithCand =
new TH1F(
"hNtrCorrEvWithCand", Form(
"%s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
412 fHistNtrCorrEvWithD =
new TH1F(
"hNtrCorrEvWithD", Form(
"%s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
415 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);
416 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);
417 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);
418 fHistNtrEtaV0AvsNtrEta1EvSel =
new TH2F(
"hNtrEtaV0AvsNtrEta1EvSel",
"Uncorrected Eta-V0A vs Eta1.0 (events selected); Ntracklets #eta<1.0; Multiplicity V0A",nMultBinsNtrk,firstMultBin,lastMultBinNtrk,nMultBinsV0,firstMultBin,lastMultBinV0);
419 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);
420 fHistNtrEtaV0AvsV0AEqEvSel =
new TH2F(
"hNtrEtaV0AvsV0AEqEvSel",
"Corrected V0A vs corrected V0A-Equalized (events selected); Vzero-A; Vzero-A Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
421 fHistNtrEtaV0MvsV0MEqEvSel =
new TH2F(
"hNtrEtaV0MvsV0MEqEvSel",
"Corrected V0M vs corrected V0M-Equalized (events selected); Vzero-M; Vzero-M Equalized",nMultBinsV0,firstMultBin,lastMultBinV0,nMultBinsV0,firstMultBin,lastMultBinV0);
422 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);
423 fHistMultCorrvsMultRawEvSel =
new TH2F(
"hMultCorrvsMultRawEvSel",Form(
"Corrected multiplicity vs uncorrected multiplicity (events selected); %s corrected; %s",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
425 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);
426 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);
427 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);
428 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);
429 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);
430 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);
431 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);
432 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);
433 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);
436 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);
437 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);
438 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);
439 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);
440 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);
441 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);
442 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);
443 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);
444 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);
447 fHistNtrVsZvtx =
new TH2F(
"hNtrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
448 fHistNtrCorrVsZvtx =
new TH2F(
"hNtrCorrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
450 fHistNtrVsNchMC =
new TH2F(
"hNtrVsNchMC",Form(
"N%s vs NchMC; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
451 fHistNtrCorrVsNchMC =
new TH2F(
"hNtrCorrVsNchMC",Form(
"N%s vs Nch; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
453 fHistNtrVsNchMCPrimary =
new TH2F(
"hNtrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch (Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
454 fHistNtrCorrVsNchMCPrimary =
new TH2F(
"hNtrCorrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch(Primary) ;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
456 fHistNtrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrVsNchMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
457 fHistNtrCorrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrCorrVsMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
459 fHistGenPrimaryParticlesInelGt0 =
new TH1F(
"hGenPrimaryParticlesInelGt0",
"Multiplcity of generated charged particles ; Nparticles ; Entries",nMultBins,firstMultBin,lastMultBin);
461 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);
534 fHistNEvents =
new TH1F(
"fHistNEvents",
"number of events ",11,-0.5,10.5);
535 fHistNEvents->GetXaxis()->SetBinLabel(1,
"nEvents total");
536 fHistNEvents->GetXaxis()->SetBinLabel(2,
"nEvents with Z vertex");
537 fHistNEvents->GetXaxis()->SetBinLabel(3,
"nEvents selected");
538 fHistNEvents->GetXaxis()->SetBinLabel(4,
"Rejected due to trigger");
539 fHistNEvents->GetXaxis()->SetBinLabel(5,
"Rejected due to phys sel");
540 fHistNEvents->GetXaxis()->SetBinLabel(6,
"Rejected due to vertex cuts");
541 fHistNEvents->GetXaxis()->SetBinLabel(7,
"Rejected due to pileup");
542 fHistNEvents->GetXaxis()->SetBinLabel(8,
"Total no. of candidate");
543 fHistNEvents->GetXaxis()->SetBinLabel(9,
"no. of cand wo bitmask");
544 fHistNEvents->GetXaxis()->SetBinLabel(10,
"D after cuts (No PID)");
545 fHistNEvents->GetXaxis()->SetBinLabel(11,
"D after cuts + PID)");
551 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.);
553 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.);
555 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.);
557 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.);
559 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.);
561 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.);
609 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
615 TClonesArray *arrayCand = 0;
616 TString arrayName=
"";
621 arrayName=
"Charm3Prong";
622 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=211;
627 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=0;
632 pdgDau[0]=321; pdgDau[1]=211; pdgDau[2]=0;
637 if(!aod && AODEvent() && IsStandardAOD()) {
640 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
643 AliAODHandler* aodHandler = (AliAODHandler*)
644 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
645 if(aodHandler->GetExtensions()) {
646 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
647 AliAODEvent *aodFromExt = ext->GetAOD();
648 arrayCand=(TClonesArray*)aodFromExt->GetList()->FindObject(arrayName.Data());
651 arrayCand=(TClonesArray*)aod->GetList()->FindObject(arrayName.Data());
654 if(!aod || !arrayCand) {
655 printf(
"AliAnalysisTaskSEDvsMultiplicity::UserExec: Charm3Prong branch not found!\n");
660 Int_t runnumber = aod->GetRunNumber();
661 if(aod->GetTriggerMask()==0 &&
662 (runnumber>=195344 && runnumber<=195677)){
663 AliDebug(3,
"Event rejected because of null trigger mask");
671 if(!aod->GetPrimaryVertex()||TMath::Abs(aod->GetMagneticField())<0.001)
return;
677 Int_t countTreta1=0, countTreta03=0, countTreta05=0, countTreta16=0;
678 AliAODTracklets* tracklets=aod->GetTracklets();
679 Int_t nTr=tracklets->GetNumberOfTracklets();
680 for(Int_t iTr=0; iTr<nTr; iTr++){
681 Double_t theta=tracklets->GetTheta(iTr);
682 Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
683 if(eta>-0.3 && eta<0.3) countTreta03++;
684 if(eta>-0.5 && eta<0.5) countTreta05++;
685 if(eta>-1.0 && eta<1.0) countTreta1++;
686 if(eta>-1.6 && eta<1.6) countTreta16++;
690 Int_t vzeroMult=0, vzeroMultA=0, vzeroMultC=0;
691 Int_t vzeroMultEq=0, vzeroMultAEq=0, vzeroMultCEq=0;
692 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aod->GetVZEROData();
694 vzeroMultA =
static_cast<Int_t
>(vzeroAOD->GetMTotV0A());
695 vzeroMultC =
static_cast<Int_t
>(vzeroAOD->GetMTotV0C());
696 vzeroMult = vzeroMultA + vzeroMultC;
699 vzeroMultEq = vzeroMultAEq + vzeroMultCEq;
702 Int_t countMult = countTreta1;
715 Double_t countTreta1corr=countTreta1;
716 Double_t countCorr=countMult;
717 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
720 Bool_t isDataDrivenZvtxCorr=kTRUE;
721 Bool_t isVtxOk=kFALSE;
722 Int_t vzeroMultACorr=vzeroMultA, vzeroMultCCorr=vzeroMultC, vzeroMultCorr=vzeroMult;
723 Int_t vzeroMultAEqCorr=vzeroMultAEq, vzeroMultCEqCorr=vzeroMultCEq, vzeroMultEqCorr=vzeroMultEq;
725 if(vtx1->GetNContributors()>0){
735 isDataDrivenZvtxCorr=kFALSE;
738 Float_t zvtx = vtx1->GetZ();
739 isDataDrivenZvtxCorr=kFALSE;
740 vzeroMultACorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0A(vzeroMultA,zvtx));
741 vzeroMultCCorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0C(vzeroMultC,zvtx));
742 vzeroMultCorr = vzeroMultACorr + vzeroMultCCorr;
743 vzeroMultAEqCorr =
static_cast<Int_t
>(AliESDUtils::GetCorrV0A(vzeroMultAEq,zvtx));
744 vzeroMultCEqCorr =
static_cast<Int_t
>( AliESDUtils::GetCorrV0C(vzeroMultCEq,zvtx));
745 vzeroMultEqCorr = vzeroMultAEqCorr + vzeroMultCEqCorr;
754 if(isVtxOk && isDataDrivenZvtxCorr){
786 if(!isEvTrigNameRejected){
788 if(!isEvPileUpRejected){
790 if(!isEvNoVtxRejected){
792 if(!isEvVtxContribRejected){
794 if(!isEvVtxRangeRejected){
796 if(!isEvCentralityRejected){
824 TClonesArray *arrayMC=0;
825 AliAODMCHeader *mcHeader=0;
827 Double_t nchWeight=1.0;
832 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
834 printf(
"AliAnalysisTaskSEDvsMultiplicity::UserExec: MC particles branch not found!\n");
838 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
840 printf(
"AliAnalysisTaskSEDvsMultiplicity::UserExec: MC header branch not found!\n");
849 Int_t nChargedMCEta10=0, nChargedMCEta03=0, nChargedMCEta05=0, nChargedMCEta16=0, nChargedMCEtam37tm17=0, nChargedMCEta28t51=0;
850 Int_t nChargedMCPrimaryEta10=0, nChargedMCPrimaryEta03=0, nChargedMCPrimaryEta05=0, nChargedMCPrimaryEta16=0, nChargedMCPrimaryEtam37tm17=0, nChargedMCPrimaryEta28t51=0;
851 Int_t nChargedMCPhysicalPrimaryEta10=0, nChargedMCPhysicalPrimaryEta03=0, nChargedMCPhysicalPrimaryEta05=0, nChargedMCPhysicalPrimaryEta16=0, nChargedMCPhysicalPrimaryEtam37tm17=0, nChargedMCPhysicalPrimaryEta28t51=0;
852 for(Int_t i=0; i<arrayMC->GetEntriesFast(); i++){
853 AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
854 Int_t
charge = part->Charge();
855 Double_t eta = part->Eta();
856 Bool_t isPrim = part->IsPrimary();
857 Bool_t isPhysPrim = part->IsPhysicalPrimary();
859 if(eta>-0.3 && eta< 0.3) {
861 if(isPrim) nChargedMCPrimaryEta03++;
862 if(isPhysPrim) nChargedMCPhysicalPrimaryEta03++;
864 if(eta>-0.5 && eta< 0.5) {
866 if(isPrim) nChargedMCPrimaryEta05++;
867 if(isPhysPrim) nChargedMCPhysicalPrimaryEta05++;
869 if(eta>-1.0 && eta< 1.0) {
871 if(isPrim) nChargedMCPrimaryEta10++;
872 if(isPhysPrim) nChargedMCPhysicalPrimaryEta10++;
874 if(eta>-1.6 && eta< 1.6) {
876 if(isPrim) nChargedMCPrimaryEta16++;
877 if(isPhysPrim) nChargedMCPhysicalPrimaryEta16++;
879 if(eta>-3.7 && eta<-1.7) {
880 nChargedMCEtam37tm17++;
881 if(isPrim) nChargedMCPrimaryEtam37tm17++;
882 if(isPhysPrim) nChargedMCPhysicalPrimaryEtam37tm17++;
884 if(eta> 2.8 && eta< 5.1) {
885 nChargedMCEta28t51++;
886 if(isPrim) nChargedMCPrimaryEta28t51++;
887 if(isPhysPrim) nChargedMCPhysicalPrimaryEta28t51++;
891 Int_t nChargedMC=nChargedMCEta10;
892 Int_t nChargedMCPrimary=nChargedMCPrimaryEta10;
893 Int_t nChargedMCPhysicalPrimary=nChargedMCPhysicalPrimaryEta10;
898 Double_t tmpweight = 1.0;
899 Double_t tmpXweight=nChargedMCPhysicalPrimary;
902 if(tmpXweight<=0) tmpweight = 0.0;
907 tmpweight = pMC>0 ? pMeas/pMC : 0.;
909 nchWeight *= tmpweight;
910 AliDebug(2,Form(
"Using Nch weights, Mult=%f Weight=%f\n",tmpXweight,nchWeight));
934 nChargedMC = nChargedMCEta16 - nChargedMCEta10;
935 nChargedMCPrimary = nChargedMCPrimaryEta16 - nChargedMCPrimaryEta10;
936 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta16 - nChargedMCPhysicalPrimaryEta10;
938 nChargedMC = nChargedMCEta05;
939 nChargedMCPrimary = nChargedMCPrimaryEta05;
940 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta05;
942 nChargedMC = nChargedMCEta03;
943 nChargedMCPrimary = nChargedMCPrimaryEta03;
944 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta03;
946 nChargedMC = nChargedMCEtam37tm17 + nChargedMCEta28t51;
947 nChargedMCPrimary = nChargedMCPrimaryEtam37tm17 + nChargedMCPrimaryEta28t51;
948 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEtam37tm17 + nChargedMCPhysicalPrimaryEta28t51;
950 nChargedMC = nChargedMCEta28t51;
951 nChargedMCPrimary = nChargedMCPrimaryEta28t51;
952 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta28t51;
956 if(nChargedMCPhysicalPrimary>0){
972 Int_t nCand = arrayCand->GetEntriesFast();
973 Int_t nSelectedNoPID=0,nSelectedPID=0,nSelectedInMassPeak=0;
974 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
975 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
976 Double_t mDstarPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
979 UInt_t pdgDgDStartoD0pi[2]={421,211};
982 Double_t nSelCand=0.;
983 for (Int_t iCand = 0; iCand < nCand; iCand++) {
994 Double_t ptCand = d->Pt();
997 if(!isFidAcc)
continue;
1002 labD = dCascade->
MatchToMC(
fPdgMeson,421,(Int_t*)pdgDgDStartoD0pi,(Int_t*)pdgDau,arrayMC);
1004 labD = d->MatchToMC(
fPdgMeson,arrayMC,nDau,(Int_t*)pdgDau);
1011 if(passTopolCuts==0)
continue;
1018 Double_t multForCand = countCorr;
1025 for(Int_t iDau=0; iDau<nDau; iDau++){
1026 AliAODTrack *t = NULL;
1027 if(
fPdgMeson==413){ t = (AliAODTrack*)d0fromDstar->GetDaughter(iDau); }
1028 else{ t = (AliAODTrack*)d->GetDaughter(iDau); }
1030 if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
1031 if(multForCand>0) multForCand-=1;
1035 Bool_t isPrimary=kTRUE;
1036 Double_t trueImpParXY=9999.;
1037 Double_t impparXY=d->
ImpParXY()*10000.;
1041 mass[0]=d->InvMass(nDau,pdgDau);
1043 if(TMath::Abs(mass[0]-mDplusPDG)<0.02) nSelectedInMassPeak++;
1045 UInt_t pdgdaughtersD0[2]={211,321};
1046 UInt_t pdgdaughtersD0bar[2]={321,211};
1047 mass[0]=d->InvMass(2,pdgdaughtersD0);
1048 mass[1]=d->InvMass(2,pdgdaughtersD0bar);
1049 if(TMath::Abs(mass[0]-mD0PDG)<0.02 || TMath::Abs(mass[1]-mD0PDG)<0.02 ) nSelectedInMassPeak++;
1054 if(TMath::Abs(mass[0]-(mDstarPDG-mD0PDG))<0.0015) nSelectedInMassPeak++;
1056 for(Int_t iHyp=0; iHyp<2; iHyp++){
1057 if(mass[iHyp]<0.)
continue;
1058 Double_t invMass=mass[iHyp];
1059 Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
1064 labD = dCascade->
MatchToMC(
fPdgMeson,421,(Int_t*)pdgDgDStartoD0pi,(Int_t*)pdgDau,arrayMC);
1066 labD = d->MatchToMC(
fPdgMeson,arrayMC,nDau,(Int_t*)pdgDau);
1071 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1072 Int_t code=partD->GetPdgCode();
1073 if(
CheckOrigin(arrayMC,partD)==5) isPrimary=kFALSE;
1074 if(code<0 && iHyp==0) fillHisto=kFALSE;
1075 if(code>0 && iHyp==1) fillHisto=kFALSE;
1084 Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
1085 if(fillHisto && passAllCuts){
1102 if(iHyp==0 && !(passTopolCuts&1))
continue;
1103 if(iHyp==1 && !(passTopolCuts&2))
continue;
1109 if(iHyp==0 && !(passAllCuts&1))
continue;
1110 if(iHyp==1 && !(passAllCuts&2))
continue;
1113 aveMult+=multForCand;
1149 if(nSelectedPID>0) {
1164 if(nSelectedInMassPeak>0) {
1197 "Mass vs. pt vs.imppar - All",
1200 "Mass vs. pt vs.imppar - promptD",
1203 "Mass vs. pt vs.imppar - DfromB",
1206 "Mass vs. pt vs.true imppar -DfromB",
1209 "Mass vs. pt vs.imppar - backgr.",
1211 for(Int_t i=0; i<5;i++){
1221 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity: Terminate() \n");
1223 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1225 printf(
"ERROR: fOutput not available\n");
1231 printf(
"ERROR: fHistNEvents not available\n");
1234 printf(
"Number of Analyzed Events = %d\n",(Int_t)
fHistNEvents->GetBinContent(3));
1244 Int_t pdgGranma = 0;
1246 mother = mcPartCandidate->GetMother();
1248 Int_t abspdgGranma =0;
1249 Bool_t isFromB=kFALSE;
1253 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1255 pdgGranma = mcGranma->GetPdgCode();
1256 abspdgGranma = TMath::Abs(pdgGranma);
1257 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1261 mother = mcGranma->GetMother();
1263 AliError(
"Failed casting the mother particle!");
1268 if(isFromB)
return 5;
1281 Int_t runNo =
event->GetRunNumber();
1285 if (runNo>195343 && runNo<195484) period = 0;
1286 if (runNo>195528 && runNo<195678) period = 1;
1287 if (period < 0 || period > 1)
return 0;
1290 if(runNo>114930 && runNo<117223) period = 0;
1291 if(runNo>119158 && runNo<120830) period = 1;
1292 if(runNo>122373 && runNo<126438) period = 2;
1293 if(runNo>127711 && runNo<130851) period = 3;
1294 if(period<0 || period>3)
return 0;
1309 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1310 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1311 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1312 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1313 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1314 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1315 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1316 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1318 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1319 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1320 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1321 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1322 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1323 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1324 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1325 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1330 for(Int_t i=0; i<81; i++){
1344 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1345 Double_t
mass = partD->M();
1346 Double_t pt = partD->Pt();
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
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
flag to look at the correlation of different estimators (eta ranges)
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...
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
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 ...
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 ...
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()
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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)