25 #include <TClonesArray.h>
32 #include <TDatabasePDG.h>
34 #include <AliAnalysisDataSlot.h>
35 #include <AliAnalysisDataContainer.h>
36 #include "AliAnalysisManager.h"
37 #include "AliAODHandler.h"
38 #include "AliAODEvent.h"
39 #include "AliAODVertex.h"
40 #include "AliAODTrack.h"
41 #include "AliAODMCHeader.h"
42 #include "AliAODMCParticle.h"
45 #include "AliAnalysisTaskSE.h"
47 #include "AliKFParticle.h"
51 #include "AliKFVertex.h"
52 #include "AliESDVertex.h"
54 #include "AliAODPid.h"
55 #include "AliInputEventHandler.h"
72 fhMassPtGreater3TC(0),
73 fhMassPtGreater3Kp(0),
74 fhMassPtGreater3KpTC(0),
75 fhMassPtGreater3Lpi(0),
76 fhMassPtGreater3LpiTC(0),
77 fhMassPtGreater3Dk(0),
78 fhMassPtGreater3DkTC(0),
79 fhMassPtGreater33Pr(0),
80 fhMassPtGreater33PrTC(0),
82 fhMassPtGreater2TC(0),
83 fhMassPtGreater2Kp(0),
84 fhMassPtGreater2KpTC(0),
85 fhMassPtGreater2Lpi(0),
86 fhMassPtGreater2LpiTC(0),
87 fhMassPtGreater2Dk(0),
88 fhMassPtGreater2DkTC(0),
89 fhMassPtGreater23Pr(0),
90 fhMassPtGreater23PrTC(0),
103 fhProtonPtProngLcPt(0),
104 fhBProtonPtProngLcPt(0),
105 fhProtond0ProngLcPt(0),
106 fhBProtond0ProngLcPt(0),
107 fhKaonPtProngLcPt(0),
108 fhBKaonPtProngLcPt(0),
109 fhKaond0ProngLcPt(0),
110 fhBKaond0ProngLcPt(0),
111 fhPionPtProngLcPt(0),
112 fhBPionPtProngLcPt(0),
113 fhPiond0ProngLcPt(0),
114 fhBPiond0ProngLcPt(0),
116 fhBDist12PrimLcPt(0),
121 fhCosPointingAngleLcPt(0),
122 fhBCosPointingAngleLcPt(0),
123 fhDecayLengthLcPt(0),
124 fhBDecayLengthLcPt(0),
131 fLowmasslimit(2.086),
134 fRDCutsProduction(0),
144 fFillVarHists(kFALSE),
145 fMultiplicityHists(kFALSE),
146 fPriorsHists(kFALSE),
158 Float_t
ptlims[7]={0.,2.,4.,6.,8.,12.,24.};
160 for(Int_t icut=0; icut<2; icut++)
fCutsKF[icut]=0.;
177 AliAnalysisTaskSE(name),
182 fhMassPtGreater3TC(0),
183 fhMassPtGreater3Kp(0),
184 fhMassPtGreater3KpTC(0),
185 fhMassPtGreater3Lpi(0),
186 fhMassPtGreater3LpiTC(0),
187 fhMassPtGreater3Dk(0),
188 fhMassPtGreater3DkTC(0),
189 fhMassPtGreater33Pr(0),
190 fhMassPtGreater33PrTC(0),
192 fhMassPtGreater2TC(0),
193 fhMassPtGreater2Kp(0),
194 fhMassPtGreater2KpTC(0),
195 fhMassPtGreater2Lpi(0),
196 fhMassPtGreater2LpiTC(0),
197 fhMassPtGreater2Dk(0),
198 fhMassPtGreater2DkTC(0),
199 fhMassPtGreater23Pr(0),
200 fhMassPtGreater23PrTC(0),
213 fhProtonPtProngLcPt(0),
214 fhBProtonPtProngLcPt(0),
215 fhProtond0ProngLcPt(0),
216 fhBProtond0ProngLcPt(0),
217 fhKaonPtProngLcPt(0),
218 fhBKaonPtProngLcPt(0),
219 fhKaond0ProngLcPt(0),
220 fhBKaond0ProngLcPt(0),
221 fhPionPtProngLcPt(0),
222 fhBPionPtProngLcPt(0),
223 fhPiond0ProngLcPt(0),
224 fhBPiond0ProngLcPt(0),
226 fhBDist12PrimLcPt(0),
231 fhCosPointingAngleLcPt(0),
232 fhBCosPointingAngleLcPt(0),
233 fhDecayLengthLcPt(0),
234 fhBDecayLengthLcPt(0),
241 fLowmasslimit(2.086),
243 fRDCutsAnalysis(lccutsana),
244 fRDCutsProduction(lccutsprod),
246 fFillNtuple(fillNtuple),
254 fFillVarHists(kFALSE),
255 fMultiplicityHists(kFALSE),
256 fPriorsHists(kFALSE),
269 for(Int_t icut=0; icut<2; icut++)
fCutsKF[icut]=0.;
284 DefineOutput(1,TList::Class());
285 DefineOutput(2,TList::Class());
286 DefineOutput(3,TList::Class());
287 DefineOutput(4,TH1F::Class());
288 DefineOutput(5,TList::Class());
289 DefineOutput(6,TList::Class());
290 DefineOutput(7,AliNormalizationCounter::Class());
293 DefineOutput(8,TNtuple::Class());
374 printf(
"Max. number of Pt bins = %d\n",
kMaxPtBins);
394 printf(
"Number of Pt bins = %d\n",
fNPtBins);
409 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::Init() \n");
425 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::UserCreateOutputObjects() \n");
430 fOutput->SetName(
"OutputHistos");
440 hisname.Form(
"hMassPt%d",i);
443 hisname.Form(
"hMassPt%dTC",i);
447 hisname.Form(
"hMassPtLpi%d",i);
450 hisname.Form(
"hMassPtLpi%dTC",i);
454 hisname.Form(
"hMassPtKp%d",i);
457 hisname.Form(
"hMassPtKp%dTC",i);
460 hisname.Form(
"hMassPtDk%d",i);
463 hisname.Form(
"hMassPtDk%dTC",i);
467 hisname.Form(
"hMassPt3Pr%d",i);
470 hisname.Form(
"hMassPt3Pr%dTC",i);
475 hisname.Form(
"hSigPt%d",i);
478 hisname.Form(
"hSigPt%dTC",i);
481 hisname.Form(
"hSigPtLpi%d",i);
484 hisname.Form(
"hSigPtLpi%dTC",i);
488 hisname.Form(
"hSigPtKp%d",i);
491 hisname.Form(
"hSigPtKp%dTC",i);
495 hisname.Form(
"hSigPtDk%d",i);
498 hisname.Form(
"hSigPtDk%dTC",i);
502 hisname.Form(
"hSigPt3Pr%d",i);
505 hisname.Form(
"hSigPt3Pr%dTC",i);
510 hisname.Form(
"hSigLbPt%d",i);
513 hisname.Form(
"hSigLbPt%dTC",i);
518 hisname.Form(
"hSigcOnlyPt%d",i);
521 hisname.Form(
"hSigcOnlyPt%dTC",i);
526 hisname.Form(
"hSigNoQuarkPt%d",i);
529 hisname.Form(
"hSigNoQuarkPt%dTC",i);
534 hisname.Form(
"hBkgPt%d",i);
537 hisname.Form(
"hBkgPt%dTC",i);
540 hisname.Form(
"hBkgPtLpi%d",i);
543 hisname.Form(
"hBkgPtLpi%dTC",i);
547 hisname.Form(
"hBkgPtKp%d",i);
550 hisname.Form(
"hBkgPtKp%dTC",i);
554 hisname.Form(
"hBkgPtDk%d",i);
557 hisname.Form(
"hBkgPtDk%dTC",i);
561 hisname.Form(
"hBkgPt3Pr%d",i);
564 hisname.Form(
"hBkgPt3Pr%dTC",i);
569 for(Int_t ii=0; ii<6*
fNPtBins; ii++){
591 fhEta3Prong =
new TH2F(
"hEta3Prong",
"hEta3Prong;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
592 fhEta3ProngAcc =
new TH2F(
"hEta3ProngAcc",
"hEta3ProngAcc;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
593 fhEta3ProngProd =
new TH2F(
"hEta3ProngProd",
"hEta3ProngProd;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
594 fhEta3ProngAn =
new TH2F(
"hEta3ProngAn",
"hEta3ProngAn;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
595 fhRap3Prong =
new TH2F(
"hRap3Prong",
"hRap3Prong;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
596 fhRap3ProngAcc =
new TH2F(
"hRap3ProngAcc",
"hRap3ProngAcc;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
597 fhRap3ProngProd =
new TH2F(
"hRap3ProngProd",
"hRap3ProngProd;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
598 fhRap3ProngAn =
new TH2F(
"hRap3ProngAn",
"hRap3ProngAn;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
600 fhSelectBit =
new TH1F(
"hSelectBit",
"hSelectBit",5,-0.5,5.5);
602 fhSelectBit->GetXaxis()->SetBinLabel(3,
"SelectionMap");
616 fHistNEvents =
new TH1F(
"fHistNEvents",
"Number of processed events; ; Events",3,-1.5,1.5);
621 fhChi2 =
new TH1F(
"fhChi2",
"Chi2",100,0.,10.);
695 fNentries=
new TH1F(
"fNentries",
"Integral(1,2) = number of AODs *** Integral(2,3) = number of candidates selected with cuts *** Integral(3,4) = number of Lc selected with cuts *** Integral(4,5) = events with good vertex *** Integral(5,6) = pt out of bounds", 11,-0.5,10.5);
698 fNentries->GetXaxis()->SetBinLabel(1,
"nEventsAnal");
699 fNentries->GetXaxis()->SetBinLabel(2,
"nCandSel(Cuts)");
700 fNentries->GetXaxis()->SetBinLabel(3,
"nLcSelected");
701 fNentries->GetXaxis()->SetBinLabel(4,
"nEventsGoodVtxS");
702 fNentries->GetXaxis()->SetBinLabel(5,
"ptbin = -1");
703 fNentries->GetXaxis()->SetBinLabel(6,
"no daughter");
704 fNentries->GetXaxis()->SetBinLabel(7,
"nCandSel(Tr)");
705 fNentries->GetXaxis()->SetBinLabel(8,
"PID=0");
706 fNentries->GetXaxis()->SetBinLabel(9,
"PID=1");
707 fNentries->GetXaxis()->SetBinLabel(10,
"PID=2");
708 fNentries->GetXaxis()->SetBinLabel(11,
"PID=3");
709 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
711 hisname.Form(
"hMass");
714 hisname.Form(
"hbMass");
719 hisname.Form(
"hpTOFSignal");
720 TH1F *hProtonTOFSignal=
new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
722 hisname.Form(
"hbpTOFSignal");
723 TH1F *hBProtonTOFSignal=
new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
726 hisname.Form(
"hpTPCSignal");
727 TH1F *hProtonTPCSignal=
new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
729 hisname.Form(
"hbpTPCSignal");
730 TH1F *hBProtonTPCSignal=
new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
733 hisname.Form(
"hpptProng");
734 TH1F *hProtonPtProng=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
736 hisname.Form(
"hbpptProng");
737 TH1F *hBProtonPtProng=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
740 hisname.Form(
"hpRealTot");
741 TH1F *hProtonRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
743 hisname.Form(
"hbpRealTot");
744 TH1F *hBProtonRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
746 hisname.Form(
"hpIDTot");
747 TH1F *hProtonIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
749 hisname.Form(
"hpIDGood");
750 TH1F *hProtonIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
752 hisname.Form(
"hbpIDGood");
753 TH1F *hBProtonIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
755 hisname.Form(
"hbpIDTot");
756 TH1F *hBProtonIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
758 hisname.Form(
"hnopIDp");
759 TH1F *hnoProtonIDpTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
761 hisname.Form(
"hbnopIDp");
762 TH1F *hBnoProtonIDpTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
765 hisname.Form(
"hpd0Prong");
766 TH1F *hProtond0Prong=
new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
768 hisname.Form(
"hbpd0Prong");
769 TH1F *hBProtond0Prong=
new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
771 hisname.Form(
"hbpSignalVspTOF");
772 TH2F *hBpSignalVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
774 hisname.Form(
"hbpSignalVspTPC");
775 TH2F *hBpSignalVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
777 hisname.Form(
"hpSignalVspTOF");
778 TH2F *hpSignalVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
780 hisname.Form(
"hpSignalVspTPC");
781 TH2F *hpSignalVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
784 hisname.Form(
"hpSigmaVspTOF");
785 TH2F *hpSigmaVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
787 hisname.Form(
"hpSigmaVspTPC");
788 TH2F *hpSigmaVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
790 hisname.Form(
"hbpSigmaVspTOF");
791 TH2F *hBpSigmaVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
793 hisname.Form(
"hbpSigmaVspTPC");
794 TH2F *hBpSigmaVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
799 hisname.Form(
"hKTOFSignal");
800 TH1F *hKaonTOFSignal=
new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
802 hisname.Form(
"hbKTOFSignal");
803 TH1F *hBKaonTOFSignal=
new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
805 hisname.Form(
"hKTPCSignal");
806 TH1F *hKaonTPCSignal=
new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
808 hisname.Form(
"hbKTPCSignal");
809 TH1F *hBKaonTPCSignal=
new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
812 hisname.Form(
"hKptProng");
813 TH1F *hKaonPtProng=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
815 hisname.Form(
"hbKptProng");
816 TH1F *hBKaonPtProng=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
818 hisname.Form(
"hKRealTot");
819 TH1F *hKaonRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
821 hisname.Form(
"hbKRealTot");
822 TH1F *hBKaonRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
824 hisname.Form(
"hKIDGood");
825 TH1F *hKaonIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
827 hisname.Form(
"hKIDTot");
828 TH1F *hKaonIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
830 hisname.Form(
"hbKIDGood");
831 TH1F *hBKaonIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
833 hisname.Form(
"hbKIDTot");
834 TH1F *hBKaonIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
836 hisname.Form(
"hnokIDk");
837 TH1F *hnoKaonIDkTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
839 hisname.Form(
"hbnokIDk");
840 TH1F *hBnoKaonIDkTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
844 hisname.Form(
"hKd0Prong");
845 TH1F *hKaond0Prong=
new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
847 hisname.Form(
"hbKd0Prong");
848 TH1F *hBKaond0Prong=
new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
850 hisname.Form(
"hbKSignalVspTOF");
851 TH2F *hbKSignalVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
853 hisname.Form(
"hbKSignalVspTPC");
854 TH2F *hbKSignalVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
856 hisname.Form(
"hKSignalVspTOF");
857 TH2F *hKSignalVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
859 hisname.Form(
"hKSignalVspTPC");
860 TH2F *hKSignalVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
862 hisname.Form(
"hKSigmaVspTOF");
863 TH2F *hKSigmaVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
865 hisname.Form(
"hKSigmaVspTPC");
866 TH2F *hKSigmaVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
868 hisname.Form(
"hbKSigmaVspTOF");
869 TH2F *hBKSigmaVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
871 hisname.Form(
"hbKSigmaVspTPC");
872 TH2F *hBKSigmaVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
877 hisname.Form(
"hpiTOFSignal");
878 TH1F *hPionTOFSignal=
new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
880 hisname.Form(
"hbpiTOFSignal");
881 TH1F *hBPionTOFSignal=
new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
883 hisname.Form(
"hpiTPCSignal");
884 TH1F *hPionTPCSignal=
new TH1F(hisname.Data(),hisname.Data(),100,30.,100.0);
886 hisname.Form(
"hbpiTPCSignal");
887 TH1F *hBPionTPCSignal=
new TH1F(hisname.Data(),hisname.Data(),100,30.,100.0);
890 hisname.Form(
"hpiptProng");
891 TH1F *hPionPtProng=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
893 hisname.Form(
"hbpiptProng");
894 TH1F *hBPionPtProng=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
897 hisname.Form(
"hpiRealTot");
898 TH1F *hPionRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
900 hisname.Form(
"hbpiRealTot");
901 TH1F *hBPionRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
903 hisname.Form(
"hpiIDGood");
904 TH1F *hPionIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
906 hisname.Form(
"hpiIDTot");
907 TH1F *hPionIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
909 hisname.Form(
"hbpiIDTot");
910 TH1F *hBPionIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
912 hisname.Form(
"hbpiIDGood");
913 TH1F *hBPionIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
915 hisname.Form(
"hnopiIDpi");
916 TH1F *hnoPionIDpiTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
918 hisname.Form(
"hbnopiIDpi");
919 TH1F *hBnoPionIDpiTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
922 hisname.Form(
"hpid0Prong");
923 TH1F *hPiond0Prong=
new TH1F(hisname.Data(),hisname.Data(),100,-0.1,-0.1);
925 hisname.Form(
"hbpid0Prong");
926 TH1F *hBPiond0Prong=
new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
929 hisname.Form(
"hpiSignalVspTOF");
930 TH2F *hpiSignalVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
932 hisname.Form(
"hpiSignalVspTPC");
933 TH2F *hpiSignalVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
935 hisname.Form(
"hbpiSignalVspTOF");
936 TH2F *hbpiSignalVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
938 hisname.Form(
"hbpiSignalVspTPC");
939 TH2F *hbpiSignalVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
941 hisname.Form(
"hpiSigmaVspTOF");
942 TH2F *hpiSigmaVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
944 hisname.Form(
"hpiSigmaVspTPC");
945 TH2F *hpiSigmaVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
947 hisname.Form(
"hbpiSigmaVspTOF");
948 TH2F *hBpiSigmaVspTOF=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
950 hisname.Form(
"hbpiSigmaVspTPC");
951 TH2F *hBpiSigmaVspTPC=
new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
955 hisname.Form(
"hLcRealTot");
956 TH1F *hLambdaRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
958 hisname.Form(
"hbLcRealTot");
959 TH1F *hbLambdaRealTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
961 hisname.Form(
"hLcIDTot");
962 TH1F *hLambdaIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
964 hisname.Form(
"hbLcIDTot");
965 TH1F *hbLambdaIDTot=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
967 hisname.Form(
"hLcIDGood");
968 TH1F *hLambdaIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
970 hisname.Form(
"hbLcIDGood");
971 TH1F *hbLambdaIDGood=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
973 hisname.Form(
"hLcnoID");
974 TH1F *hLambdanoID=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
976 hisname.Form(
"hbLcnoID");
977 TH1F *hbLambdanoID=
new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
981 hisname.Form(
"hLcpt");
982 TH1F *hLcPt=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
984 hisname.Form(
"hbLcpt");
985 TH1F *hBLcPt=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
987 hisname.Form(
"hDist12toPrim");
988 TH1F *hDist12Prim=
new TH1F(hisname.Data(),hisname.Data(),100,0.,1.0);
990 hisname.Form(
"hbDist12toPrim");
991 TH1F *hBDist12Prim=
new TH1F(hisname.Data(),hisname.Data(),100,0.,1.0);
994 hisname.Form(
"hSigmaVert");
995 TH1F *hSigmaVert=
new TH1F(hisname.Data(),hisname.Data(),60,0.,0.06);
997 hisname.Form(
"hbSigmaVert");
998 TH1F *hBSigmaVert=
new TH1F(hisname.Data(),hisname.Data(),60,0.,0.06);
1001 hisname.Form(
"hDCAs");
1002 TH1F *hdcas=
new TH1F(hisname.Data(),hisname.Data(),200,0.,0.1);
1004 hisname.Form(
"hbDCAs");
1005 TH1F *hBdcas=
new TH1F(hisname.Data(),hisname.Data(),200,0.,0.1);
1008 hisname.Form(
"hCosPointingAngle");
1009 TH1F *hCosPointingAngle=
new TH1F(hisname.Data(),hisname.Data(),40,0.,1.);
1011 hisname.Form(
"hbCosPointingAngle");
1012 TH1F *hBCosPointingAngle=
new TH1F(hisname.Data(),hisname.Data(),40,0.,1.);
1015 hisname.Form(
"hDecayLength");
1016 TH1F *hDecayLength=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1018 hisname.Form(
"hbDecayLength");
1019 TH1F *hBDecayLength=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1022 hisname.Form(
"hSum2");
1023 TH1F *hSum2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1025 hisname.Form(
"hbSum2");
1026 TH1F *hBSum2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1029 hisname.Form(
"hptmax");
1030 TH1F *hPtMax=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1032 hisname.Form(
"hbptmax");
1033 TH1F *hBPtMax=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1037 hisname.Form(
"hpptProngLcPt");
1040 hisname.Form(
"hbpptProngLcPt");
1044 hisname.Form(
"hpd0ProngLcPt");
1047 hisname.Form(
"hbpd0ProngLcPt");
1051 hisname.Form(
"hKptProngLcPt");
1054 hisname.Form(
"hbKptProngLcPt");
1058 hisname.Form(
"hKd0ProngLcPt");
1059 fhKaond0ProngLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,0.1);
1061 hisname.Form(
"hbKd0ProngLcPt");
1065 hisname.Form(
"hpiptProngLcPt");
1068 hisname.Form(
"hbpiptProngLcPt");
1072 hisname.Form(
"hpid0ProngLcPt");
1073 fhPiond0ProngLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,-0.1);
1075 hisname.Form(
"hbpid0ProngLcPt");
1079 hisname.Form(
"hDist12toPrimLcPt");
1080 fhDist12PrimLcPt =
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,1.0);
1082 hisname.Form(
"hbDist12toPrimLcPt");
1083 fhBDist12PrimLcPt =
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,1.0);
1086 hisname.Form(
"hSigmaVertLcPt");
1087 fhSigmaVertLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,60,0.,0.06);
1089 hisname.Form(
"hbSigmaVertLcPt");
1090 fhBSigmaVertLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,60,0.,0.06);
1093 hisname.Form(
"hDCAsLcPt");
1094 fhdcasLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,200,0.,0.1);
1096 hisname.Form(
"hbDCAsLcPt");
1097 fhBdcasLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,200,0.,0.1);
1100 hisname.Form(
"hCosPointingAngleLcPt");
1103 hisname.Form(
"hbCosPointingAngleLcPt");
1107 hisname.Form(
"hDecayLengthLcPt");
1108 fhDecayLengthLcPt =
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1110 hisname.Form(
"hbDecayLengthLcPt");
1114 hisname.Form(
"hSum2LcPt");
1115 fhSum2LcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1117 hisname.Form(
"hbSum2LcPt");
1118 fhBSum2LcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1121 hisname.Form(
"hptmaxLcPt");
1122 fhPtMaxLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.);
1124 hisname.Form(
"hbptmaxLcPt");
1125 fhBPtMaxLcPt=
new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.);
1130 fAPriori->SetName(
"APrioriMCHistos");
1132 hisname.Form(
"hElIn3Prong");
1133 TH1F *hElIn3Prong=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1135 hisname.Form(
"hMuIn3Prong");
1136 TH1F *hMuIn3Prong=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1138 hisname.Form(
"hPiIn3Prong");
1139 TH1F *hPiIn3Prong=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1141 hisname.Form(
"hKaIn3Prong");
1142 TH1F *hKaIn3Prong=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1144 hisname.Form(
"hPrIn3Prong");
1145 TH1F *hPrIn3Prong=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1148 hisname.Form(
"hElIn3Prong1");
1149 TH1F *hElIn3Prong1=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1151 hisname.Form(
"hMuIn3Prong1");
1152 TH1F *hMuIn3Prong1=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1154 hisname.Form(
"hPiIn3Prong1");
1155 TH1F *hPiIn3Prong1=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1157 hisname.Form(
"hKaIn3Prong1");
1158 TH1F *hKaIn3Prong1=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1160 hisname.Form(
"hPrIn3Prong1");
1161 TH1F *hPrIn3Prong1=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1164 hisname.Form(
"hElIn3Prong2");
1165 TH1F *hElIn3Prong2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1167 hisname.Form(
"hMuIn3Prong2");
1168 TH1F *hMuIn3Prong2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1170 hisname.Form(
"hPiIn3Prong2");
1171 TH1F *hPiIn3Prong2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1173 hisname.Form(
"hKaIn3Prong2");
1174 TH1F *hKaIn3Prong2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1176 hisname.Form(
"hPrIn3Prong2");
1177 TH1F *hPrIn3Prong2=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1180 hisname.Form(
"hElIn3Prong3");
1181 TH1F *hElIn3Prong3=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1183 hisname.Form(
"hMuIn3Prong3");
1184 TH1F *hMuIn3Prong3=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1186 hisname.Form(
"hPiIn3Prong3");
1187 TH1F *hPiIn3Prong3=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1189 hisname.Form(
"hKaIn3Prong3");
1190 TH1F *hKaIn3Prong3=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1192 hisname.Form(
"hPrIn3Prong3");
1193 TH1F *hPrIn3Prong3=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1196 hisname.Form(
"hElIn3Prong4");
1197 TH1F *hElIn3Prong4=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1199 hisname.Form(
"hMuIn3Prong4");
1200 TH1F *hMuIn3Prong4=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1202 hisname.Form(
"hPiIn3Prong4");
1203 TH1F *hPiIn3Prong4=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1205 hisname.Form(
"hKaIn3Prong4");
1206 TH1F *hKaIn3Prong4=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1208 hisname.Form(
"hPrIn3Prong4");
1209 TH1F *hPrIn3Prong4=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1212 hisname.Form(
"hElIn3Prong5");
1213 TH1F *hElIn3Prong5=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1215 hisname.Form(
"hMuIn3Prong5");
1216 TH1F *hMuIn3Prong5=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1218 hisname.Form(
"hPiIn3Prong5");
1219 TH1F *hPiIn3Prong5=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1221 hisname.Form(
"hKaIn3Prong5");
1222 TH1F *hKaIn3Prong5=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1224 hisname.Form(
"hPrIn3Prong5");
1225 TH1F *hPrIn3Prong5=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1228 hisname.Form(
"hElIn3Prong6");
1229 TH1F *hElIn3Prong6=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1231 hisname.Form(
"hMuIn3Prong6");
1232 TH1F *hMuIn3Prong6=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1234 hisname.Form(
"hPiIn3Prong6");
1235 TH1F *hPiIn3Prong6=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1237 hisname.Form(
"hKaIn3Prong6");
1238 TH1F *hKaIn3Prong6=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1240 hisname.Form(
"hPrIn3Prong6");
1241 TH1F *hPrIn3Prong6=
new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1249 hisname.Form(
"hLcinEvent");
1250 TH1I*hLcinEvent=
new TH1I(hisname.Data(),hisname.Data(),3,-1,2);
1253 hisname.Form(
"hPrimariesvsAOD");
1254 TH2I *hPrimariesvsAOD=
new TH2I(hisname.Data(),hisname.Data(),300,0,300,300,0,300);
1257 hisname.Form(
"hMultiplicityInLcEvent");
1258 TH1I *hMultiplicityInLcEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1260 hisname.Form(
"h2MultiplicityInLcEvent");
1261 TH1I *h2MultiplicityInLcEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1263 hisname.Form(
"hAll2MultiplicityInEvent");
1264 TH1I *hAll2MultiplicityInEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1266 hisname.Form(
"hAllMultiplicityInEvent");
1267 TH1I *hAllMultiplicityInEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1269 hisname.Form(
"hAllMultiplicityPrimaryInEvent");
1270 TH1I *hAllMultiplicityPrimaryInEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1272 hisname.Form(
"hAll2MultiplicityPrimaryInEvent");
1273 TH1I *hAll2MultiplicityPrimaryInEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1275 hisname.Form(
"hMultiplicityInEvent");
1276 TH1I *hMultiplicityInEvent=
new TH1I(hisname.Data(),hisname.Data(),300,0.,300);
1278 hisname.Form(
"hMultiplicityIn3ProngLC");
1279 TH1I *hMultiplicityIn3ProngLC=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1281 hisname.Form(
"hMultiplicityInLCpid");
1282 TH1I *hMultiplicityInLCpid=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1284 hisname.Form(
"hMultiplicityInLCmc");
1285 TH1I *hMultiplicityInLCmc=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1287 hisname.Form(
"hMultiplicityInLCNomc");
1288 TH1I *hMultiplicityInLCNomc=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1290 hisname.Form(
"hMultiplicityYesC");
1291 TH1I *hMultiplicityYesC=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1293 hisname.Form(
"hMultiplicityYesB");
1294 TH1I *hMultiplicityYesB=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1296 hisname.Form(
"hMultiplicityJPsi");
1297 TH1I *hMultiplicityJPsi=
new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1301 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
1302 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
1328 TString normName=
"NormalizationCounter";
1329 AliAnalysisDataContainer *cont = GetOutputSlot(7)->GetContainer();
1330 if(cont)normName=(TString)cont->GetName();
1337 "pdg:Px:Py:Pz:PtTrue:VxTrue:VyTrue:VzTrue:Ptpi:PtK:Ptpi2:PtRec:PointingAngle:DecLeng:VxRec:VyRec:VzRec:InvMass:sigvert:d0Pi:d0K:d0Pi2:dca:d0square");
1350 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
1355 TClonesArray *array3Prong = 0;
1356 TClonesArray *arrayLikeSign =0;
1357 if(!aod && AODEvent() && IsStandardAOD()) {
1360 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
1363 AliAODHandler* aodHandler = (AliAODHandler*)
1364 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
1365 if(aodHandler->GetExtensions()) {
1366 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
1367 AliAODEvent *aodFromExt = ext->GetAOD();
1368 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
1369 arrayLikeSign=(TClonesArray*)aodFromExt->GetList()->FindObject(
"LikeSign3Prong");
1372 array3Prong=(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
1373 arrayLikeSign=(TClonesArray*)aod->GetList()->FindObject(
"LikeSign3Prong");
1378 TClonesArray *arrayMC=0;
1379 AliAODMCHeader *mcHeader=0;
1384 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
1386 AliError(
"AliAnalysisTaskSELambdac::UserExec: MC particles branch not found!\n");
1392 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1394 AliError(
"AliAnalysisTaskSELambdac::UserExec: MC header branch not found!\n");
1399 TString fillthis=
"";
1403 fillthis=
"hPrimariesvsAOD";
1404 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(aod->GetNumberOfTracks(),numberOfPrimaries);
1406 fillthis=
"hAll2MultiplicityInEvent";
1407 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(aod->GetNumberOfTracks());
1409 fillthis=
"hAll2MultiplicityPrimaryInEvent";
1410 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1413 fillthis=
"h2MultiplicityInLcEvent";
1414 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1419 if(!array3Prong || !aod) {
1420 AliError(
"AliAnalysisTaskSELambdac::UserExec: Charm3Prong branch not found!\n");
1423 if(!arrayLikeSign) {
1424 AliDebug(2,
"AliAnalysisTaskSELambdac::UserExec: LikeSign3Prong branch not found!\n");
1430 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
1431 if(!vtx1 || TMath::Abs(aod->GetMagneticField())<0.001)
return;
1435 TString trigclass=aod->GetFiredTriggerClasses();
1436 if(trigclass.Contains(
"C0SMH-B-NOPF-ALLNOTRD") || trigclass.Contains(
"C0SMH-B-NOPF-ALL"))
fNentries->Fill(14);
1439 if(!isEvSelProdCuts || !isEvSelAnCuts){
1445 Bool_t isThereA3prongWithGoodTracks = kFALSE;
1446 Bool_t isThereA3ProngLcKine = kFALSE;
1447 Bool_t isThereA3ProngLcKineANDpid = kFALSE;
1448 Bool_t isThereA3ProngLcMC = kFALSE;
1449 Bool_t isThereA3ProngCyes = kFALSE;
1450 Bool_t isThereA3ProngByes = kFALSE;
1451 Bool_t isThereA3ProngJPsi = kFALSE;
1453 Int_t n3Prong = array3Prong->GetEntriesFast();
1454 Int_t nSelectedloose[1]={0};
1455 Int_t nSelectedtight[1]={0};
1457 for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
1460 Bool_t unsetvtx=kFALSE;
1477 if(!isSelectedTracks)
continue;
1481 isThereA3prongWithGoodTracks=kTRUE;
1488 if(ptbin==-1) {
fNentries->Fill(4);
continue;}
1497 isThereA3ProngLcKine,isThereA3ProngLcKineANDpid,isThereA3ProngLcMC,
1498 isThereA3ProngCyes,isThereA3ProngByes,isThereA3ProngJPsi);
1512 fillthis=
"hAllMultiplicityInEvent";
1513 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(aod->GetNumberOfTracks());
1515 fillthis=
"hAllMultiplicityPrimaryInEvent";
1516 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1519 fillthis=
"hMultiplicityInLcEvent";
1520 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1523 if (isThereA3prongWithGoodTracks) {
1524 fillthis=
"hMultiplicityInEvent";
1525 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1527 if (isThereA3ProngLcKine) {
1528 fillthis=
"hMultiplicityIn3ProngLC";
1529 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1531 if (isThereA3ProngLcKineANDpid) {
1532 fillthis=
"hMultiplicityInLCpid";
1533 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1535 if (isThereA3ProngLcMC) {
1536 fillthis=
"hMultiplicityInLCmc";
1537 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1539 if (isThereA3ProngLcKine && !isThereA3ProngLcMC) {
1540 fillthis=
"hMultiplicityInLCNomc";
1541 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1544 if (isThereA3ProngCyes) {
1545 fillthis=
"hMultiplicityYesC";
1546 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1548 if (isThereA3ProngByes) {
1549 fillthis=
"hMultiplicityYesB";
1550 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1552 if (isThereA3ProngJPsi) {
1553 fillthis=
"hMultiplicityJPsi";
1554 ((TH1I*)
fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1578 if (fDebug > 1) printf(
"AnalysisTaskSELambdac: Terminate() \n");
1580 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1582 AliError(
"ERROR: fOutput not available\n");
1598 Int_t lambdacLab[3]={0,0,0};
1600 for(Int_t i=0;i<3;i++){
1601 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1602 Int_t lab=daugh->GetLabel();
1604 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
1607 Int_t partPdgcode = TMath::Abs(part->GetPdgCode());
1608 if(partPdgcode==211 || partPdgcode==321 || partPdgcode==2212){
1609 Int_t motherLabel=part->GetMother();
1610 if(motherLabel<0)
return 0;
1611 AliAODMCParticle *motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
1612 if(!motherPart)
continue;
1613 Int_t motherPdg = TMath::Abs(motherPart->GetPdgCode());
1614 if(motherPdg==4122) {
1615 if(
GetLambdacDaugh(motherPart,arrayMC)){lambdacLab[i]=motherLabel;
continue;}
1617 if(motherPdg==313 || motherPdg==2224 || motherPdg==3124){
1618 Int_t granMotherLabel=motherPart->GetMother();
1619 if(granMotherLabel<0)
return 0;
1620 AliAODMCParticle *granMotherPart = (AliAODMCParticle*)arrayMC->At(granMotherLabel);
1621 if(!granMotherPart)
continue;
1622 Int_t granMotherPdg = TMath::Abs(granMotherPart->GetPdgCode());
1623 if(granMotherPdg ==4122) {
1624 if(
GetLambdacDaugh(granMotherPart,arrayMC)) {lambdacLab[i]=granMotherLabel;
continue;}
1630 if(lambdacLab[0]==lambdacLab[1] && lambdacLab[1]==lambdacLab[2]) {
return lambdacLab[0];}
1637 Int_t numberOfLambdac=0;
1638 if(TMath::Abs(part->GetPdgCode())!=4122)
return kFALSE;
1642 Int_t nDaugh = (Int_t)part->GetNDaughters();
1643 if(nDaugh<2)
return kFALSE;
1644 if(nDaugh>3)
return kFALSE;
1645 AliAODMCParticle* pdaugh1 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(0));
1646 if(!pdaugh1) {
return kFALSE;}
1647 Int_t number1 = TMath::Abs(pdaugh1->GetPdgCode());
1648 AliAODMCParticle* pdaugh2 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(1));
1649 if(!pdaugh2) {
return kFALSE;}
1650 Int_t number2 = TMath::Abs(pdaugh2->GetPdgCode());
1653 Int_t thirdDaugh=part->GetDaughter(1)-1;
1654 AliAODMCParticle* pdaugh3 = (AliAODMCParticle*)arrayMC->At(thirdDaugh);
1655 Int_t number3 = TMath::Abs(pdaugh3->GetPdgCode());
1656 if((number1==321 && number2==211 && number3==2212) ||
1657 (number1==211 && number2==321 && number3==2212) ||
1658 (number1==211 && number2==2212 && number3==321) ||
1659 (number1==321 && number2==2212 && number3==211) ||
1660 (number1==2212 && number2==321 && number3==211) ||
1661 (number1==2212 && number2==211 && number3==321)) {
1674 if((number1==2212 && number2==313)){
1675 nfiglieK=pdaugh2->GetNDaughters();
1676 if(nfiglieK!=2)
return kFALSE;
1677 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1678 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1679 if(!pdaughK1)
return kFALSE;
1680 if(!pdaughK2)
return kFALSE;
1681 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) numberOfLambdac++;
1684 if((number1==313 && number2==2212)){
1685 nfiglieK=pdaugh1->GetNDaughters();
1686 if(nfiglieK!=2)
return kFALSE;
1687 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1688 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1689 if(!pdaughK1)
return kFALSE;
1690 if(!pdaughK2)
return kFALSE;
1691 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) numberOfLambdac++;
1695 Int_t nfiglieDelta=0;
1696 if(number1==321 && number2==2224){
1697 nfiglieDelta=pdaugh2->GetNDaughters();
1698 if(nfiglieDelta!=2)
return kFALSE;
1699 AliAODMCParticle *pdaughD1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1700 AliAODMCParticle *pdaughD2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1701 if(!pdaughD1)
return kFALSE;
1702 if(!pdaughD2)
return kFALSE;
1703 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) numberOfLambdac++;
1705 if(number1==2224 && number2==321){
1706 nfiglieDelta=pdaugh1->GetNDaughters();
1707 if(nfiglieDelta!=2)
return kFALSE;
1708 AliAODMCParticle* pdaughD1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1709 AliAODMCParticle* pdaughD2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1710 if(!pdaughD1)
return kFALSE;
1711 if(!pdaughD2)
return kFALSE;
1712 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) numberOfLambdac++;
1718 if(number1==3124 && number2==211){
1719 nfiglieLa=pdaugh1->GetNDaughters();
1720 if(nfiglieLa!=2)
return kFALSE;
1721 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1722 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1723 if(!pdaughL1)
return kFALSE;
1724 if(!pdaughL2)
return kFALSE;
1725 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) numberOfLambdac++;
1727 if(number1==211 && number2==3124){
1728 nfiglieLa=pdaugh2->GetNDaughters();
1729 if(nfiglieLa!=2)
return kFALSE;
1730 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1731 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1732 if(!pdaughL1)
return kFALSE;
1733 if(!pdaughL2)
return kFALSE;
1734 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) numberOfLambdac++;
1739 if(numberOfLambdac>0) {
return kTRUE;}
1745 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1746 for(Int_t i=0;i<3;i++){
1747 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1748 lab[i]=daugh->GetLabel();
1749 if(lab[i]<0)
return kFALSE;
1750 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1751 if(!part)
return kFALSE;
1752 pdgs[i]=TMath::Abs(part->GetPdgCode());
1755 if(pdgs[0]==2212 && pdgs[1]==321 && pdgs[2]==211)
return kTRUE;
1763 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1764 for(Int_t i=0;i<3;i++){
1765 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1766 lab[i]=daugh->GetLabel();
1767 if(lab[i]<0)
return kFALSE;
1768 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1769 if(!part)
return kFALSE;
1770 pdgs[i]=TMath::Abs(part->GetPdgCode());
1773 if(pdgs[2]==2212 && pdgs[1]==321 && pdgs[0]==211) {
return kTRUE;}
1780 Int_t iprongs[3]={0,1,2};
1781 Double_t
mass[2]={0.,0.};
1782 Bool_t constraint=kFALSE;
1783 if(
fCutsKF[0]>0.)constraint=kTRUE;
1785 AliKFParticle *lambdac=d->
ApplyVertexingKF(iprongs,3,pdgs,constraint,field,mass);
1786 if(!lambdac)
return kFALSE;
1787 if(lambdac->GetChi2()/lambdac->GetNDF()>
fCutsKF[1])
return kFALSE;
1795 Double_t
mass[2]={1.520,0.005};
1796 Int_t ipRes[2]={1,2};
1797 Int_t pdgres[2]={321,2212};
1798 AliKFParticle *lambda1520=d->
ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1799 Double_t probLa=TMath::Prob(lambda1520->GetChi2(),lambda1520->GetNDF());
1800 if(probLa>0.1) resNumber[0]=1;
1802 mass[0]=0.8961;mass[1]=0.03;
1803 ipRes[0]=0;ipRes[1]=1;
1804 pdgres[0]=211;pdgres[1]=321;
1805 AliKFParticle *kstar=d->
ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1806 Double_t probKa=TMath::Prob(kstar->GetChi2(),kstar->GetNDF());
1807 if(probKa>0.1) resNumber[1]=1;
1810 mass[0]=1.232;mass[1]=0.15;
1811 ipRes[0]=0;ipRes[1]=2;
1812 pdgres[0]=211;pdgres[1]=2122;
1813 AliKFParticle *delta=d->
ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1814 Double_t probDe=TMath::Prob(delta->GetChi2(),delta->GetNDF());
1815 if(probDe>0.1) resNumber[2]=1;
1825 Double_t
mass[2]={1.520,0.005};
1826 Int_t ipRes[2]={0,1};
1827 Int_t pdgres[2]={2212,321};
1828 AliKFParticle *lambda1520=d->
ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1829 Double_t probLa=TMath::Prob(lambda1520->GetChi2(),lambda1520->GetNDF());
1830 if(probLa>0.1) resNumber[0]=1;
1832 mass[0]=0.8961;mass[1]=0.03;
1833 ipRes[0]=1;ipRes[1]=2;
1834 pdgres[1]=211;pdgres[0]=321;
1835 AliKFParticle *kstar=d->
ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1836 Double_t probKa=TMath::Prob(kstar->GetChi2(),kstar->GetNDF());
1837 if(probKa>0.1) resNumber[1]=1;
1840 mass[0]=1.232;mass[1]=0.15;
1841 ipRes[0]=0;ipRes[1]=2;
1842 pdgres[0]=2122;pdgres[1]=211;
1843 AliKFParticle *delta=d->
ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1844 Double_t probDe=TMath::Prob(delta->GetChi2(),delta->GetNDF());
1845 if(probDe>0.1) resNumber[2]=1;
1852 TClonesArray *arrayMC,
AliRDHFCutsLctopKpi *cuts,Int_t *nSelectedloose,Int_t *nSelectedtight)
1859 nSelectedloose[0]=nSelectedloose[0]+1;
1861 Double_t ptCand = part->Pt();
1865 if(ptCand<fArrayBinLimits[ibin+1])iPtBin=ibin;
1869 Float_t pdgCode1=-1;
1870 Float_t pdgCode2=-1;
1881 Bool_t IsLcfromLb = 0;
1882 Bool_t IsLcfromc = 0;
1883 Bool_t IsLcFromq = 0;
1893 AliAODMCParticle *partDp = (AliAODMCParticle*)arrayMC->At(labDp);
1894 AliAODMCParticle *dg0 = (AliAODMCParticle*)arrayMC->At(partDp->GetDaughter(0));
1895 AliAODMCParticle *dg1 = (AliAODMCParticle*)arrayMC->At(partDp->GetDaughter(1));
1896 deltaPx=partDp->Px()-part->Px();
1897 deltaPy=partDp->Py()-part->Py();
1898 deltaPz=partDp->Pz()-part->Pz();
1899 truePt=partDp->Pt();
1903 pdgCode=TMath::Abs(partDp->GetPdgCode());
1904 pdgCode1=TMath::Abs(dg0->GetPdgCode());
1905 pdgCode2=TMath::Abs(dg1->GetPdgCode());
1906 Int_t pdgMom=util->
CheckOrigin(arrayMC,partDp,kFALSE);
1907 if(pdgMom == 5) IsLcfromLb =1;
1908 if(pdgMom == 4) IsLcfromc =1;
1909 Int_t isThereaQuark=util->
CheckOrigin(arrayMC,partDp,kTRUE);
1910 if(isThereaQuark>0) IsLcFromq = 1;
1919 Double_t invMasspKpi=-1.;
1920 Double_t invMasspiKp=-1.;
1921 Double_t invMasspKpiLpi=-1.;
1922 Double_t invMasspiKpLpi=-1.;
1923 Double_t invMasspKpiKp=-1.;
1924 Double_t invMasspiKpKp=-1.;
1925 Double_t invMasspiKpDk=-1.;
1926 Double_t invMasspKpiDk=-1.;
1927 Double_t invMasspiKp3Pr=-1.;
1928 Double_t invMasspKpi3Pr=-1.;
1929 Double_t field=aod->GetMagneticField();
1938 if(selection==1 || selection==3) invMasspKpi=part->
InvMassLcpKpi();
1943 Int_t ispKpi[3]={0,0,0};
1945 Int_t ispiKp[3]={0,0,0};
1947 if (selection==3 || selection==1) {
1957 if(ispKpi[2]==0 && ispKpi[1]==0 && ispKpi[0]==0){
1971 if(ispiKp[2]==0 && ispiKp[1]==0 && ispiKp[0]==0){
1979 if(invMasspiKp<0. && invMasspKpi<0.)
return;
1981 Int_t passTightCuts=0;
1985 Int_t pdgs[3]={0,0,0};
1987 pdgs[0]=2212;pdgs[1]=321;pdgs[2]=211;
1997 pdgs[0]=211;pdgs[1]=321;pdgs[2]=2212;
2007 if(passTightCuts>0) nSelectedtight[0]=nSelectedtight[0]+1;
2012 if(passTightCuts>0){
2015 if(invMasspiKp>0. && invMasspKpi>0.){
2016 fhMassLcPt->Fill(part->Pt(),invMasspKpi,0.5);
2017 fhMassLcPt->Fill(part->Pt(),invMasspiKp,0.5);
2018 if(part->Charge()==1){
2022 else if(part->Charge()==-1){
2027 else if(invMasspiKp>0.){
2029 if(part->Charge()==1)
fhMassLcplusPt->Fill(part->Pt(),invMasspiKp);
2030 else if(part->Charge()==-1)
fhMassLcminusPt->Fill(part->Pt(),invMasspiKp);
2032 else if(invMasspKpi>0.){
2034 if(part->Charge()==1)
fhMassLcplusPt->Fill(part->Pt(),invMasspKpi);
2035 else if(part->Charge()==-1)
fhMassLcminusPt->Fill(part->Pt(),invMasspKpi);
2049 if(pdgCode1==2212) {tmp[8]=part->PtProng(0);}
else{tmp[8]=0.;}
2050 if(pdgCode1==211) {tmp[10]=part->PtProng(0);}
else{tmp[10]=0.;}
2051 tmp[9]=part->PtProng(1);
2052 if(pdgCode2==211) {tmp[10]=part->PtProng(2);}
else{tmp[10]=0.;}
2059 if(invMasspiKp>0.) tmp[17]=invMasspiKp;
2060 if(invMasspKpi>0.) tmp[17]=invMasspKpi;
2062 tmp[19]=part->Getd0Prong(0);
2063 tmp[20]=part->Getd0Prong(1);
2064 tmp[21]=part->Getd0Prong(2);
2065 tmp[22]=part->GetDCA();
2066 tmp[23]=part->Prodd0d0();
2073 if(part->Pt()>3.&& part->Pt()<=6.){
2074 if(invMasspiKp>0. && invMasspKpi>0.){
2081 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2088 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2095 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2102 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2110 if(passTightCuts>0){
2111 if(invMasspiKp>0. && invMasspKpi>0.){
2118 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2125 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2133 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2140 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2150 if(part->Pt()>2.&& part->Pt()<=6.){
2151 if(invMasspiKp>0. && invMasspKpi>0.){
2158 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2165 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2172 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2179 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2187 if(passTightCuts>0){
2188 if(invMasspiKp>0. && invMasspKpi>0.){
2195 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2202 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2209 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2216 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2229 if(invMasspiKp>0. && invMasspKpi>0.){
2230 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp,0.5);
2231 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi,0.5);
2233 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp);
2234 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi);
2236 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2237 if(invMasspiKpLpi>0.)
fMassHistLpi[index]->Fill(invMasspiKpLpi,0.5);
2238 if(invMasspKpiLpi>0.)
fMassHistLpi[index]->Fill(invMasspKpiLpi,0.5);
2240 if(invMasspiKpLpi>0.)
fMassHistLpi[index]->Fill(invMasspiKpLpi);
2241 if(invMasspKpiLpi>0.)
fMassHistLpi[index]->Fill(invMasspKpiLpi);
2243 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2244 if(invMasspiKpKp>0.)
fMassHistKp[index]->Fill(invMasspiKpKp,0.5);
2245 if(invMasspKpiKp>0.)
fMassHistKp[index]->Fill(invMasspKpiKp,0.5);
2247 if(invMasspiKpKp>0.)
fMassHistKp[index]->Fill(invMasspiKpKp);
2248 if(invMasspKpiKp>0.)
fMassHistKp[index]->Fill(invMasspKpiKp);
2250 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2251 if(invMasspiKpDk>0.)
fMassHistDk[index]->Fill(invMasspiKpDk,0.5);
2252 if(invMasspKpiDk>0.)
fMassHistDk[index]->Fill(invMasspKpiDk,0.5);
2254 if(invMasspiKpDk>0.)
fMassHistDk[index]->Fill(invMasspiKpDk);
2255 if(invMasspKpiDk>0.)
fMassHistDk[index]->Fill(invMasspKpiDk);
2257 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2258 if(invMasspiKp3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspiKp3Pr,0.5);
2259 if(invMasspKpi3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspKpi3Pr,0.5);
2261 if(invMasspiKp3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspiKp3Pr);
2262 if(invMasspKpi3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspKpi3Pr);
2265 if(passTightCuts>0){
2266 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2267 if(invMasspiKp>0.)
fMassHistTC[index]->Fill(invMasspiKp,0.5);
2268 if(invMasspKpi>0.)
fMassHistTC[index]->Fill(invMasspKpi,0.5);
2270 if(invMasspiKp>0. && passTightCuts==2)
fMassHistTC[index]->Fill(invMasspiKp);
2271 if(invMasspKpi>0. && passTightCuts==1)
fMassHistTC[index]->Fill(invMasspKpi);
2273 if(invMasspiKpLpi>0. && invMasspKpiLpi>0. && passTightCuts==3){
2274 if(invMasspiKpLpi>0.)
fMassHistLpiTC[index]->Fill(invMasspiKpLpi,0.5);
2275 if(invMasspKpiLpi>0.)
fMassHistLpiTC[index]->Fill(invMasspKpiLpi,0.5);
2277 if(invMasspiKpLpi>0. && passTightCuts==2)
fMassHistLpiTC[index]->Fill(invMasspiKpLpi);
2278 if(invMasspKpiLpi>0.&& passTightCuts==1)
fMassHistLpiTC[index]->Fill(invMasspKpiLpi);
2280 if(invMasspiKpKp>0. && invMasspKpiKp>0. && passTightCuts==3){
2281 if(invMasspiKpKp>0.)
fMassHistKpTC[index]->Fill(invMasspiKpKp,0.5);
2282 if(invMasspKpiKp>0.)
fMassHistKpTC[index]->Fill(invMasspKpiKp,0.5);
2284 if(invMasspiKpKp>0. && passTightCuts==2)
fMassHistKpTC[index]->Fill(invMasspiKpKp);
2285 if(invMasspKpiKp>0.&& passTightCuts==1)
fMassHistKpTC[index]->Fill(invMasspKpiKp);
2287 if(invMasspiKpDk>0. && invMasspKpiDk>0. && passTightCuts==3){
2288 if(invMasspiKpDk>0.)
fMassHistDkTC[index]->Fill(invMasspiKpDk,0.5);
2289 if(invMasspKpiDk>0.)
fMassHistDkTC[index]->Fill(invMasspKpiDk,0.5);
2291 if(invMasspiKpDk>0. && passTightCuts==2)
fMassHistDkTC[index]->Fill(invMasspiKpDk);
2292 if(invMasspKpiDk>0.&& passTightCuts==1)
fMassHistDkTC[index]->Fill(invMasspKpiDk);
2294 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0. && passTightCuts==3){
2295 if(invMasspiKp3Pr>0.)
fMassHist3PrTC[index]->Fill(invMasspiKp3Pr,0.5);
2296 if(invMasspKpi3Pr>0.)
fMassHist3PrTC[index]->Fill(invMasspKpi3Pr,0.5);
2298 if(invMasspiKp3Pr>0. && passTightCuts==2)
fMassHist3PrTC[index]->Fill(invMasspiKp3Pr);
2299 if(invMasspKpi3Pr>0.&& passTightCuts==1)
fMassHist3PrTC[index]->Fill(invMasspKpi3Pr);
2307 if(invMasspiKp>0. && invMasspKpi>0.){
2308 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp,0.5);
2309 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi,0.5);
2311 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp);
2312 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi);
2314 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2315 if(invMasspiKpLpi>0.)
fMassHistLpi[index]->Fill(invMasspiKpLpi,0.5);
2316 if(invMasspKpiLpi>0.)
fMassHistLpi[index]->Fill(invMasspKpiLpi,0.5);
2318 if(invMasspiKpLpi>0.)
fMassHistLpi[index]->Fill(invMasspiKpLpi);
2319 if(invMasspKpiLpi>0.)
fMassHistLpi[index]->Fill(invMasspKpiLpi);
2321 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2322 if(invMasspiKpKp>0.)
fMassHistKp[index]->Fill(invMasspiKpKp,0.5);
2323 if(invMasspKpiKp>0.)
fMassHistKp[index]->Fill(invMasspKpiKp,0.5);
2325 if(invMasspiKpKp>0.)
fMassHistKp[index]->Fill(invMasspiKpKp);
2326 if(invMasspKpiKp>0.)
fMassHistKp[index]->Fill(invMasspKpiKp);
2328 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2329 if(invMasspiKpDk>0.)
fMassHistDk[index]->Fill(invMasspiKpDk,0.5);
2330 if(invMasspKpiDk>0.)
fMassHistDk[index]->Fill(invMasspKpiDk,0.5);
2332 if(invMasspiKpDk>0.)
fMassHistDk[index]->Fill(invMasspiKpDk);
2333 if(invMasspKpiDk>0.)
fMassHistDk[index]->Fill(invMasspKpiDk);
2335 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2336 if(invMasspiKp3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspiKp3Pr,0.5);
2337 if(invMasspKpi3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspKpi3Pr,0.5);
2339 if(invMasspiKp3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspiKp3Pr);
2340 if(invMasspKpi3Pr>0.)
fMassHistDk[index]->Fill(invMasspKpi3Pr);
2343 if(passTightCuts>0){
2344 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2345 if(invMasspiKp>0.)
fMassHistTC[index]->Fill(invMasspiKp,0.5);
2346 if(invMasspKpi>0.)
fMassHistTC[index]->Fill(invMasspKpi,0.5);
2348 if(invMasspiKp>0. && passTightCuts==2)
fMassHistTC[index]->Fill(invMasspiKp);
2349 if(invMasspKpi>0.&& passTightCuts==1)
fMassHistTC[index]->Fill(invMasspKpi);
2351 if(invMasspiKpLpi>0. && invMasspKpiLpi>0. && passTightCuts==3){
2352 if(invMasspiKpLpi>0.)
fMassHistLpiTC[index]->Fill(invMasspiKpLpi,0.5);
2353 if(invMasspKpiLpi>0.)
fMassHistLpiTC[index]->Fill(invMasspKpiLpi,0.5);
2355 if(invMasspiKpLpi>0. && passTightCuts==2)
fMassHistLpiTC[index]->Fill(invMasspiKpLpi);
2356 if(invMasspKpiLpi>0.&& passTightCuts==1)
fMassHistLpiTC[index]->Fill(invMasspKpiLpi);
2358 if(invMasspiKpKp>0. && invMasspKpiKp>0. && passTightCuts==3){
2359 if(invMasspiKpKp>0.)
fMassHistKpTC[index]->Fill(invMasspiKpKp,0.5);
2360 if(invMasspKpiKp>0.)
fMassHistKpTC[index]->Fill(invMasspKpiKp,0.5);
2362 if(invMasspiKpKp>0. && passTightCuts==2)
fMassHistKpTC[index]->Fill(invMasspiKpKp);
2363 if(invMasspKpiKp>0.&& passTightCuts==1)
fMassHistKpTC[index]->Fill(invMasspKpiKp);
2365 if(invMasspiKpDk>0. && invMasspKpiDk>0. && passTightCuts==3){
2366 if(invMasspiKpDk>0.)
fMassHistDkTC[index]->Fill(invMasspiKpDk,0.5);
2367 if(invMasspKpiDk>0.)
fMassHistDkTC[index]->Fill(invMasspKpiDk,0.5);
2369 if(invMasspiKpDk>0. && passTightCuts==2)
fMassHistDkTC[index]->Fill(invMasspiKpDk);
2370 if(invMasspKpiDk>0.&& passTightCuts==1)
fMassHistDkTC[index]->Fill(invMasspKpiDk);
2372 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0. && passTightCuts==3){
2373 if(invMasspiKp3Pr>0.)
fMassHist3PrTC[index]->Fill(invMasspiKp3Pr,0.5);
2374 if(invMasspKpi3Pr>0.)
fMassHist3PrTC[index]->Fill(invMasspKpi3Pr,0.5);
2376 if(invMasspiKp3Pr>0. && passTightCuts==2)
fMassHist3PrTC[index]->Fill(invMasspiKp3Pr);
2377 if(invMasspKpi3Pr>0.&& passTightCuts==1)
fMassHist3PrTC[index]->Fill(invMasspKpi3Pr);
2381 if(IsLc && IsLcfromLb){
2383 if(invMasspiKp>0. && invMasspKpi>0.){
2384 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp,0.5);
2385 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi,0.5);
2387 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp);
2388 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi);
2390 if(passTightCuts>0){
2391 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2392 if(invMasspiKp>0.)
fMassHistTC[index]->Fill(invMasspiKp,0.5);
2393 if(invMasspKpi>0.)
fMassHistTC[index]->Fill(invMasspKpi,0.5);
2395 if(invMasspiKp>0. && passTightCuts==2)
fMassHistTC[index]->Fill(invMasspiKp);
2396 if(invMasspKpi>0.&& passTightCuts==1)
fMassHistTC[index]->Fill(invMasspKpi);
2400 if(IsLc && !IsLcfromLb && IsLcfromc) {
2402 if(invMasspiKp>0. && invMasspKpi>0.){
2403 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp,0.5);
2404 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi,0.5);
2406 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp);
2407 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi);
2409 if(passTightCuts>0){
2410 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2411 if(invMasspiKp>0.)
fMassHistTC[index]->Fill(invMasspiKp,0.5);
2412 if(invMasspKpi>0.)
fMassHistTC[index]->Fill(invMasspKpi,0.5);
2414 if(invMasspiKp>0. && passTightCuts==2)
fMassHistTC[index]->Fill(invMasspiKp);
2415 if(invMasspKpi>0.&& passTightCuts==1)
fMassHistTC[index]->Fill(invMasspKpi);
2421 if(IsLc && !IsLcFromq) {
2423 if(invMasspiKp>0. && invMasspKpi>0.){
2424 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp,0.5);
2425 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi,0.5);
2427 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp);
2428 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi);
2430 if(passTightCuts>0){
2431 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2432 if(invMasspiKp>0.)
fMassHistTC[index]->Fill(invMasspiKp,0.5);
2433 if(invMasspKpi>0.)
fMassHistTC[index]->Fill(invMasspKpi,0.5);
2435 if(invMasspiKp>0. && passTightCuts==2)
fMassHistTC[index]->Fill(invMasspiKp);
2436 if(invMasspKpi>0.&& passTightCuts==1)
fMassHistTC[index]->Fill(invMasspKpi);
2444 if(invMasspiKp>0. && invMasspKpi>0.){
2445 fMassHist[index]->Fill(invMasspiKp,0.5);
2446 fMassHist[index]->Fill(invMasspKpi,0.5);
2448 if(invMasspiKp>0.)
fMassHist[index]->Fill(invMasspiKp);
2449 if(invMasspKpi>0.)
fMassHist[index]->Fill(invMasspKpi);
2451 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2452 if(invMasspiKpLpi>0.)
fMassHistLpi[index]->Fill(invMasspiKpLpi,0.5);
2453 if(invMasspKpiLpi>0.)
fMassHistLpi[index]->Fill(invMasspKpiLpi,0.5);
2455 if(invMasspiKpLpi>0.)
fMassHistLpi[index]->Fill(invMasspiKpLpi);
2456 if(invMasspKpiLpi>0.)
fMassHistLpi[index]->Fill(invMasspKpiLpi);
2458 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2459 if(invMasspiKpKp>0.)
fMassHistKp[index]->Fill(invMasspiKpKp,0.5);
2460 if(invMasspKpiKp>0.)
fMassHistKp[index]->Fill(invMasspKpiKp,0.5);
2462 if(invMasspiKpKp>0.)
fMassHistKp[index]->Fill(invMasspiKpKp);
2463 if(invMasspKpiKp>0.)
fMassHistKp[index]->Fill(invMasspKpiKp);
2465 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2466 if(invMasspiKpDk>0.)
fMassHistDk[index]->Fill(invMasspiKpDk,0.5);
2467 if(invMasspKpiDk>0.)
fMassHistDk[index]->Fill(invMasspKpiDk,0.5);
2469 if(invMasspiKpDk>0.)
fMassHistDk[index]->Fill(invMasspiKpDk);
2470 if(invMasspKpiDk>0.)
fMassHistDk[index]->Fill(invMasspKpiDk);
2472 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2473 if(invMasspiKp3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspiKp3Pr,0.5);
2474 if(invMasspKpi3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspKpi3Pr,0.5);
2476 if(invMasspiKp3Pr>0.)
fMassHist3Pr[index]->Fill(invMasspiKp3Pr);
2477 if(invMasspKpi3Pr>0.)
fMassHistDk[index]->Fill(invMasspKpi3Pr);
2479 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2483 if(invMasspiKp>0. && passTightCuts==2)
fMassHistTC[index]->Fill(invMasspiKp);
2484 if(invMasspKpi>0. && passTightCuts==1)
fMassHistTC[index]->Fill(invMasspKpi);
2486 if(invMasspiKpLpi>0. && invMasspKpiLpi>0. && passTightCuts==3){
2487 if(invMasspiKpLpi>0.)
fMassHistLpiTC[index]->Fill(invMasspiKpLpi,0.5);
2488 if(invMasspKpiLpi>0.)
fMassHistLpiTC[index]->Fill(invMasspKpiLpi,0.5);
2490 if(invMasspiKpLpi>0. && passTightCuts==2)
fMassHistLpiTC[index]->Fill(invMasspiKpLpi);
2491 if(invMasspKpiLpi>0.&& passTightCuts==1)
fMassHistLpiTC[index]->Fill(invMasspKpiLpi);
2493 if(invMasspiKpKp>0. && invMasspKpiKp>0. && passTightCuts==3){
2494 if(invMasspiKpKp>0.)
fMassHistKpTC[index]->Fill(invMasspiKpKp,0.5);
2495 if(invMasspKpiKp>0.)
fMassHistKpTC[index]->Fill(invMasspKpiKp,0.5);
2497 if(invMasspiKpKp>0. && passTightCuts==2)
fMassHistKpTC[index]->Fill(invMasspiKpKp);
2498 if(invMasspKpiKp>0.&& passTightCuts==1)
fMassHistKpTC[index]->Fill(invMasspKpiKp);
2500 if(invMasspiKpDk>0. && invMasspKpiDk>0. && passTightCuts==3){
2501 if(invMasspiKpDk>0.)
fMassHistDkTC[index]->Fill(invMasspiKpDk,0.5);
2502 if(invMasspKpiDk>0.)
fMassHistDkTC[index]->Fill(invMasspKpiDk,0.5);
2504 if(invMasspiKpDk>0. && passTightCuts==2)
fMassHistDkTC[index]->Fill(invMasspiKpDk);
2505 if(invMasspKpiDk>0.&& passTightCuts==1)
fMassHistDkTC[index]->Fill(invMasspKpiDk);
2507 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0. && passTightCuts==3){
2508 if(invMasspiKp3Pr>0.)
fMassHist3PrTC[index]->Fill(invMasspiKp3Pr,0.5);
2509 if(invMasspKpi3Pr>0.)
fMassHist3PrTC[index]->Fill(invMasspKpi3Pr,0.5);
2511 if(invMasspiKp3Pr>0. && passTightCuts==2)
fMassHist3PrTC[index]->Fill(invMasspiKp3Pr);
2512 if(invMasspKpi3Pr>0.&& passTightCuts==1)
fMassHist3PrTC[index]->Fill(invMasspKpi3Pr);
2523 TClonesArray *arrMC,
2531 TString fillthis=
"";
2533 Double_t mPDG=TDatabasePDG::Instance()->GetParticle(4122)->Mass();
2534 Double_t invmasscut=0.05;
2536 Int_t pdgDgLctopKpi[3]={2212,321,211};
2541 lab=part->MatchToMC(4122,arrMC,3,pdgDgLctopKpi);
2543 AliAODMCParticle *partDp = (AliAODMCParticle*)arrMC->At(lab);
2545 Int_t pdgMom=util->
CheckOrigin(arrMC,partDp,kFALSE);
2547 if(pdgMom == 4) IsLcfromc =1;
2558 if (isSelectedPID==0)
fNentries->Fill(7);
2559 if (isSelectedPID==1)
fNentries->Fill(8);
2560 if (isSelectedPID==2)
fNentries->Fill(9);
2561 if (isSelectedPID==3)
fNentries->Fill(10);
2563 AliAODTrack *prong0=(AliAODTrack*)part->GetDaughter(0);
2564 AliAODTrack *prong1=(AliAODTrack*)part->GetDaughter(1);
2565 AliAODTrack *prong2=(AliAODTrack*)part->GetDaughter(2);
2566 if (!prong0 || !prong1 || !prong2) {
2576 Int_t labprong[3]={-1,-1,-1};
2578 labprong[0]=prong0->GetLabel();
2579 labprong[1]=prong1->GetLabel();
2580 labprong[2]=prong2->GetLabel();
2583 AliAODMCParticle *mcprong=0;
2584 Int_t pdgProngMC[3]={-1,-1,-1};
2586 for (Int_t iprong=0;iprong<3;iprong++){
2587 if(labprong[iprong]<0)
continue;
2588 mcprong = (AliAODMCParticle*)arrMC->At(labprong[iprong]);
2589 pdgProngMC[iprong]=TMath::Abs(mcprong->GetPdgCode());
2593 Int_t pdgProngPID[3]={-1,-1,-1};
2594 if(isSelectedPID>0){
2596 if(isSelectedPID==1) {pdgProngPID[0]=2212;pdgProngPID[2]=211;}
2597 if(isSelectedPID==2) {pdgProngPID[0]=211;pdgProngPID[2]=2212;}
2605 Bool_t IsInjected = 0;
2607 AliAODMCHeader *mcHeader2 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
2612 if(
fReadMC && selectionTrack>0) {
2614 if(lab>0 && IsLcfromc){
2615 for (Int_t iprong=0; iprong<3; iprong++) {
2616 switch (pdgProngMC[iprong]) {
2618 fillthis=
"hpRealTot";
2619 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2623 fillthis=
"hKRealTot";
2624 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2628 fillthis=
"hpiRealTot";
2629 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2636 fillthis=
"hLcRealTot";
2637 if(isReal==3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2639 }
else if(!IsInjected) {
2640 for (Int_t iprong=0; iprong<3; iprong++) {
2641 switch (pdgProngMC[iprong]) {
2643 fillthis=
"hbpRealTot";
2644 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2648 fillthis=
"hbKRealTot";
2649 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2653 fillthis=
"hbpiRealTot";
2654 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2661 fillthis=
"hbLcRealTot";
2662 if(isReal==3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2670 if ( (lab>0 &&
fReadMC && IsLcfromc) ||
2671 (isSelectedPID>0 && !
fReadMC) ) {
2674 if ( (
fReadMC && ((AliAODMCParticle*)arrMC->At(lab))->GetPdgCode() == 4122) ||
2675 (!
fReadMC && (isSelectedPID>0 && part->Charge()>0)) ) {
2676 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2677 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi);
2678 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2679 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp);
2681 else if ( (
fReadMC && ((AliAODMCParticle*)arrMC->At(lab))->GetPdgCode() == -4122) ||
2682 (!
fReadMC && (isSelectedPID>0 && part->Charge()<0)) ) {
2683 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2684 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi);
2685 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2686 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp);
2694 for (Int_t iprong=0; iprong<3; iprong++) {
2695 if (part->PtProng(iprong)>
ptmax) ptmax=part->PtProng(iprong);
2697 AliAODTrack *prong = (AliAODTrack*)part->GetDaughter(iprong);
2698 AliAODPid *pidObjtrk = (AliAODPid*)prong->GetDetPid();
2702 Double_t tofSignal=0.;
2703 Double_t dedxTPC=0.;
2707 momTOF = prong->P();
2708 tofSignal=pidObjtrk->GetTOFsignal();
2711 momTPC = pidObjtrk->GetTPCmomentum();
2712 dedxTPC=pidObjtrk->GetTPCsignal();
2714 switch (pdgProngPID[iprong]) {
2716 fillthis=
"hpTOFSignal";
2717 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2718 fillthis=
"hpTPCSignal";
2719 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2720 fillthis=
"hpptProng";
2721 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2722 fillthis=
"hpptProngLcPt";
2723 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
2724 fillthis=
"hpd0Prong";
2725 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
2726 fillthis=
"hpd0ProngLcPt";
2727 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
2728 fillthis=
"hpSignalVspTPC";
2729 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2730 fillthis=
"hpSignalVspTOF";
2731 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2732 AliPID::EParticleType typep;
2733 typep=AliPID::EParticleType(4);
2736 Double_t nsigmap =
fPIDResponse->NumberOfSigmasTPC(prong,typep);
2737 fillthis=
"hpSigmaVspTPC";
2738 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2743 fillthis=
"hpSigmaVspTOF";
2744 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
2750 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2752 if(pdgProngMC[iprong]==2212) {
2753 fillthis=
"hpIDGood";
2754 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2759 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2765 fillthis=
"hKTOFSignal";
2766 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2767 fillthis=
"hKTPCSignal";
2768 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2769 fillthis=
"hKptProng";
2770 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2771 fillthis=
"hKptProngLcPt";
2772 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
2773 fillthis=
"hKd0Prong";
2774 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
2775 fillthis=
"hKd0ProngLcPt";
2776 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
2777 fillthis=
"hKSignalVspTPC";
2778 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2779 fillthis=
"hKSignalVspTOF";
2780 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2781 AliPID::EParticleType typek;
2782 typek=AliPID::EParticleType(3);
2785 Double_t nsigmap =
fPIDResponse->NumberOfSigmasTPC(prong,typek);
2786 fillthis=
"hKSigmaVspTPC";
2787 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2792 fillthis=
"hKSigmaVspTOF";
2793 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
2799 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2801 if(pdgProngMC[iprong]==321) {
2802 fillthis=
"hKIDGood";
2803 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2808 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2814 fillthis=
"hpiTOFSignal";
2815 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2816 fillthis=
"hpiTPCSignal";
2817 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2818 fillthis=
"hpiptProng";
2819 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2820 fillthis=
"hpiptProngLcPt";
2821 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
2822 fillthis=
"hpid0Prong";
2823 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
2824 fillthis=
"hpid0ProngLcPt";
2825 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
2827 fillthis=
"hpiSignalVspTPC";
2828 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2829 fillthis=
"hpiSignalVspTOF";
2830 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2831 AliPID::EParticleType typepi;
2832 typepi=AliPID::EParticleType(2);
2835 Double_t nsigmap =
fPIDResponse->NumberOfSigmasTPC(prong,typepi);
2836 fillthis=
"hpiSigmaVspTPC";
2837 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2842 fillthis=
"hpiSigmaVspTOF";
2843 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
2848 fillthis=
"hpiIDTot";
2849 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2851 if(pdgProngMC[iprong]==211) {
2852 fillthis=
"hpiIDGood";
2853 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2857 fillthis=
"hnopiIDpi";
2858 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2870 fillthis=
"hLcIDTot";
2871 if(isID==3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2872 fillthis=
"hLcIDGood";
2873 if(isCorrect==3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2875 if(isCorrect<3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2879 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2880 fillthis =
"hDist12toPrim";
2883 fillthis =
"hDist12toPrimLcPt";
2886 fillthis =
"hSigmaVert";
2888 fillthis =
"hSigmaVertLcPt";
2893 for (Int_t idca=0;idca<3;idca++) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dcas[idca]);
2894 fillthis =
"hDCAsLcPt";
2895 for (Int_t idca=0;idca<3;idca++) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),dcas[idca]);
2896 fillthis =
"hCosPointingAngle";
2898 fillthis =
"hCosPointingAngleLcPt";
2900 fillthis =
"hDecayLength";
2902 fillthis =
"hDecayLengthLcPt";
2904 Double_t sum2=part->Getd0Prong(0)*part->Getd0Prong(0)+
2905 part->Getd0Prong(1)*part->Getd0Prong(1)+
2906 part->Getd0Prong(2)*part->Getd0Prong(2);
2908 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(sum2);
2909 fillthis =
"hSum2LcPt";
2910 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),sum2);
2911 fillthis =
"hptmax";
2912 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(ptmax);
2913 fillthis =
"hptmaxLcPt";
2914 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),
ptmax);
2919 }
else if( lab<=0 &&
fReadMC && !IsInjected ) {
2923 if (part->Charge()>0) {
2924 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2925 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi);
2926 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2927 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp);
2929 else if (part->Charge()<0){
2930 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2931 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi);
2932 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2933 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp);
2938 if (TMath::Abs(minvLcpKpi-mPDG)<invmasscut || TMath::Abs(minvLcpiKp-mPDG)<invmasscut) {
2945 for (Int_t iprong=0; iprong<3; iprong++) {
2946 if(part->PtProng(iprong)>
ptmax)ptmax=part->PtProng(iprong);
2948 AliAODTrack *prong = (AliAODTrack*)part->GetDaughter(iprong);
2949 AliAODPid *pidObjtrk = (AliAODPid*)prong->GetDetPid();
2953 Double_t tofSignal=0.;
2954 Double_t dedxTPC=0.;
2958 momTOF = prong->P();
2959 tofSignal=pidObjtrk->GetTOFsignal();
2962 momTPC = pidObjtrk->GetTPCmomentum();
2963 dedxTPC=pidObjtrk->GetTPCsignal();
2966 switch (pdgProngPID[iprong]) {
2968 fillthis=
"hbpTOFSignal";
2969 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2970 fillthis=
"hbpTPCSignal";
2971 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2972 fillthis=
"hbpptProng";
2973 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
2974 fillthis=
"hbpptProngLcPt";
2975 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
2976 fillthis=
"hbpd0Prong";
2977 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
2978 fillthis=
"hbpd0ProngLcPt";
2979 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
2980 fillthis=
"hbpSignalVspTPC";
2981 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2982 fillthis=
"hbpSignalVspTOF";
2983 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2984 AliPID::EParticleType typep;
2985 typep=AliPID::EParticleType(4);
2988 Double_t nsigmap =
fPIDResponse->NumberOfSigmasTPC(prong,typep);
2989 fillthis=
"hbpSigmaVspTPC";
2990 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2995 fillthis=
"hbpSigmaVspTOF";
2996 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
3000 fillthis=
"hbpIDTot";
3001 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3003 if(pdgProngMC[iprong]==2212) {
3004 fillthis=
"hbpIDGood";
3005 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3009 fillthis=
"hbnopIDp";
3010 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3016 fillthis=
"hbKTOFSignal";
3017 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(tofSignal);
3018 fillthis=
"hbKTPCSignal";
3019 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
3020 fillthis=
"hbKptProng";
3021 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3022 fillthis=
"hbKptProngLcPt";
3023 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
3024 fillthis=
"hbKd0Prong";
3025 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
3026 fillthis=
"hbKd0ProngLcPt";
3027 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
3028 fillthis=
"hbKSignalVspTPC";
3029 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
3030 fillthis=
"hbKSignalVspTOF";
3031 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
3032 AliPID::EParticleType typek;
3033 typek=AliPID::EParticleType(3);
3036 Double_t nsigmap =
fPIDResponse->NumberOfSigmasTPC(prong,typek);
3037 fillthis=
"hbKSigmaVspTPC";
3038 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
3043 fillthis=
"hbKSigmaVspTOF";
3044 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
3048 fillthis=
"hbKIDTot";
3049 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3051 if(pdgProngMC[iprong]==321) {
3052 fillthis=
"hbKIDGood";
3053 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3057 fillthis=
"hbnokIDk";
3058 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3064 fillthis=
"hbpiTOFSignal";
3065 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(tofSignal);
3066 fillthis=
"hbpiTPCSignal";
3067 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
3068 fillthis=
"hbpiptProng";
3069 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3070 fillthis=
"hbpiptProngLcPt";
3071 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3072 fillthis=
"hbpid0Prong";
3073 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
3074 fillthis=
"hbpid0ProngLcPt";
3075 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
3076 fillthis=
"hbpiSignalVspTPC";
3077 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
3078 fillthis=
"hbpiSignalVspTOF";
3079 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
3080 AliPID::EParticleType typepi;
3081 typepi=AliPID::EParticleType(2);
3084 Double_t nsigmap =
fPIDResponse->NumberOfSigmasTPC(prong,typepi);
3085 fillthis=
"hbpiSigmaVspTPC";
3086 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
3091 fillthis=
"hbpiSigmaVspTOF";
3092 ((TH2F*)
fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
3096 fillthis=
"hbpiIDTot";
3097 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3099 if(pdgProngMC[iprong]==211) {
3100 fillthis=
"hbpiIDGood";
3101 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3105 fillthis=
"hbnopiIDpi";
3106 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
3117 fillthis=
"hbLcIDTot";
3118 if(isID==3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
3119 fillthis=
"hbLcIDGood";
3120 if(isCorrect==3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
3121 fillthis=
"hbLcnoID";
3122 if(isCorrect<3) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
3126 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt());
3128 fillthis =
"hbDist12toPrim";
3131 fillthis =
"hbDist12toPrimLcPt";
3134 fillthis =
"hbSigmaVert";
3136 fillthis =
"hbSigmaVertLcPt";
3138 fillthis =
"hbDCAs";
3141 for (Int_t idca=0;idca<3;idca++) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(dcas[idca]);
3142 fillthis =
"hbDCAsLcPt";
3143 for (Int_t idca=0;idca<3;idca++) ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),dcas[idca]);
3144 fillthis =
"hbCosPointingAngle";
3146 fillthis =
"hbCosPointingAngleLcPt";
3148 fillthis =
"hbDecayLength";
3150 fillthis =
"hbDecayLengthLcPt";
3152 Double_t sum2=part->Getd0Prong(0)*part->Getd0Prong(0)+
3153 part->Getd0Prong(1)*part->Getd0Prong(1)+
3154 part->Getd0Prong(2)*part->Getd0Prong(2);
3155 fillthis =
"hbSum2";
3156 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(sum2);
3157 fillthis =
"hbSum2LcPt";
3158 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),sum2);
3159 fillthis =
"hbptmax";
3160 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(ptmax);
3161 fillthis =
"hbptmaxLcPt";
3162 ((TH1F*)
fOutputMC->FindObject(fillthis))->Fill(part->Pt(),
ptmax);
3178 TClonesArray *arrMC)
3185 TString fillthis=
"";
3187 if(isSelected3ProngByLc>0 &&
fReadMC) {
3189 for (Int_t ii=0; ii<3; ii++) {
3190 AliAODTrack *prongTest=(AliAODTrack*)part->GetDaughter(ii);
3191 if (!prongTest)
continue;
3192 Int_t labprongTest = prongTest->GetLabel();
3193 if(labprongTest<0)
continue;
3194 AliAODMCParticle *mcprongTest = (AliAODMCParticle*)arrMC->At(labprongTest);
3196 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3198 fillthis=
"hElIn3Prong";
3199 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3202 fillthis=
"hMuIn3Prong";
3203 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3206 fillthis=
"hPiIn3Prong";
3207 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3210 fillthis=
"hKaIn3Prong";
3211 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3214 fillthis=
"hPrIn3Prong";
3215 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3229 TClonesArray *arrayMC,
3230 Int_t pdgToBeCompared)
3237 Bool_t localFlag = kFALSE;
3239 for (Int_t ii=0;ii<3;ii++) {
3240 AliAODTrack *daugh = (AliAODTrack*)d->GetDaughter(ii);
3242 Int_t lab = daugh->GetLabel();
3244 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
3248 Int_t motherLabel = part->GetMother();
3249 if(motherLabel<0)
continue;
3251 AliAODMCParticle *motherPart = 0;
3252 Int_t motherPdg = 0;
3253 while (!localFlag && motherLabel>=0) {
3254 motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
3255 motherPdg = motherPart->GetPdgCode();
3257 if (TMath::Abs(motherPdg)==pdgToBeCompared) {
3262 motherLabel = motherPart->GetMother();
3274 TClonesArray *arrayMC,
3275 Int_t pdgToBeCompared)
3282 Bool_t localFlag = kFALSE;
3284 Int_t lab = daugh->GetLabel();
3285 if(lab<0)
return localFlag;
3286 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
3290 Int_t motherLabel = part->GetMother();
3291 if(motherLabel<0)
return localFlag;
3293 AliAODMCParticle *motherPart = 0;
3294 Int_t motherPdg = 0;
3295 while (!localFlag && motherLabel>=0) {
3296 motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
3297 motherPdg = motherPart->GetPdgCode();
3299 if (TMath::Abs(motherPdg)==pdgToBeCompared) {
3304 motherLabel = motherPart->GetMother();
3322 Bool_t localFlag = kFALSE;
3324 AliAODMCParticle *searchLc;
3326 for (Int_t iii=0; iii<arrayMC->GetEntries(); iii++) {
3327 searchLc = (AliAODMCParticle*)arrayMC->At(iii);
3328 Int_t searchLcpdg = searchLc->GetPdgCode();
3329 if (TMath::Abs(searchLcpdg) == 4122){
3346 TClonesArray *aodtracks=(TClonesArray *)aods->GetTracks();
3349 for(Int_t ji=0;ji<aodtracks->GetEntriesFast();ji++)
3351 AliAODTrack*aodTrack=(AliAODTrack*)aodtracks->UncheckedAt(ji);
3352 if(aodTrack->IsPrimaryCandidate()) counter++;
3362 TClonesArray *arrMC,
3363 Bool_t &flag1,Bool_t &flag2,Bool_t &flag3,
3364 Bool_t &flag4, Bool_t &flag5, Bool_t &flag6)
3370 TString fillthis=
"";
3372 Int_t pdgDgLctopKpi[3]={2212,321,211};
3375 lab=part->MatchToMC(4122,arrMC,3,pdgDgLctopKpi);
3380 if(isSelected3ProngByLc>0 &&
fReadMC) {
3387 if (is3ProngFromJPsi) flag6=is3ProngFromJPsi;
3390 if (is3ProngFromC) flag4=is3ProngFromC;
3393 if (is3ProngFromB) flag5=is3ProngFromB;
3395 for (Int_t ii=0; ii<3; ii++) {
3396 AliAODTrack *prongTest=(AliAODTrack*)part->GetDaughter(ii);
3397 if (!prongTest)
continue;
3398 Int_t labprongTest = prongTest->GetLabel();
3399 if(labprongTest<0)
continue;
3400 AliAODMCParticle *mcprongTest = (AliAODMCParticle*)arrMC->At(labprongTest);
3402 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3404 fillthis=
"hElIn3Prong";
3405 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3407 fillthis=
"hElIn3Prong6";
3408 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3412 fillthis=
"hMuIn3Prong";
3413 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3415 fillthis=
"hMuIn3Prong6";
3416 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3420 fillthis=
"hPiIn3Prong";
3421 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3423 fillthis=
"hPiIn3Prong6";
3424 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3428 fillthis=
"hKaIn3Prong";
3429 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3431 fillthis=
"hKaIn3Prong6";
3432 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3436 fillthis=
"hPrIn3Prong";
3437 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3439 fillthis=
"hPrIn3Prong6";
3440 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3448 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3450 fillthis=
"hElIn3Prong1";
3451 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3454 fillthis=
"hMuIn3Prong1";
3455 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3458 fillthis=
"hPiIn3Prong1";
3459 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3462 fillthis=
"hKaIn3Prong1";
3463 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3466 fillthis=
"hPrIn3Prong1";
3467 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3473 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3475 fillthis=
"hElIn3Prong2";
3476 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3478 fillthis=
"hElIn3Prong3";
3479 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3482 fillthis=
"hElIn3Prong4";
3483 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3486 fillthis=
"hElIn3Prong5";
3487 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3491 fillthis=
"hMuIn3Prong2";
3492 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3494 fillthis=
"hMuIn3Prong3";
3495 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3498 fillthis=
"hMuIn3Prong4";
3499 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3502 fillthis=
"hMuIn3Prong5";
3503 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3507 fillthis=
"hPiIn3Prong2";
3508 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3510 fillthis=
"hPiIn3Prong3";
3511 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3514 fillthis=
"hPiIn3Prong4";
3515 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3518 fillthis=
"hPiIn3Prong5";
3519 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3523 fillthis=
"hKaIn3Prong2";
3524 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3526 fillthis=
"hKaIn3Prong3";
3527 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3530 fillthis=
"hKaIn3Prong4";
3531 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3534 fillthis=
"hKaIn3Prong5";
3535 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3539 fillthis=
"hPrIn3Prong2";
3540 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3542 fillthis=
"hPrIn3Prong3";
3543 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3546 fillthis=
"hPrIn3Prong4";
3547 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3550 fillthis=
"hPrIn3Prong5";
3551 ((TH1F*)
fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3641 Double_t mPDG=TDatabasePDG::Instance()->GetParticle(4122)->Mass();
3642 Double_t invmasscut=0.05;
3649 if (isSelected3ProngByLcPID>0) {
3650 if (TMath::Abs(minvLcpKpi-mPDG)<invmasscut || TMath::Abs(minvLcpiKp-mPDG)<invmasscut) {
TH2F * fhPiond0ProngLcPt
!hist for var_LcPt
TH1F * fMassHistTC[6 *kMaxPtBins]
!hist. for inv mass (TC)
TH1F * fhMassPtGreater33Pr
!hist. for No. of events
TH1F * fMassHistDk[3 *kMaxPtBins]
!hist. for inv mass (LC)
AliAnalysisTaskSELambdac()
TH1F * fMassHist3Pr[3 *kMaxPtBins]
!hist. for inv mass (LC)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH1F * fhMassPtGreater2TC
!hist. for No. of events
TH1F * fhMassPtGreater3DkTC
!hist. for No. of events
AliAnalysisVertexingHF * fVHF
apply analysis cuts
TH2F * fhEta3ProngAn
!hist. for 3-prong Eta fiducial An Cuts
Double_t GetPtBinLimit(Int_t ibin) const
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
TH2F * fhPtMaxLcPt
!hist for var_LcPt
TH2F * fhCosPointingAngleLcPt
!hist for var_LcPt
TH2F * fhdcasLcPt
!hist for var_LcPt
TH1F * fMassHistDkTC[3 *kMaxPtBins]
!hist. for inv mass (TC)
Bool_t HasSelectionBit(Int_t i) const
Double_t fArrayBinLimits[kMaxPtBins+1]
list of cuts
TH1F * fhMassPtGreater2KpTC
!hist. for No. of events
TH2F * fhBdcasLcPt
!hist for var_LcPt
void UnsetOwnPrimaryVtx()
Double_t GetDist12toPrim() const
TH2F * fhRap3ProngAn
!hist. for 3-prong Eta fiducial An cuts
TH1F * fMassHist[6 *kMaxPtBins]
!hist. for inv mass (LC)
Bool_t Is3ProngFromPDG(AliAODRecoDecayHF3Prong *part, TClonesArray *arrMC, Int_t pdgToBeCompared=4)
TH2F * fhDecayLengthLcPt
!hist for var_LcPt
TH1F * fhMassPtGreater3Kp
!hist. for No. of events
Double_t ptlims[nPtBins+1]
AliPIDResponse * fPIDResponse
output3
Bool_t IsThereAGeneratedLc(TClonesArray *arrayMC)
TH2F * fhBSigmaVertLcPt
!hist for var_LcPt
TH1F * fMassHistKpTC[3 *kMaxPtBins]
!hist. for inv mass (TC)
TH1F * fhMassPtGreater23PrTC
!hist. for No. of events
TH1F * fMassHistKp[3 *kMaxPtBins]
!hist. for inv mass (LC)
Int_t GetSignalHistoIndex(Int_t iPtBin) const
Int_t GetWhyRejection() const
TH2F * fhBCosPointingAngleLcPt
!hist for var_LcPt
TH2F * fhSum2LcPt
!hist for var_LcPt
TH2F * fhBDecayLengthLcPt
!hist for var_LcPt
Int_t fNPtBins
cuts with KF vertexer
ULong_t GetSelectionMap() const
Bool_t fFillVarHists
Vertexer heavy flavour (used to pass the cuts)
TH1F * fMassHistLpi[3 *kMaxPtBins]
!hist. for inv mass (LC)
static Int_t CheckOrigin(TClonesArray *arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE)
TH1F * fhMassPtGreater2LpiTC
!hist. for No. of events
void MultiplicityStudies(AliAODRecoDecayHF3Prong *part, AliRDHFCutsLctopKpi *cuts, AliAODEvent *aod, TClonesArray *arrMC, Bool_t &flag1, Bool_t &flag2, Bool_t &flag3, Bool_t &flag4, Bool_t &flag5, Bool_t &flag6)
TNtuple * fNtupleLambdac
! output ntuple
TH2F * fhBProtond0ProngLcPt
!hist for var_LcPt
AliAODPidHF * GetPidHF() const
virtual ~AliAnalysisTaskSELambdac()
TH1F * fhMassPtGreater33PrTC
!hist. for No. of events
Bool_t VertexingKF(AliAODRecoDecayHF3Prong *d, Int_t *pdgs, Double_t field) const
TH2F * fhEta3Prong
!hist. for 3-prong Eta
TList * fListCuts
Production Cuts.
TH1F * fhMassPtGreater3TC
!hist. for No. of events
TH2F * fhBSum2LcPt
!hist for var_LcPt
virtual void Terminate(Option_t *option)
TH1F * fhMassPtGreater2Lpi
!hist. for No. of events
TH2F * fhRap3Prong
!hist. for 3-prong y
TH1F * fNentries
flag for Lc filter bit PID
void FillAPrioriConcentrations(AliAODRecoDecayHF3Prong *part, AliRDHFCutsLctopKpi *cuts, AliAODEvent *aod, TClonesArray *arrMC)
TH1F * fhMassPtGreater2DkTC
!hist. for No. of events
Bool_t fAnalysis
flag to cut with KF vertexer
TH1F * fhMassPtGreater3Dk
!hist. for No. of events
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
TH2F * fhBKaonPtProngLcPt
!hist for var_LcPt
TH2F * fhMassLcPt
!hist Mass x pt
Bool_t fPriorsHists
flag for activation of multiplcity histos
Int_t MatchToMCLambdac(AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC) const
Bool_t CheckStatus(AliAODTrack *track, TString detectors) const
AliAODVertex * GetOwnPrimaryVtx() const
TH2F * fhBDist12PrimLcPt
!hist for var_LcPt
TH2F * fhBProtonPtProngLcPt
!hist for var_LcPt
Double_t GetSigmaVert(const AliAODEvent *aod=0x0)
virtual void UserExec(Option_t *option)
AliAODPidHF * GetPidprot() const
TH2F * fhKaonPtProngLcPt
!hist for var_LcPt
TH2F * fhEta3ProngAcc
!hist. for 3-prong Eta fiducial acc
TH2F * fhProtonPtProngLcPt
!hist for var_LcPt
Int_t GetHistoIndex(Int_t iPtBin) const
TH1F * fhMassPtGreater23Pr
!hist. for No. of events
Bool_t IsCandidateInjected(AliAODRecoDecayHF *cand, AliAODMCHeader *header, TClonesArray *arrayMC)
void GetDCAs(Double_t dca[3]) const
AliAODPidHF * GetPidpion() const
TH1F * fhMassPtGreater3KpTC
!hist. for No. of events
Bool_t fMultiplicityHists
flag for creation and fill of histograms with vars
Bool_t fRealPid
flag for access to MC
Bool_t fReadMC
flag for filling ntuple
Bool_t fMCPid
flag for access to MC
Double_t GetDist23toPrim() const
Int_t GetNoQuarkHistoIndex(Int_t iPtBin) const
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
void SetMassLimits(Float_t range)
TList * fOutputMC
histo with number of entries
TH2F * fhEta3ProngProd
!hist. for 3-prong Eta fiducial Prod Cuts
TH1F * fMassHist3PrTC[3 *kMaxPtBins]
!hist. for inv mass (TC)
Float_t fLowmasslimit
upper inv mass limit for histos
void FillMassHists(AliAODEvent *aod, AliAODRecoDecayHF3Prong *part, TClonesArray *arrayMC, AliRDHFCutsLctopKpi *cuts, Int_t *nSelectedloose, Int_t *nSelectedtight)
void FillVarHists(AliAODRecoDecayHF3Prong *part, TClonesArray *arrMC, AliRDHFCutsLctopKpi *cuts, AliAODEvent *aod)
Bool_t GetLambdacDaugh(AliAODMCParticle *part, TClonesArray *arrayMC) const
Bool_t IsEventSelected(AliVEvent *event)
Int_t NumberPrimaries(const AliAODEvent *aods)
TH2F * fhBPtMaxLcPt
!hist for var_LcPt
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
TH1F * fhMassPtGreater3Lpi
!hist. for No. of events
Bool_t fLcCut
flag for histos with priors
TH2F * fhProtond0ProngLcPt
!hist for var_LcPt
virtual void UserCreateOutputObjects()
Implementation of interface methods.
void SetPtBinLimit(Int_t n, Float_t *limitarray)
Bool_t fUseKF
flag for PID with resonant channels
TH1F * fMassHistLpiTC[3 *kMaxPtBins]
!hist. for inv mass (TC)
Float_t * GetPtBinLimits() const
void SetOldPid(Bool_t oldPid)
TH2F * fhKaond0ProngLcPt
!hist for var_LcPt
AliNormalizationCounter * fCounter
!AliNormalizationCounter on output slot 7
TH1F * fhMassPtGreater3
!hist. for No. of events
TH1F * fHistNEvents
!hist. for No. of events
Int_t GetcOnlyHistoIndex(Int_t iPtBin) const
TH1F * fhMassPtGreater3LpiTC
!hist. for No. of events
TH2F * fhPionPtProngLcPt
!hist for var_LcPt
TH2F * fhBPionPtProngLcPt
!hist for var_LcPt
TH2F * fhRap3ProngProd
!hist. for 3-prong Eta fiducial Prod cuts
TH2F * fhMassLcminusPt
!hist Mass x pt Lcminu
TH1F * fhMassPtGreater2Dk
!hist. for No. of events
TH2F * fhMassLcplusPt
!hist Mass x pt Lcplus
TH2F * fhSigmaVertLcPt
!hist for var_LcPt
Bool_t GetIsUsePID() const
TList * fOutput
! list send on output slot 0
Bool_t IspiKpMC(AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC) const
Bool_t fFillNtuple
limits for the Pt bins
AliKFParticle * ApplyVertexingKF(Int_t *iprongs, Int_t nprongs, Int_t *pdgs, Bool_t topoCostraint, Double_t bzkG, Double_t *mass) const
vertexing KF:
Bool_t IsTrackFromPDG(const AliAODTrack *daugh, TClonesArray *arrayMC, Int_t pdgToBeCompared)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999)
TH1F * fhMassPtGreater2
!hist. for No. of events
Double_t CosPointingAngle() const
Double_t InvMassLcpKpi() const
TList * fMultiplicity
output2
Bool_t fResPid
flag for real PID
void IspKpiResonant(AliAODRecoDecayHF3Prong *d, Double_t field, Int_t *resNumber) const
TH2F * fhRap3ProngAcc
!hist. for 3-prong Eta fiducial acc
AliRDHFCutsLctopKpi * fRDCutsAnalysis
number of bins in Pt for histograms
Bool_t IspKpiMC(AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC) const
Int_t PtBin(Double_t pt) const
TH2F * fhBKaond0ProngLcPt
!hist for var_LcPt
Float_t fCutsKF[2]
lower inv mass limit for histos
Double_t DecayLength() const
Bool_t fLcPIDCut
flag for Lc filter bit cut
void IspiKpResonant(AliAODRecoDecayHF3Prong *d, Double_t field, Int_t *resNumber) const
TH1F * fhMassPtGreater2Kp
!hist. for No. of events
Int_t GetLbHistoIndex(Int_t iPtBin) const
TH2F * fhBPiond0ProngLcPt
!hist for var_LcPt
AliRDHFCutsLctopKpi * fRDCutsProduction
Cuts for Analysis.
Double_t InvMassLcpiKp() const
Int_t GetBackgroundHistoIndex(Int_t iPtBin) const
TH1F * fhChi2
!hist. for No. of events
void SetPidResponse(AliPIDResponse *pidResp)
TH1F * fhSelectBit
! hist for Filter Bit
TH2F * fhDist12PrimLcPt
!hist for var_LcPt
Class with functions useful for different D2H analyses //.