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),
127 for(Int_t i=0;i<12;i++) {
185 AliAnalysisTaskSE(name),
188 fHistNEventsRejTM(0),
191 fhPIDmassLcPtSigc(0),
192 fhPIDmassLcPtSigb(0),
198 fhProbmassLcPtSig(0),
199 fhProbmassLcPtSigc(0),
200 fhProbmassLcPtSigb(0),
201 fhIsLcResonantGen(0),
202 fhIsLcResonantReco(0),
208 fhSelectionBitsSigc(0),
209 fhSelectionBitsSigb(0),
213 fRDCutsAnalysis(lccutsana),
216 fLowmasslimit(2.086),
217 fFillNtuple(fillNtuple),
227 fKeepLcNotFromQuark(kFALSE),
239 for(Int_t i=0;i<12;i++) {
295 DefineOutput(1,TList::Class());
296 DefineOutput(2,TList::Class());
297 DefineOutput(3,TH1F::Class());
298 DefineOutput(4,AliNormalizationCounter::Class());
301 DefineOutput(5,TNtuple::Class());
366 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::Init() \n");
384 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::UserCreateOutputObjects() \n");
389 fOutput->SetName(
"OutputHistos");
391 TString hisname,histitle;
394 fhSelectBit =
new TH1F(
"hSelectBit",
"hSelectBit",5,-0.5,4.5);
396 fhSelectBit->GetXaxis()->SetBinLabel(3,
"SelectionMap");
402 fHistNEvents =
new TH1F(
"fHistNEvents",
"Number of processed events; ; Events",3,-0.5,2.5);
404 fHistNEvents->GetXaxis()->SetBinLabel(3,
"N events (after selection)");
434 fhIsLcResonantGen =
new TH1F(
"hIsLcResonantGen",
"IsLcResonant flag gen",6,-1.5,4.5);
435 fhIsLcResonantReco =
new TH1F(
"hIsLcResonantReco",
"IsLcResonant flag reco",6,-1.5,4.5);
436 fhIsLcGen =
new TH1F(
"hIsLcGen",
"IsLc flag gen",4,-1.5,2.5);
437 fhIsLcReco =
new TH1F(
"hIsLcReco",
"IsLc flag reco",4,-1.5,2.5);
443 fhRecoPDGmom =
new TH1F(
"hRecoPDGmom",
"pdg of mother reco. MatchToMCLambdac",7,-0.5,6.5);
446 fhSetIsLc =
new TH1F(
"hSetIsLc",
"Check candidates before/after rec. set is Lc",2,-0.5,1.5);
449 fhSelectionBits =
new TH2F(
"hSelectionBits",
"Reconstruction + selection bit",13,-0.5,12.5,150,0,15);
466 fhSelectionBitsSigc =
new TH2F(
"hSelectionBitsSigc",
"Reconstruction + selection bit from c",13,-0.5,12.5,150,0,15);
483 fhSelectionBitsSigb =
new TH2F(
"hSelectionBitsSigb",
"Reconstruction + selection bit from b",13,-0.5,13.5,150,0,15);
502 TString stepnames[12] = {
"GeneratedLimAcc",
"GeneratedAll",
"Generated",
"GeneratedAcc",
"Reco3Prong",
"LcBit",
"IsSelectedTracks",
"IsInFidAcc",
"PtRange",
"IsSelectedCandidate",
"IsSelectedPID",
"IsSelectedNtuple"};
503 for(Int_t i=0;i<12;i++) {
505 hisname.Form(
"hNBkgNI%i",i);
506 histitle.Form(
"N Bkg not injected %s",stepnames[i].
Data());
507 fhNBkgNI[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
508 hisname.Form(
"hNLc%i",i);
509 histitle.Form(
"N Lc %s",stepnames[i].
Data());
510 fhNLc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
511 hisname.Form(
"hNLcc%i",i);
512 histitle.Form(
"N Lc from c %s",stepnames[i].
Data());
513 fhNLcc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
514 hisname.Form(
"hNLcNonRc%i",i);
515 histitle.Form(
"N Lc non resonant from c %s",stepnames[i].
Data());
516 fhNLcNonRc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
517 hisname.Form(
"hNLcL1520c%i",i);
518 histitle.Form(
"N Lc -> L(1520) + p from c %s",stepnames[i].
Data());
519 fhNLcL1520c[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
520 hisname.Form(
"hNLcKstarc%i",i);
521 histitle.Form(
"N Lc -> K* + pi from c %s",stepnames[i].
Data());
522 fhNLcKstarc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
523 hisname.Form(
"hNLcDeltac%i",i);
524 histitle.Form(
"N Lc -> Delta + K from c %s",stepnames[i].
Data());
525 fhNLcDeltac[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
526 hisname.Form(
"hNLcb%i",i);
527 histitle.Form(
"N Lc from b %s",stepnames[i].
Data());
528 fhNLcb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
529 hisname.Form(
"hNLcNonRb%i",i);
530 histitle.Form(
"N Lc non resonant from b %s",stepnames[i].
Data());
531 fhNLcNonRb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
532 hisname.Form(
"hNLcL1520b%i",i);
533 histitle.Form(
"N Lc -> L(1520) + p from b %s",stepnames[i].
Data());
534 fhNLcL1520b[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
535 hisname.Form(
"hNLcKstarb%i",i);
536 histitle.Form(
"N Lc -> K* + pi from b %s",stepnames[i].
Data());
537 fhNLcKstarb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
538 hisname.Form(
"hNLcDeltab%i",i);
539 histitle.Form(
"N Lc -> Delta + K from b %s",stepnames[i].
Data());
540 fhNLcDeltab[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
555 hisname.Form(
"hPtEtaBkgNI%i",i);
556 histitle.Form(
"Pt vs #eta Bkg not injected %s",stepnames[i].
Data());
557 fhPtEtaBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
558 hisname.Form(
"hPtEtaLc%i",i);
559 histitle.Form(
"Pt vs #eta Lc %s",stepnames[i].
Data());
560 fhPtEtaLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
561 hisname.Form(
"hPtEtaLcc%i",i);
562 histitle.Form(
"Pt vs #eta Lc from c %s",stepnames[i].
Data());
563 fhPtEtaLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
564 hisname.Form(
"hPtEtaLcNonRc%i",i);
565 histitle.Form(
"Pt vs #eta Lc non resonant from c %s",stepnames[i].
Data());
566 fhPtEtaLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
567 hisname.Form(
"hPtEtaLcL1520c%i",i);
568 histitle.Form(
"Pt vs #eta Lc -> L(1520) + p from c %s",stepnames[i].
Data());
569 fhPtEtaLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
570 hisname.Form(
"hPtEtaLcKstarc%i",i);
571 histitle.Form(
"Pt vs #eta Lc -> K* + pi from c %s",stepnames[i].
Data());
572 fhPtEtaLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
573 hisname.Form(
"hPtEtaLcDeltac%i",i);
574 histitle.Form(
"Pt vs #eta Lc -> Delta + K from c %s",stepnames[i].
Data());
575 fhPtEtaLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
576 hisname.Form(
"hPtEtaLcb%i",i);
577 histitle.Form(
"Pt vs #eta Lc from b %s",stepnames[i].
Data());
578 fhPtEtaLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
579 hisname.Form(
"hPtEtaLcNonRb%i",i);
580 histitle.Form(
"Pt vs #eta Lc non resonant from b %s",stepnames[i].
Data());
581 fhPtEtaLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
582 hisname.Form(
"hPtEtaLcL1520b%i",i);
583 histitle.Form(
"Pt vs #eta Lc -> L(1520) + p from b %s",stepnames[i].
Data());
584 fhPtEtaLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
585 hisname.Form(
"hPtEtaLcKstarb%i",i);
586 histitle.Form(
"Pt vs #eta Lc -> K* + pi from b %s",stepnames[i].
Data());
587 fhPtEtaLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
588 hisname.Form(
"hPtEtaLcDeltab%i",i);
589 histitle.Form(
"Pt vs #eta Lc -> Delta + K from b %s",stepnames[i].
Data());
590 fhPtEtaLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
605 hisname.Form(
"hPtYBkgNI%i",i);
606 histitle.Form(
"Pt vs Y Bkg not injected %s",stepnames[i].
Data());
607 fhPtYBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
608 hisname.Form(
"hPtYLc%i",i);
609 histitle.Form(
"Pt vs Y Lc %s",stepnames[i].
Data());
610 fhPtYLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
611 hisname.Form(
"hPtYLcc%i",i);
612 histitle.Form(
"Pt vs Y Lc from c %s",stepnames[i].
Data());
613 fhPtYLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
614 hisname.Form(
"hPtYLcNonRc%i",i);
615 histitle.Form(
"Pt vs Y Lc non resonant from c %s",stepnames[i].
Data());
616 fhPtYLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
617 hisname.Form(
"hPtYLcL1520c%i",i);
618 histitle.Form(
"Pt vs Y Lc -> L(1520) + p from c %s",stepnames[i].
Data());
619 fhPtYLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
620 hisname.Form(
"hPtYLcKstarc%i",i);
621 histitle.Form(
"Pt vs Y Lc -> K* + pi from c %s",stepnames[i].
Data());
622 fhPtYLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
623 hisname.Form(
"hPtYLcDeltac%i",i);
624 histitle.Form(
"Pt vs Y Lc -> Delta + K from c %s",stepnames[i].
Data());
625 fhPtYLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
626 hisname.Form(
"hPtYLcb%i",i);
627 histitle.Form(
"Pt vs Y Lc from b %s",stepnames[i].
Data());
628 fhPtYLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
629 hisname.Form(
"hPtYLcNonRb%i",i);
630 histitle.Form(
"Pt vs Y Lc non resonant from b %s",stepnames[i].
Data());
631 fhPtYLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
632 hisname.Form(
"hPtYLcL1520b%i",i);
633 histitle.Form(
"Pt vs Y Lc -> L(1520) + p from b %s",stepnames[i].
Data());
634 fhPtYLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
635 hisname.Form(
"hPtYLcKstarb%i",i);
636 histitle.Form(
"Pt vs Y Lc -> K* + pi from b %s",stepnames[i].
Data());
637 fhPtYLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
638 hisname.Form(
"hPtYLcDeltab%i",i);
639 histitle.Form(
"Pt vs Y Lc -> Delta + K from b %s",stepnames[i].
Data());
640 fhPtYLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
655 hisname.Form(
"hPtPhiBkgNI%i",i);
656 histitle.Form(
"Pt vs #phi Bkg not injected %s",stepnames[i].
Data());
657 fhPtPhiBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
658 hisname.Form(
"hPtPhiLc%i",i);
659 histitle.Form(
"Pt vs #phi Lc %s",stepnames[i].
Data());
660 fhPtPhiLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
661 hisname.Form(
"hPtPhiLcc%i",i);
662 histitle.Form(
"Pt vs #phi Lc from c %s",stepnames[i].
Data());
663 fhPtPhiLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
664 hisname.Form(
"hPtPhiLcNonRc%i",i);
665 histitle.Form(
"Pt vs #phi Lc non resonant from c %s",stepnames[i].
Data());
666 fhPtPhiLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
667 hisname.Form(
"hPtPhiLcL1520c%i",i);
668 histitle.Form(
"Pt vs #phi Lc -> L(1520) + p from c %s",stepnames[i].
Data());
669 fhPtPhiLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
670 hisname.Form(
"hPtPhiLcKstarc%i",i);
671 histitle.Form(
"Pt vs #phi Lc -> K* + pi from c %s",stepnames[i].
Data());
672 fhPtPhiLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
673 hisname.Form(
"hPtPhiLcDeltac%i",i);
674 histitle.Form(
"Pt vs #phi Lc -> Delta + K from c %s",stepnames[i].
Data());
675 fhPtPhiLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
676 hisname.Form(
"hPtPhiLcb%i",i);
677 histitle.Form(
"Pt vs #phi Lc from b %s",stepnames[i].
Data());
678 fhPtPhiLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
679 hisname.Form(
"hPtPhiLcNonRb%i",i);
680 histitle.Form(
"Pt vs #phi Lc non resonant from b %s",stepnames[i].
Data());
681 fhPtPhiLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
682 hisname.Form(
"hPtPhiLcL1520b%i",i);
683 histitle.Form(
"Pt vs #phi Lc -> L(1520) + p from b %s",stepnames[i].
Data());
684 fhPtPhiLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
685 hisname.Form(
"hPtPhiLcKstarb%i",i);
686 histitle.Form(
"Pt vs #phi Lc -> K* + pi from b %s",stepnames[i].
Data());
687 fhPtPhiLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
688 hisname.Form(
"hPtPhiLcDeltab%i",i);
689 histitle.Form(
"Pt vs #phi Lc -> Delta + K from b %s",stepnames[i].
Data());
690 fhPtPhiLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
709 fNentries=
new TH1F(
"fNentries",
"n Events/Candidates QA", 16,0.5,16.5);
712 fNentries->GetXaxis()->SetBinLabel(1,
"nEventsRejTM");
713 fNentries->GetXaxis()->SetBinLabel(2,
"nEventsNoVtx");
714 fNentries->GetXaxis()->SetBinLabel(3,
"nEventsRejCutPileup");
715 fNentries->GetXaxis()->SetBinLabel(4,
"nLcGen");
716 fNentries->GetXaxis()->SetBinLabel(5,
"nLcGenFidAcc");
717 fNentries->GetXaxis()->SetBinLabel(6,
"nCandReco3Prong");
718 fNentries->GetXaxis()->SetBinLabel(7,
"nCandLcBit");
719 fNentries->GetXaxis()->SetBinLabel(8,
"nCandIsSelTracks");
720 fNentries->GetXaxis()->SetBinLabel(9,
"nCandIsInFidAcc");
721 fNentries->GetXaxis()->SetBinLabel(10,
"ptbin=-1");
722 fNentries->GetXaxis()->SetBinLabel(11,
"nCandIsSelCand");
723 fNentries->GetXaxis()->SetBinLabel(12,
"PID=0");
724 fNentries->GetXaxis()->SetBinLabel(13,
"PID=1");
725 fNentries->GetXaxis()->SetBinLabel(14,
"PID=2");
726 fNentries->GetXaxis()->SetBinLabel(15,
"PID=3");
727 fNentries->GetXaxis()->SetBinLabel(16,
"nLcSelected");
728 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
730 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
731 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
747 TString normName=
"NormalizationCounter";
748 AliAnalysisDataContainer *cont = GetOutputSlot(4)->GetContainer();
749 if(cont)normName=(TString)cont->GetName();
755 TString ntName=
"fNtupleLambdac";
756 AliAnalysisDataContainer *contnt = GetOutputSlot(5)->GetContainer();
757 if(contnt)ntName=(TString)contnt->GetName();
758 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");
760 else if(
fFillNtuple==2)
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:Tr0NSigmapi:Tr0NSigmaK:Tr0NSigmap:Tr1NSigmapi:Tr1NSigmaK:Tr1NSigmap:Tr2NSigmapi:Tr2NSigmaK:Tr2NSigmap");
762 else if(
fFillNtuple==3)
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:Tr0NSigmapi:Tr0NSigmaK:Tr0NSigmap:Tr1NSigmapi:Tr1NSigmaK:Tr1NSigmap:Tr2NSigmapi:Tr2NSigmaK:Tr2NSigmap:InvMasspK:InvMassKpi:InvMassppi:InvMassKp:InvMasspiK:InvMasspip");
763 else AliFatal(
"Invalid fill ntuple argument");
777 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
783 TClonesArray *array3Prong = 0;
784 TClonesArray *arrayLikeSign =0;
785 if(!aod && AODEvent() && IsStandardAOD()) {
788 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
791 AliAODHandler* aodHandler = (AliAODHandler*)
792 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
793 if(aodHandler->GetExtensions()) {
794 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
795 AliAODEvent *aodFromExt = ext->GetAOD();
796 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
797 arrayLikeSign=(TClonesArray*)aodFromExt->GetList()->FindObject(
"LikeSign3Prong");
800 array3Prong=(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
801 arrayLikeSign=(TClonesArray*)aod->GetList()->FindObject(
"LikeSign3Prong");
806 TClonesArray *arrayMC=0;
807 AliAODMCHeader *mcHeader=0;
812 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
814 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: MC particles branch not found!\n");
820 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
822 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: MC header branch not found!\n");
836 if(!array3Prong || !aod) {
837 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: Charm3Prong branch not found!\n");
841 AliDebug(2,
"AliAnalysisTaskSELambdacTMVA::UserExec: LikeSign3Prong branch not found!\n");
846 Int_t runnumber = aod->GetRunNumber();
847 if (aod->GetTriggerMask() == 0 && (runnumber >= 195344 && runnumber <= 195677)){
848 Int_t nentriesTM = arrayMC->GetEntriesFast();
849 AliDebug(2,Form(
"Event rejected because of null trigger mask, n entries = %i",nentriesTM));
856 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
857 if(!vtx1 || TMath::Abs(aod->GetMagneticField())<0.001) {
862 TString trigclass=aod->GetFiredTriggerClasses();
873 Int_t n3Prong = array3Prong->GetEntriesFast();
874 Int_t nSelectedloose[1]={0};
875 Int_t nSelectedtight[1]={0};
879 Bool_t isInFidAcc = kFALSE;
880 Bool_t isInAcc = kFALSE;
883 Double_t zPrimVertex = vtx1 ->GetZ();
884 Double_t zMCVertex = mcHeader->GetVtxZ();
888 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
891 AliAODMCParticle* mcPart =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(iPart));
893 AliError(
"Failed casting particle from MC array!, Skipping particle");
898 if(
fIsLc==0)
continue;
906 if(!
fIsHijing) imother=mcPart->GetMother();
908 AliAODMCParticle* mcPartMother =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(imother));
910 AliError(
"Failed casting mother particle, Skipping particle");
918 AliDebug(2,
"Lc has p K pi in final state");
923 if((TMath::Abs(mcPart->Y()) < 0.5)) {
924 AliDebug(2,
"Lc in limited acceptance");
932 AliError(
"no p K pi final state");
944 else AliError(Form(
"Not pKpi or background - should not happen! fIsLcResonant = %i",
fIsLcResonant));
965 for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
981 Bool_t unsetvtx=kFALSE;
1009 if(!isSelectedTracks)
continue;
1019 if(ptbin==-1) {
fNentries->Fill(10);
continue;}
1026 if(isSelectedPID==0 )
fNentries->Fill(12);
1027 else if(isSelectedPID==1)
fNentries->Fill(13);
1028 else if(isSelectedPID==2)
fNentries->Fill(14);
1035 if(!selection)
continue;
1064 if (fDebug > 1) printf(
"AnalysisTaskSELambdac: Terminate() \n");
1066 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1068 AliError(
"ERROR: fOutput not available\n");
1088 Int_t lambdacLab[3]={0,0,0};
1090 for(Int_t i=0;i<3;i++){
1091 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1092 Int_t lab=daugh->GetLabel();
1094 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
1097 Int_t partPdgcode = TMath::Abs(part->GetPdgCode());
1098 if(partPdgcode==211 || partPdgcode==321 || partPdgcode==2212){
1099 Int_t motherLabel=part->GetMother();
1100 if(motherLabel<0)
return 0;
1101 AliAODMCParticle *motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
1102 if(!motherPart)
continue;
1103 Int_t motherPdg = TMath::Abs(motherPart->GetPdgCode());
1104 if(motherPdg==4122) {
1105 if(
GetLambdacDaugh(motherPart,arrayMC)){lambdacLab[i]=motherLabel;
continue;}
1107 if(motherPdg==313 || motherPdg==2224 || motherPdg==3124){
1108 Int_t granMotherLabel=motherPart->GetMother();
1109 if(granMotherLabel<0)
return 0;
1110 AliAODMCParticle *granMotherPart = (AliAODMCParticle*)arrayMC->At(granMotherLabel);
1111 if(!granMotherPart)
continue;
1112 Int_t granMotherPdg = TMath::Abs(granMotherPart->GetPdgCode());
1113 if(granMotherPdg ==4122) {
1114 if(
GetLambdacDaugh(granMotherPart,arrayMC)) {lambdacLab[i]=granMotherLabel;
continue;}
1120 if(lambdacLab[0]==lambdacLab[1] && lambdacLab[1]==lambdacLab[2]) {
return lambdacLab[0];}
1135 Int_t numberOfLambdac=0;
1137 if(TMath::Abs(part->GetPdgCode())!=4122)
return 0;
1141 Int_t nDaugh = (Int_t)part->GetNDaughters();
1142 if(nDaugh<2)
return 0;
1143 if(nDaugh>3)
return 0;
1144 AliAODMCParticle* pdaugh1 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(0));
1145 if(!pdaugh1) {
return 0;}
1146 Int_t number1 = TMath::Abs(pdaugh1->GetPdgCode());
1147 AliAODMCParticle* pdaugh2 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(1));
1148 if(!pdaugh2) {
return 0;}
1149 Int_t number2 = TMath::Abs(pdaugh2->GetPdgCode());
1151 AliDebug(2,
"Is non resonant?");
1153 Int_t thirdDaugh=part->GetDaughter(1)-1;
1154 AliAODMCParticle* pdaugh3 = (AliAODMCParticle*)arrayMC->At(thirdDaugh);
1155 Int_t number3 = TMath::Abs(pdaugh3->GetPdgCode());
1156 if((number1==321 && number2==211 && number3==2212) ||
1157 (number1==211 && number2==321 && number3==2212) ||
1158 (number1==211 && number2==2212 && number3==321) ||
1159 (number1==321 && number2==2212 && number3==211) ||
1160 (number1==2212 && number2==321 && number3==211) ||
1161 (number1==2212 && number2==211 && number3==321)) {
1163 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1164 || TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1165 || TMath::Abs(pdaugh3->Eta()) > 0.9 || pdaugh3->Pt() < 0.1) IsInAcc=kFALSE;
1166 AliDebug(2,
"Lc decays non-resonantly");
1179 if((number1==2212 && number2==313)){
1180 nfiglieK=pdaugh2->GetNDaughters();
1181 if(nfiglieK!=2)
return 0;
1182 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1183 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1184 if(!pdaughK1)
return 0;
1185 if(!pdaughK2)
return 0;
1186 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) {
1188 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1189 || TMath::Abs(pdaughK1->Eta()) > 0.9 || pdaughK1->Pt() < 0.1
1190 || TMath::Abs(pdaughK2->Eta()) > 0.9 || pdaughK2->Pt() < 0.1) IsInAcc=kFALSE;
1191 AliDebug(2,
"Lc decays via K* p");
1196 if((number1==313 && number2==2212)){
1197 nfiglieK=pdaugh1->GetNDaughters();
1198 if(nfiglieK!=2)
return 0;
1199 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1200 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1201 if(!pdaughK1)
return 0;
1202 if(!pdaughK2)
return 0;
1203 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) {
1205 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1206 || TMath::Abs(pdaughK1->Eta()) > 0.9 || pdaughK1->Pt() < 0.1
1207 || TMath::Abs(pdaughK2->Eta()) > 0.9 || pdaughK2->Pt() < 0.1) IsInAcc=kFALSE;
1208 AliDebug(2,
"Lc decays via K* p");
1214 Int_t nfiglieDelta=0;
1215 if(number1==321 && number2==2224){
1216 nfiglieDelta=pdaugh2->GetNDaughters();
1217 if(nfiglieDelta!=2)
return 0;
1218 AliAODMCParticle *pdaughD1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1219 AliAODMCParticle *pdaughD2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1220 if(!pdaughD1)
return 0;
1221 if(!pdaughD2)
return 0;
1222 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) {
1224 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1225 || TMath::Abs(pdaughD1->Eta()) > 0.9 || pdaughD1->Pt() < 0.1
1226 || TMath::Abs(pdaughD2->Eta()) > 0.9 || pdaughD2->Pt() < 0.1) IsInAcc=kFALSE;
1227 AliDebug(2,
"Lc decays via Delta++ k");
1231 if(number1==2224 && number2==321){
1232 nfiglieDelta=pdaugh1->GetNDaughters();
1233 if(nfiglieDelta!=2)
return 0;
1234 AliAODMCParticle* pdaughD1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1235 AliAODMCParticle* pdaughD2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1236 if(!pdaughD1)
return 0;
1237 if(!pdaughD2)
return 0;
1238 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) {
1240 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1241 || TMath::Abs(pdaughD1->Eta()) > 0.9 || pdaughD1->Pt() < 0.1
1242 || TMath::Abs(pdaughD2->Eta()) > 0.9 || pdaughD2->Pt() < 0.1) IsInAcc=kFALSE;
1243 AliDebug(2,
"Lc decays via Delta++ k");
1251 if(number1==3124 && number2==211){
1252 nfiglieLa=pdaugh1->GetNDaughters();
1253 if(nfiglieLa!=2)
return 0;
1254 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1255 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1256 if(!pdaughL1)
return 0;
1257 if(!pdaughL2)
return 0;
1258 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) {
1260 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1261 || TMath::Abs(pdaughL1->Eta()) > 0.9 || pdaughL1->Pt() < 0.1
1262 || TMath::Abs(pdaughL2->Eta()) > 0.9 || pdaughL2->Pt() < 0.1) IsInAcc=kFALSE;
1263 AliDebug(2,
"Lc decays via Lambda(1520) pi");
1267 if(number1==211 && number2==3124){
1268 nfiglieLa=pdaugh2->GetNDaughters();
1269 if(nfiglieLa!=2)
return 0;
1270 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1271 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1272 if(!pdaughL1)
return 0;
1273 if(!pdaughL2)
return 0;
1274 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) {
1276 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1277 || TMath::Abs(pdaughL1->Eta()) > 0.9 || pdaughL1->Pt() < 0.1
1278 || TMath::Abs(pdaughL2->Eta()) > 0.9 || pdaughL2->Pt() < 0.1) IsInAcc=kFALSE;
1279 AliDebug(2,
"Lc decays via Lambda(1520) pi");
1285 if(numberOfLambdac>0) {
return -100; AliDebug(2,
"Lc decays via one of 4 resonances!");}
1299 if(TMath::Abs(mcPart->GetPdgCode())==4122) {
1300 AliDebug(2,
"Found Lc! now check mother");
1305 AliDebug(2,
"Lc comes from b");
1308 else if(pdgMom==4) {
1322 TClonesArray *arrayMC) {
1335 Int_t pdgCand =4122;
1336 Int_t pdgDaughter[3]={-1,-1,-1};
1337 pdgDaughter[0]=2212;
1341 labDp = part->MatchToMC(pdgCand,arrayMC,3,pdgDaughter);
1343 AliAODMCParticle *partDp = (AliAODMCParticle*)arrayMC->At(labDp);
1346 if(pdgMom == 4)
fIsLc=1;
1347 else if(pdgMom == 5)
fIsLc=2;
1349 Bool_t dummy = kTRUE;
1360 Bool_t IsInjected = 0;
1362 AliAODMCHeader *mcHeader2 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1377 else if(selection==2){
1382 else if(selection==3){
1395 if(selectionProb==1) {
1400 else if(selectionProb==2) {
1415 else if(selection==2){
1418 else if(selection==3){
1431 TClonesArray *arrayMC, Int_t selection)
1437 Bool_t IsInjected = 0;
1439 Bool_t IsLcfromLb = 0;
1442 AliAODMCHeader *mcHeader3 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1446 if(
fIsLc==2) IsLcfromLb=kTRUE;
1447 if(
fReadMC && IsInjected && !IsLc &&
fSyst >=1 )
return;
1449 Double_t invMasspKpi=-1.;
1450 Double_t invMasspiKp=-1.;
1459 if(selection==1 || selection==3) invMasspKpi=part->
InvMassLcpKpi();
1470 if(!IsInjected && IsLc==0) tmp[0]=0;
1471 else if(IsLc==1 && !IsLcfromLb) tmp[0]=1;
1472 else if(IsLc==1 && IsLcfromLb) tmp[0]=2;
1473 else if(IsInjected && IsLc==0) tmp[0]=3;
1479 tmp[3]=part->Charge();
1481 tmp[4]=part->PtProng(0);
1482 tmp[5]=part->PtProng(1);
1483 tmp[6]=part->PtProng(2);
1490 Double_t dcas[3]={0};
1492 tmp[13]=TMath::Max(dcas[0],TMath::Max(dcas[1],dcas[2]));
1507 AliVTrack *track0=
dynamic_cast<AliVTrack*
>(part->GetDaughter(0));
1508 AliVTrack *track1=
dynamic_cast<AliVTrack*
>(part->GetDaughter(1));
1509 AliVTrack *track2=
dynamic_cast<AliVTrack*
>(part->GetDaughter(2));
1513 Double_t prob0[AliPID::kSPECIES];
1514 Double_t prob1[AliPID::kSPECIES];
1515 Double_t prob2[AliPID::kSPECIES];
1517 if (!track0 || !track1 || !track2) {
1518 AliError(
"AliVTrack missing - wont fill Ntuple");
1527 tmp[18]=prob0[AliPID::kPion];
1528 tmp[19]=prob0[AliPID::kKaon];
1529 tmp[20]=prob0[AliPID::kProton];
1530 tmp[21]=prob1[AliPID::kPion];
1531 tmp[22]=prob1[AliPID::kKaon];
1532 tmp[23]=prob1[AliPID::kProton];
1533 tmp[24]=prob2[AliPID::kPion];
1534 tmp[25]=prob2[AliPID::kKaon];
1535 tmp[26]=prob2[AliPID::kProton];
1539 for(Int_t iprob=18;iprob<=26;iprob++) {
1545 tmp[27]=
fPIDResponse->NumberOfSigmasTPC(track0,AliPID::kPion);
1546 tmp[28]=
fPIDResponse->NumberOfSigmasTPC(track0,AliPID::kKaon);
1547 tmp[29]=
fPIDResponse->NumberOfSigmasTPC(track0,AliPID::kProton);
1548 tmp[30]=
fPIDResponse->NumberOfSigmasTPC(track1,AliPID::kPion);
1549 tmp[31]=
fPIDResponse->NumberOfSigmasTPC(track1,AliPID::kKaon);
1550 tmp[32]=
fPIDResponse->NumberOfSigmasTPC(track1,AliPID::kProton);
1551 tmp[33]=
fPIDResponse->NumberOfSigmasTPC(track2,AliPID::kPion);
1552 tmp[34]=
fPIDResponse->NumberOfSigmasTPC(track2,AliPID::kKaon);
1553 tmp[35]=
fPIDResponse->NumberOfSigmasTPC(track2,AliPID::kProton);
1556 tmp[36]=part->InvMass2Prongs(1,0,321,2212);
1557 tmp[37]=part->InvMass2Prongs(2,1,211,321);
1558 tmp[38]=part->InvMass2Prongs(2,0,211,2212);
1559 tmp[39]=part->InvMass2Prongs(1,2,321,2212);
1560 tmp[40]=part->InvMass2Prongs(0,1,211,321);
1561 tmp[41]=part->InvMass2Prongs(0,2,211,2212);
1665 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1666 for(Int_t i=0;i<3;i++){
1667 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1668 lab[i]=daugh->GetLabel();
1669 if(lab[i]<0)
return kFALSE;
1670 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1671 if(!part)
return kFALSE;
1672 pdgs[i]=TMath::Abs(part->GetPdgCode());
1675 if(pdgs[0]==2212 && pdgs[1]==321 && pdgs[2]==211)
return kTRUE;
1686 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1687 for(Int_t i=0;i<3;i++){
1688 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1689 lab[i]=daugh->GetLabel();
1690 if(lab[i]<0)
return kFALSE;
1691 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1692 if(!part)
return kFALSE;
1693 pdgs[i]=TMath::Abs(part->GetPdgCode());
1696 if(pdgs[2]==2212 && pdgs[1]==321 && pdgs[0]==211) {
return kTRUE;}
1718 Int_t selection = 0;
1721 AliVTrack *track0=
dynamic_cast<AliVTrack*
>(part->GetDaughter(0));
1722 AliVTrack *track1=
dynamic_cast<AliVTrack*
>(part->GetDaughter(1));
1723 AliVTrack *track2=
dynamic_cast<AliVTrack*
>(part->GetDaughter(2));
1725 Double_t prob0[AliPID::kSPECIES];
1726 Double_t prob1[AliPID::kSPECIES];
1727 Double_t prob2[AliPID::kSPECIES];
1729 if (!track0 || !track1 || !track2) {
1730 AliError(
"AliVTrack missing");
1736 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
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
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)
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
ULong_t GetSelectionMap() const
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
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 * 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 Lc not from quark
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()
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
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
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)
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 * 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
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999)
Double_t CosPointingAngle() const
Double_t InvMassLcpKpi() const
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 //.
Bool_t fLcPIDCut
flag for Lc filter bit cut
AliRDHFCutsLctopKpi * fRDCutsAnalysis
lower inv mass limit for histos