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),
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)) {
212 TClonesArray *arrayDStartoD0pi=0;
213 TClonesArray *arrayD0toKpi=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");
227 arrayD0toKpi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
230 arrayDStartoD0pi=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
231 arrayD0toKpi=(TClonesArray*)aodEvent->GetList()->FindObject(
"D0toKpi");
236 if(!aodEvent->GetPrimaryVertex() || TMath::Abs(aodEvent->GetMagneticField())<0.001)
return;
242 TString trigclass=aodEvent->GetFiredTriggerClasses();
243 if(trigclass.Contains(
"C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains(
"C0SMH-B-NOPF-ALL"))
fCEvents->Fill(5);
260 Int_t icountReco = 0;
263 Int_t pdgDgDStartoD0pi[2]={421,211};
264 Int_t pdgDgD0toKpi[2]={321,211};
267 AliAODVertex *vtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
269 if(vtx1->GetNContributors()<1)
return;
272 if (!arrayDStartoD0pi || !arrayD0toKpi){
273 AliInfo(
"Could not find array of HF vertices, skipping the event");
275 }
else AliDebug(2, Form(
"Found %d vertices",arrayDStartoD0pi->GetEntriesFast()));
277 Int_t nSelectedAna =0;
278 Int_t nSelectedProd =0;
286 for (
Int_t iDStartoD0pi = 0; iDStartoD0pi<arrayDStartoD0pi->GetEntriesFast(); iDStartoD0pi++) {
294 for(
Int_t ipr=0;ipr<3;ipr++){
296 if(ipr == 0) tr=vHF->
GetProng(aodEvent,dstarD0pi,ipr);
297 else tr=vHF->
GetProng(aodEvent,trackD0,ipr-1);
298 arrTracks.AddAt(tr,ipr);
305 Bool_t isDStarCand =kTRUE;
306 if(!(vHF->
FillRecoCasc(aodEvent,dstarD0pi,isDStarCand))) {
310 if(!dstarD0pi->GetSecondaryVtx())
continue;
312 if (!theD0particle)
continue;
315 TClonesArray *mcArray = 0;
316 AliAODMCHeader *mcHeader=0;
325 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
327 AliError(
"Could not find Monte-Carlo in AOD");
331 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
333 printf(
"AliAnalysisTaskSEDplus::UserExec: MC header branch not found!\n");
337 Int_t mcLabel = dstarD0pi->
MatchToMC(413,421,pdgDgDStartoD0pi,pdgDgD0toKpi,mcArray);
340 AliAODMCParticle *partDSt = (AliAODMCParticle*)mcArray->At(mcLabel);
342 if(checkOrigin==5) isPrimary=kFALSE;
343 AliAODMCParticle *dg0 = (AliAODMCParticle*)mcArray->At(partDSt->GetDaughter(0));
345 pdgCode=TMath::Abs(partDSt->GetPdgCode());
355 if(pdgCode==-1) AliDebug(2,
"No particle assigned! check\n");
361 if(!isTkSelected)
continue;
371 Double_t arrayForSparse[3]={invMass,ptCand,impparXY};
372 Double_t arrayForSparseTrue[3]={invMass,ptCand,trueImpParXY};
376 if (0<=Dstarpt && Dstarpt<0.5){
385 if (0.5<=Dstarpt && Dstarpt<1.0){
394 if (1.0<=Dstarpt && Dstarpt<2.0){
403 if (2.0<=Dstarpt && Dstarpt<3.0){
412 if (3.0<=Dstarpt && Dstarpt<4.0){
421 if (4.0<=Dstarpt && Dstarpt<5.0){
430 if (5.0<=Dstarpt && Dstarpt<6.0){
439 if (6.0<=Dstarpt && Dstarpt<7.0){
462 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
463 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
466 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>
fPeakWindow)
continue;
468 if(isSelected>0)
fCEvents->Fill(11);
500 TLorentzVector lorentzTrack1(0,0,0,0);
501 TLorentzVector lorentzTrack2(0,0,0,0);
503 for (
Int_t i=0; i<aodEvent->GetNumberOfTracks(); i++){
505 AliAODTrack* aodTrack =
dynamic_cast<AliAODTrack*
>(aodEvent->GetTrack(i));
506 if(!aodTrack) AliFatal(
"Not a standard AOD");
508 if(dstarD0pi->Charge() == aodTrack->Charge())
continue;
509 if((!(aodTrack->GetStatus()&AliESDtrack::kITSrefit)|| (!(aodTrack->GetStatus()&AliESDtrack::kTPCrefit))))
continue;
510 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>0.02)
continue;
513 Double_t mass = TDatabasePDG::Instance()->GetParticle(211)->Mass();
515 lorentzTrack1.SetPxPyPzE( dstarD0pi->Px(),dstarD0pi->Py(), dstarD0pi->Pz(), dstarD0pi->E(413) );
516 lorentzTrack2.SetPxPyPzE( aodTrack->Px(),aodTrack->Py(), aodTrack->Pz(),aodTrack->E(mass) );
519 Double_t d1mass = ((lorentzTrack1+lorentzTrack2).M());
536 AliDebug(2, Form(
"Found %i Reco particles that are D*!!",icountReco));
552 AliAnalysisTaskSE::Terminate();
556 printf(
"ERROR: fOutput not available\n");
566 printf(
"ERROR: fOutputAll not available\n");
571 printf(
"ERROR: fOutputPID not available\n");
579 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
614 fCEvents =
new TH1F(
"fCEvents",
"counter",14,0,14);
616 fCEvents->GetXaxis()->SetTitle(
"1");
617 fCEvents->GetYaxis()->SetTitle(
"counts");
618 fCEvents->GetXaxis()->SetBinLabel(1,
"nEventsRead");
619 fCEvents->GetXaxis()->SetBinLabel(2,
"nEvents Matched dAOD");
620 fCEvents->GetXaxis()->SetBinLabel(3,
"good prim vtx and B field");
621 fCEvents->GetXaxis()->SetBinLabel(4,
"no event selected");
622 fCEvents->GetXaxis()->SetBinLabel(5,
"no vtx contributors");
623 fCEvents->GetXaxis()->SetBinLabel(6,
"trigger for PbPb");
624 fCEvents->GetXaxis()->SetBinLabel(7,
"no z vtx");
625 fCEvents->GetXaxis()->SetBinLabel(9,
"nEvents Mismatched dAOD");
626 fCEvents->GetXaxis()->SetBinLabel(11,
"no. of cascade candidates");
627 fCEvents->GetXaxis()->SetBinLabel(12,
"no. of Dstar after selection cuts");
628 fCEvents->GetXaxis()->SetBinLabel(13,
"no. of not on-the-fly rec Dstar");
629 fCEvents->GetXaxis()->SetBinLabel(14,
"no. of Dstar rejected by preselect");
633 fTrueDiff2 =
new TH2F(
"DiffDstar_pt",
"True Reco diff vs pt",200,0,15,900,0,0.3);
636 fDeltaMassD1 =
new TH1F(
"DeltaMassD1",
"delta mass d1",600,0,0.8);
643 TString nameMass=
" ", nameSgn=
" ", nameBkg=
" ";
646 nameMass=
"histDeltaMass_";
648 nameSgn=
"histDeltaSgn_";
650 nameBkg=
"histDeltaBkg_";
654 nameMass=
"histDeltaMass";
655 nameSgn=
"histDeltaSgn";
656 nameBkg=
"histDeltaBkg";
659 TH1F* spectrumMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} invariant mass; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
660 TH1F* spectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*}-D^{0} Signal invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
661 TH1F* spectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*}-D^{0} Background invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
663 nameMass=
"histD0Mass_";
665 nameSgn=
"histD0Sgn_";
667 nameBkg=
"histD0Bkg_";
671 nameMass=
"histD0Mass";
676 TH1F* spectrumD0Mass =
new TH1F(nameMass.Data(),
"D^{0} invariant mass; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
677 TH1F* spectrumD0Sgn =
new TH1F(nameSgn.Data(),
"D^{0} Signal invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
678 TH1F* spectrumD0Bkg =
new TH1F(nameBkg.Data(),
"D^{0} Background invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
680 nameMass=
"histDstarMass_";
682 nameSgn=
"histDstarSgn_";
684 nameBkg=
"histDstarBkg_";
688 nameMass=
"histDstarMass";
689 nameSgn=
"histDstarSgn";
690 nameBkg=
"histDstarBkg";
693 TH1F* spectrumDstarMass =
new TH1F(nameMass.Data(),
"D^{*} invariant mass; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
694 TH1F* spectrumDstarSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
695 TH1F* spectrumDstarBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
697 nameMass=
"histSideBandMass_";
700 nameMass=
"histSideBandMass";
703 TH1F* spectrumSideBandMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} sideband mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
705 nameMass=
"histWrongSignMass_";
708 nameMass=
"histWrongSignMass";
711 TH1F* spectrumWrongSignMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} wrongsign mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
714 spectrumMass->Sumw2();
715 spectrumSgn->Sumw2();
716 spectrumBkg->Sumw2();
718 spectrumMass->SetLineColor(6);
719 spectrumSgn->SetLineColor(2);
720 spectrumBkg->SetLineColor(4);
722 spectrumMass->SetMarkerStyle(20);
723 spectrumSgn->SetMarkerStyle(20);
724 spectrumBkg->SetMarkerStyle(20);
725 spectrumMass->SetMarkerSize(0.6);
726 spectrumSgn->SetMarkerSize(0.6);
727 spectrumBkg->SetMarkerSize(0.6);
728 spectrumMass->SetMarkerColor(6);
729 spectrumSgn->SetMarkerColor(2);
730 spectrumBkg->SetMarkerColor(4);
732 spectrumD0Mass->Sumw2();
733 spectrumD0Sgn->Sumw2();
734 spectrumD0Bkg->Sumw2();
736 spectrumD0Mass->SetLineColor(6);
737 spectrumD0Sgn->SetLineColor(2);
738 spectrumD0Bkg->SetLineColor(4);
740 spectrumD0Mass->SetMarkerStyle(20);
741 spectrumD0Sgn->SetMarkerStyle(20);
742 spectrumD0Bkg->SetMarkerStyle(20);
743 spectrumD0Mass->SetMarkerSize(0.6);
744 spectrumD0Sgn->SetMarkerSize(0.6);
745 spectrumD0Bkg->SetMarkerSize(0.6);
746 spectrumD0Mass->SetMarkerColor(6);
747 spectrumD0Sgn->SetMarkerColor(2);
748 spectrumD0Bkg->SetMarkerColor(4);
750 spectrumDstarMass->Sumw2();
751 spectrumDstarSgn->Sumw2();
752 spectrumDstarBkg->Sumw2();
754 spectrumDstarMass->SetLineColor(6);
755 spectrumDstarSgn->SetLineColor(2);
756 spectrumDstarBkg->SetLineColor(4);
758 spectrumDstarMass->SetMarkerStyle(20);
759 spectrumDstarSgn->SetMarkerStyle(20);
760 spectrumDstarBkg->SetMarkerStyle(20);
761 spectrumDstarMass->SetMarkerSize(0.6);
762 spectrumDstarSgn->SetMarkerSize(0.6);
763 spectrumDstarBkg->SetMarkerSize(0.6);
764 spectrumDstarMass->SetMarkerColor(6);
765 spectrumDstarSgn->SetMarkerColor(2);
766 spectrumDstarBkg->SetMarkerColor(4);
768 spectrumSideBandMass->Sumw2();
769 spectrumSideBandMass->SetLineColor(4);
770 spectrumSideBandMass->SetMarkerStyle(20);
771 spectrumSideBandMass->SetMarkerSize(0.6);
772 spectrumSideBandMass->SetMarkerColor(4);
774 spectrumWrongSignMass->Sumw2();
775 spectrumWrongSignMass->SetLineColor(4);
776 spectrumWrongSignMass->SetMarkerStyle(20);
777 spectrumWrongSignMass->SetMarkerSize(0.6);
778 spectrumWrongSignMass->SetMarkerColor(4);
780 TH1F* allMass = (TH1F*)spectrumMass->Clone();
781 TH1F* allSgn = (TH1F*)spectrumSgn->Clone();
782 TH1F* allBkg = (TH1F*)spectrumBkg->Clone();
784 TH1F* pidMass = (TH1F*)spectrumMass->Clone();
785 TH1F* pidSgn = (TH1F*)spectrumSgn->Clone();
786 TH1F* pidBkg = (TH1F*)spectrumBkg->Clone();
798 fPIDhist[i+2+((fNPtBins+2)*
kDeltaMass)]=pidMass;
799 fPIDhist[i+2+((fNPtBins+2)*
kDeltaSgn)]=pidSgn;
800 fPIDhist[i+2+((fNPtBins+2)*
kDeltaBkg)]=pidBkg;
802 TH1F* allD0Mass = (TH1F*)spectrumD0Mass->Clone();
803 TH1F* allD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
804 TH1F* allD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
806 TH1F* pidD0Mass = (TH1F*)spectrumD0Mass->Clone();
807 TH1F* pidD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
808 TH1F* pidD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
820 fPIDhist[i+2+((fNPtBins+2)*
kDzMass)]=pidD0Mass;
821 fPIDhist[i+2+((fNPtBins+2)*
kDzSgn)]=pidD0Sgn;
822 fPIDhist[i+2+((fNPtBins+2)*
kDzBkg)]=pidD0Bkg;
824 TH1F* allDstarMass = (TH1F*)spectrumDstarMass->Clone();
825 TH1F* allDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
826 TH1F* allDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
828 TH1F* pidDstarMass = (TH1F*)spectrumDstarMass->Clone();
829 TH1F* pidDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
830 TH1F* pidDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
842 fPIDhist[i+2+((fNPtBins+2)*
kDstarMass)]=pidDstarMass;
843 fPIDhist[i+2+((fNPtBins+2)*
kDstarSgn)]=pidDstarSgn;
844 fPIDhist[i+2+((fNPtBins+2)*
kDstarBkg)]=pidDstarBkg;
846 TH1F* allSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
847 TH1F* pidSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
854 TH1F* allWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
855 TH1F* pidWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
869 TH1F* ptspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} p_{T}; p_{T} [GeV]; Entries",400,0,50);
870 TH1F* ptspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal p_{T} - MC; p_{T} [GeV]; Entries",400,0,50);
871 TH1F* ptspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background p_{T} - MC; p_{T} [GeV]; Entries",400,0,50);
873 ptspectrumMass->Sumw2();
874 ptspectrumSgn->Sumw2();
875 ptspectrumBkg->Sumw2();
877 ptspectrumMass->SetLineColor(6);
878 ptspectrumSgn->SetLineColor(2);
879 ptspectrumBkg->SetLineColor(4);
881 ptspectrumMass->SetMarkerStyle(20);
882 ptspectrumSgn->SetMarkerStyle(20);
883 ptspectrumBkg->SetMarkerStyle(20);
884 ptspectrumMass->SetMarkerSize(0.6);
885 ptspectrumSgn->SetMarkerSize(0.6);
886 ptspectrumBkg->SetMarkerSize(0.6);
887 ptspectrumMass->SetMarkerColor(6);
888 ptspectrumSgn->SetMarkerColor(2);
889 ptspectrumBkg->SetMarkerColor(4);
891 TH1F* ptallMass = (TH1F*)ptspectrumMass->Clone();
892 TH1F* ptallSgn = (TH1F*)ptspectrumSgn->Clone();
893 TH1F* ptallBkg = (TH1F*)ptspectrumBkg->Clone();
895 TH1F* ptpidMass = (TH1F*)ptspectrumMass->Clone();
896 TH1F* ptpidSgn = (TH1F*)ptspectrumSgn->Clone();
897 TH1F* ptpidBkg = (TH1F*)ptspectrumBkg->Clone();
909 fPIDhist[(fNPtBins+2)*
kptMass]=ptpidMass;
910 fPIDhist[(fNPtBins+2)*
kptSgn]=ptpidSgn;
911 fPIDhist[(fNPtBins+2)*
kptBkg]=ptpidBkg;
917 TH1F* etaspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} #eta; #eta; Entries",200,-1,1);
918 TH1F* etaspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal #eta - MC; #eta; Entries",200,-1,1);
919 TH1F* etaspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background #eta - MC; #eta; Entries",200,-1,1);
921 etaspectrumMass->Sumw2();
922 etaspectrumSgn->Sumw2();
923 etaspectrumBkg->Sumw2();
925 etaspectrumMass->SetLineColor(6);
926 etaspectrumSgn->SetLineColor(2);
927 etaspectrumBkg->SetLineColor(4);
929 etaspectrumMass->SetMarkerStyle(20);
930 etaspectrumSgn->SetMarkerStyle(20);
931 etaspectrumBkg->SetMarkerStyle(20);
932 etaspectrumMass->SetMarkerSize(0.6);
933 etaspectrumSgn->SetMarkerSize(0.6);
934 etaspectrumBkg->SetMarkerSize(0.6);
935 etaspectrumMass->SetMarkerColor(6);
936 etaspectrumSgn->SetMarkerColor(2);
937 etaspectrumBkg->SetMarkerColor(4);
939 TH1F* etaallMass = (TH1F*)etaspectrumMass->Clone();
940 TH1F* etaallSgn = (TH1F*)etaspectrumSgn->Clone();
941 TH1F* etaallBkg = (TH1F*)etaspectrumBkg->Clone();
943 TH1F* etapidMass = (TH1F*)etaspectrumMass->Clone();
944 TH1F* etapidSgn = (TH1F*)etaspectrumSgn->Clone();
945 TH1F* etapidBkg = (TH1F*)etaspectrumBkg->Clone();
957 fPIDhist[(fNPtBins+2)*
ketaMass]=etapidMass;
958 fPIDhist[(fNPtBins+2)*
ketaSgn]=etapidSgn;
959 fPIDhist[(fNPtBins+2)*
ketaBkg]=etapidBkg;
962 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.);
976 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
988 Bool_t massInRange=kFALSE;
990 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
993 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))<
fPeakWindow) massInRange=kTRUE;
1049 if(TMath::Abs(invmassD0-1.865)>4*
fD0Window && TMath::Abs(invmassD0-1.865)<8*
fD0Window){
1067 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
1069 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
1073 Int_t okDzWrongSign;
1084 if(part->Charge()>0 && (isSelected ==1)) {
1089 if(part->Charge()>0 && (isSelected ==3)) {
1094 if(okDzWrongSign!=0){
1095 wrongMassD0 = theD0particle->
InvMassD0();
1096 }
else if(okDzWrongSign==0){
1100 if(TMath::Abs(wrongMassD0-1.865)<
fD0Window){
1104 if (part->Charge()>0){
1105 e[0]=theD0particle->EProng(0,321);
1106 e[1]=theD0particle->EProng(1,211);
1108 e[0]=theD0particle->EProng(0,211);
1109 e[1]=theD0particle->EProng(1,321);
1111 e[2]=part->EProng(0,211);
1116 Double_t wrongMassDstar = TMath::Sqrt(esum*esum-pds*pds);
1119 fillthis=
"histWrongSignMass_";
1121 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1122 fillthis=
"histWrongSignMass";
1123 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1134 Int_t pdgGranma = 0;
1136 mother = mcPartCandidate->GetMother();
1138 Int_t abspdgGranma =0;
1142 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1144 pdgGranma = mcGranma->GetPdgCode();
1145 abspdgGranma = TMath::Abs(pdgGranma);
1146 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1149 mother = mcGranma->GetMother();
1151 AliError(
"Failed casting the mother particle!");
1156 if(isFromB)
return 5;
1164 mcHeader->GetVertex(vtxTrue);
1166 partDp->XvYvZv(origD);
1168 Double_t pXdauTrue[3],pYdauTrue[3],pZdauTrue[3];
1169 Int_t labelFirstDau = partDp->GetDaughter(0);
1171 Int_t nDau=partDp->GetNDaughters();
1175 for(
Int_t iDau=0; iDau<2; iDau++){
1176 Int_t ind = labelFirstDau+iDau;
1177 AliAODMCParticle* part =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(ind));
1179 AliError(
"Daughter particle not found in MC array");
1182 Int_t pdgCode=TMath::Abs(part->GetPdgCode());
1183 if(pdgCode==211 || pdgCode==321){
1184 pXdauTrue[theDau]=part->Px();
1185 pYdauTrue[theDau]=part->Py();
1186 pZdauTrue[theDau]=part->Pz();
1192 AliError(
"Wrong number of decay prongs");
1197 AliAODRecoDecayHF aodD0MC(vtxTrue,origD,3,charge,pXdauTrue,pYdauTrue,pZdauTrue,d0dummy);
1210 "Mass vs. pt vs.imppar - All",
1213 "Mass vs. pt vs.imppar - promptD",
1216 "Mass vs. pt vs.imppar - DfromB",
1219 "Mass vs. pt vs.true imppar -DfromB",
1222 "Mass vs. pt vs.imppar - backgr.",
1225 for(
Int_t i=0; i<5;i++){
AliAODTrack * GetProng(AliVEvent *event, AliAODRecoDecayHF *rd, Int_t iprong)
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)
virtual Int_t PreSelect(TObjArray aodtracks)
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)
UShort_t GetProngID(Int_t ip) const
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