24 #include <TClonesArray.h>
29 #include <TDatabasePDG.h>
33 #include <THnSparse.h>
35 #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"
65 fHistNtrCorrVsZvtx(0),
69 fHistNtrCorrVsSpheri(0),
71 fHistNtrCorrVsNchMC(0),
72 fHistNtrVsNchMCPrimary(0),
73 fHistNtrCorrVsNchMCPrimary(0),
74 fHistNtrVsNchMCPhysicalPrimary(0),
75 fHistNtrCorrVsNchMCPhysicalPrimary(0),
76 fHistGenPrimaryParticlesInelGt0(0),
77 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
80 fHistNtrCorrEvWithCand(0),
81 fHistNtrCorrEvWithD(0),
83 fSparseEvtShapewithNoPid(0),
84 fSparseEvtShapePrompt(0),
85 fSparseEvtShapeFeeddown(0),
86 fSparseEvtShapeRecSphero(0),
91 fMCRecoBothPromptFD(0),
92 fMCAccGenPromptSpheri(0),
93 fMCAccGenFeeddownSpheri(0),
94 fMCRecoPromptSpheri(0),
95 fMCRecoFeeddownSpheri(0),
96 fMCRecoBothPromptFDSpheri(0),
97 fMCAccGenPromptEvSel(0),
98 fMCAccGenFeeddownEvSel(0),
100 fLowmasslimit(1.765),
105 fCounterCandidates(0),
108 fLowerImpPar(-2000.),
109 fHigherImpPar(2000.),
114 fSubtractTrackletsFromDau(kFALSE),
115 fCalculateSphericity(kFALSE),
116 fRecomputeSpherocity(kFALSE),
117 fRemoveD0fromDstar(kFALSE),
121 fUsePtWeight(kFALSE),
125 fMultiplicityEstimator(kNtrk10),
126 fMCPrimariesEstimator(kEta10),
127 fDoVZER0ParamVertexCorr(1),
128 fFillSoSparseChecks(0),
142 for(
Int_t i=0; i<5; i++) fHistMassPtImpPar[i]=0;
143 for(
Int_t i=0; i<4; i++) fMultEstimatorAvg[i]=0;
156 fHistNtrCorrVsZvtx(0),
160 fHistNtrCorrVsSpheri(0),
162 fHistNtrCorrVsNchMC(0),
163 fHistNtrVsNchMCPrimary(0),
164 fHistNtrCorrVsNchMCPrimary(0),
165 fHistNtrVsNchMCPhysicalPrimary(0),
166 fHistNtrCorrVsNchMCPhysicalPrimary(0),
167 fHistGenPrimaryParticlesInelGt0(0),
168 fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
169 fHistNtrCorrPSSel(0),
170 fHistNtrCorrEvSel(0),
171 fHistNtrCorrEvWithCand(0),
172 fHistNtrCorrEvWithD(0),
174 fSparseEvtShapewithNoPid(0),
175 fSparseEvtShapePrompt(0),
176 fSparseEvtShapeFeeddown(0),
177 fSparseEvtShapeRecSphero(0),
179 fMCAccGenFeeddown(0),
182 fMCRecoBothPromptFD(0),
183 fMCAccGenPromptSpheri(0),
184 fMCAccGenFeeddownSpheri(0),
185 fMCRecoPromptSpheri(0),
186 fMCRecoFeeddownSpheri(0),
187 fMCRecoBothPromptFDSpheri(0),
188 fMCAccGenPromptEvSel(0),
189 fMCAccGenFeeddownEvSel(0),
191 fLowmasslimit(1.765),
193 fRDCutsAnalysis(cuts),
196 fCounterCandidates(0),
199 fLowerImpPar(-2000.),
200 fHigherImpPar(2000.),
203 fisPPbData(switchPPb),
205 fSubtractTrackletsFromDau(kFALSE),
206 fCalculateSphericity(kFALSE),
207 fRecomputeSpherocity(kFALSE),
208 fRemoveD0fromDstar(kFALSE),
212 fUsePtWeight(kFALSE),
216 fMultiplicityEstimator(kNtrk10),
217 fMCPrimariesEstimator(kEta10),
218 fDoVZER0ParamVertexCorr(1),
219 fFillSoSparseChecks(0),
247 DefineOutput(1,TList::Class());
249 DefineOutput(2,TList::Class());
251 DefineOutput(3,TList::Class());
253 DefineOutput(4,TList::Class());
255 DefineOutput(5,TList::Class());
273 for(
Int_t i=0; i<4; i++) {
277 for(
Int_t i=0; i<5; i++){
287 if(uplimit>lowlimit){
291 AliError(
"Wrong mass limits: upper value should be larger than lower one");
297 Double_t mass=TDatabasePDG::Instance()->GetParticle(TMath::Abs(pdg))->Mass();
305 printf(
"AnalysisTaskSEDvsMultiplicity_0::Init() \n");
308 if(
fUsePtWeight && !
fReadMC){ AliFatal(
"pT weights can only be used in MC mode");
return; }
312 if(
fisPPbData){ AliFatal(
"Nch weights can only be used with MC and data histogram in pPb");
return; }
323 copycut->SetName(
"AnalysisCutsDplus");
327 copycut->SetName(
"AnalysisCutsDzero");
331 copycut->SetName(
"AnalysisCutsDStar");
343 if (
fisPPbData) {period[0]=
"LHC13b"; period[1]=
"LHC13c"; nProfiles = 2;}
344 else {period[0]=
"LHC10b"; period[1]=
"LHC10c"; period[2]=
"LHC10d"; period[3]=
"LHC10e"; nProfiles = 4;}
346 for(
Int_t i=0; i<nProfiles; i++){
349 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
364 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects() \n");
369 fOutput->SetName(
"OutputHistos");
375 Int_t nMultBins = 200;
378 Int_t nMultBinsNtrk = nMultBins;
379 Float_t lastMultBinNtrk = lastMultBin;
380 Int_t nMultBinsV0 = 400;
382 const char *estimatorName=
"tracklets";
385 lastMultBinNtrk = 374.5;
386 nMultBins = nMultBinsNtrk;
387 lastMultBin = lastMultBinNtrk;
390 nMultBins = nMultBinsV0;
391 lastMultBin = lastMultBinV0;
392 estimatorName =
"vzero";
395 fHistNtrCorrPSSel =
new TH1F(
"hNtrCorrPSSel",Form(
"Corrected %s multiplicity for PS selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
396 fHistNtrCorrEvSel =
new TH1F(
"hNtrCorrEvSel",Form(
"Corrected %s multiplicity for selected events; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
397 fHistNtrCorrEvWithCand =
new TH1F(
"hNtrCorrEvWithCand", Form(
"%s multiplicity for events with D candidates; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
398 fHistNtrCorrEvWithD =
new TH1F(
"hNtrCorrEvWithD", Form(
"%s multiplicity for events with D in mass region ; %s ; Entries",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin);
400 fHistNtrVsZvtx =
new TH2F(
"hNtrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
401 fHistNtrCorrVsZvtx =
new TH2F(
"hNtrCorrVsZvtx",Form(
"N%s vs VtxZ; VtxZ;N_{%s};",estimatorName,estimatorName),300,-15,15,nMultBins,firstMultBin,lastMultBin);
407 histoNtrName =
"hNtrVsSphero";
408 histoNtrCorrName =
"hNtrCorrVsSphero";
409 parNameNtr =
"Sphero";
411 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);
412 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);
418 histoNtrSphriName =
"hNtrVsSpheri";
419 histoNtrCorrSphriName =
"hNtrCorrVsSpheri";
420 parNameNtrSphri =
"Spheri";
423 fHistNtrVsSpheri =
new TH2F(histoNtrSphriName.Data(),Form(
"N_{%s} vs %s; %s; N_{%s};",estimatorName,parNameNtrSphri.Data(),parNameNtrSphri.Data(),estimatorName), 20, 0., 1., nMultBins,firstMultBin,lastMultBin);
424 fHistNtrCorrVsSpheri =
new TH2F(histoNtrCorrSphriName.Data(),Form(
"N_{%s} vs %s; %s; N_{%s};",estimatorName,parNameNtrSphri.Data(),parNameNtrSphri.Data(),estimatorName), 20, 0., 1., nMultBins, firstMultBin,lastMultBin);
427 fHistNtrVsNchMC =
new TH2F(
"hNtrVsNchMC",Form(
"N%s vs NchMC; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
428 fHistNtrCorrVsNchMC =
new TH2F(
"hNtrCorrVsNchMC",Form(
"N%s vs Nch; Nch;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
430 fHistNtrVsNchMCPrimary =
new TH2F(
"hNtrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch (Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
431 fHistNtrCorrVsNchMCPrimary =
new TH2F(
"hNtrCorrVsNchMCPrimary",Form(
"N%s vs Nch (Primary); Nch(Primary) ;N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
433 fHistNtrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrVsNchMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
434 fHistNtrCorrVsNchMCPhysicalPrimary =
new TH2F(
"hNtrCorrVsMCPhysicalPrimary",Form(
"N%s vs Nch (Physical Primary); Nch (Physical Primary);N_{%s};",estimatorName,estimatorName),nMultBins,firstMultBin,lastMultBin,nMultBins,firstMultBin,lastMultBin);
436 fHistGenPrimaryParticlesInelGt0 =
new TH1F(
"hGenPrimaryParticlesInelGt0",
"Multiplcity of generated charged particles ; Nparticles ; Entries",nMultBins,firstMultBin,lastMultBin);
438 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);
462 fHistNEvents =
new TH1F(
"fHistNEvents",
"number of events ",11,-0.5,10.5);
463 fHistNEvents->GetXaxis()->SetBinLabel(1,
"nEvents total");
464 fHistNEvents->GetXaxis()->SetBinLabel(2,
"nEvents with Z vertex");
465 fHistNEvents->GetXaxis()->SetBinLabel(3,
"nEvents selected");
466 fHistNEvents->GetXaxis()->SetBinLabel(4,
"Rejected due to trigger");
467 fHistNEvents->GetXaxis()->SetBinLabel(5,
"Rejected due to phys sel");
468 fHistNEvents->GetXaxis()->SetBinLabel(6,
"Rejected due to vertex cuts");
469 fHistNEvents->GetXaxis()->SetBinLabel(7,
"Rejected due to pileup");
470 fHistNEvents->GetXaxis()->SetBinLabel(8,
"Total no. of candidate");
471 fHistNEvents->GetXaxis()->SetBinLabel(9,
"no. of cand wo bitmask");
472 fHistNEvents->GetXaxis()->SetBinLabel(10,
"D after cuts (No PID)");
473 fHistNEvents->GetXaxis()->SetBinLabel(11,
"D after cuts + PID)");
487 Int_t nbinsSowithMultUncorr[5]={48,
fNMassBins, 20, nMultBins, nMultBins};
491 Int_t nbinsSoSpheriwithMultUncorr[6]={48,
fNMassBins, 20, nMultBins, nMultBins, 20};
495 TString histoName =
"hSparseEvtShape";
496 TString histoNameNoPid =
"hSparseEvtShapewithNoPid";
497 TString parNameSo =
"Spherocity";
498 TString parNameSpheri =
"Sphericity";
499 TString histoNamePrompt =
"hSparseEvtShapePrompt";
500 TString histoNameFeeddown =
"hSparseEvtShapeFeeddown";
501 TString histoNameRecSphero =
"hSparseEvtShapeRecSphero";
504 if(
fCalculateSphericity)
fSparseEvtShape =
new THnSparseD(histoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; MultipicityUncorr; %s;", parNameSo.Data(), parNameSpheri.Data()), 6 , nbinsSoSpheriwithMultUncorr, xminSoSpheriwithMultUncorr, xmaxSoSpheriwithMultUncorr);
505 else fSparseEvtShape =
new THnSparseD(histoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; MultipicityUncorr;", parNameSo.Data()), 5 , nbinsSowithMultUncorr, xminSowithMultUncorr, xmaxSowithMultUncorr);
508 if(
fCalculateSphericity)
fSparseEvtShape =
new THnSparseD(histoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; %s;", parNameSo.Data(), parNameSpheri.Data()), 5 , nbinsSoSpheri, xminSoSpheri, xmaxSoSpheri);
509 else fSparseEvtShape =
new THnSparseD(histoName.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity;", parNameSo.Data()), 4 , nbinsSo, xminSo, xmaxSo);
513 if(
fCalculateSphericity)
fSparseEvtShapewithNoPid =
new THnSparseD(histoNameNoPid.Data(), Form(
"D candidates with NoPID:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; %s;", parNameSo.Data(), parNameSpheri.Data()), 5 , nbinsSoSpheri, xminSoSpheri, xmaxSoSpheri);
514 else fSparseEvtShapewithNoPid =
new THnSparseD(histoNameNoPid.Data(), Form(
"D candidates with NoPID:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity;", parNameSo.Data()), 4 , nbinsSo, xminSo, xmaxSo);
517 if(
fRecomputeSpherocity)
fSparseEvtShapeRecSphero =
new THnSparseD(histoNameRecSphero.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; RecSpherocity;", parNameSo.Data()), 5 , nbinsSoSpheri, xminSoSpheri, xmaxSoSpheri);
523 Int_t nbinsPrompt[4]={48, nMultBins, 20, 100};
524 Int_t nbinsFeeddown[4]={48, nMultBins, 20, 100};
525 Double_t xminPrompt[4] = {0.,firstMultBin, 0., -1.};
526 Double_t xmaxPrompt[4] = {24.,lastMultBin, 1., 1.};
527 Double_t xminFeeddown[4] = {0.,firstMultBin, 0., -1.};
528 Double_t xmaxFeeddown[4] = {24.,lastMultBin, 1., 1.};
530 Int_t nbinsRecSpheroPrompt[5]={48, nMultBins, 20, 100, 20};
531 Int_t nbinsRecSpheroFeeddown[5]={48, nMultBins, 20, 100, 20};
532 Double_t xminRecSpheroPrompt[5] = {0.,firstMultBin, 0., -1., 0.};
533 Double_t xmaxRecSpheroPrompt[5] = {24.,lastMultBin, 1., 1., 1.};
534 Double_t xminRecSpheroFeeddown[5] = {0.,firstMultBin, 0., -1., 0.};
535 Double_t xmaxRecSpheroFeeddown[5] = {24.,lastMultBin, 1., 1., 1.};
539 fSparseEvtShapePrompt =
new THnSparseD(histoNamePrompt.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; RecSpherocity;", parNameSo.Data()), 5 , nbinsSoSpheri, xminSoSpheri, xmaxSoSpheri);
540 fSparseEvtShapeFeeddown =
new THnSparseD(histoNameFeeddown.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity; RecSpherocity;", parNameSo.Data()), 5 , nbinsSoSpheri, xminSoSpheri, xmaxSoSpheri);
543 fSparseEvtShapePrompt =
new THnSparseD(histoNamePrompt.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity;", parNameSo.Data()), 4 , nbinsSo, xminSo, xmaxSo);
544 fSparseEvtShapeFeeddown =
new THnSparseD(histoNameFeeddown.Data(), Form(
"D candidates:; p_{T} [GeV/c]; InvMass [GeV/c^{2}]; %s; Multipicity;", parNameSo.Data()), 4 , nbinsSo, xminSo, xmaxSo);
552 fMCAccGenPrompt =
new THnSparseD(
"hMCAccGenPrompt",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Spherocity; y; RecSpherocity; - promptD",5,nbinsRecSpheroPrompt,xminRecSpheroPrompt,xmaxRecSpheroPrompt);
553 fMCRecoPrompt =
new THnSparseD(
"hMCRecoPrompt",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Spherocity; y; RecSpherocity; - promptD",5,nbinsRecSpheroPrompt,xminRecSpheroPrompt,xmaxRecSpheroPrompt);
556 fMCAccGenPrompt =
new THnSparseD(
"hMCAccGenPrompt",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
557 fMCRecoPrompt =
new THnSparseD(
"hMCRecoPrompt",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
560 fMCAccGenPromptSpheri =
new THnSparseD(
"hMCAccGenPromptSpheri",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Sphericity; y; - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
561 fMCRecoPromptSpheri =
new THnSparseD(
"hMCRecoPromptSpheri",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Sphericity; y; - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
563 fMCAccGenPromptEvSel =
new THnSparseD(
"hMCAccGenPromptEvSel",
"kStepMCAcceptanceEvSel:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - promptD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
567 fMCAccGenFeeddown =
new THnSparseD(
"hMCAccGenBFeeddown",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Spherocity; y; RecSpherocity; - DfromB",5,nbinsRecSpheroFeeddown,xminRecSpheroFeeddown,xmaxRecSpheroFeeddown);
568 fMCRecoFeeddown =
new THnSparseD(
"hMCRecoFeeddown",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Spherocity; y; RecSpherocity; - DfromB",5,nbinsRecSpheroFeeddown,xminRecSpheroFeeddown,xmaxRecSpheroFeeddown);
571 fMCAccGenFeeddown =
new THnSparseD(
"hMCAccGenBFeeddown",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
572 fMCRecoFeeddown =
new THnSparseD(
"hMCRecoFeeddown",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
575 fMCAccGenFeeddownSpheri =
new THnSparseD(
"hMCAccGenBFeeddownSpheri",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Sphericity; y; - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
576 fMCRecoFeeddownSpheri =
new THnSparseD(
"hMCRecoFeeddownSpheri",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Sphericity; y; - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
578 fMCAccGenFeeddownEvSel =
new THnSparseD(
"hMCAccGenBFeeddownEvSel",
"kStepMCAcceptance:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - DfromB",4,nbinsFeeddown,xminFeeddown,xmaxFeeddown);
581 fMCRecoBothPromptFD =
new THnSparseD(
"hMCRecoBothPromptFD",
"kStepRecoPID:; p_{T} [GeV/c]; Multipicity; Spherocity; y; - BothPromptFD",4,nbinsPrompt,xminPrompt,xmaxPrompt);
642 TClonesArray *arrayCand = 0;
648 arrayName=
"Charm3Prong";
649 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=211;
654 pdgDau[0]=211; pdgDau[1]=321; pdgDau[2]=0;
659 pdgDau[0]=321; pdgDau[1]=211; pdgDau[2]=0;
664 if(!aod && AODEvent() && IsStandardAOD()) {
670 AliAODHandler* aodHandler = (AliAODHandler*)
671 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
672 if(aodHandler->GetExtensions()) {
673 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
675 arrayCand=(TClonesArray*)aodFromExt->GetList()->FindObject(arrayName.Data());
678 arrayCand=(TClonesArray*)aod->GetList()->FindObject(arrayName.Data());
681 if(!aod || !arrayCand) {
682 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: Charm3Prong branch not found!\n");
687 Int_t runnumber = aod->GetRunNumber();
688 if(aod->GetTriggerMask()==0 &&
689 (runnumber>=195344 && runnumber<=195677)){
690 AliDebug(3,
"Event rejected because of null trigger mask");
697 if(!aod->GetPrimaryVertex()||TMath::Abs(aod->GetMagneticField())<0.001)
return;
699 Int_t countTreta1=0, countTreta03=0, countTreta05=0, countTreta16=0;
700 AliAODTracklets* tracklets=aod->GetTracklets();
701 Int_t nTr=tracklets->GetNumberOfTracklets();
702 for(
Int_t iTr=0; iTr<nTr; iTr++){
703 Double_t theta=tracklets->GetTheta(iTr);
704 Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
705 if(eta>-0.3 && eta<0.3) countTreta03++;
706 if(eta>-0.5 && eta<0.5) countTreta05++;
707 if(eta>-1.0 && eta<1.0) countTreta1++;
708 if(eta>-1.6 && eta<1.6) countTreta16++;
711 Int_t vzeroMult=0, vzeroMultA=0, vzeroMultC=0;
712 Int_t vzeroMultEq=0, vzeroMultAEq=0, vzeroMultCEq=0;
713 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aod->GetVZEROData();
715 vzeroMultA =
static_cast<Int_t>(vzeroAOD->GetMTotV0A());
716 vzeroMultC =
static_cast<Int_t>(vzeroAOD->GetMTotV0C());
717 vzeroMult = vzeroMultA + vzeroMultC;
720 vzeroMultEq = vzeroMultAEq + vzeroMultCEq;
723 Int_t countMult = countTreta1;
743 Double_t countTreta1corr=countTreta1;
745 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
748 Bool_t isDataDrivenZvtxCorr=kTRUE;
750 Int_t vzeroMultACorr=vzeroMultA, vzeroMultCCorr=vzeroMultC, vzeroMultCorr=vzeroMult;
751 Int_t vzeroMultAEqCorr=vzeroMultAEq, vzeroMultCEqCorr=vzeroMultCEq, vzeroMultEqCorr=vzeroMultEq;
753 if(vtx1->GetNContributors()>0){
763 isDataDrivenZvtxCorr=kFALSE;
767 isDataDrivenZvtxCorr=kFALSE;
768 vzeroMultACorr =
static_cast<Int_t>(AliESDUtils::GetCorrV0A(vzeroMultA,zvtx));
769 vzeroMultCCorr =
static_cast<Int_t>(AliESDUtils::GetCorrV0C(vzeroMultC,zvtx));
770 vzeroMultCorr = vzeroMultACorr + vzeroMultCCorr;
771 vzeroMultAEqCorr =
static_cast<Int_t>(AliESDUtils::GetCorrV0A(vzeroMultAEq,zvtx));
772 vzeroMultCEqCorr =
static_cast<Int_t>( AliESDUtils::GetCorrV0C(vzeroMultCEq,zvtx));
773 vzeroMultEqCorr = vzeroMultAEqCorr + vzeroMultCEqCorr;
782 if(isVtxOk && isDataDrivenZvtxCorr){
805 TClonesArray *arrayMC=0;
806 AliAODMCHeader *mcHeader=0;
811 Int_t nChargedMCEta10=0, nChargedMCEta03=0, nChargedMCEta05=0, nChargedMCEta16=0, nChargedMCEtam37tm17=0, nChargedMCEta28t51=0;
812 Int_t nChargedMCPrimaryEta10=0, nChargedMCPrimaryEta03=0, nChargedMCPrimaryEta05=0, nChargedMCPrimaryEta16=0, nChargedMCPrimaryEtam37tm17=0, nChargedMCPrimaryEta28t51=0;
813 Int_t nChargedMCPhysicalPrimaryEta10=0, nChargedMCPhysicalPrimaryEta03=0, nChargedMCPhysicalPrimaryEta05=0, nChargedMCPhysicalPrimaryEta16=0, nChargedMCPhysicalPrimaryEtam37tm17=0, nChargedMCPhysicalPrimaryEta28t51=0;
814 Int_t nChargedMC=0, nChargedMCPrimary=0, nChargedMCPhysicalPrimary=0;
819 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
821 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: MC particles branch not found!\n");
825 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
827 printf(
"AliAnalysisTaskSEDvsEventShapes::UserExec: MC header branch not found!\n");
831 for(
Int_t i=0; i<arrayMC->GetEntriesFast(); i++){
832 AliAODMCParticle *part=(AliAODMCParticle*)arrayMC->UncheckedAt(i);
835 Bool_t isPrim = part->IsPrimary();
836 Bool_t isPhysPrim = part->IsPhysicalPrimary();
838 if(eta>-0.3 && eta< 0.3) {
840 if(isPrim) nChargedMCPrimaryEta03++;
841 if(isPhysPrim) nChargedMCPhysicalPrimaryEta03++;
843 if(eta>-0.5 && eta< 0.5) {
845 if(isPrim) nChargedMCPrimaryEta05++;
846 if(isPhysPrim) nChargedMCPhysicalPrimaryEta05++;
848 if(eta>-1.0 && eta< 1.0) {
850 if(isPrim) nChargedMCPrimaryEta10++;
851 if(isPhysPrim) nChargedMCPhysicalPrimaryEta10++;
853 if(eta>-1.6 && eta< 1.6) {
855 if(isPrim) nChargedMCPrimaryEta16++;
856 if(isPhysPrim) nChargedMCPhysicalPrimaryEta16++;
858 if(eta>-3.7 && eta<-1.7) {
859 nChargedMCEtam37tm17++;
860 if(isPrim) nChargedMCPrimaryEtam37tm17++;
861 if(isPhysPrim) nChargedMCPhysicalPrimaryEtam37tm17++;
863 if(eta> 2.8 && eta< 5.1) {
864 nChargedMCEta28t51++;
865 if(isPrim) nChargedMCPrimaryEta28t51++;
866 if(isPhysPrim) nChargedMCPhysicalPrimaryEta28t51++;
871 nChargedMC=nChargedMCEta10;
872 nChargedMCPrimary=nChargedMCPrimaryEta10;
873 nChargedMCPhysicalPrimary=nChargedMCPhysicalPrimaryEta10;
879 Double_t tmpXweight=nChargedMCPhysicalPrimary;
882 if(tmpXweight<=0) tmpweight = 0.0;
887 tmpweight = pMC>0 ? pMeas/pMC : 0.;
889 nchWeight *= tmpweight;
890 AliDebug(2,Form(
"Using Nch weights, Mult=%f Weight=%f\n",tmpXweight,nchWeight));
893 FillMCGenAccHistos(aod, arrayMC, mcHeader, countCorr, spherocity, sphericity, isEvSel, nchWeight);
912 nChargedMC = nChargedMCEta16 - nChargedMCEta10;
913 nChargedMCPrimary = nChargedMCPrimaryEta16 - nChargedMCPrimaryEta10;
914 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta16 - nChargedMCPhysicalPrimaryEta10;
916 nChargedMC = nChargedMCEta05;
917 nChargedMCPrimary = nChargedMCPrimaryEta05;
918 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta05;
920 nChargedMC = nChargedMCEta03;
921 nChargedMCPrimary = nChargedMCPrimaryEta03;
922 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta03;
924 nChargedMC = nChargedMCEtam37tm17 + nChargedMCEta28t51;
925 nChargedMCPrimary = nChargedMCPrimaryEtam37tm17 + nChargedMCPrimaryEta28t51;
926 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEtam37tm17 + nChargedMCPhysicalPrimaryEta28t51;
928 nChargedMC = nChargedMCEta28t51;
929 nChargedMCPrimary = nChargedMCPrimaryEta28t51;
930 nChargedMCPhysicalPrimary = nChargedMCPhysicalPrimaryEta28t51;
933 if(nChargedMCPhysicalPrimary>0){
949 Int_t nCand = arrayCand->GetEntriesFast();
950 Int_t nSelectedNoPID=0,nSelectedPID=0,nSelectedInMassPeak=0;
951 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
952 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
953 Double_t mDstarPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
956 UInt_t pdgDgDStartoD0pi[2]={421,211};
960 for (
Int_t iCand = 0; iCand < nCand; iCand++) {
974 if(!isFidAcc)
continue;
978 if(passTopolCuts==0)
continue;
997 for(
Int_t iDau=0; iDau<nDau; iDau++){
998 AliAODTrack *t = NULL;
999 if(
fPdgMeson==413){ t = (AliAODTrack*)d0fromDstar->GetDaughter(iDau); }
1000 else{ t = (AliAODTrack*)d->GetDaughter(iDau); }
1002 if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
1003 if(multForCand>0) multForCand-=1;
1014 mass[0]=d->InvMass(nDau,pdgDau);
1016 if(TMath::Abs(mass[0]-mDplusPDG)<0.02) nSelectedInMassPeak++;
1018 UInt_t pdgdaughtersD0[2]={211,321};
1019 UInt_t pdgdaughtersD0bar[2]={321,211};
1020 mass[0]=d->InvMass(2,pdgdaughtersD0);
1021 mass[1]=d->InvMass(2,pdgdaughtersD0bar);
1022 if(TMath::Abs(mass[0]-mD0PDG)<0.02 || TMath::Abs(mass[1]-mD0PDG)<0.02 ) nSelectedInMassPeak++;
1027 if(TMath::Abs(mass[0]-(mDstarPDG-mD0PDG))<0.0015) nSelectedInMassPeak++;
1035 Int_t totTrkToSkip = d->GetNDaughters();
1036 const Int_t nTrkToSkip = totTrkToSkip;
1037 Int_t idToSkip[nTrkToSkip];
1038 for(
Int_t i=0; i<nTrkToSkip; i++) idToSkip[i]=-1;
1040 for(
Int_t iDau=0; iDau<nTrkToSkip; iDau++){
1041 AliAODTrack *t = NULL;
1042 t =
dynamic_cast<AliAODTrack*
>(d->GetDaughter(iDau));
1044 idToSkip[iDau] = t->GetID();
1046 recSpherocity=
AliVertexingHFUtils::GetSpherocity(aod,
fetaMin,
fetaMax,
fptMin,
fptMax,
ffiltbit1,
ffiltbit2,
fminMult,
fphiStepSizeDeg, nTrkToSkip, idToSkip);
1055 AliAODMCParticle* mcMoth =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(labD0));
1056 Int_t motherD0 = mcMoth->GetMother();
1057 AliAODMCParticle* mcMothD0 =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(motherD0));
1058 if(!mcMothD0)
continue;
1059 if(TMath::Abs(mcMothD0->GetPdgCode())==413) keep=kFALSE;
1068 for(
Int_t iHyp=0; iHyp<2; iHyp++){
1069 if(mass[iHyp]<0.)
continue;
1071 Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
1082 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1083 Int_t code=partD->GetPdgCode();
1085 if(Origin==5) isPrimary=kFALSE;
1086 if(code<0 && iHyp==0) fillHisto=kFALSE;
1087 if(code>0 && iHyp==1) fillHisto=kFALSE;
1096 Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
1097 if(fillHisto && passAllCuts){
1111 if(iHyp==0 && !(passTopolCuts&1))
continue;
1112 if(iHyp==1 && !(passTopolCuts&2))
continue;
1116 Double_t arrayForSparseSoNoPid[5]={ptCand, invMass, spherocity, multForCand, sphericity};
1119 Double_t arrayForSparseSoNoPid[4]={ptCand, invMass, spherocity, multForCand};
1124 if(iHyp==0 && !(passAllCuts&1))
continue;
1125 if(iHyp==1 && !(passAllCuts&2))
continue;
1128 aveMult+=multForCand;
1133 Double_t arrayForSparseSowithMultUnncorr[6]={ptCand, invMass, spherocity, multForCand, (
Double_t)countTreta1, sphericity};
1136 Double_t arrayForSparseSowithMultUnncorr[5]={ptCand, invMass, spherocity, multForCand, (
Double_t)countTreta1};
1142 Double_t arrayForSparseSo[5]={ptCand, invMass, spherocity, multForCand, sphericity};
1145 Double_t arrayForSparseSo[4]={ptCand, invMass, spherocity, multForCand};
1151 Double_t arrayForSparseRecSphero[5]={ptCand, invMass, spherocity, multForCand, recSpherocity};
1157 Double_t arrayForSparseSoPromptFD[5]={ptCand, invMass, spherocity, multForCand, recSpherocity};
1162 Double_t arrayForSparseSoPromptFD[4]={ptCand, invMass, spherocity, multForCand};
1171 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1172 Int_t code=partD->GetPdgCode();
1173 if(code<0 && iHyp==0) keepCase=kFALSE;
1174 if(code>0 && iHyp==1) keepCase=kFALSE;
1176 if(keepCase)
FillMCMassHistos(arrayMC,labD, multForCand, spherocity, sphericity, recSpherocity, nchWeight);
1213 "Mass vs. pt vs.imppar - All",
1216 "Mass vs. pt vs.imppar - promptD",
1219 "Mass vs. pt vs.imppar - DfromB",
1222 "Mass vs. pt vs.true imppar -DfromB",
1225 "Mass vs. pt vs.imppar - backgr.",
1227 for(
Int_t i=0; i<5;i++){
1237 if(fDebug > 1) printf(
"AnalysisTaskSEDvsMultiplicity: Terminate() \n");
1241 printf(
"ERROR: fOutput not available\n");
1247 printf(
"ERROR: fHistNEvents not available\n");
1250 printf(
"Number of Analyzed Events = %d\n",(
Int_t)
fHistNEvents->GetBinContent(3));
1262 Int_t runNo =
event->GetRunNumber();
1266 if (runNo>195343 && runNo<195484) period = 0;
1267 if (runNo>195528 && runNo<195678) period = 1;
1268 if (period < 0 || period > 1)
return 0;
1271 if(runNo>114930 && runNo<117223) period = 0;
1272 if(runNo>119158 && runNo<120830) period = 1;
1273 if(runNo>122373 && runNo<126438) period = 2;
1274 if(runNo>127711 && runNo<130841) period = 3;
1275 if(period<0 || period>3)
return 0;
1300 Double_t func1[4] = {0.322643,2.96275,2.30301,2.5};
1301 Double_t func2[4] = {0.36609,1.94635,1.40463,2.5};
1306 AliDebug(2,Form(
"pt = %f, FONLL = %f, Pythia = %f, ratio = %f",pt,dndpt_func1,dndpt_func2,dndpt_func1/dndpt_func2));
1307 return dndpt_func1/dndpt_func2;
1317 Double_t denom = TMath::Power((pt/par[1]), par[3] );
1318 Double_t dNdpt = par[0]*pt/TMath::Power(1.+denom, par[2]);
1332 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1333 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1334 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1335 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1336 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1337 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1338 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1339 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1341 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1342 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1343 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1344 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1345 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1346 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1347 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1348 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1353 for(
Int_t i=0; i<81; i++){
1364 AliAODMCParticle *partD = (AliAODMCParticle*)arrayMC->At(labD);
1380 Double_t arrayMCRecoRecSpheroPrompt[5] = {pt, countMult, spherocity, rapid, recSpherocity};
1381 Double_t arrayMCRecoPrompt[4] = {pt, countMult, spherocity, rapid};
1385 Double_t arrayMCRecoPromptSpheri[4] = {pt, countMult, sphericity, rapid};
1392 Double_t arrayMCRecoRecSpheroFeeddown[5] = {pt, countMult, spherocity, rapid, recSpherocity};
1393 Double_t arrayMCRecoFeeddown[4] = {pt, countMult, spherocity, rapid};
1397 Double_t arrayMCRecoFeeddownSpheri[4] = {pt, countMult, sphericity, rapid};
1402 Double_t arrayMCReco[4] = {pt, countMult, spherocity, rapid};
1405 Double_t arrayMCRecoSpheri[4] = {pt, countMult, sphericity, rapid};
1417 Int_t totPart = arrayMC->GetEntriesFast();
1418 Int_t totTracks = aod->GetNumberOfTracks();
1421 const Int_t nPart = totPart;
1422 Int_t trkToSkip[nPart];
1423 for(
Int_t i=0; i<nPart; i++) trkToSkip[i]=-1;
1426 for(
Int_t it=0; it<totTracks; it++){
1427 AliAODTrack *t=
dynamic_cast<AliAODTrack*
>(aod->GetTrack(it));
1429 if(!(t->TestFilterMask(BIT(4))))
continue;
1432 Int_t lab=TMath::Abs(t->GetLabel());
1433 Int_t id=t->GetID();
1436 if(pt<0.3)
continue;
1437 AliAODMCParticle* genDup =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(lab));
1440 Double_t rver = TMath::Sqrt(xver*xver + yver*yver);
1441 if(rver>3)
continue;
1442 trkToSkip[lab] = id;
1452 Int_t nTrkToSkip = nProng;
1453 Int_t idToSkip[nTrkToSkip];
1454 for(
Int_t i=0; i<nTrkToSkip; i++) idToSkip[i]=-1;
1456 Double_t zMCVertex = mcHeader->GetVtxZ();
1458 for(
Int_t iPart=0; iPart<totPart; iPart++){
1459 AliAODMCParticle* mcGenPart =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(iPart));
1461 if (TMath::Abs(mcGenPart->GetPdgCode()) ==
fPdgMeson){
1465 Bool_t isGoodDecay=kFALSE;
1466 Int_t labDau[4]={-1,-1,-1,-1};
1468 Bool_t isFidAcc = kFALSE;
1472 if(mcGenPart->GetNDaughters()!=2)
continue;
1473 if(deca==1) isGoodDecay=kTRUE;
1476 if(deca>0) isGoodDecay=kTRUE;
1479 if(deca==1) isGoodDecay=kTRUE;
1482 if(deca==1) isGoodDecay=kTRUE;
1490 for(
Int_t iDau=0; iDau<nTrkToSkip; iDau++){
1491 Int_t indexDau = TMath::Abs(mcGenPart->GetDaughter(iDau));
1492 idToSkip[iDau] = trkToSkip[indexDau];
1494 recSpherocity=
AliVertexingHFUtils::GetSpherocity(aod,
fetaMin,
fetaMax,
fptMin,
fptMax,
ffiltbit1,
ffiltbit2,
fminMult,
fphiStepSizeDeg, nTrkToSkip, idToSkip);
1499 Int_t mother = mcGenPart->GetMother();
1500 AliAODMCParticle* mcMoth =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1501 if(!mcMoth)
continue;
1502 if(TMath::Abs(mcMoth->GetPdgCode())==413)
continue;
1521 Double_t arrayMCGenRecSpheroPrompt[5] = {pt, countMult, spherocity, rapid, recSpherocity};
1522 Double_t arrayMCGenPrompt[4] = {pt, countMult, spherocity, rapid};
1527 Double_t arrayMCGenPromptSpheri[4] = {pt, countMult, sphericity, rapid};
1534 Double_t arrayMCGenRecSpheroFeeddown[5] = {pt, countMult, spherocity, rapid, recSpherocity};
1535 Double_t arrayMCGenFeeddown[4] = {pt, countMult, spherocity, rapid};
1540 Double_t arrayMCGenFeeddownSpheri[4] = {pt, countMult, sphericity, rapid};
1554 for (
Int_t iProng = 0; iProng<nProng; iProng++){
1555 AliAODMCParticle* mcPartDaughter=
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(labDau[iProng]));
1556 if(!mcPartDaughter)
return kFALSE;
1557 Double_t eta = mcPartDaughter->Eta();
1558 Double_t pt = mcPartDaughter->Pt();
Double_t fetaMin
pt limits for acceptance step
Bool_t CheckGenAcc(TClonesArray *arrayMC, Int_t nProng, Int_t *labDau)
TH2F * fHistNtrCorrVsSo
hist of ntracklets vs So
static Int_t CheckDplusDecay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
THnSparseD * fMCRecoPromptSpheri
histo for StepMCGenAcc for D meson feeddown for Sphericity
Bool_t fCalculateSphericity
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
Double_t DeltaInvMass() const
Int_t fMultiplicityEstimator
TH2F * fHistNtrCorrVsSpheri
hist of ntracklets vs Spheri
AliNormalizationCounter * fCounterCandidates
Counter for normalization, uncorrected multiplicity.
Int_t GetIsSelectedCuts() const
Bool_t fSubtractTrackletsFromDau
static Int_t CheckDstarDecay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
Bool_t HasSelectionBit(Int_t i) const
Int_t MatchToMC(Int_t pdgabs, Int_t pdgabs2prong, Int_t *pdgDg, Int_t *pdgDg2prong, TClonesArray *mcArray, Bool_t isV0=kFALSE) const
THnSparseD * fMCAccGenFeeddown
histo for StepMCGenAcc for D meson prompt
Double_t ImpParXY() const
THnSparseD * fMCRecoFeeddown
histo for StepMCReco for D meson feeddown
THnSparseD * fSparseEvtShapeFeeddown
THnSparse histograms for Prompt D0 vs. Spherocity.
Int_t fFillSoSparseChecks
TH2F * fHistNtrVsNchMCPhysicalPrimary
! hist of ntracklets vs Nch (Physical Primary)
TH2F * fHistNtrCorrVsNchMCPhysicalPrimary
! hist of ntracklets vs Nch (Physical Primary)
static Int_t CheckDsDecay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
Int_t fMCPrimariesEstimator
Int_t GetWhyRejection() const
virtual void UserCreateOutputObjects()
THnSparseD * fMCAccGenFeeddownEvSel
histo for StepMCGenAcc for D meson prompt with Vertex selection (IsEvSel = kTRUE) ...
TH2F * fHistNtrVsNchMC
hist of ntracklets vs Spheri
virtual void UserExec(Option_t *option)
static Int_t CheckOrigin(TClonesArray *arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE)
Double_t GetMaxVtxZ() const
Bool_t fRemoveD0fromDstar
Bool_t fRecomputeSpherocity
TH2F * fHistNtrCorrVsZvtx
hist of ntracklets vs Zvertex
THnSparseF * fHistMassPtImpPar[5]
histo for StepMCGenAcc for D meson feeddown with Vertex selection (IsEvSel = kTRUE) ...
TH2F * fHistNtrVsZvtx
hist. for No. of events
THnSparseD * fSparseEvtShape
hist. of ntracklets for evnts with a candidate in D mass peak
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)
THnSparseD * fSparseEvtShapewithNoPid
THnSparse histograms for Spherocity.
virtual ~AliAnalysisTaskSEDvsEventShapes()
Class for cuts on AOD reconstructed D+->Kpipi.
void SetStudyMultiplicity(Bool_t flag, Float_t etaRange)
void FillMCGenAccHistos(AliAODEvent *aod, TClonesArray *arrayMC, AliAODMCHeader *mcHeader, Double_t countMult, Double_t spherocity, Double_t sphericity, Bool_t isEvSel, Double_t nchWeight)
TH2F * fHistNtrCorrVsNchMC
! hist of ntracklets vs Nch (Generated)
THnSparseD * fMCRecoFeeddownSpheri
histo for StepMCReco for D meson feeddown for Sphericity
AliAnalysisTaskSEDvsEventShapes()
Int_t fDoVZER0ParamVertexCorr
THnSparseD * fMCRecoBothPromptFDSpheri
histo for StepMCReco for D meson feeddown for Sphericity
TH2F * fHistNtrVsNchMCPrimary
! hist of ntracklets vs Nch (Primary)
TH3F * fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary
! hist of Nch (generated) vs Nch (Primary) vs Nch (Physical Primary)
AliNormalizationCounter * fCounterU
Counter for normalization, corrected multiplicity.
static Int_t CheckD0Decay(AliStack *stack, Int_t label, Int_t *arrayDauLab)
AliRDHFCuts * fRDCutsAnalysis
void SetStudySpherocity(Bool_t flag, Double_t nsteps=100.)
THnSparseD * fSparseEvtShapePrompt
THnSparse histograms for D0 vs. Spherocity.
TH1F * fHistNtrCorrEvSel
hist. of ntracklets for physics selection only selected events
void SetMassLimits(Double_t lowlimit, Double_t uplimit)
void CreateImpactParameterHistos()
TH2F * fHistNtrVsSo
hist of ntracklets vs Zvertex
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
THnSparseD * fMCAccGenFeeddownSpheri
histo for StepMCGenAcc for D meson prompt for Sphericity
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)
THnSparseD * fMCAccGenPromptSpheri
histo for StepMCReco for D meson Both Prompt Feeddown
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
Double_t fUpmasslimit
histograms for impact paramter studies
Double_t dNdptFit(Float_t pt, Double_t *par)
Double_t GetPtWeight(Float_t pt)
THnSparseD * fMCAccGenPromptEvSel
histo for StepMCReco for D meson Both Prompt Feeddown for Sphericity
void FillMCMassHistos(TClonesArray *arrayMC, Int_t labD, Double_t countMult, Double_t spherocity, Double_t sphericity, Double_t recSpherocity, Double_t nchWeight)
Double_t fPtAccCut
eta limits for acceptance step
Bool_t IsSelected(TObject *obj)
TList * fListCuts
list send on output slot 1
THnSparseD * fSparseEvtShapeRecSphero
THnSparse histograms for feeddown D0 vs. Spherocity.
TH1F * fHistGenPrimaryParticlesInelGt0
!hist. of geenrated multiplcity
static Double_t GetVZEROAEqualizedMultiplicity(AliAODEvent *ev)
Utilities for V0 multiplicity checks.
static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
Functions for computing true impact parameter of D meson.
AliNormalizationCounter * fCounterC
void CreateMeasuredNchHisto()
TH2F * fHistNtrCorrVsNchMCPrimary
! hist of ntracklets vs Nch (Primary)
AliAODRecoDecayHF2Prong * Get2Prong() const
THnSparseD * fMCAccGenPrompt
THnSparse histograms for Both Prompt and feeddown D0 vs. Spherocity.
static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray *arrayMC, AliAODMCParticle *partDp)
Double_t fEtaAccCut
flag for quark/hadron level identification of prompt and feeddown
virtual Bool_t IsInFiducialAcceptance(Double_t, Double_t) const
virtual void Terminate(Option_t *option)
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 * fHistNtrVsSpheri
hist of ntracklets vs So
TH1F * fHistNEvents
list send on output slot 5
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, Int_t nTrksToSkip=0, Int_t *idToSkip=0x0)
Functions for event shape variables.