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),
126 for(Int_t i=0;i<12;i++) {
184 AliAnalysisTaskSE(name),
187 fHistNEventsRejTM(0),
190 fhPIDmassLcPtSigc(0),
191 fhPIDmassLcPtSigb(0),
197 fhProbmassLcPtSig(0),
198 fhProbmassLcPtSigc(0),
199 fhProbmassLcPtSigb(0),
200 fhIsLcResonantGen(0),
201 fhIsLcResonantReco(0),
207 fhSelectionBitsSigc(0),
208 fhSelectionBitsSigb(0),
212 fRDCutsAnalysis(lccutsana),
215 fLowmasslimit(2.086),
216 fFillNtuple(fillNtuple),
226 fKeepLcNotFromQuark(kFALSE),
237 for(Int_t i=0;i<12;i++) {
293 DefineOutput(1,TList::Class());
294 DefineOutput(2,TList::Class());
295 DefineOutput(3,TH1F::Class());
296 DefineOutput(4,AliNormalizationCounter::Class());
299 DefineOutput(5,TNtuple::Class());
364 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::Init() \n");
381 if (fDebug > 1) printf(
"AnalysisTaskSELambdac::UserCreateOutputObjects() \n");
386 fOutput->SetName(
"OutputHistos");
388 TString hisname,histitle;
391 fhSelectBit =
new TH1F(
"hSelectBit",
"hSelectBit",5,-0.5,4.5);
393 fhSelectBit->GetXaxis()->SetBinLabel(3,
"SelectionMap");
399 fHistNEvents =
new TH1F(
"fHistNEvents",
"Number of processed events; ; Events",3,-0.5,2.5);
401 fHistNEvents->GetXaxis()->SetBinLabel(3,
"N events (after selection)");
431 fhIsLcResonantGen =
new TH1F(
"hIsLcResonantGen",
"IsLcResonant flag gen",6,-1.5,4.5);
432 fhIsLcResonantReco =
new TH1F(
"hIsLcResonantReco",
"IsLcResonant flag reco",6,-1.5,4.5);
433 fhIsLcGen =
new TH1F(
"hIsLcGen",
"IsLc flag gen",4,-1.5,2.5);
434 fhIsLcReco =
new TH1F(
"hIsLcReco",
"IsLc flag reco",4,-1.5,2.5);
440 fhRecoPDGmom =
new TH1F(
"hRecoPDGmom",
"pdg of mother reco. MatchToMCLambdac",7,-0.5,6.5);
443 fhSetIsLc =
new TH1F(
"hSetIsLc",
"Check candidates before/after rec. set is Lc",2,-0.5,1.5);
446 fhSelectionBits =
new TH2F(
"hSelectionBits",
"Reconstruction + selection bit",13,-0.5,12.5,150,0,15);
463 fhSelectionBitsSigc =
new TH2F(
"hSelectionBitsSigc",
"Reconstruction + selection bit from c",13,-0.5,12.5,150,0,15);
480 fhSelectionBitsSigb =
new TH2F(
"hSelectionBitsSigb",
"Reconstruction + selection bit from b",13,-0.5,13.5,150,0,15);
499 TString stepnames[12] = {
"GeneratedLimAcc",
"GeneratedAll",
"Generated",
"GeneratedAcc",
"Reco3Prong",
"LcBit",
"IsSelectedTracks",
"IsInFidAcc",
"PtRange",
"IsSelectedCandidate",
"IsSelectedPID",
"IsSelectedNtuple"};
500 for(Int_t i=0;i<12;i++) {
502 hisname.Form(
"hNBkgNI%i",i);
503 histitle.Form(
"N Bkg not injected %s",stepnames[i].
Data());
504 fhNBkgNI[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
505 hisname.Form(
"hNLc%i",i);
506 histitle.Form(
"N Lc %s",stepnames[i].
Data());
507 fhNLc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
508 hisname.Form(
"hNLcc%i",i);
509 histitle.Form(
"N Lc from c %s",stepnames[i].
Data());
510 fhNLcc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
511 hisname.Form(
"hNLcNonRc%i",i);
512 histitle.Form(
"N Lc non resonant from c %s",stepnames[i].
Data());
513 fhNLcNonRc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
514 hisname.Form(
"hNLcL1520c%i",i);
515 histitle.Form(
"N Lc -> L(1520) + p from c %s",stepnames[i].
Data());
516 fhNLcL1520c[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
517 hisname.Form(
"hNLcKstarc%i",i);
518 histitle.Form(
"N Lc -> K* + pi from c %s",stepnames[i].
Data());
519 fhNLcKstarc[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
520 hisname.Form(
"hNLcDeltac%i",i);
521 histitle.Form(
"N Lc -> Delta + K from c %s",stepnames[i].
Data());
522 fhNLcDeltac[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
523 hisname.Form(
"hNLcb%i",i);
524 histitle.Form(
"N Lc from b %s",stepnames[i].
Data());
525 fhNLcb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
526 hisname.Form(
"hNLcNonRb%i",i);
527 histitle.Form(
"N Lc non resonant from b %s",stepnames[i].
Data());
528 fhNLcNonRb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
529 hisname.Form(
"hNLcL1520b%i",i);
530 histitle.Form(
"N Lc -> L(1520) + p from b %s",stepnames[i].
Data());
531 fhNLcL1520b[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
532 hisname.Form(
"hNLcKstarb%i",i);
533 histitle.Form(
"N Lc -> K* + pi from b %s",stepnames[i].
Data());
534 fhNLcKstarb[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
535 hisname.Form(
"hNLcDeltab%i",i);
536 histitle.Form(
"N Lc -> Delta + K from b %s",stepnames[i].
Data());
537 fhNLcDeltab[i] =
new TH1F(hisname.Data(),histitle.Data(),100,0,20);
552 hisname.Form(
"hPtEtaBkgNI%i",i);
553 histitle.Form(
"Pt vs #eta Bkg not injected %s",stepnames[i].
Data());
554 fhPtEtaBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
555 hisname.Form(
"hPtEtaLc%i",i);
556 histitle.Form(
"Pt vs #eta Lc %s",stepnames[i].
Data());
557 fhPtEtaLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
558 hisname.Form(
"hPtEtaLcc%i",i);
559 histitle.Form(
"Pt vs #eta Lc from c %s",stepnames[i].
Data());
560 fhPtEtaLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
561 hisname.Form(
"hPtEtaLcNonRc%i",i);
562 histitle.Form(
"Pt vs #eta Lc non resonant from c %s",stepnames[i].
Data());
563 fhPtEtaLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
564 hisname.Form(
"hPtEtaLcL1520c%i",i);
565 histitle.Form(
"Pt vs #eta Lc -> L(1520) + p from c %s",stepnames[i].
Data());
566 fhPtEtaLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
567 hisname.Form(
"hPtEtaLcKstarc%i",i);
568 histitle.Form(
"Pt vs #eta Lc -> K* + pi from c %s",stepnames[i].
Data());
569 fhPtEtaLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
570 hisname.Form(
"hPtEtaLcDeltac%i",i);
571 histitle.Form(
"Pt vs #eta Lc -> Delta + K from c %s",stepnames[i].
Data());
572 fhPtEtaLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
573 hisname.Form(
"hPtEtaLcb%i",i);
574 histitle.Form(
"Pt vs #eta Lc from b %s",stepnames[i].
Data());
575 fhPtEtaLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
576 hisname.Form(
"hPtEtaLcNonRb%i",i);
577 histitle.Form(
"Pt vs #eta Lc non resonant from b %s",stepnames[i].
Data());
578 fhPtEtaLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
579 hisname.Form(
"hPtEtaLcL1520b%i",i);
580 histitle.Form(
"Pt vs #eta Lc -> L(1520) + p from b %s",stepnames[i].
Data());
581 fhPtEtaLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
582 hisname.Form(
"hPtEtaLcKstarb%i",i);
583 histitle.Form(
"Pt vs #eta Lc -> K* + pi from b %s",stepnames[i].
Data());
584 fhPtEtaLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
585 hisname.Form(
"hPtEtaLcDeltab%i",i);
586 histitle.Form(
"Pt vs #eta Lc -> Delta + K from b %s",stepnames[i].
Data());
587 fhPtEtaLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
602 hisname.Form(
"hPtYBkgNI%i",i);
603 histitle.Form(
"Pt vs Y Bkg not injected %s",stepnames[i].
Data());
604 fhPtYBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
605 hisname.Form(
"hPtYLc%i",i);
606 histitle.Form(
"Pt vs Y Lc %s",stepnames[i].
Data());
607 fhPtYLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
608 hisname.Form(
"hPtYLcc%i",i);
609 histitle.Form(
"Pt vs Y Lc from c %s",stepnames[i].
Data());
610 fhPtYLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
611 hisname.Form(
"hPtYLcNonRc%i",i);
612 histitle.Form(
"Pt vs Y Lc non resonant from c %s",stepnames[i].
Data());
613 fhPtYLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
614 hisname.Form(
"hPtYLcL1520c%i",i);
615 histitle.Form(
"Pt vs Y Lc -> L(1520) + p from c %s",stepnames[i].
Data());
616 fhPtYLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
617 hisname.Form(
"hPtYLcKstarc%i",i);
618 histitle.Form(
"Pt vs Y Lc -> K* + pi from c %s",stepnames[i].
Data());
619 fhPtYLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
620 hisname.Form(
"hPtYLcDeltac%i",i);
621 histitle.Form(
"Pt vs Y Lc -> Delta + K from c %s",stepnames[i].
Data());
622 fhPtYLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
623 hisname.Form(
"hPtYLcb%i",i);
624 histitle.Form(
"Pt vs Y Lc from b %s",stepnames[i].
Data());
625 fhPtYLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
626 hisname.Form(
"hPtYLcNonRb%i",i);
627 histitle.Form(
"Pt vs Y Lc non resonant from b %s",stepnames[i].
Data());
628 fhPtYLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
629 hisname.Form(
"hPtYLcL1520b%i",i);
630 histitle.Form(
"Pt vs Y Lc -> L(1520) + p from b %s",stepnames[i].
Data());
631 fhPtYLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
632 hisname.Form(
"hPtYLcKstarb%i",i);
633 histitle.Form(
"Pt vs Y Lc -> K* + pi from b %s",stepnames[i].
Data());
634 fhPtYLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
635 hisname.Form(
"hPtYLcDeltab%i",i);
636 histitle.Form(
"Pt vs Y Lc -> Delta + K from b %s",stepnames[i].
Data());
637 fhPtYLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,200,-10,10);
652 hisname.Form(
"hPtPhiBkgNI%i",i);
653 histitle.Form(
"Pt vs #phi Bkg not injected %s",stepnames[i].
Data());
654 fhPtPhiBkgNI[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
655 hisname.Form(
"hPtPhiLc%i",i);
656 histitle.Form(
"Pt vs #phi Lc %s",stepnames[i].
Data());
657 fhPtPhiLc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
658 hisname.Form(
"hPtPhiLcc%i",i);
659 histitle.Form(
"Pt vs #phi Lc from c %s",stepnames[i].
Data());
660 fhPtPhiLcc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
661 hisname.Form(
"hPtPhiLcNonRc%i",i);
662 histitle.Form(
"Pt vs #phi Lc non resonant from c %s",stepnames[i].
Data());
663 fhPtPhiLcNonRc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
664 hisname.Form(
"hPtPhiLcL1520c%i",i);
665 histitle.Form(
"Pt vs #phi Lc -> L(1520) + p from c %s",stepnames[i].
Data());
666 fhPtPhiLcL1520c[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
667 hisname.Form(
"hPtPhiLcKstarc%i",i);
668 histitle.Form(
"Pt vs #phi Lc -> K* + pi from c %s",stepnames[i].
Data());
669 fhPtPhiLcKstarc[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
670 hisname.Form(
"hPtPhiLcDeltac%i",i);
671 histitle.Form(
"Pt vs #phi Lc -> Delta + K from c %s",stepnames[i].
Data());
672 fhPtPhiLcDeltac[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
673 hisname.Form(
"hPtPhiLcb%i",i);
674 histitle.Form(
"Pt vs #phi Lc from b %s",stepnames[i].
Data());
675 fhPtPhiLcb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
676 hisname.Form(
"hPtPhiLcNonRb%i",i);
677 histitle.Form(
"Pt vs #phi Lc non resonant from b %s",stepnames[i].
Data());
678 fhPtPhiLcNonRb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
679 hisname.Form(
"hPtPhiLcL1520b%i",i);
680 histitle.Form(
"Pt vs #phi Lc -> L(1520) + p from b %s",stepnames[i].
Data());
681 fhPtPhiLcL1520b[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
682 hisname.Form(
"hPtPhiLcKstarb%i",i);
683 histitle.Form(
"Pt vs #phi Lc -> K* + pi from b %s",stepnames[i].
Data());
684 fhPtPhiLcKstarb[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
685 hisname.Form(
"hPtPhiLcDeltab%i",i);
686 histitle.Form(
"Pt vs #phi Lc -> Delta + K from b %s",stepnames[i].
Data());
687 fhPtPhiLcDeltab[i] =
new TH2F(hisname.Data(),histitle.Data(),20,0,20,70,0,7);
706 fNentries=
new TH1F(
"fNentries",
"n Events/Candidates QA", 16,0.5,16.5);
709 fNentries->GetXaxis()->SetBinLabel(1,
"nEventsRejTM");
710 fNentries->GetXaxis()->SetBinLabel(2,
"nEventsNoVtx");
711 fNentries->GetXaxis()->SetBinLabel(3,
"nEventsRejCutPileup");
712 fNentries->GetXaxis()->SetBinLabel(4,
"nLcGen");
713 fNentries->GetXaxis()->SetBinLabel(5,
"nLcGenFidAcc");
714 fNentries->GetXaxis()->SetBinLabel(6,
"nCandReco3Prong");
715 fNentries->GetXaxis()->SetBinLabel(7,
"nCandLcBit");
716 fNentries->GetXaxis()->SetBinLabel(8,
"nCandIsSelTracks");
717 fNentries->GetXaxis()->SetBinLabel(9,
"nCandIsInFidAcc");
718 fNentries->GetXaxis()->SetBinLabel(10,
"ptbin=-1");
719 fNentries->GetXaxis()->SetBinLabel(11,
"nCandIsSelCand");
720 fNentries->GetXaxis()->SetBinLabel(12,
"PID=0");
721 fNentries->GetXaxis()->SetBinLabel(13,
"PID=1");
722 fNentries->GetXaxis()->SetBinLabel(14,
"PID=2");
723 fNentries->GetXaxis()->SetBinLabel(15,
"PID=3");
724 fNentries->GetXaxis()->SetBinLabel(16,
"nLcSelected");
725 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
727 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
728 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
744 TString normName=
"NormalizationCounter";
745 AliAnalysisDataContainer *cont = GetOutputSlot(4)->GetContainer();
746 if(cont)normName=(TString)cont->GetName();
752 if(
fFillNtuple==1)
fNtupleLambdac =
new TNtuple(
"fNtupleLambdac",
"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");
754 else if(
fFillNtuple==2)
fNtupleLambdac =
new TNtuple(
"fNtupleLambdac",
"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");
756 else if(
fFillNtuple==3)
fNtupleLambdac =
new TNtuple(
"fNtupleLambdac",
"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");
757 else AliFatal(
"Invalid fill ntuple argument");
771 AliAODEvent *aod =
dynamic_cast<AliAODEvent*
> (InputEvent());
777 TClonesArray *array3Prong = 0;
778 TClonesArray *arrayLikeSign =0;
779 if(!aod && AODEvent() && IsStandardAOD()) {
782 aod =
dynamic_cast<AliAODEvent*
> (AODEvent());
785 AliAODHandler* aodHandler = (AliAODHandler*)
786 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
787 if(aodHandler->GetExtensions()) {
788 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
789 AliAODEvent *aodFromExt = ext->GetAOD();
790 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
791 arrayLikeSign=(TClonesArray*)aodFromExt->GetList()->FindObject(
"LikeSign3Prong");
794 array3Prong=(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
795 arrayLikeSign=(TClonesArray*)aod->GetList()->FindObject(
"LikeSign3Prong");
800 TClonesArray *arrayMC=0;
801 AliAODMCHeader *mcHeader=0;
806 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
808 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: MC particles branch not found!\n");
814 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
816 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: MC header branch not found!\n");
822 if(!array3Prong || !aod) {
823 AliError(
"AliAnalysisTaskSELambdacTMVA::UserExec: Charm3Prong branch not found!\n");
827 AliDebug(2,
"AliAnalysisTaskSELambdacTMVA::UserExec: LikeSign3Prong branch not found!\n");
832 Int_t runnumber = aod->GetRunNumber();
833 if (aod->GetTriggerMask() == 0 && (runnumber >= 195344 && runnumber <= 195677)){
834 Int_t nentriesTM = arrayMC->GetEntriesFast();
835 AliDebug(2,Form(
"Event rejected because of null trigger mask, n entries = %i",nentriesTM));
842 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
843 if(!vtx1 || TMath::Abs(aod->GetMagneticField())<0.001) {
848 TString trigclass=aod->GetFiredTriggerClasses();
859 Int_t n3Prong = array3Prong->GetEntriesFast();
860 Int_t nSelectedloose[1]={0};
861 Int_t nSelectedtight[1]={0};
865 Bool_t isInFidAcc = kFALSE;
866 Bool_t isInAcc = kFALSE;
869 Double_t zPrimVertex = vtx1 ->GetZ();
870 Double_t zMCVertex = mcHeader->GetVtxZ();
874 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
877 AliAODMCParticle* mcPart =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(iPart));
879 AliError(
"Failed casting particle from MC array!, Skipping particle");
884 if(
fIsLc==0)
continue;
891 Int_t imother=mcPart->GetMother();
893 AliAODMCParticle* mcPartMother =
dynamic_cast<AliAODMCParticle*
>(arrayMC->At(imother));
895 AliError(
"Failed casting mother particle, Skipping particle");
903 AliDebug(2,
"Lc has p K pi in final state");
908 if((TMath::Abs(mcPart->Y()) < 0.5)) {
909 AliDebug(2,
"Lc in limited acceptance");
917 AliError(
"no p K pi final state");
929 else AliError(Form(
"Not pKpi or background - should not happen! fIsLcResonant = %i",
fIsLcResonant));
950 for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
966 Bool_t unsetvtx=kFALSE;
994 if(!isSelectedTracks)
continue;
1004 if(ptbin==-1) {
fNentries->Fill(10);
continue;}
1011 if(isSelectedPID==0 )
fNentries->Fill(12);
1012 else if(isSelectedPID==1)
fNentries->Fill(13);
1013 else if(isSelectedPID==2)
fNentries->Fill(14);
1020 if(!selection)
continue;
1049 if (fDebug > 1) printf(
"AnalysisTaskSELambdac: Terminate() \n");
1051 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
1053 AliError(
"ERROR: fOutput not available\n");
1073 Int_t lambdacLab[3]={0,0,0};
1075 for(Int_t i=0;i<3;i++){
1076 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1077 Int_t lab=daugh->GetLabel();
1079 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
1082 Int_t partPdgcode = TMath::Abs(part->GetPdgCode());
1083 if(partPdgcode==211 || partPdgcode==321 || partPdgcode==2212){
1084 Int_t motherLabel=part->GetMother();
1085 if(motherLabel<0)
return 0;
1086 AliAODMCParticle *motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
1087 if(!motherPart)
continue;
1088 Int_t motherPdg = TMath::Abs(motherPart->GetPdgCode());
1089 if(motherPdg==4122) {
1090 if(
GetLambdacDaugh(motherPart,arrayMC)){lambdacLab[i]=motherLabel;
continue;}
1092 if(motherPdg==313 || motherPdg==2224 || motherPdg==3124){
1093 Int_t granMotherLabel=motherPart->GetMother();
1094 if(granMotherLabel<0)
return 0;
1095 AliAODMCParticle *granMotherPart = (AliAODMCParticle*)arrayMC->At(granMotherLabel);
1096 if(!granMotherPart)
continue;
1097 Int_t granMotherPdg = TMath::Abs(granMotherPart->GetPdgCode());
1098 if(granMotherPdg ==4122) {
1099 if(
GetLambdacDaugh(granMotherPart,arrayMC)) {lambdacLab[i]=granMotherLabel;
continue;}
1105 if(lambdacLab[0]==lambdacLab[1] && lambdacLab[1]==lambdacLab[2]) {
return lambdacLab[0];}
1120 Int_t numberOfLambdac=0;
1122 if(TMath::Abs(part->GetPdgCode())!=4122)
return 0;
1126 Int_t nDaugh = (Int_t)part->GetNDaughters();
1127 if(nDaugh<2)
return 0;
1128 if(nDaugh>3)
return 0;
1129 AliAODMCParticle* pdaugh1 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(0));
1130 if(!pdaugh1) {
return 0;}
1131 Int_t number1 = TMath::Abs(pdaugh1->GetPdgCode());
1132 AliAODMCParticle* pdaugh2 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(1));
1133 if(!pdaugh2) {
return 0;}
1134 Int_t number2 = TMath::Abs(pdaugh2->GetPdgCode());
1136 AliDebug(2,
"Is non resonant?");
1138 Int_t thirdDaugh=part->GetDaughter(1)-1;
1139 AliAODMCParticle* pdaugh3 = (AliAODMCParticle*)arrayMC->At(thirdDaugh);
1140 Int_t number3 = TMath::Abs(pdaugh3->GetPdgCode());
1141 if((number1==321 && number2==211 && number3==2212) ||
1142 (number1==211 && number2==321 && number3==2212) ||
1143 (number1==211 && number2==2212 && number3==321) ||
1144 (number1==321 && number2==2212 && number3==211) ||
1145 (number1==2212 && number2==321 && number3==211) ||
1146 (number1==2212 && number2==211 && number3==321)) {
1148 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1149 || TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1150 || TMath::Abs(pdaugh3->Eta()) > 0.9 || pdaugh3->Pt() < 0.1) IsInAcc=kFALSE;
1151 AliDebug(2,
"Lc decays non-resonantly");
1164 if((number1==2212 && number2==313)){
1165 nfiglieK=pdaugh2->GetNDaughters();
1166 if(nfiglieK!=2)
return 0;
1167 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1168 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1169 if(!pdaughK1)
return 0;
1170 if(!pdaughK2)
return 0;
1171 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) {
1173 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1174 || TMath::Abs(pdaughK1->Eta()) > 0.9 || pdaughK1->Pt() < 0.1
1175 || TMath::Abs(pdaughK2->Eta()) > 0.9 || pdaughK2->Pt() < 0.1) IsInAcc=kFALSE;
1176 AliDebug(2,
"Lc decays via K* p");
1181 if((number1==313 && number2==2212)){
1182 nfiglieK=pdaugh1->GetNDaughters();
1183 if(nfiglieK!=2)
return 0;
1184 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1185 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1186 if(!pdaughK1)
return 0;
1187 if(!pdaughK2)
return 0;
1188 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) {
1190 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1191 || TMath::Abs(pdaughK1->Eta()) > 0.9 || pdaughK1->Pt() < 0.1
1192 || TMath::Abs(pdaughK2->Eta()) > 0.9 || pdaughK2->Pt() < 0.1) IsInAcc=kFALSE;
1193 AliDebug(2,
"Lc decays via K* p");
1199 Int_t nfiglieDelta=0;
1200 if(number1==321 && number2==2224){
1201 nfiglieDelta=pdaugh2->GetNDaughters();
1202 if(nfiglieDelta!=2)
return 0;
1203 AliAODMCParticle *pdaughD1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1204 AliAODMCParticle *pdaughD2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1205 if(!pdaughD1)
return 0;
1206 if(!pdaughD2)
return 0;
1207 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) {
1209 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1210 || TMath::Abs(pdaughD1->Eta()) > 0.9 || pdaughD1->Pt() < 0.1
1211 || TMath::Abs(pdaughD2->Eta()) > 0.9 || pdaughD2->Pt() < 0.1) IsInAcc=kFALSE;
1212 AliDebug(2,
"Lc decays via Delta++ k");
1216 if(number1==2224 && number2==321){
1217 nfiglieDelta=pdaugh1->GetNDaughters();
1218 if(nfiglieDelta!=2)
return 0;
1219 AliAODMCParticle* pdaughD1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1220 AliAODMCParticle* pdaughD2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1221 if(!pdaughD1)
return 0;
1222 if(!pdaughD2)
return 0;
1223 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) {
1225 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1226 || TMath::Abs(pdaughD1->Eta()) > 0.9 || pdaughD1->Pt() < 0.1
1227 || TMath::Abs(pdaughD2->Eta()) > 0.9 || pdaughD2->Pt() < 0.1) IsInAcc=kFALSE;
1228 AliDebug(2,
"Lc decays via Delta++ k");
1236 if(number1==3124 && number2==211){
1237 nfiglieLa=pdaugh1->GetNDaughters();
1238 if(nfiglieLa!=2)
return 0;
1239 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1240 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1241 if(!pdaughL1)
return 0;
1242 if(!pdaughL2)
return 0;
1243 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) {
1245 if( TMath::Abs(pdaugh2->Eta()) > 0.9 || pdaugh2->Pt() < 0.1
1246 || TMath::Abs(pdaughL1->Eta()) > 0.9 || pdaughL1->Pt() < 0.1
1247 || TMath::Abs(pdaughL2->Eta()) > 0.9 || pdaughL2->Pt() < 0.1) IsInAcc=kFALSE;
1248 AliDebug(2,
"Lc decays via Lambda(1520) pi");
1252 if(number1==211 && number2==3124){
1253 nfiglieLa=pdaugh2->GetNDaughters();
1254 if(nfiglieLa!=2)
return 0;
1255 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1256 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1257 if(!pdaughL1)
return 0;
1258 if(!pdaughL2)
return 0;
1259 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) {
1261 if( TMath::Abs(pdaugh1->Eta()) > 0.9 || pdaugh1->Pt() < 0.1
1262 || TMath::Abs(pdaughL1->Eta()) > 0.9 || pdaughL1->Pt() < 0.1
1263 || TMath::Abs(pdaughL2->Eta()) > 0.9 || pdaughL2->Pt() < 0.1) IsInAcc=kFALSE;
1264 AliDebug(2,
"Lc decays via Lambda(1520) pi");
1270 if(numberOfLambdac>0) {
return -100; AliDebug(2,
"Lc decays via one of 4 resonances!");}
1284 if(TMath::Abs(mcPart->GetPdgCode())==4122) {
1285 AliDebug(2,
"Found Lc! now check mother");
1290 AliDebug(2,
"Lc comes from b");
1293 else if(pdgMom==4) {
1307 TClonesArray *arrayMC) {
1320 Int_t pdgCand =4122;
1321 Int_t pdgDaughter[3]={-1,-1,-1};
1322 pdgDaughter[0]=2212;
1326 labDp = part->MatchToMC(pdgCand,arrayMC,3,pdgDaughter);
1328 AliAODMCParticle *partDp = (AliAODMCParticle*)arrayMC->At(labDp);
1331 if(pdgMom == 4)
fIsLc=1;
1332 else if(pdgMom == 5)
fIsLc=2;
1334 Bool_t dummy = kTRUE;
1345 Int_t IsInjected = -1;
1347 AliAODMCHeader *mcHeader2 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1362 else if(selection==2){
1367 else if(selection==3){
1380 if(selectionProb==1) {
1385 else if(selectionProb==2) {
1400 else if(selection==2){
1403 else if(selection==3){
1416 TClonesArray *arrayMC, Int_t selection)
1422 Bool_t IsInjected = -1;
1424 Bool_t IsLcfromLb = 0;
1427 AliAODMCHeader *mcHeader3 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1431 if(
fIsLc==2) IsLcfromLb=kTRUE;
1432 if(
fReadMC && IsInjected && !IsLc &&
fSyst >=1 )
return;
1434 Double_t invMasspKpi=-1.;
1435 Double_t invMasspiKp=-1.;
1444 if(selection==1 || selection==3) invMasspKpi=part->
InvMassLcpKpi();
1455 if(!IsInjected && IsLc==0) tmp[0]=0;
1456 else if(IsLc==1 && !IsLcfromLb) tmp[0]=1;
1457 else if(IsLc==1 && IsLcfromLb) tmp[0]=2;
1458 else if(IsInjected && IsLc==0) tmp[0]=3;
1464 tmp[3]=part->Charge();
1466 tmp[4]=part->PtProng(0);
1467 tmp[5]=part->PtProng(1);
1468 tmp[6]=part->PtProng(2);
1475 Double_t dcas[3]={0};
1477 tmp[13]=TMath::Max(dcas[0],TMath::Max(dcas[1],dcas[2]));
1492 AliVTrack *track0=
dynamic_cast<AliVTrack*
>(part->GetDaughter(0));
1493 AliVTrack *track1=
dynamic_cast<AliVTrack*
>(part->GetDaughter(1));
1494 AliVTrack *track2=
dynamic_cast<AliVTrack*
>(part->GetDaughter(2));
1498 Double_t prob0[AliPID::kSPECIES];
1499 Double_t prob1[AliPID::kSPECIES];
1500 Double_t prob2[AliPID::kSPECIES];
1502 if (!track0 || !track1 || !track2) {
1503 AliError(
"AliVTrack missing - wont fill Ntuple");
1512 tmp[18]=prob0[AliPID::kPion];
1513 tmp[19]=prob0[AliPID::kKaon];
1514 tmp[20]=prob0[AliPID::kProton];
1515 tmp[21]=prob1[AliPID::kPion];
1516 tmp[22]=prob1[AliPID::kKaon];
1517 tmp[23]=prob1[AliPID::kProton];
1518 tmp[24]=prob2[AliPID::kPion];
1519 tmp[25]=prob2[AliPID::kKaon];
1520 tmp[26]=prob2[AliPID::kProton];
1524 for(Int_t iprob=18;iprob<=26;iprob++) {
1530 tmp[27]=
fPIDResponse->NumberOfSigmasTPC(track0,AliPID::kPion);
1531 tmp[28]=
fPIDResponse->NumberOfSigmasTPC(track0,AliPID::kKaon);
1532 tmp[29]=
fPIDResponse->NumberOfSigmasTPC(track0,AliPID::kProton);
1533 tmp[30]=
fPIDResponse->NumberOfSigmasTPC(track1,AliPID::kPion);
1534 tmp[31]=
fPIDResponse->NumberOfSigmasTPC(track1,AliPID::kKaon);
1535 tmp[32]=
fPIDResponse->NumberOfSigmasTPC(track1,AliPID::kProton);
1536 tmp[33]=
fPIDResponse->NumberOfSigmasTPC(track2,AliPID::kPion);
1537 tmp[34]=
fPIDResponse->NumberOfSigmasTPC(track2,AliPID::kKaon);
1538 tmp[35]=
fPIDResponse->NumberOfSigmasTPC(track2,AliPID::kProton);
1541 tmp[36]=part->InvMass2Prongs(1,0,321,2212);
1542 tmp[37]=part->InvMass2Prongs(2,1,211,321);
1543 tmp[38]=part->InvMass2Prongs(2,0,211,2212);
1544 tmp[39]=part->InvMass2Prongs(1,2,321,2212);
1545 tmp[40]=part->InvMass2Prongs(0,1,211,321);
1546 tmp[41]=part->InvMass2Prongs(0,2,211,2212);
1650 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1651 for(Int_t i=0;i<3;i++){
1652 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1653 lab[i]=daugh->GetLabel();
1654 if(lab[i]<0)
return kFALSE;
1655 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1656 if(!part)
return kFALSE;
1657 pdgs[i]=TMath::Abs(part->GetPdgCode());
1660 if(pdgs[0]==2212 && pdgs[1]==321 && pdgs[2]==211)
return kTRUE;
1671 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1672 for(Int_t i=0;i<3;i++){
1673 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1674 lab[i]=daugh->GetLabel();
1675 if(lab[i]<0)
return kFALSE;
1676 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1677 if(!part)
return kFALSE;
1678 pdgs[i]=TMath::Abs(part->GetPdgCode());
1681 if(pdgs[2]==2212 && pdgs[1]==321 && pdgs[0]==211) {
return kTRUE;}
1703 Int_t selection = 0;
1706 AliVTrack *track0=
dynamic_cast<AliVTrack*
>(part->GetDaughter(0));
1707 AliVTrack *track1=
dynamic_cast<AliVTrack*
>(part->GetDaughter(1));
1708 AliVTrack *track2=
dynamic_cast<AliVTrack*
>(part->GetDaughter(2));
1710 Double_t prob0[AliPID::kSPECIES];
1711 Double_t prob1[AliPID::kSPECIES];
1712 Double_t prob2[AliPID::kSPECIES];
1714 if (!track0 || !track1 || !track2) {
1715 AliError(
"AliVTrack missing");
1721 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 Lc filter bit PID
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 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