28 #include <TClonesArray.h>
35 #include <TDatabasePDG.h>
37 #include <AliAnalysisDataSlot.h>
38 #include <AliAnalysisDataContainer.h>
39 #include "AliAnalysisManager.h"
40 #include "AliAODHandler.h"
41 #include "AliAODEvent.h"
42 #include "AliAODVertex.h"
43 #include "AliAODTrack.h"
44 #include "AliAODMCHeader.h"
45 #include "AliAODMCParticle.h"
48 #include "AliAnalysisTaskSE.h"
50 #include "AliKFParticle.h"
54 #include "AliKFVertex.h"
55 #include "AliESDVertex.h"
57 #include "AliAODPid.h"
58 #include "AliInputEventHandler.h"
86 fhProbmassLcPtSigc(0),
87 fhProbmassLcPtSigb(0),
89 fhIsLcResonantReco(0),
95 fhSelectionBitsSigc(0),
96 fhSelectionBitsSigb(0),
104 fLowmasslimit(2.086),
114 fKeepLcNotFromQuark(kFALSE),
128 for(Int_t i=0;i<12;i++) {
186 AliAnalysisTaskSE(name),
189 fHistNEventsRejTM(0),
192 fhPIDmassLcPtSigc(0),
193 fhPIDmassLcPtSigb(0),
199 fhProbmassLcPtSig(0),
200 fhProbmassLcPtSigc(0),
201 fhProbmassLcPtSigb(0),
202 fhIsLcResonantGen(0),
203 fhIsLcResonantReco(0),
209 fhSelectionBitsSigc(0),
210 fhSelectionBitsSigb(0),
214 fRDCutsAnalysis(lccutsana),
217 fLowmasslimit(2.086),
218 fFillNtuple(fillNtuple),
228 fKeepLcNotFromQuark(kFALSE),
241 for(Int_t i=0;i<12;i++) {
297 DefineOutput(1,TList::Class());
298 DefineOutput(2,TList::Class());
299 DefineOutput(3,TH1F::Class());
300 DefineOutput(4,AliNormalizationCounter::Class());
303 DefineOutput(5,TNtuple::Class());
368 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::Init() \n");
386 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::UserCreateOutputObjects() \n");
391 fOutput->SetName(
"OutputHistos");
393 TString hisname,histitle;
396 fhSelectBit =
new TH1F(
"hSelectBit",
"hSelectBit",5,-0.5,4.5);
398 fhSelectBit->GetXaxis()->SetBinLabel(3,
"SelectionMap");
404 fHistNEvents =
new TH1F(
"fHistNEvents",
"Number of processed events; ; Events",3,-0.5,2.5);
406 fHistNEvents->GetXaxis()->SetBinLabel(3,
"N events (after selection)");
436 fhIsLcResonantGen =
new TH1F(
"hIsLcResonantGen",
"IsLcResonant flag gen",6,-1.5,4.5);
437 fhIsLcResonantReco =
new TH1F(
"hIsLcResonantReco",
"IsLcResonant flag reco",6,-1.5,4.5);
438 fhIsLcGen =
new TH1F(
"hIsLcGen",
"IsLc flag gen",4,-1.5,2.5);
439 fhIsLcReco =
new TH1F(
"hIsLcReco",
"IsLc flag reco",4,-1.5,2.5);
445 fhRecoPDGmom =
new TH1F(
"hRecoPDGmom",
"pdg of mother reco. MatchToMCLambdac",7,-0.5,6.5);
448 fhSetIsLc =
new TH1F(
"hSetIsLc",
"Check candidates before/after rec. set is Lc",2,-0.5,1.5);
451 fhSelectionBits =
new TH2F(
"hSelectionBits",
"Reconstruction + selection bit",13,-0.5,12.5,150,0,15);
468 fhSelectionBitsSigc =
new TH2F(
"hSelectionBitsSigc",
"Reconstruction + selection bit from c",13,-0.5,12.5,150,0,15);
485 fhSelectionBitsSigb =
new TH2F(
"hSelectionBitsSigb",
"Reconstruction + selection bit from b",13,-0.5,13.5,150,0,15);
504 TString stepnames[12] = {
"GeneratedLimAcc",
"GeneratedAll",
"Generated",
"GeneratedAcc",
"Reco3Prong",
"LcBit",
"IsSelectedTracks",
"IsInFidAcc",
"PtRange",
"IsSelectedCandidate",
"IsSelectedPID",
"IsSelectedNtuple"};
505 for(Int_t i=0;i<12;i++) {
507 hisname.Form(
"hNBkgNI%i",i);
508 histitle.Form(
"N Bkg not injected %s",stepnames[i].
Data());
509 fhNBkgNI[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
510 hisname.Form(
"hNLc%i",i);
511 histitle.Form(
"N Lc %s",stepnames[i].
Data());
512 fhNLc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
513 hisname.Form(
"hNLcc%i",i);
514 histitle.Form(
"N Lc from c %s",stepnames[i].
Data());
515 fhNLcc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
516 hisname.Form(
"hNLcNonRc%i",i);
517 histitle.Form(
"N Lc non resonant from c %s",stepnames[i].
Data());
518 fhNLcNonRc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
519 hisname.Form(
"hNLcL1520c%i",i);
520 histitle.Form(
"N Lc -> L(1520) + p from c %s",stepnames[i].
Data());
521 fhNLcL1520c[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
522 hisname.Form(
"hNLcKstarc%i",i);
523 histitle.Form(
"N Lc -> K* + pi from c %s",stepnames[i].
Data());
524 fhNLcKstarc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
525 hisname.Form(
"hNLcDeltac%i",i);
526 histitle.Form(
"N Lc -> Delta + K from c %s",stepnames[i].
Data());
527 fhNLcDeltac[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
528 hisname.Form(
"hNLcb%i",i);
529 histitle.Form(
"N Lc from b %s",stepnames[i].
Data());
530 fhNLcb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
531 hisname.Form(
"hNLcNonRb%i",i);
532 histitle.Form(
"N Lc non resonant from b %s",stepnames[i].
Data());
533 fhNLcNonRb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
534 hisname.Form(
"hNLcL1520b%i",i);
535 histitle.Form(
"N Lc -> L(1520) + p from b %s",stepnames[i].
Data());
536 fhNLcL1520b[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
537 hisname.Form(
"hNLcKstarb%i",i);
538 histitle.Form(
"N Lc -> K* + pi from b %s",stepnames[i].
Data());
539 fhNLcKstarb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
540 hisname.Form(
"hNLcDeltab%i",i);
541 histitle.Form(
"N Lc -> Delta + K from b %s",stepnames[i].
Data());
542 fhNLcDeltab[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
557 hisname.Form(
"hPtEtaBkgNI%i",i);
558 histitle.Form(
"Pt vs #eta Bkg not injected %s",stepnames[i].
Data());
559 fhPtEtaBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
560 hisname.Form(
"hPtEtaLc%i",i);
561 histitle.Form(
"Pt vs #eta Lc %s",stepnames[i].
Data());
562 fhPtEtaLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
563 hisname.Form(
"hPtEtaLcc%i",i);
564 histitle.Form(
"Pt vs #eta Lc from c %s",stepnames[i].
Data());
565 fhPtEtaLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
566 hisname.Form(
"hPtEtaLcNonRc%i",i);
567 histitle.Form(
"Pt vs #eta Lc non resonant from c %s",stepnames[i].
Data());
568 fhPtEtaLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
569 hisname.Form(
"hPtEtaLcL1520c%i",i);
570 histitle.Form(
"Pt vs #eta Lc -> L(1520) + p from c %s",stepnames[i].
Data());
571 fhPtEtaLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
572 hisname.Form(
"hPtEtaLcKstarc%i",i);
573 histitle.Form(
"Pt vs #eta Lc -> K* + pi from c %s",stepnames[i].
Data());
574 fhPtEtaLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
575 hisname.Form(
"hPtEtaLcDeltac%i",i);
576 histitle.Form(
"Pt vs #eta Lc -> Delta + K from c %s",stepnames[i].
Data());
577 fhPtEtaLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
578 hisname.Form(
"hPtEtaLcb%i",i);
579 histitle.Form(
"Pt vs #eta Lc from b %s",stepnames[i].
Data());
580 fhPtEtaLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
581 hisname.Form(
"hPtEtaLcNonRb%i",i);
582 histitle.Form(
"Pt vs #eta Lc non resonant from b %s",stepnames[i].
Data());
583 fhPtEtaLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
584 hisname.Form(
"hPtEtaLcL1520b%i",i);
585 histitle.Form(
"Pt vs #eta Lc -> L(1520) + p from b %s",stepnames[i].
Data());
586 fhPtEtaLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
587 hisname.Form(
"hPtEtaLcKstarb%i",i);
588 histitle.Form(
"Pt vs #eta Lc -> K* + pi from b %s",stepnames[i].
Data());
589 fhPtEtaLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
590 hisname.Form(
"hPtEtaLcDeltab%i",i);
591 histitle.Form(
"Pt vs #eta Lc -> Delta + K from b %s",stepnames[i].
Data());
592 fhPtEtaLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
607 hisname.Form(
"hPtYBkgNI%i",i);
608 histitle.Form(
"Pt vs Y Bkg not injected %s",stepnames[i].
Data());
609 fhPtYBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
610 hisname.Form(
"hPtYLc%i",i);
611 histitle.Form(
"Pt vs Y Lc %s",stepnames[i].
Data());
612 fhPtYLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
613 hisname.Form(
"hPtYLcc%i",i);
614 histitle.Form(
"Pt vs Y Lc from c %s",stepnames[i].
Data());
615 fhPtYLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
616 hisname.Form(
"hPtYLcNonRc%i",i);
617 histitle.Form(
"Pt vs Y Lc non resonant from c %s",stepnames[i].
Data());
618 fhPtYLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
619 hisname.Form(
"hPtYLcL1520c%i",i);
620 histitle.Form(
"Pt vs Y Lc -> L(1520) + p from c %s",stepnames[i].
Data());
621 fhPtYLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
622 hisname.Form(
"hPtYLcKstarc%i",i);
623 histitle.Form(
"Pt vs Y Lc -> K* + pi from c %s",stepnames[i].
Data());
624 fhPtYLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
625 hisname.Form(
"hPtYLcDeltac%i",i);
626 histitle.Form(
"Pt vs Y Lc -> Delta + K from c %s",stepnames[i].
Data());
627 fhPtYLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
628 hisname.Form(
"hPtYLcb%i",i);
629 histitle.Form(
"Pt vs Y Lc from b %s",stepnames[i].
Data());
630 fhPtYLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
631 hisname.Form(
"hPtYLcNonRb%i",i);
632 histitle.Form(
"Pt vs Y Lc non resonant from b %s",stepnames[i].
Data());
633 fhPtYLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
634 hisname.Form(
"hPtYLcL1520b%i",i);
635 histitle.Form(
"Pt vs Y Lc -> L(1520) + p from b %s",stepnames[i].
Data());
636 fhPtYLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
637 hisname.Form(
"hPtYLcKstarb%i",i);
638 histitle.Form(
"Pt vs Y Lc -> K* + pi from b %s",stepnames[i].
Data());
639 fhPtYLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
640 hisname.Form(
"hPtYLcDeltab%i",i);
641 histitle.Form(
"Pt vs Y Lc -> Delta + K from b %s",stepnames[i].
Data());
642 fhPtYLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
657 hisname.Form(
"hPtPhiBkgNI%i",i);
658 histitle.Form(
"Pt vs #phi Bkg not injected %s",stepnames[i].
Data());
659 fhPtPhiBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
660 hisname.Form(
"hPtPhiLc%i",i);
661 histitle.Form(
"Pt vs #phi Lc %s",stepnames[i].
Data());
662 fhPtPhiLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
663 hisname.Form(
"hPtPhiLcc%i",i);
664 histitle.Form(
"Pt vs #phi Lc from c %s",stepnames[i].
Data());
665 fhPtPhiLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
666 hisname.Form(
"hPtPhiLcNonRc%i",i);
667 histitle.Form(
"Pt vs #phi Lc non resonant from c %s",stepnames[i].
Data());
668 fhPtPhiLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
669 hisname.Form(
"hPtPhiLcL1520c%i",i);
670 histitle.Form(
"Pt vs #phi Lc -> L(1520) + p from c %s",stepnames[i].
Data());
671 fhPtPhiLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
672 hisname.Form(
"hPtPhiLcKstarc%i",i);
673 histitle.Form(
"Pt vs #phi Lc -> K* + pi from c %s",stepnames[i].
Data());
674 fhPtPhiLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
675 hisname.Form(
"hPtPhiLcDeltac%i",i);
676 histitle.Form(
"Pt vs #phi Lc -> Delta + K from c %s",stepnames[i].
Data());
677 fhPtPhiLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
678 hisname.Form(
"hPtPhiLcb%i",i);
679 histitle.Form(
"Pt vs #phi Lc from b %s",stepnames[i].
Data());
680 fhPtPhiLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
681 hisname.Form(
"hPtPhiLcNonRb%i",i);
682 histitle.Form(
"Pt vs #phi Lc non resonant from b %s",stepnames[i].
Data());
683 fhPtPhiLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
684 hisname.Form(
"hPtPhiLcL1520b%i",i);
685 histitle.Form(
"Pt vs #phi Lc -> L(1520) + p from b %s",stepnames[i].
Data());
686 fhPtPhiLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
687 hisname.Form(
"hPtPhiLcKstarb%i",i);
688 histitle.Form(
"Pt vs #phi Lc -> K* + pi from b %s",stepnames[i].
Data());
689 fhPtPhiLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
690 hisname.Form(
"hPtPhiLcDeltab%i",i);
691 histitle.Form(
"Pt vs #phi Lc -> Delta + K from b %s",stepnames[i].
Data());
692 fhPtPhiLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
708 fhPtMisIdpKpi =
new TH1F(
"hMisIdpKpi",
"pKpi id'd as piKp",30,0,30);
709 fhPtMisIdpiKp =
new TH1F(
"hMisIdpiKp",
"piKp id'd as pKpi",30,0,30);
710 fhPtCorrId =
new TH1F(
"hCorrId",
"Correctly id'd pKpi",30,0,30);
719 fhPtMisIdpKpiProb =
new TH1F(
"hMisIdpKpiProb",
"pKpi id'd as piKp, most prob. PID",30,0,30);
720 fhPtMisIdpiKpProb =
new TH1F(
"hMisIdpiKpProb",
"piKp id'd as pKpi, most prob. PID",30,0,30);
721 fhPtCorrIdProb =
new TH1F(
"hCorrIdProb",
"Correctly id'd pKpi, most prob. PID",30,0,30);
735 fNentries=
new TH1F(
"fNentries",
"n Events/Candidates QA", 16,0.5,16.5);
738 fNentries->GetXaxis()->SetBinLabel(1,
"nEventsRejTM");
739 fNentries->GetXaxis()->SetBinLabel(2,
"nEventsNoVtx");
740 fNentries->GetXaxis()->SetBinLabel(3,
"nEventsRejCutPileup");
741 fNentries->GetXaxis()->SetBinLabel(4,
"nLcGen");
742 fNentries->GetXaxis()->SetBinLabel(5,
"nLcGenFidAcc");
743 fNentries->GetXaxis()->SetBinLabel(6,
"nCandReco3Prong");
744 fNentries->GetXaxis()->SetBinLabel(7,
"nCandLcBit");
745 fNentries->GetXaxis()->SetBinLabel(8,
"nCandIsSelTracks");
746 fNentries->GetXaxis()->SetBinLabel(9,
"nCandIsInFidAcc");
747 fNentries->GetXaxis()->SetBinLabel(10,
"ptbin=-1");
748 fNentries->GetXaxis()->SetBinLabel(11,
"nCandIsSelCand");
749 fNentries->GetXaxis()->SetBinLabel(12,
"PID=0");
750 fNentries->GetXaxis()->SetBinLabel(13,
"PID=1");
751 fNentries->GetXaxis()->SetBinLabel(14,
"PID=2");
752 fNentries->GetXaxis()->SetBinLabel(15,
"PID=3");
753 fNentries->GetXaxis()->SetBinLabel(16,
"nLcSelected");
754 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
756 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
757 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
773 TString normName=
"NormalizationCounter";
774 AliAnalysisDataContainer *cont = GetOutputSlot(4)->GetContainer();
775 if(cont)normName=(TString)cont->GetName();
781 TString ntName=
"fNtupleLambdac";
782 AliAnalysisDataContainer *contnt = GetOutputSlot(5)->GetContainer();
783 if(contnt)ntName=(TString)contnt->GetName();
784 if(
fFillNtuple==1)
fNtupleLambdac =
new TNtuple(ntName.Data(),
"Lc",
"isLcBkg:InvMasspKpi:InvMasspiKp:Charge:PtTr0:PtTr1:PtTr2:PtLc:CosP:DecayL:DecayLSig:Dist12:SigVert:DCA:DecayLXY:DecayLXYSig:isLcResonant:selectionPID:Tr0Ppi:Tr0PK:Tr0Pp:Tr1Ppi:Tr1PK:Tr1Pp:Tr2Ppi:Tr2PK:Tr2Pp");
786 else if(
fFillNtuple==2)
fNtupleLambdac =
new TNtuple(ntName.Data(),
"Lc",
"isLcBkg:InvMasspKpi:InvMasspiKp:Charge:PtTr0:PtTr1:PtTr2:PtLc:CosP:DecayL:DecayLSig:Dist12:SigVert:DCATr0:DecayLXY:DecayLXYSig:isLcResonant:selectionPID:Tr0Ppi:Tr0PK:Tr0Pp:Tr1Ppi:Tr1PK:Tr1Pp:Tr2Ppi:Tr2PK:Tr2Pp:d00:d01:d02:d0Squared:d00Sig:d01Sig:d02Sig:d00SigResidual:d01SigResidual:d02SigResidual:CosPXY:DCATr1:DCATr2:Dist23:RunNumber");
788 else if(
fFillNtuple==3)
fNtupleLambdac =
new TNtuple(ntName.Data(),
"Lc",
"isLcBkg:InvMasspKpi:InvMasspiKp:Charge:PtTr0:PtTr1:PtTr2:PtLc:CosP:DecayL:DecayLSig:Dist12:SigVert:DCATr0:DecayLXY:DecayLXYSig:isLcResonant:selectionPID:Tr0Ppi:Tr0PK:Tr0Pp:Tr1Ppi:Tr1PK:Tr1Pp:Tr2Ppi:Tr2PK:Tr2Pp:d00:d01:d02:d0Squared:d00Sig:d01Sig:d02Sig:d00SigResidual:d01SigResidual:d02SigResidual:CosPXY:DCATr1:DCATr2:Dist23:RunNumber:InvMasspK:InvMassKpi:InvMassppi:InvMassKp:InvMasspiK:InvMasspip");
789 else AliFatal(
"Invalid fill ntuple argument");
803 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
809 TClonesArray *array3Prong = 0;
810 TClonesArray *arrayLikeSign =0;
811 if(!aod && AODEvent() && IsStandardAOD()) {
814 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
817 AliAODHandler* aodHandler = (AliAODHandler*)
818 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
819 if(aodHandler->GetExtensions()) {
820 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
821 AliAODEvent *aodFromExt = ext->GetAOD();
822 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
823 arrayLikeSign=(TClonesArray*)aodFromExt->GetList()->FindObject(
"LikeSign3Prong");
826 array3Prong=(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
827 arrayLikeSign=(TClonesArray*)aod->GetList()->FindObject(
"LikeSign3Prong");
832 TClonesArray *arrayMC=0;
833 AliAODMCHeader *mcHeader=0;
838 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
840 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: MC particles branch not found!\n");
846 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
848 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: MC header branch not found!\n");
862 if(!array3Prong || !aod) {
863 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: Charm3Prong branch not found!\n");
867 AliDebug(2,
"AliAnalysisTaskSELambdacTMVA::UserExec: LikeSign3Prong branch not found!\n");
872 Int_t runnumber = aod->GetRunNumber();
873 if (aod->GetTriggerMask() == 0 && (runnumber >= 195344 && runnumber <= 195677)){
874 Int_t nentriesTM = arrayMC->GetEntriesFast();
875 AliDebug(2,Form(
"Event rejected because of null trigger mask, n entries = %i",nentriesTM));
882 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
883 if(!vtx1 || TMath::Abs(aod->GetMagneticField())<0.001) {
888 TString trigclass=aod->GetFiredTriggerClasses();
899 Int_t n3Prong = array3Prong->GetEntriesFast();
900 Int_t nSelectedloose[1]={0};
901 Int_t nSelectedtight[1]={0};
905 Bool_t isInFidAcc = kFALSE;
906 Bool_t isInAcc = kFALSE;
909 Double_t zPrimVertex = vtx1 ->GetZ();
910 Double_t zMCVertex = mcHeader->GetVtxZ();
914 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
917 AliAODMCParticle* mcPart =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(iPart));
919 AliError(
"Failed casting particle from MC array!, Skipping particle");
924 if(
fIsLc==0)
continue;
932 if(!
fIsHijing) imother=mcPart->GetMother();
934 AliAODMCParticle* mcPartMother =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(imother));
936 AliError(
"Failed casting mother particle, Skipping particle");
944 AliDebug(2,
"Lc has p K pi in final state");
949 if((TMath::Abs(mcPart->Y()) < 0.5)) {
950 AliDebug(2,
"Lc in limited acceptance");
958 AliError(
"no p K pi final state");
970 else AliError(Form(
"Not pKpi or background - should not happen! fIsLcResonant = %i",
fIsLcResonant));
991 for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
1007 Bool_t unsetvtx=kFALSE;
1035 if(!isSelectedTracks)
continue;
1045 if(ptbin==-1) {
fNentries->Fill(10);
continue;}
1052 if(isSelectedPID==0 )
fNentries->Fill(12);
1053 else if(isSelectedPID==1)
fNentries->Fill(13);
1054 else if(isSelectedPID==2)
fNentries->Fill(14);
1061 if(!selection)
continue;
1092 if (fDebug > 1) printf(
"AnalysisTaskSELambdac: Terminate() \n");
1094 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1096 AliError(
"ERROR: fOutput not available\n");
1116 Int_t lambdacLab[3]={0,0,0};
1118 for(Int_t i=0;i<3;i++){
1119 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1120 Int_t lab=daugh->GetLabel();
1122 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
1125 Int_t partPdgcode = TMath::Abs(part->GetPdgCode());
1126 if(partPdgcode==211 || partPdgcode==321 || partPdgcode==2212){
1127 Int_t motherLabel=part->GetMother();
1128 if(motherLabel<0)
return 0;
1129 AliAODMCParticle *motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
1130 if(!motherPart)
continue;
1131 Int_t motherPdg = TMath::Abs(motherPart->GetPdgCode());
1132 if(motherPdg==4122) {
1133 if(
GetLambdacDaugh(motherPart,arrayMC)){lambdacLab[i]=motherLabel;
continue;}
1135 if(motherPdg==313 || motherPdg==2224 || motherPdg==3124){
1136 Int_t granMotherLabel=motherPart->GetMother();
1137 if(granMotherLabel<0)
return 0;
1138 AliAODMCParticle *granMotherPart = (AliAODMCParticle*)arrayMC->At(granMotherLabel);
1139 if(!granMotherPart)
continue;
1140 Int_t granMotherPdg = TMath::Abs(granMotherPart->GetPdgCode());
1141 if(granMotherPdg ==4122) {
1142 if(
GetLambdacDaugh(granMotherPart,arrayMC)) {lambdacLab[i]=granMotherLabel;
continue;}
1148 if(lambdacLab[0]==lambdacLab[1] && lambdacLab[1]==lambdacLab[2]) {
return lambdacLab[0];}
1163 Int_t numberOfLambdac=0;
1165 if(TMath::Abs(part->GetPdgCode())!=4122)
return 0;
1169 Int_t nDaugh = (Int_t)part->GetNDaughters();
1170 if(nDaugh<2)
return 0;
1171 if(nDaugh>3)
return 0;
1172 AliAODMCParticle* pdaugh1 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(0));
1173 if(!pdaugh1) {
return 0;}
1174 Int_t number1 = TMath::Abs(pdaugh1->GetPdgCode());
1175 AliAODMCParticle* pdaugh2 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(1));
1176 if(!pdaugh2) {
return 0;}
1177 Int_t number2 = TMath::Abs(pdaugh2->GetPdgCode());
1179 AliDebug(2,
"Is non resonant?");
1181 Int_t thirdDaugh=part->GetDaughter(1)-1;
1182 AliAODMCParticle* pdaugh3 = (AliAODMCParticle*)arrayMC->At(thirdDaugh);
1183 Int_t number3 = TMath::Abs(pdaugh3->GetPdgCode());
1184 if((number1==321 && number2==211 && number3==2212) ||
1185 (number1==211 && number2==321 && number3==2212) ||
1186 (number1==211 && number2==2212 && number3==321) ||
1187 (number1==321 && number2==2212 && number3==211) ||
1188 (number1==2212 && number2==321 && number3==211) ||
1189 (number1==2212 && number2==211 && number3==321)) {
1191 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1192 || TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1193 || TMath::Abs(pdaugh3->Eta()) > 0.9 || pdaugh3->Pt() < 0.1) IsInAcc=kFALSE;
1194 AliDebug(2,
"Lc decays non-resonantly");
1207 if((number1==2212 && number2==313)){
1208 nfiglieK=pdaugh2->GetNDaughters();
1209 if(nfiglieK!=2)
return 0;
1210 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1211 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1212 if(!pdaughK1)
return 0;
1213 if(!pdaughK2)
return 0;
1214 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) {
1216 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1217 || TMath::Abs(pdaughK1->Eta()) > 0.9 || pdaughK1->Pt() < 0.1
1218 || TMath::Abs(pdaughK2->Eta()) > 0.9 || pdaughK2->Pt() < 0.1) IsInAcc=kFALSE;
1219 AliDebug(2,
"Lc decays via K* p");
1224 if((number1==313 && number2==2212)){
1225 nfiglieK=pdaugh1->GetNDaughters();
1226 if(nfiglieK!=2)
return 0;
1227 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1228 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1229 if(!pdaughK1)
return 0;
1230 if(!pdaughK2)
return 0;
1231 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) {
1233 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1234 || TMath::Abs(pdaughK1->Eta()) > 0.9 || pdaughK1->Pt() < 0.1
1235 || TMath::Abs(pdaughK2->Eta()) > 0.9 || pdaughK2->Pt() < 0.1) IsInAcc=kFALSE;
1236 AliDebug(2,
"Lc decays via K* p");
1242 Int_t nfiglieDelta=0;
1243 if(number1==321 && number2==2224){
1244 nfiglieDelta=pdaugh2->GetNDaughters();
1245 if(nfiglieDelta!=2)
return 0;
1246 AliAODMCParticle *pdaughD1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1247 AliAODMCParticle *pdaughD2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1248 if(!pdaughD1)
return 0;
1249 if(!pdaughD2)
return 0;
1250 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) {
1252 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1253 || TMath::Abs(pdaughD1->Eta()) > 0.9 || pdaughD1->Pt() < 0.1
1254 || TMath::Abs(pdaughD2->Eta()) > 0.9 || pdaughD2->Pt() < 0.1) IsInAcc=kFALSE;
1255 AliDebug(2,
"Lc decays via Delta++ k");
1259 if(number1==2224 && number2==321){
1260 nfiglieDelta=pdaugh1->GetNDaughters();
1261 if(nfiglieDelta!=2)
return 0;
1262 AliAODMCParticle* pdaughD1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1263 AliAODMCParticle* pdaughD2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1264 if(!pdaughD1)
return 0;
1265 if(!pdaughD2)
return 0;
1266 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) {
1268 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1269 || TMath::Abs(pdaughD1->Eta()) > 0.9 || pdaughD1->Pt() < 0.1
1270 || TMath::Abs(pdaughD2->Eta()) > 0.9 || pdaughD2->Pt() < 0.1) IsInAcc=kFALSE;
1271 AliDebug(2,
"Lc decays via Delta++ k");
1279 if(number1==3124 && number2==211){
1280 nfiglieLa=pdaugh1->GetNDaughters();
1281 if(nfiglieLa!=2)
return 0;
1282 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1283 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1284 if(!pdaughL1)
return 0;
1285 if(!pdaughL2)
return 0;
1286 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) {
1288 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1289 || TMath::Abs(pdaughL1->Eta()) > 0.9 || pdaughL1->Pt() < 0.1
1290 || TMath::Abs(pdaughL2->Eta()) > 0.9 || pdaughL2->Pt() < 0.1) IsInAcc=kFALSE;
1291 AliDebug(2,
"Lc decays via Lambda(1520) pi");
1295 if(number1==211 && number2==3124){
1296 nfiglieLa=pdaugh2->GetNDaughters();
1297 if(nfiglieLa!=2)
return 0;
1298 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1299 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1300 if(!pdaughL1)
return 0;
1301 if(!pdaughL2)
return 0;
1302 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) {
1304 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1305 || TMath::Abs(pdaughL1->Eta()) > 0.9 || pdaughL1->Pt() < 0.1
1306 || TMath::Abs(pdaughL2->Eta()) > 0.9 || pdaughL2->Pt() < 0.1) IsInAcc=kFALSE;
1307 AliDebug(2,
"Lc decays via Lambda(1520) pi");
1313 if(numberOfLambdac>0) {
return -100; AliDebug(2,
"Lc decays via one of 4 resonances!");}
1327 if(TMath::Abs(mcPart->GetPdgCode())==4122) {
1328 AliDebug(2,
"Found Lc! now check mother");
1333 AliDebug(2,
"Lc comes from b");
1336 else if(pdgMom==4) {
1350 TClonesArray *arrayMC) {
1363 Int_t pdgCand =4122;
1364 Int_t pdgDaughter[3]={-1,-1,-1};
1365 pdgDaughter[0]=2212;
1369 labDp = part->MatchToMC(pdgCand,arrayMC,3,pdgDaughter);
1371 AliAODMCParticle *partDp = (AliAODMCParticle*)arrayMC->At(labDp);
1374 if(pdgMom == 4)
fIsLc=1;
1375 else if(pdgMom == 5)
fIsLc=2;
1377 Bool_t dummy = kTRUE;
1388 Bool_t IsInjected = 0;
1391 Bool_t ispKpiMC = 0;
1392 Bool_t ispiKpMC = 0;
1397 AliAODMCHeader *mcHeader2 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1403 fhMCmassLcPtSig->Fill(d->Pt(),ispKpiMC ? invMassLcpKpi : invMassLcpiKp);
1412 else if(selection==2){
1417 else if(selection==3){
1430 if(selectionProb==1) {
1435 else if(selectionProb==2) {
1442 if(ispKpiMC && selection==2){
1446 else if(ispiKpMC && selection==1){
1452 if(ispKpiMC && selectionProb==2){
1456 else if(ispiKpMC && selectionProb==1){
1472 else if(selection==2){
1475 else if(selection==3){
1480 if(selectionProb==1)
fhProbmassLcPt->Fill(d->Pt(),invMassLcpKpi);
1481 else if(selectionProb==2)
fhProbmassLcPt->Fill(d->Pt(),invMassLcpiKp);
1488 TClonesArray *arrayMC, Int_t selection)
1496 Bool_t IsInjected = 0;
1498 Bool_t IsLcfromLb = 0;
1501 AliAODMCHeader *mcHeader3 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1505 if(
fIsLc==2) IsLcfromLb=kTRUE;
1506 if(
fReadMC && IsInjected && !IsLc &&
fSyst >=1 )
return;
1508 Double_t invMasspKpi=-1.;
1509 Double_t invMasspiKp=-1.;
1518 if(selection==1 || selection==3) invMasspKpi=part->
InvMassLcpKpi();
1529 if(!IsInjected && IsLc==0) tmp[0]=0;
1530 else if(IsLc==1 && !IsLcfromLb) tmp[0]=1;
1531 else if(IsLc==1 && IsLcfromLb) tmp[0]=2;
1532 else if(IsInjected && IsLc==0) tmp[0]=3;
1538 tmp[3]=part->Charge();
1540 tmp[4]=part->PtProng(0);
1541 tmp[5]=part->PtProng(1);
1542 tmp[6]=part->PtProng(2);
1549 Double_t dcas[3]={0};
1551 tmp[13]=TMath::Max(dcas[0],TMath::Max(dcas[1],dcas[2]));
1560 AliVTrack *track0=
dynamic_cast<AliVTrack*
>(part->GetDaughter(0));
1561 AliVTrack *track1=
dynamic_cast<AliVTrack*
>(part->GetDaughter(1));
1562 AliVTrack *track2=
dynamic_cast<AliVTrack*
>(part->GetDaughter(2));
1566 Double_t prob0[AliPID::kSPECIES];
1567 Double_t prob1[AliPID::kSPECIES];
1568 Double_t prob2[AliPID::kSPECIES];
1570 if (!track0 || !track1 || !track2) {
1571 AliError(
"AliVTrack missing - wont fill Ntuple");
1580 tmp[18]=prob0[AliPID::kPion];
1581 tmp[19]=prob0[AliPID::kKaon];
1582 tmp[20]=prob0[AliPID::kProton];
1583 tmp[21]=prob1[AliPID::kPion];
1584 tmp[22]=prob1[AliPID::kKaon];
1585 tmp[23]=prob1[AliPID::kProton];
1586 tmp[24]=prob2[AliPID::kPion];
1587 tmp[25]=prob2[AliPID::kKaon];
1588 tmp[26]=prob2[AliPID::kProton];
1592 for(Int_t iprob=18;iprob<=26;iprob++) {
1598 Double_t d00 = part->Getd0Prong(0);
1599 Double_t d01 = part->Getd0Prong(1);
1600 Double_t d02 = part->Getd0Prong(2);
1607 tmp[30]=d00*d00 + d01*d01 + d02*d02;
1617 Double_t ns0=dd0/edd0;
1618 Double_t ns1=dd1/edd1;
1619 Double_t ns2=dd2/edd2;
1629 Int_t runNumber=aod->GetRunNumber();
1630 tmp[41]=(Float_t)runNumber;
1633 tmp[42]=part->InvMass2Prongs(1,0,321,2212);
1634 tmp[43]=part->InvMass2Prongs(2,1,211,321);
1635 tmp[44]=part->InvMass2Prongs(2,0,211,2212);
1636 tmp[45]=part->InvMass2Prongs(1,2,321,2212);
1637 tmp[46]=part->InvMass2Prongs(0,1,211,321);
1638 tmp[47]=part->InvMass2Prongs(0,2,211,2212);
1742 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1743 for(Int_t i=0;i<3;i++){
1744 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1745 lab[i]=daugh->GetLabel();
1746 if(lab[i]<0)
return kFALSE;
1747 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1748 if(!part)
return kFALSE;
1749 pdgs[i]=TMath::Abs(part->GetPdgCode());
1752 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;}
1795 Int_t selection = 0;
1798 AliVTrack *track0=
dynamic_cast<AliVTrack*
>(part->GetDaughter(0));
1799 AliVTrack *track1=
dynamic_cast<AliVTrack*
>(part->GetDaughter(1));
1800 AliVTrack *track2=
dynamic_cast<AliVTrack*
>(part->GetDaughter(2));
1802 Double_t prob0[AliPID::kSPECIES];
1803 Double_t prob1[AliPID::kSPECIES];
1804 Double_t prob2[AliPID::kSPECIES];
1806 if (!track0 || !track1 || !track2) {
1807 AliError(
"AliVTrack missing");
1813 if(prob0[AliPID::kProton] * prob1[AliPID::kKaon] * prob2[AliPID::kPion] > prob2[AliPID::kProton] * prob1[AliPID::kKaon] * prob0[AliPID::kPion]) selection = 1;
Double_t NormalizedDecayLengthXY() const
Double_t NormalizedDecayLength() const
Bool_t fLcCut
Vertexer heavy flavour (used to pass the cuts)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH2F * fhMCmassLcPtSig
!Lc signal invariant mass vs pt
TH2F * fhPtYLcNonRb[12]
! hist. for n Lc from b non resonant, pT vs rapidity
Bool_t fRealPid
flag for access to MC
TH2F * fhInvMassMisIdpKpiProb
! hist for inv mass pKpi signal mis id'd as piKp most prob PID
TH1F * fhIsLcGen
!hist for resonant flag gen
TH2F * fhPtPhiLcDeltac[12]
! hist. for n Lc from c Delta++ + K, pT vs phi
TH2F * fhPtEtaLcDeltab[12]
! hist. for n Lc from b Delta++ + K, pT vs eta
TH2F * fhPtPhiLc[12]
! hist. for n Lc tot., pT vs phi
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
void FillSelectionBits(AliAODRecoDecayHF3Prong *d, TH2F *hSelectionBits)
TH2F * fhProbmassLcPtSigb
!Lc from b signal invariant mass vs pt
void Getd0MeasMinusExpProng(Int_t ip, Double_t magf, Double_t &d0diff, Double_t &errd0diff) const
TH2F * fhPtEtaBkgNI[12]
! hist. for n bkg, pT vs eta
Bool_t HasSelectionBit(Int_t i) const
TH1F * fhNLcL1520c[12]
! hist. for n Lc from c L1520 + pi, pT
TH1F * fhNLcb[12]
! hist. for n Lc tot. from b, pT
TH2F * fhPIDmassLcPtSig
!Lc signal invariant mass vs pt
void UnsetOwnPrimaryVtx()
Double_t GetDist12toPrim() const
virtual void Terminate(Option_t *option)
Int_t GetPIDselectionMaxProb(AliAODRecoDecayHF3Prong *part)
TList * fOutput
! list send on output slot 0
void FillNtuple(AliAODEvent *aod, AliAODRecoDecayHF3Prong *part, TClonesArray *arrayMC, Int_t selection)
TH2F * fhInvMassMisIdpKpi
! hist for inv mass pKpi signal mis id'd as piKp
Int_t LambdacDaugh(AliAODMCParticle *part, TClonesArray *arrayMC, Bool_t &isInAcc) const
TH2F * fhPtPhiLcc[12]
! hist. for n Lc tot. from c, pT vs phi
virtual void UserCreateOutputObjects()
TH2F * fhPIDmassLcPtSigb
!Lc from b signal invariant mass vs pt
TH2F * fhProbmassLcPtSigc
!Lc from c signal invariant mass vs pt
Float_t fUpmasslimit
pt of Lc candidate
Float_t fCandidateVars[4]
is Lc resonant - 1=non resonant, 2=via L1520 + pi, 3=via K* + p, 4=via Delta++ + K ...
TH2F * fhPtYLc[12]
! hist. for n Lc tot., pT vs rapidity
Int_t fIsLc
cuts with KF vertexer
Int_t GetWhyRejection() const
Double_t CosPointingAngleXY() const
ULong_t GetSelectionMap() const
TH1F * fhPtMisIdpiKpProb
! hist for pt pKpi signal mis id'd as piKp most prob PID
void FillMassHists(AliAODEvent *aod, AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC, Int_t selection, Int_t selectionProb)
TH2F * fhPtYLcNonRc[12]
! hist. for n Lc from c non resonant, pT vs rapidity
TH2F * fhPtYLcc[12]
! hist. for n Lc tot. from c, pT vs rapidity
AliPIDResponse * fPIDResponse
histo with number of entries
TH1F * fhPtCorrId
! hist for correctly id'd pKpi
static Int_t CheckOrigin(TClonesArray *arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE)
Double_t GetMaxVtxZ() const
Bool_t fKeepLcNotFromQuark
filling ntuple type
TH2F * fhPtEtaLc[12]
! hist. for n Lc tot., pT vs eta
TH2F * fhPtEtaLcKstarc[12]
! hist. for n Lc from c K* + p, pT vs eta
TH2F * fhPtEtaLcL1520c[12]
! hist. for n Lc from c L1520 + pi, pT vs eta
TH2F * fhPtEtaLcNonRc[12]
! hist. for n Lc from c non resonant, pT vs eta
AliAODPidHF * GetPidHF() const
TH2F * fhPtYLcDeltab[12]
! hist. for n Lc from b Delta++ + K, pT vs rapidity
AliNormalizationCounter * fCounter
!AliNormalizationCounter on output slot 7
void SetLambdacDaugh(AliAODMCParticle *part, TClonesArray *arrayMC, Bool_t &isInAcc)
Bool_t fReadMC
flag for collision system. 0=pp, 1=PbPb, 2=pPb
TH2F * fhPtPhiLcKstarc[12]
! hist. for n Lc from c K* + p, pT vs phi
TH1F * fhNLcDeltac[12]
! hist. for n Lc from c Delta++ + K, pT
Int_t MatchToMCLambdac(AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC) const
TH2F * fhInvMassMisIdpiKpProb
! hist for inv mass pKpi signal mis id'd as piKp most prob PID
TH2F * fhMCmassLcPt
!Lc Bkg+signal invariant mass vs pt
TH2F * fhPtEtaLcL1520b[12]
! hist. for n Lc from b L1520 + pi, pT vs eta
Int_t fSyst
flag to keep background in
TH2F * fhPtYLcDeltac[12]
! hist. for n Lc from c Delta++ + K, pT vs rapidity
TH2F * fhPIDmassLcPtSigc
!Lc from c signal invariant mass vs pt
TH2F * fhPtYLcL1520b[12]
! hist. for n Lc from b L1520 + pi, pT vs rapidity
TH2F * fhPtPhiLcb[12]
! hist. for n Lc tot. from b, pT vs phi
AliPIDCombined * GetPidCombined() const
TH2F * fhProbmassLcPtSig
!Lc signal invariant mass vs pt
TH2F * fhSelectionBits
! hist for ALL Filter bits
virtual ~AliAnalysisTaskSELambdacTMVA()
TH2F * fhInvMassMisIdpiKp
! hist for inv mass pKpi signal mis id'd as piKp
TNtuple * fNtupleLambdac
! output ntuple
TH2F * fhPtPhiLcL1520c[12]
! hist. for n Lc from c L1520 + pi, pT vs phi
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
TH1F * fhNLcc[12]
! hist. for n Lc tot. from c, pT
TH1F * fhSelectBit
! hist for Filter Bit
TH1F * fhIsLcResonantGen
!hist for resonant flag gen
TH2F * fhSelectionBitsSigb
! hist for ALL Filter bits Lc from b
Bool_t IspiKpMC(AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC) const
TH2F * fhPtYBkgNI[12]
! hist. for n bkg, pT vs rapidity
AliAODVertex * GetOwnPrimaryVtx() const
TH2F * fhPtPhiLcDeltab[12]
! hist. for n Lc from b Delta++ + K, pT vs phi
Double_t GetSigmaVert(const AliAODEvent *aod=0x0)
void FillEffHists(Int_t kStep)
AliAODPidHF * GetPidprot() const
TH1F * fhNLcKstarb[12]
! hist. for n Lc from b K* + p, pT
TH1F * fNentries
flag for whether Lc is from Hijing
AliAnalysisVertexingHF * fVHF
apply analysis cuts
Bool_t fKeepBkgNt
flag to keep Lc not from quark
Double_t Getd0errProng(Int_t ip) const
prongs
TH1F * fhNBkgNI[12]
! hist. for n bkg, pT
TH2F * fhPIDmassLcPt
!Lc Bkg+signal invariant mass vs pt
TH2F * fhPtPhiLcNonRb[12]
! hist. for n Lc from b non resonant, pT vs phi
TH2F * fhPtEtaLcc[12]
! hist. for n Lc tot. from c, pT vs eta
AliAnalysisTaskSELambdacTMVA()
TH2F * fhMCmassLcPtSigc
!Lc from c signal invariant mass vs pt
Bool_t IspKpiMC(AliAODRecoDecayHF3Prong *d, TClonesArray *arrayMC) const
AliPIDResponse * GetPidResponse() const
Float_t fLowmasslimit
upper inv mass limit for histos
Bool_t IsCandidateInjected(AliAODRecoDecayHF *cand, AliAODMCHeader *header, TClonesArray *arrayMC)
TH2F * fhProbmassLcPt
!Lc Bkg+signal invariant mass vs pt
TH1F * fhPtMisIdpiKp
! hist for pt pKpi signal mis id'd as piKp
void GetDCAs(Double_t dca[3]) const
AliAODPidHF * GetPidpion() const
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Double_t GetDist23toPrim() const
Bool_t GetLambdacDaugh(AliAODMCParticle *part, TClonesArray *arrayMC) const
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
Double_t DecayLengthXY() const
virtual void UserExec(Option_t *option)
TH2F * fhPtPhiLcL1520b[12]
! hist. for n Lc from b L1520 + pi, pT vs phi
TH1F * fhSetIsLc
! hist for before/after reco check MC LC
TH2F * fhPtEtaLcDeltac[12]
! hist. for n Lc from c Delta++ + K, pT vs eta
TH2F * fhPtPhiBkgNI[12]
! hist. for n bkg, pT vs phi
TH1F * fHistNEvents
!hist. for No. of events
TH2F * fhPtYLcb[12]
! hist. for n Lc tot. from b, pT vs rapidity
Bool_t IsEventSelected(AliVEvent *event)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
TH2F * fhPtPhiLcKstarb[12]
! hist. for n Lc from b K* + p, pT vs phi
TList * fListCuts
Analysis cuts.
Int_t fFillNtuple
list of cuts
void SetOldPid(Bool_t oldPid)
TH2F * fhPtYLcKstarb[12]
! hist. for n Lc from b K* + p, pT vs rapidity
TH2F * fhPtYLcL1520c[12]
! hist. for n Lc from c L1520 + pi, pT vs rapidity
TH1F * fhNLcL1520b[12]
! hist. for n Lc from b L1520 + pi, pT
TH1F * fhPtMisIdpKpiProb
! hist for pt pKpi signal mis id'd as piKp most prob PID
TH1F * fhNLcNonRc[12]
! hist. for n Lc from c non resonant, pT
TH2F * fhPtEtaLcb[12]
! hist. for n Lc tot. from b, pT vs eta
void SetIsLcReco(AliAODRecoDecayHF3Prong *part, TClonesArray *arrayMC)
TH1F * fhIsLcReco
!hist for resonant flag reco
Bool_t GetIsUsePID() const
TH1F * fhRecoPDGmom
!hist for Reco pdg
TH2F * fhPtPhiLcNonRc[12]
! hist. for n Lc from c non resonant, pT vs phi
TH1F * fhIsLcResonantReco
!hist for resonant flag reco
TH1F * fhNLcNonRb[12]
! hist. for n Lc from b non resonant, pT
TH2F * fhPtYLcKstarc[12]
! hist. for n Lc from c K* + p, pT vs rapidity
TH2F * fhMCmassLcPtSigb
!Lc from b signal invariant mass vs pt
Double_t CosPointingAngle() const
Double_t InvMassLcpKpi() const
TH1F * fhPtMisIdpKpi
! hist for pt pKpi signal mis id'd as piKp
TH1F * fhNLc[12]
! hist. for n Lc tot., pT
TH1F * fhNLcKstarc[12]
! hist. for n Lc from c K* + p, pT
void SetIsLcGen(AliAODMCParticle *partMC, TClonesArray *arrayMC)
Int_t fIsLcResonant
is MC Lc - 0=not Lc, 1=Lc from c, 2=Lc from b
Int_t PtBin(Double_t pt) const
TH1F * fhNLcDeltab[12]
! hist. for n Lc from b Delta++ + K, pT
Double_t DecayLength() const
TH2F * fhSelectionBitsSigc
! hist for ALL Filter bits Lc from c
TH2F * fhPtEtaLcNonRb[12]
! hist. for n Lc from b non resonant, pT vs eta
TH2F * fhPtEtaLcKstarb[12]
! hist. for n Lc from b K* + p, pT vs eta
Double_t InvMassLcpiKp() const
Bool_t fIsHijing
flag for Lc filter bit PID
Bool_t fMCPid
flag for access to MC
void SetPidResponse(AliPIDResponse *pidResp)
AliVertexingHFUtils * fVertUtil
Class with functions useful for different D2H analyses //.
TH1F * fhPtCorrIdProb
! hist for correctly id'd pKpi most prob PID
Bool_t fLcPIDCut
flag for Lc filter bit cut
AliRDHFCutsLctopKpi * fRDCutsAnalysis
lower inv mass limit for histos