42 #include <TParticle.h>
45 #include <TDatabasePDG.h>
46 #include <AliAnalysisDataSlot.h>
47 #include <AliAnalysisDataContainer.h>
50 #include "AliMCEvent.h"
51 #include "AliAnalysisManager.h"
52 #include "AliAODMCHeader.h"
53 #include "AliAODHandler.h"
55 #include "AliAODVertex.h"
56 #include "AliAODRecoDecay.h"
61 #include "AliESDtrack.h"
62 #include "AliAODMCParticle.h"
64 #include "AliAODEvent.h"
89 fDoImpParDstar(kFALSE),
102 AliAnalysisTaskSE(name),
118 fDoImpParDstar(kFALSE),
120 fLowerImpPar(-2000.),
121 fHigherImpPar(2000.),
127 Info(
"AliAnalysisTaskSEDStarSpectra",
"Calling Constructor");
132 DefineOutput(1,TList::Class());
133 DefineOutput(2,TList::Class());
134 DefineOutput(3,TList::Class());
135 DefineOutput(4,AliRDHFCutsDStartoKpipi::Class());
136 DefineOutput(5,AliNormalizationCounter::Class());
144 Info(
"~AliAnalysisTaskSEDStarSpectra",
"Calling Destructor");
152 for(Int_t i=0; i<5; i++){
162 if(fDebug > 1) printf(
"AnalysisTaskSEDStarSpectra::Init() \n");
165 PostData(4,copyfCuts);
175 Error(
"UserExec",
"NO EVENT FOUND!");
181 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
182 TClonesArray *arrayDStartoD0pi=0;
186 if(!aodEvent && AODEvent() && IsStandardAOD()) {
189 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
192 AliAODHandler* aodHandler = (AliAODHandler*)
193 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
194 if(aodHandler->GetExtensions()) {
195 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
196 AliAODEvent *aodFromExt = ext->GetAOD();
197 arrayDStartoD0pi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
200 arrayDStartoD0pi=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
205 if(!aodEvent->GetPrimaryVertex() || TMath::Abs(aodEvent->GetMagneticField())<0.001)
return;
211 TString trigclass=aodEvent->GetFiredTriggerClasses();
212 if(trigclass.Contains(
"C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains(
"C0SMH-B-NOPF-ALL"))
fCEvents->Fill(5);
229 Int_t icountReco = 0;
232 Int_t pdgDgDStartoD0pi[2]={421,211};
233 Int_t pdgDgD0toKpi[2]={321,211};
236 AliAODVertex *vtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
238 if(vtx1->GetNContributors()<1)
return;
241 if (!arrayDStartoD0pi){
242 AliInfo(
"Could not find array of HF vertices, skipping the event");
244 }
else AliDebug(2, Form(
"Found %d vertices",arrayDStartoD0pi->GetEntriesFast()));
246 Int_t nSelectedAna =0;
247 Int_t nSelectedProd =0;
255 for (Int_t iDStartoD0pi = 0; iDStartoD0pi<arrayDStartoD0pi->GetEntriesFast(); iDStartoD0pi++) {
259 Bool_t isDStarCand =kTRUE;
260 if(!(vHF->
FillRecoCasc(aodEvent,dstarD0pi,isDStarCand))) {
264 if(!dstarD0pi->GetSecondaryVtx())
continue;
266 if (!theD0particle)
continue;
269 TClonesArray *mcArray = 0;
270 AliAODMCHeader *mcHeader=0;
272 Bool_t isPrimary=kTRUE;
274 Float_t trueImpParXY=0.;
279 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
281 AliError(
"Could not find Monte-Carlo in AOD");
285 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
287 printf(
"AliAnalysisTaskSEDplus::UserExec: MC header branch not found!\n");
291 Int_t mcLabel = dstarD0pi->
MatchToMC(413,421,pdgDgDStartoD0pi,pdgDgD0toKpi,mcArray);
294 AliAODMCParticle *partDSt = (AliAODMCParticle*)mcArray->At(mcLabel);
296 if(checkOrigin==5) isPrimary=kFALSE;
297 AliAODMCParticle *dg0 = (AliAODMCParticle*)mcArray->At(partDSt->GetDaughter(0));
299 pdgCode=TMath::Abs(partDSt->GetPdgCode());
309 if(pdgCode==-1) AliDebug(2,
"No particle assigned! check\n");
315 if(!isTkSelected)
continue;
321 Double_t ptCand = dstarD0pi->
Get2Prong()->Pt();
325 Double_t arrayForSparse[3]={invMass,ptCand,impparXY};
326 Double_t arrayForSparseTrue[3]={invMass,ptCand,trueImpParXY};
415 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
416 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
419 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>
fPeakWindow)
continue;
452 TLorentzVector lorentzTrack1(0,0,0,0);
453 TLorentzVector lorentzTrack2(0,0,0,0);
455 for (Int_t i=0; i<aodEvent->GetNumberOfTracks(); i++){
457 AliAODTrack* aodTrack =
dynamic_cast<AliAODTrack*
>(aodEvent->GetTrack(i));
458 if(!aodTrack) AliFatal(
"Not a standard AOD");
460 if(dstarD0pi->Charge() == aodTrack->Charge())
continue;
461 if((!(aodTrack->GetStatus()&AliESDtrack::kITSrefit)|| (!(aodTrack->GetStatus()&AliESDtrack::kTPCrefit))))
continue;
462 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>0.02)
continue;
465 Double_t
mass = TDatabasePDG::Instance()->GetParticle(211)->Mass();
467 lorentzTrack1.SetPxPyPzE( dstarD0pi->Px(),dstarD0pi->Py(), dstarD0pi->Pz(), dstarD0pi->E(413) );
468 lorentzTrack2.SetPxPyPzE( aodTrack->Px(),aodTrack->Py(), aodTrack->Pz(),aodTrack->E(mass) );
471 Double_t d1mass = ((lorentzTrack1+lorentzTrack2).M());
488 AliDebug(2, Form(
"Found %i Reco particles that are D*!!",icountReco));
504 AliAnalysisTaskSE::Terminate();
506 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
508 printf(
"ERROR: fOutput not available\n");
516 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(1));
518 printf(
"ERROR: fOutputAll not available\n");
521 fOutputPID =
dynamic_cast<TList*
> (GetOutputData(2));
523 printf(
"ERROR: fOutputPID not available\n");
531 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
566 fCEvents =
new TH1F(
"fCEvents",
"conter",13,0,13);
568 fCEvents->GetXaxis()->SetTitle(
"1");
569 fCEvents->GetYaxis()->SetTitle(
"counts");
570 fCEvents->GetXaxis()->SetBinLabel(2,
"no. of events");
571 fCEvents->GetXaxis()->SetBinLabel(3,
"good prim vtx and B field");
572 fCEvents->GetXaxis()->SetBinLabel(4,
"no event selected");
573 fCEvents->GetXaxis()->SetBinLabel(5,
"no vtx contributors");
574 fCEvents->GetXaxis()->SetBinLabel(6,
"trigger for PbPb");
575 fCEvents->GetXaxis()->SetBinLabel(7,
"no z vtx");
576 fCEvents->GetXaxis()->SetBinLabel(12,
"no. of D0 fail to be rec");
579 fTrueDiff2 =
new TH2F(
"DiffDstar_pt",
"True Reco diff vs pt",200,0,15,900,0,0.3);
582 fDeltaMassD1 =
new TH1F(
"DeltaMassD1",
"delta mass d1",600,0,0.8);
585 const Int_t nhist=14;
586 TString nameMass=
" ", nameSgn=
" ", nameBkg=
" ";
588 for(Int_t i=-2;i<nhist;i++){
589 nameMass=
"histDeltaMass_";
591 nameSgn=
"histDeltaSgn_";
593 nameBkg=
"histDeltaBkg_";
597 nameMass=
"histDeltaMass";
598 nameSgn=
"histDeltaSgn";
599 nameBkg=
"histDeltaBkg";
602 TH1F* spectrumMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} invariant mass; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
603 TH1F* spectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*}-D^{0} Signal invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
604 TH1F* spectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*}-D^{0} Background invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
606 nameMass=
"histD0Mass_";
608 nameSgn=
"histD0Sgn_";
610 nameBkg=
"histD0Bkg_";
614 nameMass=
"histD0Mass";
619 TH1F* spectrumD0Mass =
new TH1F(nameMass.Data(),
"D^{0} invariant mass; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
620 TH1F* spectrumD0Sgn =
new TH1F(nameSgn.Data(),
"D^{0} Signal invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
621 TH1F* spectrumD0Bkg =
new TH1F(nameBkg.Data(),
"D^{0} Background invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
623 nameMass=
"histDstarMass_";
625 nameSgn=
"histDstarSgn_";
627 nameBkg=
"histDstarBkg_";
631 nameMass=
"histDstarMass";
632 nameSgn=
"histDstarSgn";
633 nameBkg=
"histDstarBkg";
636 TH1F* spectrumDstarMass =
new TH1F(nameMass.Data(),
"D^{*} invariant mass; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
637 TH1F* spectrumDstarSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
638 TH1F* spectrumDstarBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
640 nameMass=
"histSideBandMass_";
643 nameMass=
"histSideBandMass";
646 TH1F* spectrumSideBandMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} sideband mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
648 nameMass=
"histWrongSignMass_";
651 nameMass=
"histWrongSignMass";
654 TH1F* spectrumWrongSignMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} wrongsign mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
657 spectrumMass->Sumw2();
658 spectrumSgn->Sumw2();
659 spectrumBkg->Sumw2();
661 spectrumMass->SetLineColor(6);
662 spectrumSgn->SetLineColor(2);
663 spectrumBkg->SetLineColor(4);
665 spectrumMass->SetMarkerStyle(20);
666 spectrumSgn->SetMarkerStyle(20);
667 spectrumBkg->SetMarkerStyle(20);
668 spectrumMass->SetMarkerSize(0.6);
669 spectrumSgn->SetMarkerSize(0.6);
670 spectrumBkg->SetMarkerSize(0.6);
671 spectrumMass->SetMarkerColor(6);
672 spectrumSgn->SetMarkerColor(2);
673 spectrumBkg->SetMarkerColor(4);
675 spectrumD0Mass->Sumw2();
676 spectrumD0Sgn->Sumw2();
677 spectrumD0Bkg->Sumw2();
679 spectrumD0Mass->SetLineColor(6);
680 spectrumD0Sgn->SetLineColor(2);
681 spectrumD0Bkg->SetLineColor(4);
683 spectrumD0Mass->SetMarkerStyle(20);
684 spectrumD0Sgn->SetMarkerStyle(20);
685 spectrumD0Bkg->SetMarkerStyle(20);
686 spectrumD0Mass->SetMarkerSize(0.6);
687 spectrumD0Sgn->SetMarkerSize(0.6);
688 spectrumD0Bkg->SetMarkerSize(0.6);
689 spectrumD0Mass->SetMarkerColor(6);
690 spectrumD0Sgn->SetMarkerColor(2);
691 spectrumD0Bkg->SetMarkerColor(4);
693 spectrumDstarMass->Sumw2();
694 spectrumDstarSgn->Sumw2();
695 spectrumDstarBkg->Sumw2();
697 spectrumDstarMass->SetLineColor(6);
698 spectrumDstarSgn->SetLineColor(2);
699 spectrumDstarBkg->SetLineColor(4);
701 spectrumDstarMass->SetMarkerStyle(20);
702 spectrumDstarSgn->SetMarkerStyle(20);
703 spectrumDstarBkg->SetMarkerStyle(20);
704 spectrumDstarMass->SetMarkerSize(0.6);
705 spectrumDstarSgn->SetMarkerSize(0.6);
706 spectrumDstarBkg->SetMarkerSize(0.6);
707 spectrumDstarMass->SetMarkerColor(6);
708 spectrumDstarSgn->SetMarkerColor(2);
709 spectrumDstarBkg->SetMarkerColor(4);
711 spectrumSideBandMass->Sumw2();
712 spectrumSideBandMass->SetLineColor(4);
713 spectrumSideBandMass->SetMarkerStyle(20);
714 spectrumSideBandMass->SetMarkerSize(0.6);
715 spectrumSideBandMass->SetMarkerColor(4);
717 spectrumWrongSignMass->Sumw2();
718 spectrumWrongSignMass->SetLineColor(4);
719 spectrumWrongSignMass->SetMarkerStyle(20);
720 spectrumWrongSignMass->SetMarkerSize(0.6);
721 spectrumWrongSignMass->SetMarkerColor(4);
723 TH1F* allMass = (TH1F*)spectrumMass->Clone();
724 TH1F* allSgn = (TH1F*)spectrumSgn->Clone();
725 TH1F* allBkg = (TH1F*)spectrumBkg->Clone();
727 TH1F* pidMass = (TH1F*)spectrumMass->Clone();
728 TH1F* pidSgn = (TH1F*)spectrumSgn->Clone();
729 TH1F* pidBkg = (TH1F*)spectrumBkg->Clone();
739 TH1F* allD0Mass = (TH1F*)spectrumD0Mass->Clone();
740 TH1F* allD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
741 TH1F* allD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
743 TH1F* pidD0Mass = (TH1F*)spectrumD0Mass->Clone();
744 TH1F* pidD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
745 TH1F* pidD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
755 TH1F* allDstarMass = (TH1F*)spectrumDstarMass->Clone();
756 TH1F* allDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
757 TH1F* allDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
759 TH1F* pidDstarMass = (TH1F*)spectrumDstarMass->Clone();
760 TH1F* pidDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
761 TH1F* pidDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
771 TH1F* allSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
772 TH1F* pidSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
777 TH1F* allWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
778 TH1F* pidWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
790 TH1F* ptspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} p_{T}; p_{T} [GeV]; Entries",200,0,10);
791 TH1F* ptspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal p_{T} - MC; p_{T} [GeV]; Entries",200,0,10);
792 TH1F* ptspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background p_{T} - MC; p_{T} [GeV]; Entries",200,0,10);
794 ptspectrumMass->Sumw2();
795 ptspectrumSgn->Sumw2();
796 ptspectrumBkg->Sumw2();
798 ptspectrumMass->SetLineColor(6);
799 ptspectrumSgn->SetLineColor(2);
800 ptspectrumBkg->SetLineColor(4);
802 ptspectrumMass->SetMarkerStyle(20);
803 ptspectrumSgn->SetMarkerStyle(20);
804 ptspectrumBkg->SetMarkerStyle(20);
805 ptspectrumMass->SetMarkerSize(0.6);
806 ptspectrumSgn->SetMarkerSize(0.6);
807 ptspectrumBkg->SetMarkerSize(0.6);
808 ptspectrumMass->SetMarkerColor(6);
809 ptspectrumSgn->SetMarkerColor(2);
810 ptspectrumBkg->SetMarkerColor(4);
812 TH1F* ptallMass = (TH1F*)ptspectrumMass->Clone();
813 TH1F* ptallSgn = (TH1F*)ptspectrumSgn->Clone();
814 TH1F* ptallBkg = (TH1F*)ptspectrumBkg->Clone();
816 TH1F* ptpidMass = (TH1F*)ptspectrumMass->Clone();
817 TH1F* ptpidSgn = (TH1F*)ptspectrumSgn->Clone();
818 TH1F* ptpidBkg = (TH1F*)ptspectrumBkg->Clone();
833 TH1F* etaspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} #eta; #eta; Entries",200,-1,1);
834 TH1F* etaspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal #eta - MC; #eta; Entries",200,-1,1);
835 TH1F* etaspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background #eta - MC; #eta; Entries",200,-1,1);
837 etaspectrumMass->Sumw2();
838 etaspectrumSgn->Sumw2();
839 etaspectrumBkg->Sumw2();
841 etaspectrumMass->SetLineColor(6);
842 etaspectrumSgn->SetLineColor(2);
843 etaspectrumBkg->SetLineColor(4);
845 etaspectrumMass->SetMarkerStyle(20);
846 etaspectrumSgn->SetMarkerStyle(20);
847 etaspectrumBkg->SetMarkerStyle(20);
848 etaspectrumMass->SetMarkerSize(0.6);
849 etaspectrumSgn->SetMarkerSize(0.6);
850 etaspectrumBkg->SetMarkerSize(0.6);
851 etaspectrumMass->SetMarkerColor(6);
852 etaspectrumSgn->SetMarkerColor(2);
853 etaspectrumBkg->SetMarkerColor(4);
855 TH1F* etaallMass = (TH1F*)etaspectrumMass->Clone();
856 TH1F* etaallSgn = (TH1F*)etaspectrumSgn->Clone();
857 TH1F* etaallBkg = (TH1F*)etaspectrumBkg->Clone();
859 TH1F* etapidMass = (TH1F*)etaspectrumMass->Clone();
860 TH1F* etapidSgn = (TH1F*)etaspectrumSgn->Clone();
861 TH1F* etapidBkg = (TH1F*)etaspectrumBkg->Clone();
872 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.);
886 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
888 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
891 Int_t ptbin=cuts->
PtBin(part->Pt());
892 Double_t pt = part->Pt();
893 Double_t eta = part->Eta();
899 Bool_t massInRange=kFALSE;
901 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
904 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))<
fPeakWindow) massInRange=kTRUE;
908 fillthis=
"histD0Sgn_";
910 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
911 fillthis=
"histD0Sgn";
912 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
913 fillthis=
"histDstarSgn_";
915 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
916 fillthis=
"histDstarSgn";
917 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
918 fillthis=
"histDeltaSgn_";
920 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
921 fillthis=
"histDeltaSgn";
922 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
925 ((TH1F*)(listout->FindObject(fillthis)))->Fill(pt);
927 ((TH1F*)(listout->FindObject(fillthis)))->Fill(eta);
931 fillthis=
"histD0Bkg_";
933 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
934 fillthis=
"histD0Bkg";
935 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
936 fillthis=
"histDstarBkg_";
938 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
939 fillthis=
"histDstarBkg";
940 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
941 fillthis=
"histDeltaBkg_";
943 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
944 fillthis=
"histDeltaBkg";
945 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
948 ((TH1F*)(listout->FindObject(fillthis)))->Fill(pt);
950 ((TH1F*)(listout->FindObject(fillthis)))->Fill(eta);
955 fillthis=
"histD0Mass_";
957 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
958 fillthis=
"histD0Mass";
959 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
960 fillthis=
"histDstarMass_";
962 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
963 fillthis=
"histDstarMass";
964 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
965 fillthis=
"histDeltaMass_";
967 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
968 fillthis=
"histDeltaMass";
969 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
973 ((TH1F*)(listout->FindObject(fillthis)))->Fill(pt);
975 ((TH1F*)(listout->FindObject(fillthis)))->Fill(eta);
989 Int_t ptbin=cuts->
PtBin(part->Pt());
993 if(TMath::Abs(invmassD0-1.865)>4*
fD0Window && TMath::Abs(invmassD0-1.865)<8*
fD0Window){
999 fillthis=
"histSideBandMass_";
1001 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
1002 fillthis=
"histSideBandMass";
1003 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
1012 Int_t ptbin=cuts->
PtBin(part->Pt());
1014 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
1016 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
1020 Int_t okD0WrongSign;
1021 Double_t wrongMassD0=0.;
1031 if(part->Charge()>0 && (isSelected ==1)) {
1036 if(part->Charge()>0 && (isSelected ==3)) {
1041 if(okD0WrongSign!=0){
1042 wrongMassD0 = theD0particle->
InvMassD0();
1043 }
else if(okD0WrongSign==0){
1047 if(TMath::Abs(wrongMassD0-1.865)<
fD0Window){
1051 if (part->Charge()>0){
1052 e[0]=theD0particle->EProng(0,321);
1053 e[1]=theD0particle->EProng(1,211);
1055 e[0]=theD0particle->EProng(0,211);
1056 e[1]=theD0particle->EProng(1,321);
1058 e[2]=part->EProng(0,211);
1060 Double_t esum = e[0]+e[1]+e[2];
1061 Double_t pds = part->P();
1063 Double_t wrongMassDstar = TMath::Sqrt(esum*esum-pds*pds);
1065 TString fillthis=
"";
1066 fillthis=
"histWrongSignMass_";
1068 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1069 fillthis=
"histWrongSignMass";
1070 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1081 Int_t pdgGranma = 0;
1083 mother = mcPartCandidate->GetMother();
1085 Int_t abspdgGranma =0;
1086 Bool_t isFromB=kFALSE;
1089 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1091 pdgGranma = mcGranma->GetPdgCode();
1092 abspdgGranma = TMath::Abs(pdgGranma);
1093 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1096 mother = mcGranma->GetMother();
1098 AliError(
"Failed casting the mother particle!");
1103 if(isFromB)
return 5;
1110 Double_t vtxTrue[3];
1111 mcHeader->GetVertex(vtxTrue);
1113 partDp->XvYvZv(origD);
1114 Short_t
charge=partDp->Charge();
1115 Double_t pXdauTrue[3],pYdauTrue[3],pZdauTrue[3];
1116 Int_t labelFirstDau = partDp->GetDaughter(0);
1118 Int_t nDau=partDp->GetNDaughters();
1122 for(Int_t iDau=0; iDau<2; iDau++){
1123 Int_t ind = labelFirstDau+iDau;
1124 AliAODMCParticle* part =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(ind));
1126 AliError(
"Daughter particle not found in MC array");
1129 Int_t pdgCode=TMath::Abs(part->GetPdgCode());
1130 if(pdgCode==211 || pdgCode==321){
1131 pXdauTrue[theDau]=part->Px();
1132 pYdauTrue[theDau]=part->Py();
1133 pZdauTrue[theDau]=part->Pz();
1139 AliError(
"Wrong number of decay prongs");
1143 Double_t d0dummy[3]={0.,0.,0.};
1144 AliAODRecoDecayHF aodD0MC(vtxTrue,origD,3,charge,pXdauTrue,pYdauTrue,pZdauTrue,d0dummy);
1157 "Mass vs. pt vs.imppar - All",
1160 "Mass vs. pt vs.imppar - promptD",
1163 "Mass vs. pt vs.imppar - DfromB",
1166 "Mass vs. pt vs.true imppar -DfromB",
1169 "Mass vs. pt vs.imppar - backgr.",
1172 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
void FillSpectrum(AliAODRecoCascadeHF *part, Int_t isDStar, AliRDHFCutsDStartoKpipi *cuts, Int_t isSel, TList *listout)
histos
AliRDHFCutsDStartoKpipi * fCuts
n sigma for kaon PID
Double_t fD0Window
0: HD; 1: UU;
AliAnalysisTaskSEDStarSpectra()
Double_t ImpParXY() const
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
virtual ~AliAnalysisTaskSEDStarSpectra()
Bool_t FillRecoCasc(AliVEvent *event, AliAODRecoCascadeHF *rc, Bool_t isDStar)
virtual void UserCreateOutputObjects()
Implementation of interface methods.
TList * fOutputAll
! User output2
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)
Background simulation.
Double_t InvMassD0bar() const
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
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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