26 #include <Riostream.h>
28 #include <TDatabasePDG.h>
30 #include <TLorentzVector.h>
33 #include "AliAnalysisManager.h"
34 #include "AliInputEventHandler.h"
35 #include "AliPIDResponse.h"
38 #include "AliAODTrack.h"
39 #include "AliESDtrack.h"
40 #include "AliESDVertex.h"
41 #include "AliAODVertex.h"
43 #include "AliAODcascade.h"
57 fPIDStrategy(kNSigmaCuts),
58 fCombinedPIDThreshold(0.),
59 fUseOnTheFlyV0(kFALSE),
61 fProdTrackTPCNclsPIDMin(0),
62 fProdTrackTPCNclsRatioMin(0.0),
63 fProdUseAODFilterBit(kTRUE),
65 fProdRejectTrackWithShared(kFALSE),
66 fProdV0MassTolK0s(0.01),
67 fProdV0MassRejLambda(0.00),
68 fProdV0MassRejPhoton(0.00),
70 fProdV0CosPointingAngleToPrimVtxMin(0.99),
71 fProdV0DcaDaughtersMax(1.5),
72 fProdV0DaughterEtaRange(0.8),
73 fProdV0DaughterPtMin(0.0),
74 fProdV0DaughterTPCClusterMin(70),
75 fProdV0EtaMin(-9999.),
77 fProdV0RapMin(-9999.),
79 fProdRoughMassTol(0.25),
81 fNWeightingProtonBinLimits(0),
82 fWeightingProtonBins(0),
83 fNWeightingK0sBinLimits(0),
95 for(Int_t i=0;i<3;i++){
101 TString varNames[nvars]={
"Lc inv. mass [GeV/c2]",
102 "Opening angle [rad]",
105 "Decay Length min [cm]",
112 Bool_t isUpperCut[nvars]={kTRUE,
123 Bool_t forOpt[nvars]={kFALSE,
135 Float_t limits[2]={0,999999999.};
141 fPIDStrategy(source.fPIDStrategy),
142 fCombinedPIDThreshold(source.fCombinedPIDThreshold),
143 fUseOnTheFlyV0(source.fUseOnTheFlyV0),
145 fProdTrackTPCNclsPIDMin(source.fProdTrackTPCNclsPIDMin),
146 fProdTrackTPCNclsRatioMin(source.fProdTrackTPCNclsRatioMin),
147 fProdUseAODFilterBit(source.fProdUseAODFilterBit),
148 fProdAODFilterBit(source.fProdAODFilterBit),
149 fProdRejectTrackWithShared(source.fProdRejectTrackWithShared),
150 fProdV0MassTolK0s(source.fProdV0MassTolK0s),
151 fProdV0MassRejLambda(source.fProdV0MassRejLambda),
152 fProdV0MassRejPhoton(source.fProdV0MassRejPhoton),
153 fProdV0PtMin(source.fProdV0PtMin),
154 fProdV0CosPointingAngleToPrimVtxMin(source.fProdV0CosPointingAngleToPrimVtxMin),
155 fProdV0DcaDaughtersMax(source.fProdV0DcaDaughtersMax),
156 fProdV0DaughterEtaRange(source.fProdV0DaughterEtaRange),
157 fProdV0DaughterPtMin(source.fProdV0DaughterPtMin),
158 fProdV0DaughterTPCClusterMin(source.fProdV0DaughterTPCClusterMin),
159 fProdV0EtaMin(source.fProdV0EtaMin),
160 fProdV0EtaMax(source.fProdV0EtaMax),
161 fProdV0RapMin(source.fProdV0RapMin),
162 fProdV0RapMax(source.fProdV0RapMax),
163 fProdRoughMassTol(source.fProdRoughMassTol),
164 fProdRoughPtMin(source.fProdRoughPtMin),
165 fNWeightingProtonBinLimits(source.fNWeightingProtonBinLimits),
166 fWeightingProtonBins(NULL),
167 fNWeightingK0sBinLimits(source.fNWeightingK0sBinLimits),
168 fWeightingK0sBins(NULL),
169 fNWeightingBins(source.fNWeightingBins),
174 fTagV0MassTol(source.fTagV0MassTol)
179 for(Int_t i=0;i<3;i++){
208 if (
this != &source) {
241 for(Int_t i=0;i<3;i++){
289 if (pdgdaughters[0]==-9999)
return;
293 AliError(
"No AliAODRecoCascadeHF object found\n");
298 AliError(
"Cut object seems to have the wrong number of variables\n");
308 Double_t mlcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
313 vars[iter]= dd->Pt();
326 AliFatal(
"Cut matrix not inizialized. Exit...");
332 AliDebug(2,
"AliAODRecoCascadeHF null");
336 Double_t ptD=d->Pt();
341 Int_t ptbin=
PtBin(pt);
351 Int_t returnvalueCuts=1;
358 Double_t mlcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
359 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
360 Double_t mk0PDG = TDatabasePDG::Instance()->GetParticle(310)->Mass();
361 Double_t v0px = d->PxProng(1);
362 Double_t v0py = d->PyProng(1);
363 Double_t v0pz = d->PzProng(1);
364 Double_t epx = d->PxProng(0);
365 Double_t epy = d->PyProng(0);
366 Double_t epz = d->PzProng(0);
367 Double_t cosoa = (v0px*epx+v0py*epy+v0pz*epz)/sqrt(v0px*v0px+v0py*v0py+v0pz*v0pz)/sqrt(epx*epx+epy*epy+epz*epz);
369 TLorentzVector vpr, vk0s,vlc;
370 vpr.SetXYZM(epx,epy,epz,mprPDG);
371 vk0s.SetXYZM(v0px,v0py,v0pz,mk0PDG);
373 TVector3 vboost = vlc.BoostVector();
375 Double_t bachcosthe = cos(vpr.Angle(vlc.Vect()));
406 if(!okcand)
return 0;
410 Int_t returnvaluePID=1;
415 AliAODTrack *part = (AliAODTrack*)d->GetSecondaryVtx()->GetDaughter(0);
429 Int_t returnvalue = 0;
430 if(returnvalueCuts==1 && returnvaluePID==1) returnvalue=1;
442 AliFatal(
"Cut matrix not inizialized. Exit...");
446 Double_t ptD=cutvars[1];
450 Double_t pt=cutvars[1];
451 Int_t ptbin=
PtBin(pt);
461 Int_t returnvalueCuts=1;
468 Double_t mlcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
469 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
470 Double_t mk0PDG = TDatabasePDG::Instance()->GetParticle(310)->Mass();
471 Double_t v0px = vv0->Px();
472 Double_t v0py = vv0->Py();
473 Double_t v0pz = vv0->Pz();
474 Double_t epx = vtrk->Px();
475 Double_t epy = vtrk->Py();
476 Double_t epz = vtrk->Pz();
477 Double_t cosoa = (v0px*epx+v0py*epy+v0pz*epz)/sqrt(v0px*v0px+v0py*v0py+v0pz*v0pz)/sqrt(epx*epx+epy*epy+epz*epz);
479 TLorentzVector vpr, vk0s,vlc;
480 vpr.SetXYZM(epx,epy,epz,mprPDG);
481 vk0s.SetXYZM(v0px,v0py,v0pz,mk0PDG);
483 TVector3 vboost = vlc.BoostVector();
485 Double_t bachcosthe = cos(vpr.Angle(vlc.Vect()));
516 if(!okcand)
return 0;
520 Int_t returnvaluePID=1;
525 Double_t nSigmaTPCpr = cutvars[2];
530 Double_t nSigmaTOFpr = cutvars[3];
537 Int_t returnvalue = 0;
538 if(returnvalueCuts==1 && returnvaluePID==1) returnvalue=1;
558 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
559 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
560 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
565 if(isProton<1) returnvalue = 0;
578 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
579 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
580 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
591 if(fabs(nSigmaTPCpr)<nsigmatpc_proton && fabs(nSigmaTOFpr)<nsigmatof_proton){
605 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
606 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
607 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
618 if(fabs(nSigmaTPCka)<nsigmatpc_kaon && fabs(nSigmaTOFka)<nsigmatof_kaon){
631 if(!
fUsePID || !obj) {
return 1;}
652 Double_t prob1[AliPID::kSPECIES];
659 return prob1[AliPID::kProton];
677 if(trk->Pt()<ptmin || trk->Pt()>
ptmax)
return kFALSE;
678 if(trk->Eta()<etamin || trk->Eta()>
etamax)
return kFALSE;
680 Double_t pos[3]; primVert->GetXYZ(pos);
681 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
682 const AliESDVertex vESD(pos,cov,100.,100);
688 if(trk->GetTPCNclsF()>0){
689 Float_t tpcratio = (Float_t)trk->GetTPCncls()/(Float_t)trk->GetTPCNclsF();
696 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
697 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
698 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
710 const TBits sharedMap = trk->GetTPCSharedMap();
711 if((sharedMap.CountBits()) >= 1){
725 if(trk->GetStatus()&AliESDtrack::kITSpureSA)
return kFALSE;
726 if(!(trk->GetStatus()&AliESDtrack::kITSin))
return kFALSE;
728 Double_t pos[3]; primVert->GetXYZ(pos);
729 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
730 const AliESDVertex vESD(pos,cov,100.,100);
734 if(trk->GetTPCNclsF()>0){
735 Float_t tpcratio = (Float_t)trk->GetTPCncls()/(Float_t)trk->GetTPCNclsF();
742 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
743 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
744 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
762 AliError(
"No AliAODRecoCascadeHF object found\n");
765 Double_t dvertx = lcobj->GetSecondaryVtx()->GetX()-lcobj->
GetOwnPrimaryVtx()->GetX();
766 Double_t dverty = lcobj->GetSecondaryVtx()->GetY()-lcobj->
GetOwnPrimaryVtx()->GetY();
767 Double_t px = lcobj->Px();
768 Double_t py = lcobj->Py();
769 Double_t inner = px*dvertx + py*dverty;
770 if(inner<0.)
return -1.;
780 Bool_t onFlyV0 = v0->GetOnFlyStatus();
783 AliAODTrack *cptrack = (AliAODTrack*)(v0->GetDaughter(0));
784 AliAODTrack *cntrack = (AliAODTrack*)(v0->GetDaughter(1));
785 if(!cptrack || !cntrack)
return kFALSE;
786 if ( cptrack->Charge() == cntrack->Charge() )
return kFALSE;
787 if(!(cptrack->GetStatus() & AliESDtrack::kTPCrefit) ||
788 !(cntrack->GetStatus() & AliESDtrack::kTPCrefit))
return kFALSE;
789 AliAODVertex *maybeKinkPos = (AliAODVertex*)cptrack->GetProdVertex();
790 AliAODVertex *maybeKinkNeg = (AliAODVertex*)cntrack->GetProdVertex();
791 if (maybeKinkPos->GetType()==AliAODVertex::kKink || maybeKinkNeg->GetType()==AliAODVertex::kKink)
797 Double_t massK0S = v0->MassK0Short();
798 Double_t mk0sPDG = TDatabasePDG::Instance()->GetParticle(310)->Mass();
801 Double_t massLambda = v0->MassLambda();
802 Double_t massAntiLambda = v0->MassAntiLambda();
803 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
806 Double_t pxe1 = v0->MomPosX();
807 Double_t pye1 = v0->MomPosY();
808 Double_t pze1 = v0->MomPosZ();
809 Double_t Ee1 = sqrt(pxe1*pxe1+pye1*pye1+pze1*pze1+0.000511*0.000511);
810 Double_t pxe2 = v0->MomNegX();
811 Double_t pye2 = v0->MomNegY();
812 Double_t pze2 = v0->MomNegZ();
813 Double_t Ee2 = sqrt(pxe2*pxe2+pye2*pye2+pze2*pze2+0.000511*0.000511);
814 Double_t mphoton = sqrt(pow(Ee1+Ee2,2)-pow(pxe1+pxe2,2)-pow(pye1+pye2,2)-pow(pze1+pze2,2));
819 Double_t posVtx[3] = {0.,0.,0.};
820 primVert->GetXYZ(posVtx);
821 Double_t cospav0 = v0->CosPointingAngle(posVtx);
829 Double_t RapK0s = v0->RapK0Short();
830 if(RapK0s<fProdV0RapMin || RapK0s>
fProdV0RapMax)
return kFALSE;
832 Double_t EtaK0s = v0->PseudoRapV0();
833 if(EtaK0s<fProdV0EtaMin || EtaK0s>
fProdV0EtaMax)
return kFALSE;
837 const TBits sharedMap1 = cptrack->GetTPCSharedMap();
838 const TBits sharedMap2 = cntrack->GetTPCSharedMap();
839 if((sharedMap1.CountBits() >= 1) || (sharedMap2.CountBits() >= 1))
856 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
857 Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
859 Double_t pxpr_init = part->Px();
860 Double_t pypr_init = part->Py();
861 Double_t pzpr_init = part->Pz();
862 Double_t Epr_init = sqrt(pxpr_init*pxpr_init+pypr_init*pypr_init+pzpr_init*pzpr_init+mprPDG*mprPDG);
864 Double_t pxv0_init = v0->Px();
865 Double_t pyv0_init = v0->Py();
866 Double_t pzv0_init = v0->Pz();
867 Double_t massv0_init = v0->MassK0Short();
868 Double_t Ev0_init = sqrt(pxv0_init*pxv0_init+pyv0_init*pyv0_init+pzv0_init*pzv0_init+massv0_init*massv0_init);
870 Double_t pxlc_init = pxpr_init+pxv0_init;
871 Double_t pylc_init = pypr_init+pyv0_init;
872 Double_t pzlc_init = pzpr_init+pzv0_init;
873 Double_t Elc_init = Epr_init+Ev0_init;
874 Double_t lcmass_init = sqrt(Elc_init*Elc_init-pxlc_init*pxlc_init-pylc_init*pylc_init-pzlc_init*pzlc_init);
876 if(lcmass_init<mLcPDG-fProdRoughMassTol || lcmass_init>mLcPDG+
fProdRoughMassTol)
return kFALSE;
877 if(sqrt(pxlc_init*pxlc_init+pylc_init*pylc_init)<
fProdRoughPtMin)
return kFALSE;
888 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
889 Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
891 Double_t pxpr_init = part->Px();
892 Double_t pypr_init = part->Py();
893 Double_t pzpr_init = part->Pz();
894 Double_t Epr_init = sqrt(pxpr_init*pxpr_init+pypr_init*pypr_init+pzpr_init*pzpr_init+mprPDG*mprPDG);
896 Double_t pxv0_init = vka->Px();
897 Double_t pyv0_init = vka->Py();
898 Double_t pzv0_init = vka->Pz();
899 Double_t massv0_init = 0.493677;
900 Double_t Ev0_init = sqrt(pxv0_init*pxv0_init+pyv0_init*pyv0_init+pzv0_init*pzv0_init+massv0_init*massv0_init);
902 Double_t pxlc_init = pxpr_init+pxv0_init;
903 Double_t pylc_init = pypr_init+pyv0_init;
904 Double_t pzlc_init = pzpr_init+pzv0_init;
905 Double_t Elc_init = Epr_init+Ev0_init;
906 Double_t lcmass_init = sqrt(Elc_init*Elc_init-pxlc_init*pxlc_init-pylc_init*pylc_init-pzlc_init*pzlc_init);
908 if(lcmass_init<mLcPDG-fProdRoughMassTol || lcmass_init>mLcPDG+
fProdRoughMassTol)
return kFALSE;
909 if(sqrt(pxlc_init*pxlc_init+pylc_init*pylc_init)<
fProdRoughPtMin)
return kFALSE;
920 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
921 Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
923 Double_t pxpr_init = part->Px();
924 Double_t pypr_init = part->Py();
925 Double_t pzpr_init = part->Pz();
926 Double_t Epr_init = sqrt(pxpr_init*pxpr_init+pypr_init*pypr_init+pzpr_init*pzpr_init+mprPDG*mprPDG);
928 Double_t pxv0_init = v0->Px();
929 Double_t pyv0_init = v0->Py();
930 Double_t pzv0_init = v0->Pz();
931 Double_t massv0_init = v0->M();
932 Double_t Ev0_init = sqrt(pxv0_init*pxv0_init+pyv0_init*pyv0_init+pzv0_init*pzv0_init+massv0_init*massv0_init);
934 Double_t pxlc_init = pxpr_init+pxv0_init;
935 Double_t pylc_init = pypr_init+pyv0_init;
936 Double_t pzlc_init = pzpr_init+pzv0_init;
937 Double_t Elc_init = Epr_init+Ev0_init;
938 Double_t lcmass_init = sqrt(Elc_init*Elc_init-pxlc_init*pxlc_init-pylc_init*pylc_init-pzlc_init*pzlc_init);
940 if(lcmass_init<mLcPDG-fProdRoughMassTol || lcmass_init>mLcPDG+
fProdRoughMassTol)
return kFALSE;
941 if(sqrt(pxlc_init*pxlc_init+pylc_init*pylc_init)<
fProdRoughPtMin)
return kFALSE;
952 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
953 Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
955 Double_t pxpr_init = part->Px();
956 Double_t pypr_init = part->Py();
957 Double_t pzpr_init = part->Pz();
958 Double_t Epr_init = sqrt(pxpr_init*pxpr_init+pypr_init*pypr_init+pzpr_init*pzpr_init+mprPDG*mprPDG);
960 Double_t pxv0_init = vka->Px();
961 Double_t pyv0_init = vka->Py();
962 Double_t pzv0_init = vka->Pz();
963 Double_t massv0_init = 0.493677;
964 Double_t Ev0_init = sqrt(pxv0_init*pxv0_init+pyv0_init*pyv0_init+pzv0_init*pzv0_init+massv0_init*massv0_init);
966 Double_t pxlc_init = pxpr_init+pxv0_init;
967 Double_t pylc_init = pypr_init+pyv0_init;
968 Double_t pzlc_init = pzpr_init+pzv0_init;
969 Double_t Elc_init = Epr_init+Ev0_init;
970 Double_t lcmass_init = sqrt(Elc_init*Elc_init-pxlc_init*pxlc_init-pylc_init*pylc_init-pzlc_init*pzlc_init);
972 if(lcmass_init<mLcPDG-fProdRoughMassTol || lcmass_init>mLcPDG+
fProdRoughMassTol)
return kFALSE;
973 if(sqrt(pxlc_init*pxlc_init+pylc_init*pylc_init)<
fProdRoughPtMin)
return kFALSE;
1015 if(dphi>M_PI/2.)
return 1.;
1017 Int_t ibin_pr = -9999;
1024 Int_t ibin_k0s = -9999;
1031 if(ibin_pr<0 || ibin_pr > fNWeightingProtonBinLimits-1)
return 1.;
1032 if(ibin_k0s<0 || ibin_k0s > fNWeightingK0sBinLimits-1)
return 1.;
1034 Int_t ibin_comb = ibin_pr*(fNWeightingK0sBinLimits-1)+ibin_k0s;
1040 Double_t weight = p0 + p1 *TMath::Gaus(dphi,0.,p2)*TMath::Gaus(deta,0.,p3);
1052 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
1053 Double_t mpiPDG = TDatabasePDG::Instance()->GetParticle(211)->Mass();
1054 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
1056 Bool_t isv0 = kFALSE;
1057 Bool_t islam = kFALSE;
1060 Int_t trkid = ptrk->GetID();
1061 Double_t px1 = ptrk->Px();
1062 Double_t py1 = ptrk->Py();
1063 Double_t pz1 = ptrk->Pz();
1064 Double_t Epr1 = sqrt(px1*px1+py1*py1+pz1*pz1+mprPDG*mprPDG);
1066 for(Int_t it=0;it<ntrk;it++){
1067 AliAODTrack *trk2 = (AliAODTrack*) evt->GetTrack(it);
1069 Int_t trkid2 = trk2->GetID();
1070 if(trkid==trkid2)
continue;
1071 if(ptrk->Charge()*trk2->Charge()>0)
continue;
1072 if(!ptrk->TestFilterMask(BIT(4)))
continue;
1074 Double_t px2 = trk2->Px();
1075 Double_t py2 = trk2->Py();
1076 Double_t pz2 = trk2->Pz();
1077 Double_t E2 = sqrt(px2*px2+py2*py2+pz2*pz2+mpiPDG*mpiPDG);
1079 Double_t mass_lam = sqrt(pow(Epr1+E2,2)-pow(px1+px2,2)-pow(py1+py2,2)-pow(pz1+pz2,2));
1080 Double_t dlam = mass_lam-mlamPDG;
1081 if(fabs(dlam)<fabs(minmass)){
1089 if(islam) minmass += mlamPDG;
1102 Double_t mprPDG = TDatabasePDG::Instance()->GetParticle(2212)->Mass();
1103 Double_t mpiPDG = TDatabasePDG::Instance()->GetParticle(211)->Mass();
1104 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
1106 Bool_t isv0 = kFALSE;
1107 Bool_t islam = kFALSE;
1110 Int_t trkid = ptrk->GetID();
1111 Double_t px1 = ptrk->Px();
1112 Double_t py1 = ptrk->Py();
1113 Double_t pz1 = ptrk->Pz();
1114 Double_t Epr1 = sqrt(px1*px1+py1*py1+pz1*pz1+mprPDG*mprPDG);
1116 for(Int_t it=0;it<ntrk;it++){
1117 AliAODTrack *trk2 = (AliAODTrack*) evt->GetTrack(it);
1119 Int_t trkid2 = trk2->GetID();
1120 if(trkid==trkid2)
continue;
1121 if(ptrk->Charge()*trk2->Charge()<0)
continue;
1122 if(!ptrk->TestFilterMask(BIT(4)))
continue;
1124 Double_t px2 = trk2->Px();
1125 Double_t py2 = trk2->Py();
1126 Double_t pz2 = trk2->Pz();
1127 Double_t E2 = sqrt(px2*px2+py2*py2+pz2*pz2+mpiPDG*mpiPDG);
1129 Double_t mass_lam = sqrt(pow(Epr1+E2,2)-pow(px1+px2,2)-pow(py1+py2,2)-pow(pz1+pz2,2));
1130 Double_t dlam = mass_lam-mlamPDG;
1131 if(fabs(dlam)<fabs(minmass)){
1139 if(islam) minmass += mlamPDG;
Double_t fCombinedPIDThreshold
PID strategy.
Double_t * fWeight_p0
Number of bins for mixing weight should be proton x k0s.
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODTrack *trkpid, AliAODVertex *vtx)
Double_t fProdV0MassRejLambda
K0s mass selection used before object creation.
Double_t fProdV0EtaMin
V0 daughter Minimum TPC cluster pT used before object creation.
Double_t GetMixingWeight(Double_t dphi, Double_t deta, Double_t pt_pr, Double_t pt_k0s)
Bool_t IsSelectedKaonID(AliAODTrack *trk)
Bool_t IsSelectedProtonID(AliAODTrack *trk)
Double_t GetSigma(Int_t idet) const
Double_t fProdV0DaughterTPCClusterMin
V0 Daughter pT min used before object creation.
Double_t fProdTrackTPCNclsRatioMin
Min. Number of TPC PID cluster.
Int_t fProdTrackTPCNclsPIDMin
Primary vertex.
Double_t fBzkG
Flag to check if we use on-the-fly v0.
void SetNVars(Int_t nVars)
AliRDHFCutsLctopK0sfromAODtracks & operator=(const AliRDHFCutsLctopK0sfromAODtracks &source)
Double_t fProdRoughPtMin
Mass cut for Lc used before object creation.
Double_t fProdV0RapMax
Minimum rapidity of cascade.
AliRDHFCuts & operator=(const AliRDHFCuts &source)
Int_t fNWeightingK0sBinLimits
Double_t * fWeightingK0sBins
Number of bins for k0s.
virtual ~AliRDHFCutsLctopK0sfromAODtracks()
Double_t fProdV0DaughterEtaRange
Max DCA between V0 daughters used before object creation.
Double_t fProdV0MassTolK0s
Flag to Reject tracks with shared clusters.
Bool_t SingleV0Cuts(AliAODv0 *v0, AliAODVertex *vert)
Double_t InvMassLctoK0sP() const
Double_t GetProtonProbabilityTPCTOF(AliAODTrack *trk)
Double_t fProdV0CosPointingAngleToPrimVtxMin
Minimum K0s pT used before object creation.
Double_t fProdRoughMassTol
Maximum rapidity of cascade.
Double_t fProdV0PtMin
photon mass rejection used before object creation
AliPIDCombined * GetPidCombined() const
Double_t fPrimVert[3]
B field.
Double_t fMaxPtCand
minimum pt of the candidate
Double_t CalculateLcCosPAXY(AliAODRecoDecayHF *obj)
AliESDtrackCuts * fTrackCuts
quality cuts on the daughter tracks
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
Bool_t fUseOnTheFlyV0
Threshold used in IsSelectedCombinedPID.
Bool_t IsDaughterSelected(AliAODTrack *track, const AliESDVertex *primary, AliESDtrackCuts *cuts) const
AliAODTrack * GetBachelor() const
AliAODVertex * GetOwnPrimaryVtx() const
Double_t fProdV0DcaDaughtersMax
V0 pointing angle used before object creation.
Double_t fProdV0RapMin
Maximum eta of cascade.
virtual Int_t IsSelectedPID(AliAODRecoDecayHF *obj)
Int_t MakeRawPid(AliAODTrack *track, Int_t specie)
AliPIDResponse * GetPidResponse() const
Bool_t SelectWithRoughCutsWS(AliAODTrack *vka, AliAODTrack *trk1)
Float_t * fCutsRD
fnVars*fnPtBins
Bool_t fProdUseAODFilterBit
Min. Number of TPC PID cluster.
Double_t fProdV0DaughterPtMin
V0Daughter eta range used before object creation.
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
Double_t DecayLengthXY() const
void SetVarNames(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Bool_t * fVarsForOpt
number of cut vars to be optimized for candidates
Double_t fProdV0EtaMax
Minimum eta of cascade.
Double_t * fWeightingProtonBins
Number of bins for proton.
Bool_t SingleKaonCuts(AliAODTrack *trk, AliAODVertex *vtx)
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
AliRDHFCutsLctopK0sfromAODtracks(const char *name="CutsLctopK0s")
Int_t fNWeightingProtonBinLimits
pT cut for Lc used before object creation
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
Bool_t TagV0(AliAODTrack *etrk, AliAODEvent *evt, Int_t ntrk, Double_t &minmass)
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
void SetMixingWeights(Int_t nbinpr, Double_t *bins_pr, Int_t nbink0s, Double_t *bins_k0s, Double_t *p0val, Double_t *p1val, Double_t *p2val, Double_t *p3val)
Bool_t SelectWithRoughCuts(AliAODv0 *v0, AliAODTrack *trk1)
Bool_t TagV0SameSign(AliAODTrack *etrk, AliAODEvent *evt, Int_t ntrk, Double_t &minmass)
EPIDStrategy fPIDStrategy
Int_t IsSelectedCombinedPID(AliAODRecoDecayHF *obj)
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Int_t PtBin(Double_t pt) const
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Bool_t fProdRejectTrackWithShared
AOD filter Bit used before object creation.
Double_t fMinPtCand
outcome of PID selection
void SetPidResponse(AliPIDResponse *pidResp)
Double_t fProdV0MassRejPhoton
lambda mass rejection used before object creation
Int_t fProdAODFilterBit
Flag for AOD filter Bit used before object creation.