42 #include <TParticle.h>
45 #include <TDatabasePDG.h>
46 #include <AliAnalysisDataSlot.h>
47 #include <AliAnalysisDataContainer.h>
49 #include "AliMCEvent.h"
50 #include "AliAnalysisManager.h"
51 #include "AliAODMCHeader.h"
52 #include "AliAODHandler.h"
54 #include "AliAODVertex.h"
55 #include "AliAODRecoDecay.h"
60 #include "AliESDtrack.h"
61 #include "AliAODMCParticle.h"
63 #include "AliAODEvent.h"
89 fDoImpParDstar(kFALSE),
123 fDoImpParDstar(kFALSE),
125 fLowerImpPar(-2000.),
126 fHigherImpPar(2000.),
135 Info(
"AliAnalysisTaskSEDStarSpectra",
"Calling Constructor");
141 DefineOutput(1,TList::Class());
142 DefineOutput(2,TList::Class());
143 DefineOutput(3,TList::Class());
144 DefineOutput(4,AliRDHFCutsDStartoKpipi::Class());
145 DefineOutput(5,AliNormalizationCounter::Class());
153 Info(
"~AliAnalysisTaskSEDStarSpectra",
"Calling Destructor");
161 for(
Int_t i=0; i<5; i++){
178 if(fDebug > 1) printf(
"AnalysisTaskSEDStarSpectra::Init() \n");
182 PostData(4,copyfCuts);
192 Error(
"UserExec",
"NO EVENT FOUND!");
201 if (matchingAODdeltaAODlevel<0 || (matchingAODdeltaAODlevel==0 &&
fAODProtection==1)) {
211 TClonesArray *arrayDStartoD0pi=0;
215 if(!aodEvent && AODEvent() && IsStandardAOD()) {
218 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
221 AliAODHandler* aodHandler = (AliAODHandler*)
222 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
223 if(aodHandler->GetExtensions()) {
224 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
226 arrayDStartoD0pi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
229 arrayDStartoD0pi=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
234 if(!aodEvent->GetPrimaryVertex() || TMath::Abs(aodEvent->GetMagneticField())<0.001)
return;
240 TString trigclass=aodEvent->GetFiredTriggerClasses();
241 if(trigclass.Contains(
"C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains(
"C0SMH-B-NOPF-ALL"))
fCEvents->Fill(5);
258 Int_t icountReco = 0;
261 Int_t pdgDgDStartoD0pi[2]={421,211};
262 Int_t pdgDgD0toKpi[2]={321,211};
265 AliAODVertex *vtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
267 if(vtx1->GetNContributors()<1)
return;
270 if (!arrayDStartoD0pi){
271 AliInfo(
"Could not find array of HF vertices, skipping the event");
273 }
else AliDebug(2, Form(
"Found %d vertices",arrayDStartoD0pi->GetEntriesFast()));
275 Int_t nSelectedAna =0;
276 Int_t nSelectedProd =0;
284 for (
Int_t iDStartoD0pi = 0; iDStartoD0pi<arrayDStartoD0pi->GetEntriesFast(); iDStartoD0pi++) {
288 Bool_t isDStarCand =kTRUE;
289 if(!(vHF->
FillRecoCasc(aodEvent,dstarD0pi,isDStarCand))) {
293 if(!dstarD0pi->GetSecondaryVtx())
continue;
295 if (!theD0particle)
continue;
298 TClonesArray *mcArray = 0;
299 AliAODMCHeader *mcHeader=0;
308 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
310 AliError(
"Could not find Monte-Carlo in AOD");
314 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
316 printf(
"AliAnalysisTaskSEDplus::UserExec: MC header branch not found!\n");
320 Int_t mcLabel = dstarD0pi->
MatchToMC(413,421,pdgDgDStartoD0pi,pdgDgD0toKpi,mcArray);
323 AliAODMCParticle *partDSt = (AliAODMCParticle*)mcArray->At(mcLabel);
325 if(checkOrigin==5) isPrimary=kFALSE;
326 AliAODMCParticle *dg0 = (AliAODMCParticle*)mcArray->At(partDSt->GetDaughter(0));
328 pdgCode=TMath::Abs(partDSt->GetPdgCode());
338 if(pdgCode==-1) AliDebug(2,
"No particle assigned! check\n");
344 if(!isTkSelected)
continue;
354 Double_t arrayForSparse[3]={invMass,ptCand,impparXY};
355 Double_t arrayForSparseTrue[3]={invMass,ptCand,trueImpParXY};
358 if (0<=Dstarpt && Dstarpt<0.5){
367 if (0.5<=Dstarpt && Dstarpt<1.0){
376 if (1.0<=Dstarpt && Dstarpt<2.0){
385 if (2.0<=Dstarpt && Dstarpt<3.0){
394 if (3.0<=Dstarpt && Dstarpt<4.0){
403 if (4.0<=Dstarpt && Dstarpt<5.0){
412 if (5.0<=Dstarpt && Dstarpt<6.0){
421 if (6.0<=Dstarpt && Dstarpt<7.0){
444 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
445 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
448 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>
fPeakWindow)
continue;
481 TLorentzVector lorentzTrack1(0,0,0,0);
482 TLorentzVector lorentzTrack2(0,0,0,0);
484 for (
Int_t i=0; i<aodEvent->GetNumberOfTracks(); i++){
486 AliAODTrack* aodTrack =
dynamic_cast<AliAODTrack*
>(aodEvent->GetTrack(i));
487 if(!aodTrack) AliFatal(
"Not a standard AOD");
489 if(dstarD0pi->Charge() == aodTrack->Charge())
continue;
490 if((!(aodTrack->GetStatus()&AliESDtrack::kITSrefit)|| (!(aodTrack->GetStatus()&AliESDtrack::kTPCrefit))))
continue;
491 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>0.02)
continue;
494 Double_t mass = TDatabasePDG::Instance()->GetParticle(211)->Mass();
496 lorentzTrack1.SetPxPyPzE( dstarD0pi->Px(),dstarD0pi->Py(), dstarD0pi->Pz(), dstarD0pi->E(413) );
497 lorentzTrack2.SetPxPyPzE( aodTrack->Px(),aodTrack->Py(), aodTrack->Pz(),aodTrack->E(mass) );
500 Double_t d1mass = ((lorentzTrack1+lorentzTrack2).M());
517 AliDebug(2, Form(
"Found %i Reco particles that are D*!!",icountReco));
533 AliAnalysisTaskSE::Terminate();
537 printf(
"ERROR: fOutput not available\n");
547 printf(
"ERROR: fOutputAll not available\n");
552 printf(
"ERROR: fOutputPID not available\n");
560 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
595 fCEvents =
new TH1F(
"fCEvents",
"counter",13,0,13);
597 fCEvents->GetXaxis()->SetTitle(
"1");
598 fCEvents->GetYaxis()->SetTitle(
"counts");
599 fCEvents->GetXaxis()->SetBinLabel(2,
"no. of events");
600 fCEvents->GetXaxis()->SetBinLabel(3,
"good prim vtx and B field");
601 fCEvents->GetXaxis()->SetBinLabel(4,
"no event selected");
602 fCEvents->GetXaxis()->SetBinLabel(5,
"no vtx contributors");
603 fCEvents->GetXaxis()->SetBinLabel(6,
"trigger for PbPb");
604 fCEvents->GetXaxis()->SetBinLabel(7,
"no z vtx");
605 fCEvents->GetXaxis()->SetBinLabel(12,
"no. of D0 fail to be rec");
608 fTrueDiff2 =
new TH2F(
"DiffDstar_pt",
"True Reco diff vs pt",200,0,15,900,0,0.3);
611 fDeltaMassD1 =
new TH1F(
"DeltaMassD1",
"delta mass d1",600,0,0.8);
618 TString nameMass=
" ", nameSgn=
" ", nameBkg=
" ";
621 nameMass=
"histDeltaMass_";
623 nameSgn=
"histDeltaSgn_";
625 nameBkg=
"histDeltaBkg_";
629 nameMass=
"histDeltaMass";
630 nameSgn=
"histDeltaSgn";
631 nameBkg=
"histDeltaBkg";
634 TH1F* spectrumMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} invariant mass; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
635 TH1F* spectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*}-D^{0} Signal invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
636 TH1F* spectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*}-D^{0} Background invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
638 nameMass=
"histD0Mass_";
640 nameSgn=
"histD0Sgn_";
642 nameBkg=
"histD0Bkg_";
646 nameMass=
"histD0Mass";
651 TH1F* spectrumD0Mass =
new TH1F(nameMass.Data(),
"D^{0} invariant mass; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
652 TH1F* spectrumD0Sgn =
new TH1F(nameSgn.Data(),
"D^{0} Signal invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
653 TH1F* spectrumD0Bkg =
new TH1F(nameBkg.Data(),
"D^{0} Background invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
655 nameMass=
"histDstarMass_";
657 nameSgn=
"histDstarSgn_";
659 nameBkg=
"histDstarBkg_";
663 nameMass=
"histDstarMass";
664 nameSgn=
"histDstarSgn";
665 nameBkg=
"histDstarBkg";
668 TH1F* spectrumDstarMass =
new TH1F(nameMass.Data(),
"D^{*} invariant mass; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
669 TH1F* spectrumDstarSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
670 TH1F* spectrumDstarBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
672 nameMass=
"histSideBandMass_";
675 nameMass=
"histSideBandMass";
678 TH1F* spectrumSideBandMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} sideband mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
680 nameMass=
"histWrongSignMass_";
683 nameMass=
"histWrongSignMass";
686 TH1F* spectrumWrongSignMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} wrongsign mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
689 spectrumMass->Sumw2();
690 spectrumSgn->Sumw2();
691 spectrumBkg->Sumw2();
693 spectrumMass->SetLineColor(6);
694 spectrumSgn->SetLineColor(2);
695 spectrumBkg->SetLineColor(4);
697 spectrumMass->SetMarkerStyle(20);
698 spectrumSgn->SetMarkerStyle(20);
699 spectrumBkg->SetMarkerStyle(20);
700 spectrumMass->SetMarkerSize(0.6);
701 spectrumSgn->SetMarkerSize(0.6);
702 spectrumBkg->SetMarkerSize(0.6);
703 spectrumMass->SetMarkerColor(6);
704 spectrumSgn->SetMarkerColor(2);
705 spectrumBkg->SetMarkerColor(4);
707 spectrumD0Mass->Sumw2();
708 spectrumD0Sgn->Sumw2();
709 spectrumD0Bkg->Sumw2();
711 spectrumD0Mass->SetLineColor(6);
712 spectrumD0Sgn->SetLineColor(2);
713 spectrumD0Bkg->SetLineColor(4);
715 spectrumD0Mass->SetMarkerStyle(20);
716 spectrumD0Sgn->SetMarkerStyle(20);
717 spectrumD0Bkg->SetMarkerStyle(20);
718 spectrumD0Mass->SetMarkerSize(0.6);
719 spectrumD0Sgn->SetMarkerSize(0.6);
720 spectrumD0Bkg->SetMarkerSize(0.6);
721 spectrumD0Mass->SetMarkerColor(6);
722 spectrumD0Sgn->SetMarkerColor(2);
723 spectrumD0Bkg->SetMarkerColor(4);
725 spectrumDstarMass->Sumw2();
726 spectrumDstarSgn->Sumw2();
727 spectrumDstarBkg->Sumw2();
729 spectrumDstarMass->SetLineColor(6);
730 spectrumDstarSgn->SetLineColor(2);
731 spectrumDstarBkg->SetLineColor(4);
733 spectrumDstarMass->SetMarkerStyle(20);
734 spectrumDstarSgn->SetMarkerStyle(20);
735 spectrumDstarBkg->SetMarkerStyle(20);
736 spectrumDstarMass->SetMarkerSize(0.6);
737 spectrumDstarSgn->SetMarkerSize(0.6);
738 spectrumDstarBkg->SetMarkerSize(0.6);
739 spectrumDstarMass->SetMarkerColor(6);
740 spectrumDstarSgn->SetMarkerColor(2);
741 spectrumDstarBkg->SetMarkerColor(4);
743 spectrumSideBandMass->Sumw2();
744 spectrumSideBandMass->SetLineColor(4);
745 spectrumSideBandMass->SetMarkerStyle(20);
746 spectrumSideBandMass->SetMarkerSize(0.6);
747 spectrumSideBandMass->SetMarkerColor(4);
749 spectrumWrongSignMass->Sumw2();
750 spectrumWrongSignMass->SetLineColor(4);
751 spectrumWrongSignMass->SetMarkerStyle(20);
752 spectrumWrongSignMass->SetMarkerSize(0.6);
753 spectrumWrongSignMass->SetMarkerColor(4);
755 TH1F* allMass = (TH1F*)spectrumMass->Clone();
756 TH1F* allSgn = (TH1F*)spectrumSgn->Clone();
757 TH1F* allBkg = (TH1F*)spectrumBkg->Clone();
759 TH1F* pidMass = (TH1F*)spectrumMass->Clone();
760 TH1F* pidSgn = (TH1F*)spectrumSgn->Clone();
761 TH1F* pidBkg = (TH1F*)spectrumBkg->Clone();
773 fPIDhist[i+2+((fNPtBins+2)*
kDeltaMass)]=pidMass;
774 fPIDhist[i+2+((fNPtBins+2)*
kDeltaSgn)]=pidSgn;
775 fPIDhist[i+2+((fNPtBins+2)*
kDeltaBkg)]=pidBkg;
777 TH1F* allD0Mass = (TH1F*)spectrumD0Mass->Clone();
778 TH1F* allD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
779 TH1F* allD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
781 TH1F* pidD0Mass = (TH1F*)spectrumD0Mass->Clone();
782 TH1F* pidD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
783 TH1F* pidD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
795 fPIDhist[i+2+((fNPtBins+2)*
kDzMass)]=pidD0Mass;
796 fPIDhist[i+2+((fNPtBins+2)*
kDzSgn)]=pidD0Sgn;
797 fPIDhist[i+2+((fNPtBins+2)*
kDzBkg)]=pidD0Bkg;
799 TH1F* allDstarMass = (TH1F*)spectrumDstarMass->Clone();
800 TH1F* allDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
801 TH1F* allDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
803 TH1F* pidDstarMass = (TH1F*)spectrumDstarMass->Clone();
804 TH1F* pidDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
805 TH1F* pidDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
817 fPIDhist[i+2+((fNPtBins+2)*
kDstarMass)]=pidDstarMass;
818 fPIDhist[i+2+((fNPtBins+2)*
kDstarSgn)]=pidDstarSgn;
819 fPIDhist[i+2+((fNPtBins+2)*
kDstarBkg)]=pidDstarBkg;
821 TH1F* allSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
822 TH1F* pidSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
829 TH1F* allWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
830 TH1F* pidWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
844 TH1F* ptspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} p_{T}; p_{T} [GeV]; Entries",400,0,50);
845 TH1F* ptspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal p_{T} - MC; p_{T} [GeV]; Entries",400,0,50);
846 TH1F* ptspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background p_{T} - MC; p_{T} [GeV]; Entries",400,0,50);
848 ptspectrumMass->Sumw2();
849 ptspectrumSgn->Sumw2();
850 ptspectrumBkg->Sumw2();
852 ptspectrumMass->SetLineColor(6);
853 ptspectrumSgn->SetLineColor(2);
854 ptspectrumBkg->SetLineColor(4);
856 ptspectrumMass->SetMarkerStyle(20);
857 ptspectrumSgn->SetMarkerStyle(20);
858 ptspectrumBkg->SetMarkerStyle(20);
859 ptspectrumMass->SetMarkerSize(0.6);
860 ptspectrumSgn->SetMarkerSize(0.6);
861 ptspectrumBkg->SetMarkerSize(0.6);
862 ptspectrumMass->SetMarkerColor(6);
863 ptspectrumSgn->SetMarkerColor(2);
864 ptspectrumBkg->SetMarkerColor(4);
866 TH1F* ptallMass = (TH1F*)ptspectrumMass->Clone();
867 TH1F* ptallSgn = (TH1F*)ptspectrumSgn->Clone();
868 TH1F* ptallBkg = (TH1F*)ptspectrumBkg->Clone();
870 TH1F* ptpidMass = (TH1F*)ptspectrumMass->Clone();
871 TH1F* ptpidSgn = (TH1F*)ptspectrumSgn->Clone();
872 TH1F* ptpidBkg = (TH1F*)ptspectrumBkg->Clone();
884 fPIDhist[(fNPtBins+2)*
kptMass]=ptpidMass;
885 fPIDhist[(fNPtBins+2)*
kptSgn]=ptpidSgn;
886 fPIDhist[(fNPtBins+2)*
kptBkg]=ptpidBkg;
892 TH1F* etaspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} #eta; #eta; Entries",200,-1,1);
893 TH1F* etaspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal #eta - MC; #eta; Entries",200,-1,1);
894 TH1F* etaspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background #eta - MC; #eta; Entries",200,-1,1);
896 etaspectrumMass->Sumw2();
897 etaspectrumSgn->Sumw2();
898 etaspectrumBkg->Sumw2();
900 etaspectrumMass->SetLineColor(6);
901 etaspectrumSgn->SetLineColor(2);
902 etaspectrumBkg->SetLineColor(4);
904 etaspectrumMass->SetMarkerStyle(20);
905 etaspectrumSgn->SetMarkerStyle(20);
906 etaspectrumBkg->SetMarkerStyle(20);
907 etaspectrumMass->SetMarkerSize(0.6);
908 etaspectrumSgn->SetMarkerSize(0.6);
909 etaspectrumBkg->SetMarkerSize(0.6);
910 etaspectrumMass->SetMarkerColor(6);
911 etaspectrumSgn->SetMarkerColor(2);
912 etaspectrumBkg->SetMarkerColor(4);
914 TH1F* etaallMass = (TH1F*)etaspectrumMass->Clone();
915 TH1F* etaallSgn = (TH1F*)etaspectrumSgn->Clone();
916 TH1F* etaallBkg = (TH1F*)etaspectrumBkg->Clone();
918 TH1F* etapidMass = (TH1F*)etaspectrumMass->Clone();
919 TH1F* etapidSgn = (TH1F*)etaspectrumSgn->Clone();
920 TH1F* etapidBkg = (TH1F*)etaspectrumBkg->Clone();
932 fPIDhist[(fNPtBins+2)*
ketaMass]=etapidMass;
933 fPIDhist[(fNPtBins+2)*
ketaSgn]=etapidSgn;
934 fPIDhist[(fNPtBins+2)*
ketaBkg]=etapidBkg;
937 TH3F* deltamassVsyVsPtPID =
new TH3F(
"deltamassVsyVsPt",
"delta mass Vs y Vs pT; #DeltaM [GeV/c^{2}]; y; p_{T} [GeV/c]", 700,0.13,0.2, 40, -1, 1, 36, 0., 36.);
951 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
953 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
964 Bool_t massInRange=kFALSE;
966 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
969 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))<
fPeakWindow) massInRange=kTRUE;
1025 if(TMath::Abs(invmassD0-1.865)>4*
fD0Window && TMath::Abs(invmassD0-1.865)<8*
fD0Window){
1043 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
1045 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
1049 Int_t okDzWrongSign;
1060 if(part->Charge()>0 && (isSelected ==1)) {
1065 if(part->Charge()>0 && (isSelected ==3)) {
1070 if(okDzWrongSign!=0){
1071 wrongMassD0 = theD0particle->
InvMassD0();
1072 }
else if(okDzWrongSign==0){
1076 if(TMath::Abs(wrongMassD0-1.865)<
fD0Window){
1080 if (part->Charge()>0){
1081 e[0]=theD0particle->EProng(0,321);
1082 e[1]=theD0particle->EProng(1,211);
1084 e[0]=theD0particle->EProng(0,211);
1085 e[1]=theD0particle->EProng(1,321);
1087 e[2]=part->EProng(0,211);
1092 Double_t wrongMassDstar = TMath::Sqrt(esum*esum-pds*pds);
1095 fillthis=
"histWrongSignMass_";
1097 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1098 fillthis=
"histWrongSignMass";
1099 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1110 Int_t pdgGranma = 0;
1112 mother = mcPartCandidate->GetMother();
1114 Int_t abspdgGranma =0;
1118 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1120 pdgGranma = mcGranma->GetPdgCode();
1121 abspdgGranma = TMath::Abs(pdgGranma);
1122 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1125 mother = mcGranma->GetMother();
1127 AliError(
"Failed casting the mother particle!");
1132 if(isFromB)
return 5;
1140 mcHeader->GetVertex(vtxTrue);
1142 partDp->XvYvZv(origD);
1144 Double_t pXdauTrue[3],pYdauTrue[3],pZdauTrue[3];
1145 Int_t labelFirstDau = partDp->GetDaughter(0);
1147 Int_t nDau=partDp->GetNDaughters();
1151 for(
Int_t iDau=0; iDau<2; iDau++){
1152 Int_t ind = labelFirstDau+iDau;
1153 AliAODMCParticle* part =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(ind));
1155 AliError(
"Daughter particle not found in MC array");
1158 Int_t pdgCode=TMath::Abs(part->GetPdgCode());
1159 if(pdgCode==211 || pdgCode==321){
1160 pXdauTrue[theDau]=part->Px();
1161 pYdauTrue[theDau]=part->Py();
1162 pZdauTrue[theDau]=part->Pz();
1168 AliError(
"Wrong number of decay prongs");
1173 AliAODRecoDecayHF aodD0MC(vtxTrue,origD,3,charge,pXdauTrue,pYdauTrue,pZdauTrue,d0dummy);
1186 "Mass vs. pt vs.imppar - All",
1189 "Mass vs. pt vs.imppar - promptD",
1192 "Mass vs. pt vs.imppar - DfromB",
1195 "Mass vs. pt vs.true imppar -DfromB",
1198 "Mass vs. pt vs.imppar - backgr.",
1201 for(
Int_t i=0; i<5;i++){
TH1F * fCEvents
Cuts - sent to output slot 3.
Int_t fNImpParBins
imppar studies
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
TList * fOutputPID
! User output3
Double_t DeltaInvMass() const
Float_t fHigherImpPar
lower limit in impact parameter (um)
Int_t CheckOrigin(TClonesArray *arrayMC, const AliAODMCParticle *mcPartCandidate) const
Int_t MatchToMC(Int_t pdgabs, Int_t pdgabs2prong, Int_t *pdgDg, Int_t *pdgDg2prong, TClonesArray *mcArray, Bool_t isV0=kFALSE) const
Float_t fLowerImpPar
nunber of bins in impact parameter histos
AliRDHFCutsDStartoKpipi * fCuts
n sigma for kaon PID
Double_t fD0Window
0: HD; 1: UU;
AliAnalysisTaskSEDStarSpectra()
Double_t ImpParXY() const
static Int_t CheckMatchingAODdeltaAODevents()
Bool_t fDoSearch
Use MC info.
Int_t GetWhyRejection() const
void CreateImpactParameterHistos()
Double_t InvMassD0() const
Bool_t fDoDStarVsY
higher limit in impact parameter (um)
Float_t GetTrueImpactParameterD0(const AliAODMCHeader *mcHeader, TClonesArray *arrayMC, const AliAODMCParticle *partDp) const
AliNormalizationCounter * fCounter
!Counter for normalization slot 4
TList * fOutput
Rare mesons.
Int_t fAnalysis
n. of events
Bool_t FillRecoCasc(AliVEvent *event, AliAODRecoCascadeHF *rc, Bool_t isDStar, Bool_t recoSecVtx=kFALSE)
virtual ~AliAnalysisTaskSEDStarSpectra()
virtual void UserCreateOutputObjects()
Implementation of interface methods.
TList * fOutputAll
! User output2
void FillSpectrum(AliAODRecoCascadeHF *part, Int_t isDStar, AliRDHFCutsDStartoKpipi *cuts, Int_t isSel, TList *listout, TH1F **histlist)
histos
virtual void UserExec(Option_t *option)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod)
virtual void Terminate(Option_t *option)
void SideBandBackground(AliAODRecoCascadeHF *part, AliRDHFCutsDStartoKpipi *cuts, Int_t isSel, TList *listout, TH1F **histlist)
Background simulation.
Double_t InvMassD0bar() const
Bool_t fDoImpParDstar
-1: no protection, 0: check AOD/dAOD nEvents only, 1: check AOD/dAOD nEvents + TProcessID ...
Double_t fPeakWindow
select width on D0Mass
void WrongSignForDStar(AliAODRecoCascadeHF *part, AliRDHFCutsDStartoKpipi *cuts, TList *listout)
Bool_t IsEventSelected(AliVEvent *event)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
void SetUsePID(Bool_t flag=kTRUE)
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
THnSparseF * fHistMassPtImpParTCDs[5]
flag to enable D* vs y
Double_t InvMassD0() const
Double_t InvMassDstarKpipi() const
AliAODRecoDecayHF2Prong * Get2Prong() const
Int_t PtBin(Double_t pt) const
Bool_t fUseMCInfo
select width on DstarMass