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"
90 fDoImpParDstar(kFALSE),
120 fDoImpParDstar(kFALSE),
122 fLowerImpPar(-2000.),
123 fHigherImpPar(2000.),
129 Info(
"AliAnalysisTaskSEDStarSpectra",
"Calling Constructor");
134 DefineOutput(1,TList::Class());
135 DefineOutput(2,TList::Class());
136 DefineOutput(3,TList::Class());
137 DefineOutput(4,AliRDHFCutsDStartoKpipi::Class());
138 DefineOutput(5,AliNormalizationCounter::Class());
146 Info(
"~AliAnalysisTaskSEDStarSpectra",
"Calling Destructor");
154 for(
Int_t i=0; i<5; i++){
164 if(fDebug > 1) printf(
"AnalysisTaskSEDStarSpectra::Init() \n");
167 PostData(4,copyfCuts);
177 Error(
"UserExec",
"NO EVENT FOUND!");
186 if (matchingAODdeltaAODlevel<0 || (matchingAODdeltaAODlevel==0 &&
fAODProtection==1)) {
196 TClonesArray *arrayDStartoD0pi=0;
200 if(!aodEvent && AODEvent() && IsStandardAOD()) {
203 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
206 AliAODHandler* aodHandler = (AliAODHandler*)
207 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
208 if(aodHandler->GetExtensions()) {
209 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
211 arrayDStartoD0pi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
214 arrayDStartoD0pi=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
219 if(!aodEvent->GetPrimaryVertex() || TMath::Abs(aodEvent->GetMagneticField())<0.001)
return;
225 TString trigclass=aodEvent->GetFiredTriggerClasses();
226 if(trigclass.Contains(
"C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains(
"C0SMH-B-NOPF-ALL"))
fCEvents->Fill(5);
243 Int_t icountReco = 0;
246 Int_t pdgDgDStartoD0pi[2]={421,211};
247 Int_t pdgDgD0toKpi[2]={321,211};
250 AliAODVertex *vtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
252 if(vtx1->GetNContributors()<1)
return;
255 if (!arrayDStartoD0pi){
256 AliInfo(
"Could not find array of HF vertices, skipping the event");
258 }
else AliDebug(2, Form(
"Found %d vertices",arrayDStartoD0pi->GetEntriesFast()));
260 Int_t nSelectedAna =0;
261 Int_t nSelectedProd =0;
269 for (
Int_t iDStartoD0pi = 0; iDStartoD0pi<arrayDStartoD0pi->GetEntriesFast(); iDStartoD0pi++) {
273 Bool_t isDStarCand =kTRUE;
274 if(!(vHF->
FillRecoCasc(aodEvent,dstarD0pi,isDStarCand))) {
278 if(!dstarD0pi->GetSecondaryVtx())
continue;
280 if (!theD0particle)
continue;
283 TClonesArray *mcArray = 0;
284 AliAODMCHeader *mcHeader=0;
293 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
295 AliError(
"Could not find Monte-Carlo in AOD");
299 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
301 printf(
"AliAnalysisTaskSEDplus::UserExec: MC header branch not found!\n");
305 Int_t mcLabel = dstarD0pi->
MatchToMC(413,421,pdgDgDStartoD0pi,pdgDgD0toKpi,mcArray);
308 AliAODMCParticle *partDSt = (AliAODMCParticle*)mcArray->At(mcLabel);
310 if(checkOrigin==5) isPrimary=kFALSE;
311 AliAODMCParticle *dg0 = (AliAODMCParticle*)mcArray->At(partDSt->GetDaughter(0));
313 pdgCode=TMath::Abs(partDSt->GetPdgCode());
323 if(pdgCode==-1) AliDebug(2,
"No particle assigned! check\n");
329 if(!isTkSelected)
continue;
339 Double_t arrayForSparse[3]={invMass,ptCand,impparXY};
340 Double_t arrayForSparseTrue[3]={invMass,ptCand,trueImpParXY};
429 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
430 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
433 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>
fPeakWindow)
continue;
466 TLorentzVector lorentzTrack1(0,0,0,0);
467 TLorentzVector lorentzTrack2(0,0,0,0);
469 for (
Int_t i=0; i<aodEvent->GetNumberOfTracks(); i++){
471 AliAODTrack* aodTrack =
dynamic_cast<AliAODTrack*
>(aodEvent->GetTrack(i));
472 if(!aodTrack) AliFatal(
"Not a standard AOD");
474 if(dstarD0pi->Charge() == aodTrack->Charge())
continue;
475 if((!(aodTrack->GetStatus()&AliESDtrack::kITSrefit)|| (!(aodTrack->GetStatus()&AliESDtrack::kTPCrefit))))
continue;
476 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))>0.02)
continue;
479 Double_t mass = TDatabasePDG::Instance()->GetParticle(211)->Mass();
481 lorentzTrack1.SetPxPyPzE( dstarD0pi->Px(),dstarD0pi->Py(), dstarD0pi->Pz(), dstarD0pi->E(413) );
482 lorentzTrack2.SetPxPyPzE( aodTrack->Px(),aodTrack->Py(), aodTrack->Pz(),aodTrack->E(mass) );
485 Double_t d1mass = ((lorentzTrack1+lorentzTrack2).M());
502 AliDebug(2, Form(
"Found %i Reco particles that are D*!!",icountReco));
518 AliAnalysisTaskSE::Terminate();
522 printf(
"ERROR: fOutput not available\n");
532 printf(
"ERROR: fOutputAll not available\n");
537 printf(
"ERROR: fOutputPID not available\n");
545 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
580 fCEvents =
new TH1F(
"fCEvents",
"conter",13,0,13);
582 fCEvents->GetXaxis()->SetTitle(
"1");
583 fCEvents->GetYaxis()->SetTitle(
"counts");
584 fCEvents->GetXaxis()->SetBinLabel(2,
"no. of events");
585 fCEvents->GetXaxis()->SetBinLabel(3,
"good prim vtx and B field");
586 fCEvents->GetXaxis()->SetBinLabel(4,
"no event selected");
587 fCEvents->GetXaxis()->SetBinLabel(5,
"no vtx contributors");
588 fCEvents->GetXaxis()->SetBinLabel(6,
"trigger for PbPb");
589 fCEvents->GetXaxis()->SetBinLabel(7,
"no z vtx");
590 fCEvents->GetXaxis()->SetBinLabel(12,
"no. of D0 fail to be rec");
593 fTrueDiff2 =
new TH2F(
"DiffDstar_pt",
"True Reco diff vs pt",200,0,15,900,0,0.3);
596 fDeltaMassD1 =
new TH1F(
"DeltaMassD1",
"delta mass d1",600,0,0.8);
599 const Int_t nhist=14;
600 TString nameMass=
" ", nameSgn=
" ", nameBkg=
" ";
602 for(
Int_t i=-2;i<nhist;i++){
603 nameMass=
"histDeltaMass_";
605 nameSgn=
"histDeltaSgn_";
607 nameBkg=
"histDeltaBkg_";
611 nameMass=
"histDeltaMass";
612 nameSgn=
"histDeltaSgn";
613 nameBkg=
"histDeltaBkg";
616 TH1F* spectrumMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} invariant mass; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
617 TH1F* spectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*}-D^{0} Signal invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
618 TH1F* spectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*}-D^{0} Background invariant mass - MC; #DeltaM [GeV/c^{2}]; Entries",700,0.13,0.2);
620 nameMass=
"histD0Mass_";
622 nameSgn=
"histD0Sgn_";
624 nameBkg=
"histD0Bkg_";
628 nameMass=
"histD0Mass";
633 TH1F* spectrumD0Mass =
new TH1F(nameMass.Data(),
"D^{0} invariant mass; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
634 TH1F* spectrumD0Sgn =
new TH1F(nameSgn.Data(),
"D^{0} Signal invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
635 TH1F* spectrumD0Bkg =
new TH1F(nameBkg.Data(),
"D^{0} Background invariant mass - MC; M(D^{0}) [GeV/c^{2}]; Entries",200,1.75,1.95);
637 nameMass=
"histDstarMass_";
639 nameSgn=
"histDstarSgn_";
641 nameBkg=
"histDstarBkg_";
645 nameMass=
"histDstarMass";
646 nameSgn=
"histDstarSgn";
647 nameBkg=
"histDstarBkg";
650 TH1F* spectrumDstarMass =
new TH1F(nameMass.Data(),
"D^{*} invariant mass; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
651 TH1F* spectrumDstarSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
652 TH1F* spectrumDstarBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background invariant mass - MC; M(D^{*}) [GeV/c^{2}]; Entries",200,1.9,2.1);
654 nameMass=
"histSideBandMass_";
657 nameMass=
"histSideBandMass";
660 TH1F* spectrumSideBandMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} sideband mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
662 nameMass=
"histWrongSignMass_";
665 nameMass=
"histWrongSignMass";
668 TH1F* spectrumWrongSignMass =
new TH1F(nameMass.Data(),
"D^{*}-D^{0} wrongsign mass; M(D^{*}) [GeV/c^{2}]; Entries",200,0.1,0.2);
671 spectrumMass->Sumw2();
672 spectrumSgn->Sumw2();
673 spectrumBkg->Sumw2();
675 spectrumMass->SetLineColor(6);
676 spectrumSgn->SetLineColor(2);
677 spectrumBkg->SetLineColor(4);
679 spectrumMass->SetMarkerStyle(20);
680 spectrumSgn->SetMarkerStyle(20);
681 spectrumBkg->SetMarkerStyle(20);
682 spectrumMass->SetMarkerSize(0.6);
683 spectrumSgn->SetMarkerSize(0.6);
684 spectrumBkg->SetMarkerSize(0.6);
685 spectrumMass->SetMarkerColor(6);
686 spectrumSgn->SetMarkerColor(2);
687 spectrumBkg->SetMarkerColor(4);
689 spectrumD0Mass->Sumw2();
690 spectrumD0Sgn->Sumw2();
691 spectrumD0Bkg->Sumw2();
693 spectrumD0Mass->SetLineColor(6);
694 spectrumD0Sgn->SetLineColor(2);
695 spectrumD0Bkg->SetLineColor(4);
697 spectrumD0Mass->SetMarkerStyle(20);
698 spectrumD0Sgn->SetMarkerStyle(20);
699 spectrumD0Bkg->SetMarkerStyle(20);
700 spectrumD0Mass->SetMarkerSize(0.6);
701 spectrumD0Sgn->SetMarkerSize(0.6);
702 spectrumD0Bkg->SetMarkerSize(0.6);
703 spectrumD0Mass->SetMarkerColor(6);
704 spectrumD0Sgn->SetMarkerColor(2);
705 spectrumD0Bkg->SetMarkerColor(4);
707 spectrumDstarMass->Sumw2();
708 spectrumDstarSgn->Sumw2();
709 spectrumDstarBkg->Sumw2();
711 spectrumDstarMass->SetLineColor(6);
712 spectrumDstarSgn->SetLineColor(2);
713 spectrumDstarBkg->SetLineColor(4);
715 spectrumDstarMass->SetMarkerStyle(20);
716 spectrumDstarSgn->SetMarkerStyle(20);
717 spectrumDstarBkg->SetMarkerStyle(20);
718 spectrumDstarMass->SetMarkerSize(0.6);
719 spectrumDstarSgn->SetMarkerSize(0.6);
720 spectrumDstarBkg->SetMarkerSize(0.6);
721 spectrumDstarMass->SetMarkerColor(6);
722 spectrumDstarSgn->SetMarkerColor(2);
723 spectrumDstarBkg->SetMarkerColor(4);
725 spectrumSideBandMass->Sumw2();
726 spectrumSideBandMass->SetLineColor(4);
727 spectrumSideBandMass->SetMarkerStyle(20);
728 spectrumSideBandMass->SetMarkerSize(0.6);
729 spectrumSideBandMass->SetMarkerColor(4);
731 spectrumWrongSignMass->Sumw2();
732 spectrumWrongSignMass->SetLineColor(4);
733 spectrumWrongSignMass->SetMarkerStyle(20);
734 spectrumWrongSignMass->SetMarkerSize(0.6);
735 spectrumWrongSignMass->SetMarkerColor(4);
737 TH1F* allMass = (TH1F*)spectrumMass->Clone();
738 TH1F* allSgn = (TH1F*)spectrumSgn->Clone();
739 TH1F* allBkg = (TH1F*)spectrumBkg->Clone();
741 TH1F* pidMass = (TH1F*)spectrumMass->Clone();
742 TH1F* pidSgn = (TH1F*)spectrumSgn->Clone();
743 TH1F* pidBkg = (TH1F*)spectrumBkg->Clone();
753 TH1F* allD0Mass = (TH1F*)spectrumD0Mass->Clone();
754 TH1F* allD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
755 TH1F* allD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
757 TH1F* pidD0Mass = (TH1F*)spectrumD0Mass->Clone();
758 TH1F* pidD0Sgn = (TH1F*)spectrumD0Sgn->Clone();
759 TH1F* pidD0Bkg = (TH1F*)spectrumD0Bkg->Clone();
769 TH1F* allDstarMass = (TH1F*)spectrumDstarMass->Clone();
770 TH1F* allDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
771 TH1F* allDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
773 TH1F* pidDstarMass = (TH1F*)spectrumDstarMass->Clone();
774 TH1F* pidDstarSgn = (TH1F*)spectrumDstarSgn->Clone();
775 TH1F* pidDstarBkg = (TH1F*)spectrumDstarBkg->Clone();
785 TH1F* allSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
786 TH1F* pidSideBandMass = (TH1F*)spectrumSideBandMass->Clone();
791 TH1F* allWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
792 TH1F* pidWrongSignMass = (TH1F*)spectrumWrongSignMass->Clone();
804 TH1F* ptspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} p_{T}; p_{T} [GeV]; Entries",200,0,10);
805 TH1F* ptspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal p_{T} - MC; p_{T} [GeV]; Entries",200,0,10);
806 TH1F* ptspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background p_{T} - MC; p_{T} [GeV]; Entries",200,0,10);
808 ptspectrumMass->Sumw2();
809 ptspectrumSgn->Sumw2();
810 ptspectrumBkg->Sumw2();
812 ptspectrumMass->SetLineColor(6);
813 ptspectrumSgn->SetLineColor(2);
814 ptspectrumBkg->SetLineColor(4);
816 ptspectrumMass->SetMarkerStyle(20);
817 ptspectrumSgn->SetMarkerStyle(20);
818 ptspectrumBkg->SetMarkerStyle(20);
819 ptspectrumMass->SetMarkerSize(0.6);
820 ptspectrumSgn->SetMarkerSize(0.6);
821 ptspectrumBkg->SetMarkerSize(0.6);
822 ptspectrumMass->SetMarkerColor(6);
823 ptspectrumSgn->SetMarkerColor(2);
824 ptspectrumBkg->SetMarkerColor(4);
826 TH1F* ptallMass = (TH1F*)ptspectrumMass->Clone();
827 TH1F* ptallSgn = (TH1F*)ptspectrumSgn->Clone();
828 TH1F* ptallBkg = (TH1F*)ptspectrumBkg->Clone();
830 TH1F* ptpidMass = (TH1F*)ptspectrumMass->Clone();
831 TH1F* ptpidSgn = (TH1F*)ptspectrumSgn->Clone();
832 TH1F* ptpidBkg = (TH1F*)ptspectrumBkg->Clone();
847 TH1F* etaspectrumMass =
new TH1F(nameMass.Data(),
"D^{*} #eta; #eta; Entries",200,-1,1);
848 TH1F* etaspectrumSgn =
new TH1F(nameSgn.Data(),
"D^{*} Signal #eta - MC; #eta; Entries",200,-1,1);
849 TH1F* etaspectrumBkg =
new TH1F(nameBkg.Data(),
"D^{*} Background #eta - MC; #eta; Entries",200,-1,1);
851 etaspectrumMass->Sumw2();
852 etaspectrumSgn->Sumw2();
853 etaspectrumBkg->Sumw2();
855 etaspectrumMass->SetLineColor(6);
856 etaspectrumSgn->SetLineColor(2);
857 etaspectrumBkg->SetLineColor(4);
859 etaspectrumMass->SetMarkerStyle(20);
860 etaspectrumSgn->SetMarkerStyle(20);
861 etaspectrumBkg->SetMarkerStyle(20);
862 etaspectrumMass->SetMarkerSize(0.6);
863 etaspectrumSgn->SetMarkerSize(0.6);
864 etaspectrumBkg->SetMarkerSize(0.6);
865 etaspectrumMass->SetMarkerColor(6);
866 etaspectrumSgn->SetMarkerColor(2);
867 etaspectrumBkg->SetMarkerColor(4);
869 TH1F* etaallMass = (TH1F*)etaspectrumMass->Clone();
870 TH1F* etaallSgn = (TH1F*)etaspectrumSgn->Clone();
871 TH1F* etaallBkg = (TH1F*)etaspectrumBkg->Clone();
873 TH1F* etapidMass = (TH1F*)etaspectrumMass->Clone();
874 TH1F* etapidSgn = (TH1F*)etaspectrumSgn->Clone();
875 TH1F* etapidBkg = (TH1F*)etaspectrumBkg->Clone();
886 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.);
900 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
902 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
913 Bool_t massInRange=kFALSE;
915 Double_t mPDGDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
918 if (TMath::Abs(invmassDelta-(mPDGDstar-mPDGD0))<
fPeakWindow) massInRange=kTRUE;
922 fillthis=
"histD0Sgn_";
924 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
925 fillthis=
"histD0Sgn";
926 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
927 fillthis=
"histDstarSgn_";
929 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
930 fillthis=
"histDstarSgn";
931 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
932 fillthis=
"histDeltaSgn_";
934 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
935 fillthis=
"histDeltaSgn";
936 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
939 ((TH1F*)(listout->FindObject(fillthis)))->Fill(pt);
941 ((TH1F*)(listout->FindObject(fillthis)))->Fill(eta);
945 fillthis=
"histD0Bkg_";
947 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
948 fillthis=
"histD0Bkg";
949 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
950 fillthis=
"histDstarBkg_";
952 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
953 fillthis=
"histDstarBkg";
954 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
955 fillthis=
"histDeltaBkg_";
957 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
958 fillthis=
"histDeltaBkg";
959 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
962 ((TH1F*)(listout->FindObject(fillthis)))->Fill(pt);
964 ((TH1F*)(listout->FindObject(fillthis)))->Fill(eta);
969 fillthis=
"histD0Mass_";
971 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
972 fillthis=
"histD0Mass";
973 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassD0);
974 fillthis=
"histDstarMass_";
976 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
977 fillthis=
"histDstarMass";
978 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDstar);
979 fillthis=
"histDeltaMass_";
981 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
982 fillthis=
"histDeltaMass";
983 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
987 ((TH1F*)(listout->FindObject(fillthis)))->Fill(pt);
989 ((TH1F*)(listout->FindObject(fillthis)))->Fill(eta);
1007 if(TMath::Abs(invmassD0-1.865)>4*
fD0Window && TMath::Abs(invmassD0-1.865)<8*
fD0Window){
1013 fillthis=
"histSideBandMass_";
1015 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
1016 fillthis=
"histSideBandMass";
1017 ((TH1F*)(listout->FindObject(fillthis)))->Fill(invmassDelta);
1028 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
1030 if (TMath::Abs(invmassD0-mPDGD0)>
fD0Window)
return;
1034 Int_t okD0WrongSign;
1045 if(part->Charge()>0 && (isSelected ==1)) {
1050 if(part->Charge()>0 && (isSelected ==3)) {
1055 if(okD0WrongSign!=0){
1056 wrongMassD0 = theD0particle->
InvMassD0();
1057 }
else if(okD0WrongSign==0){
1061 if(TMath::Abs(wrongMassD0-1.865)<
fD0Window){
1065 if (part->Charge()>0){
1066 e[0]=theD0particle->EProng(0,321);
1067 e[1]=theD0particle->EProng(1,211);
1069 e[0]=theD0particle->EProng(0,211);
1070 e[1]=theD0particle->EProng(1,321);
1072 e[2]=part->EProng(0,211);
1077 Double_t wrongMassDstar = TMath::Sqrt(esum*esum-pds*pds);
1080 fillthis=
"histWrongSignMass_";
1082 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1083 fillthis=
"histWrongSignMass";
1084 ((TH1F*)(listout->FindObject(fillthis)))->Fill(wrongMassDstar-wrongMassD0);
1095 Int_t pdgGranma = 0;
1097 mother = mcPartCandidate->GetMother();
1099 Int_t abspdgGranma =0;
1103 AliAODMCParticle* mcGranma =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(mother));
1105 pdgGranma = mcGranma->GetPdgCode();
1106 abspdgGranma = TMath::Abs(pdgGranma);
1107 if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
1110 mother = mcGranma->GetMother();
1112 AliError(
"Failed casting the mother particle!");
1117 if(isFromB)
return 5;
1125 mcHeader->GetVertex(vtxTrue);
1127 partDp->XvYvZv(origD);
1129 Double_t pXdauTrue[3],pYdauTrue[3],pZdauTrue[3];
1130 Int_t labelFirstDau = partDp->GetDaughter(0);
1132 Int_t nDau=partDp->GetNDaughters();
1136 for(
Int_t iDau=0; iDau<2; iDau++){
1137 Int_t ind = labelFirstDau+iDau;
1138 AliAODMCParticle* part =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(ind));
1140 AliError(
"Daughter particle not found in MC array");
1143 Int_t pdgCode=TMath::Abs(part->GetPdgCode());
1144 if(pdgCode==211 || pdgCode==321){
1145 pXdauTrue[theDau]=part->Px();
1146 pYdauTrue[theDau]=part->Py();
1147 pZdauTrue[theDau]=part->Pz();
1153 AliError(
"Wrong number of decay prongs");
1158 AliAODRecoDecayHF aodD0MC(vtxTrue,origD,3,charge,pXdauTrue,pYdauTrue,pZdauTrue,d0dummy);
1171 "Mass vs. pt vs.imppar - All",
1174 "Mass vs. pt vs.imppar - promptD",
1177 "Mass vs. pt vs.imppar - DfromB",
1180 "Mass vs. pt vs.true imppar -DfromB",
1183 "Mass vs. pt vs.imppar - backgr.",
1186 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
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
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
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
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