25 #include <TDatabasePDG.h> 26 #include <Riostream.h> 30 #include "AliAODTrack.h" 31 #include "AliESDtrack.h" 32 #include "AliAODPid.h" 33 #include "AliTPCPIDResponse.h" 34 #include "AliAODVertex.h" 35 #include "AliKFVertex.h" 36 #include "AliKFParticle.h" 52 fUsed0MeasMinusExpCut(0),
53 fMaxd0MeasMinusExp(0x0),
54 fUseSpecialCuts(kFALSE),
59 fPtMaxSpecialCuts(9999.),
60 fmaxPtrackForPID(9999),
62 fnSpecies(AliPID::kSPECIES),
74 TString varNames[11]={
"inv. mass [GeV]",
85 Bool_t isUpperCut[11]={kTRUE,
109 Float_t limits[2]={0,999999999.};
115 for (
Int_t i = 0; i<AliPID::kSPECIES; i++) {
155 if(&source ==
this)
return *
this;
222 AliFatal(Form(
"Wrong number of pt bins: it has to be %d, exiting",
fnPtBins));
249 AliFatal(Form(
"Wrong number of pt bins: it has to be %d\n",
fnPtBins));
267 printf(
"AliRDHFCutsD0toKpi::GetCutsVarsForOpt: wrong number of variables\n");
275 AliAODVertex *origownvtx=0x0;
288 if(TMath::Abs(pdgdaughters[0])==211) {
296 vars[iter]=dd->GetDCA();
300 if(TMath::Abs(pdgdaughters[0])==211) {
308 if(TMath::Abs(pdgdaughters[0])==321) {
309 vars[iter]=dd->PtProng(0);
312 vars[iter]=dd->PtProng(1);
317 if(TMath::Abs(pdgdaughters[0])==211) {
318 vars[iter]=dd->PtProng(0);
321 vars[iter]=dd->PtProng(1);
326 if(TMath::Abs(pdgdaughters[0])==321) {
327 vars[iter]=dd->Getd0Prong(0);
330 vars[iter]=dd->Getd0Prong(1);
335 if(TMath::Abs(pdgdaughters[0])==211) {
336 vars[iter]=dd->Getd0Prong(0);
339 vars[iter]=dd->Getd0Prong(1);
375 AliFatal(Form(
"Wrong number of pt bins for D imp par cut: it has to be %d\n",
fnPtBins));
378 AliFatal(Form(
"Wrong number of pt bins for D imp par cut: it has to be %d\n",
fnPtBins));
382 cout<<
"Cut matrix not inizialized. Exit..."<<endl;
388 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
401 Int_t returnvaluePID=3;
402 Int_t returnvalueCuts=3;
411 AliAODVertex *origownvtx=0x0;
430 Int_t okD0=0,okD0bar=0;
441 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
474 if (returnvalueCuts!=0) {
475 if (okD0) returnvalueCuts=1;
476 if (okD0bar) returnvalueCuts=2;
477 if (okD0 && okD0bar) returnvalueCuts=3;
482 for(
Int_t ipr=0; ipr<2; ipr++) {
486 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
487 if(ipr==0) dd0max=normdd0;
488 else if(TMath::Abs(normdd0)>TMath::Abs(dd0max)) dd0max=normdd0;
520 if(!returnvalueCuts)
return 0;
530 if(!returnvaluePID)
return 0;
533 if(!returnvaluePID)
return 0;
539 if(!returnvalueComb)
return 0;
548 return returnvalueComb;
557 AliAODTrack *track0 = (AliAODTrack*)d->GetDaughter(0);
558 AliAODTrack *track1 = (AliAODTrack*)d->GetDaughter(1);
560 if(!track0 || !track1) {
561 cout<<
"one or two D0 daughters missing!"<<endl;
566 Int_t returnvalueCuts=3;
569 AliKFParticle::SetField(aod->GetMagneticField());
571 Int_t okD0=0,okD0bar=0;
576 AliKFParticle negPiKF(*track1,-211);
577 AliKFParticle negKKF(*track1,-321);
578 AliKFParticle posPiKF(*track0,211);
579 AliKFParticle posKKF(*track0,321);
583 AliKFParticle d0c(negKKF,posPiKF);
584 AliKFParticle ad0c(posKKF,negPiKF);
588 AliAODVertex *vtx1 = aod->GetPrimaryVertex();
589 AliKFVertex primVtx(*vtx1);
590 AliKFVertex aprimVtx(*vtx1);
592 if(primVtx.GetNContributors()<=0) okD0 = 0;
593 if(aprimVtx.GetNContributors()<=0) okD0bar = 0;
594 if(!okD0 && !okD0bar) returnvalueCuts=0;
618 if(track0->GetUsedForPrimVtxFit()) {
623 if(track1->GetUsedForPrimVtxFit()) {
631 if(primVtx.GetNContributors()<=0) okD0 = 0;
632 if(aprimVtx.GetNContributors()<=0) okD0bar = 0;
633 if(!okD0 && !okD0bar) returnvalueCuts=0;
639 Double_t impactPi = posPiKF.GetDistanceFromVertexXY(primVtx);
640 Double_t aimpactPi = negPiKF.GetDistanceFromVertexXY(aprimVtx);
641 Double_t impactKa = negKKF.GetDistanceFromVertexXY(primVtx);
642 Double_t aimpactKa = posKKF.GetDistanceFromVertexXY(aprimVtx);
646 Double_t prodParam = impactPi*impactKa;
647 Double_t aprodParam = aimpactPi*aimpactKa;
651 TVector3 mom(d0c.GetPx(),d0c.GetPy(),d0c.GetPz());
652 TVector3 fline(d0c.GetX()-primVtx.GetX(),
653 d0c.GetY()-primVtx.GetY(),
654 d0c.GetZ()-primVtx.GetZ());
658 TVector3 amom(ad0c.GetPx(),ad0c.GetPy(),ad0c.GetPz());
659 TVector3 afline(ad0c.GetX()-aprimVtx.GetX(),
660 ad0c.GetY()-aprimVtx.GetY(),
661 ad0c.GetZ()-aprimVtx.GetZ());
666 negKKF.TransportToParticle(d0c);
667 posPiKF.TransportToParticle(d0c);
668 posKKF.TransportToParticle(ad0c);
669 negPiKF.TransportToParticle(ad0c);
687 Double_t massvtx = TDatabasePDG::Instance()->GetParticle(421)->Mass();
689 massp[0] = TDatabasePDG::Instance()->GetParticle(321)->Mass();
690 massp[1] = TDatabasePDG::Instance()->GetParticle(211)->Mass();
691 Double_t pStar = TMath::Sqrt(TMath::Power(massvtx*massvtx-massp[0]*massp[0]-massp[1]*massp[1],2.)
692 -4.*massp[0]*massp[0]*massp[1]*massp[1])/(2.*massvtx);
696 Double_t d0E = TMath::Sqrt(massvtx*massvtx + d0P*d0P);
699 TVector3 momPi(pxPi,pyPi,pzPi);
700 TVector3 momTot(d0Px,d0Py,d0Pz);
701 Double_t q1 = momPi.Dot(momTot)/momTot.Mag();
702 Double_t cts = (q1/gamma-beta*TMath::Sqrt(pStar*pStar+massp[1]*massp[1]))/pStar;
706 Double_t ad0E = TMath::Sqrt(massvtx*massvtx + ad0P*ad0P);
709 TVector3 amomPi(apxPi,apyPi,apzPi);
710 TVector3 amomTot(ad0Px,ad0Py,ad0Pz);
711 Double_t aq1 = amomPi.Dot(amomTot)/amomTot.Mag();
712 Double_t acts = (aq1/agamma-abeta*TMath::Sqrt(pStar*pStar+massp[1]*massp[1]))/pStar;
715 d0c.SetProductionVertex(primVtx);
716 ad0c.SetProductionVertex(aprimVtx);
717 negKKF.SetProductionVertex(d0c);
718 posPiKF.SetProductionVertex(d0c);
719 posKKF.SetProductionVertex(ad0c);
720 negPiKF.SetProductionVertex(ad0c);
721 d0c.TransportToProductionVertex();
722 ad0c.TransportToProductionVertex();
725 Double_t decayLengthD0 = d0c.GetDecayLength();
726 Double_t adecayLengthD0 = ad0c.GetDecayLength();
729 if(d0c.GetNDF() > 0 && d0c.GetChi2() >= 0) {
730 chi2D0 = d0c.GetChi2()/d0c.GetNDF();
734 if(ad0c.GetNDF() > 0 && ad0c.GetChi2() >= 0) {
735 achi2D0 = ad0c.GetChi2()/ad0c.GetNDF();
742 if(ptbin < 0) okD0 = 0;
743 if(aptbin < 0) okD0bar = 0;
744 if(!okD0 && !okD0bar) returnvalueCuts=0;
748 if(!okD0 && !okD0bar) returnvalueCuts=0;
757 if(!okD0 && !okD0bar) returnvalueCuts=0;
762 if(!okD0 && !okD0bar) returnvalueCuts=0;
766 if(!okD0 && !okD0bar) returnvalueCuts=0;
770 if(!okD0 && !okD0bar) returnvalueCuts=0;
774 if(!okD0 && !okD0bar) returnvalueCuts=0;
778 if(!okD0 && !okD0bar) returnvalueCuts=0;
782 if(!okD0 && !okD0bar) returnvalueCuts=0;
786 if(!okD0 && !okD0bar) returnvalueCuts=0;
788 if(returnvalueCuts!=0) {
789 if(okD0) returnvalueCuts=1;
790 if(okD0bar) returnvalueCuts=2;
791 if(okD0 && okD0bar) returnvalueCuts=3;
794 return returnvalueCuts;
811 AliDebug(2,Form(
"pt of D0 = %f (> 5), cutting at |y| < 0.8\n",pt));
812 if (TMath::Abs(y) > 0.8){
817 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
818 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
819 AliDebug(2,Form(
"pt of D0 = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
820 if (y < minFiducialY || y > maxFiducialY){
841 Int_t isD0D0barPID[2]={1,2};
842 Int_t combinedPID[2][2];
854 Bool_t checkPIDInfo[2]={kTRUE,kTRUE};
857 AliAODTrack *aodtrack1=(AliAODTrack*)d->GetDaughter(0);
858 AliAODTrack *aodtrack2=(AliAODTrack*)d->GetDaughter(1);
859 Short_t relativeSign = aodtrack1->Charge() * aodtrack2->Charge();
860 for(
Int_t daught=0;daught<2;daught++){
862 AliAODTrack *aodtrack=(AliAODTrack*)d->GetDaughter(daught);
866 checkPIDInfo[daught]=kFALSE;
878 combinedPID[daught][1]=0;
887 if(combinedPID[daught][0]<=-1&&combinedPID[daught][1]<=-1){
891 else if(combinedPID[daught][0]==2&&combinedPID[daught][1]>=1){
892 if((relativeSign == -1 && aodtrack->Charge() == -1) || (relativeSign == 1 && daught == 1)) isD0D0barPID[1]=0;
893 else isD0D0barPID[0]=0;
900 else if(combinedPID[daught][0]>=1||combinedPID[daught][1]<=-1){
901 if((relativeSign == -1 && aodtrack->Charge() == -1) || (relativeSign == 1 && daught == 1)) isD0D0barPID[1]=0;
902 else isD0D0barPID[0]=0;
904 else if(combinedPID[daught][0]<=-1||combinedPID[daught][1]>=1){
905 if((relativeSign == -1 && aodtrack->Charge() == -1) || (relativeSign == 1 && daught == 1)) isD0D0barPID[0]=0;
906 else isD0D0barPID[1]=0;
922 combinedPID[daught][1]=0;
932 combinedPID[daught][1]=1;
934 combinedPID[daught][1]=-1;
943 if(!checkPIDInfo[0] && !checkPIDInfo[1]) {
950 if(combinedPID[0][0]<=-1&&combinedPID[1][0]<=-1){
957 if(combinedPID[0][0]<=0&&combinedPID[1][0]<=0){
966 return isD0D0barPID[0]+isD0D0barPID[1];
1004 Int_t isD0D0barPID[2]={1,2};
1005 Double_t nsigmaTPCpi=-1., nsigmaTPCK=-1.;
1007 Int_t hasPID[2]={2,2};
1008 Int_t isKaonPionTOF[2][2],isKaonPionTPC[2][2];
1009 Int_t combinedPID[2][2];
1016 isKaonPionTOF[0][0]=0;
1017 isKaonPionTOF[0][1]=0;
1018 isKaonPionTOF[1][0]=0;
1019 isKaonPionTOF[1][1]=0;
1021 isKaonPionTPC[0][0]=0;
1022 isKaonPionTPC[0][1]=0;
1023 isKaonPionTPC[1][0]=0;
1024 isKaonPionTPC[1][1]=0;
1026 combinedPID[0][0]=0;
1027 combinedPID[0][1]=0;
1028 combinedPID[1][0]=0;
1029 combinedPID[1][1]=0;
1031 for(
Int_t daught=0;daught<2;daught++){
1036 AliAODTrack *aodtrack=(AliAODTrack*)d->GetDaughter(daught);
1038 if(!(aodtrack->GetStatus()&AliESDtrack::kTPCrefit)){
1042 if(!(aodtrack->GetStatus()&AliESDtrack::kITSrefit)){
1047 AliAODPid *pid=aodtrack->GetDetPid();
1058 if (!(aodtrack->GetStatus()&AliESDtrack::kTPCpid )){
1063 static AliTPCPIDResponse theTPCpid;
1064 AliAODPid *pidObj = aodtrack->GetDetPid();
1065 Double_t ptProng=pidObj->GetTPCmomentum();
1066 nsigmaTPCpi = theTPCpid.GetNumberOfSigmas(ptProng,(
Float_t)pid->GetTPCsignal(),(
Int_t)aodtrack->GetTPCClusterMap().CountBits(),AliPID::kPion);
1067 nsigmaTPCK = theTPCpid.GetNumberOfSigmas(ptProng,(
Float_t)pid->GetTPCsignal(),(
Int_t)aodtrack->GetTPCClusterMap().CountBits(),AliPID::kKaon);
1070 if(TMath::Abs(nsigmaTPCK)<2.)isKaonPionTPC[daught][0]=1;
1071 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1072 if(TMath::Abs(nsigmaTPCpi)<2.)isKaonPionTPC[daught][1]=1;
1073 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1076 else if(ptProng<.8){
1077 if(TMath::Abs(nsigmaTPCK)<1.)isKaonPionTPC[daught][0]=1;
1078 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1079 if(TMath::Abs(nsigmaTPCpi)<1.)isKaonPionTPC[daught][1]=1;
1080 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1084 if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1086 if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1091 if(!((aodtrack->GetStatus()&AliESDtrack::kTOFpid)&&(aodtrack->GetStatus()&AliESDtrack::kTOFout)&&(aodtrack->GetStatus()&AliESDtrack::kTIME))){
1096 tofSig=pid->GetTOFsignal();
1097 pid->GetIntegratedTimes(times);
1098 if((tofSig-times[3])>5.*160.)
return 0;
1099 if(TMath::Abs(tofSig-times[3])>3.*160.){
1100 isKaonPionTOF[daught][0]=-1;
1104 isKaonPionTOF[daught][0]=1;
1111 combinedPID[daught][0]=isKaonPionTOF[daught][0]+isKaonPionTPC[daught][0];
1112 combinedPID[daught][1]=isKaonPionTOF[daught][1]+isKaonPionTPC[daught][1];
1116 if(combinedPID[daught][0]<=-1&&combinedPID[daught][1]<=-1){
1120 else if(combinedPID[daught][0]==2&&combinedPID[daught][1]>=1){
1121 if(aodtrack->Charge()==-1)isD0D0barPID[1]=0;
1122 else isD0D0barPID[0]=0;
1124 else if(combinedPID[daught][0]==1&&combinedPID[daught][1]>=1){
1128 else if(combinedPID[daught][0]>=1||combinedPID[daught][1]<=-1){
1129 if(aodtrack->Charge()==-1)isD0D0barPID[1]=0;
1130 else isD0D0barPID[0]=0;
1132 else if(combinedPID[daught][0]<=-1||combinedPID[daught][1]>=1){
1133 if(aodtrack->Charge()==-1)isD0D0barPID[0]=0;
1134 else isD0D0barPID[1]=0;
1141 isKaonPionTPC[daught][0]=0;
1142 isKaonPionTPC[daught][1]=0;
1143 AliAODPid *pidObj = aodtrack->GetDetPid();
1144 Double_t ptProng=pidObj->GetTPCmomentum();
1147 if(TMath::Abs(nsigmaTPCK)<3.)isKaonPionTPC[daught][0]=1;
1148 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1149 if(TMath::Abs(nsigmaTPCpi)<3.)isKaonPionTPC[daught][1]=1;
1150 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1153 else if(ptProng<.8){
1154 if(TMath::Abs(nsigmaTPCK)<2.)isKaonPionTPC[daught][0]=1;
1155 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1156 if(TMath::Abs(nsigmaTPCpi)<3.)isKaonPionTPC[daught][1]=1;
1157 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1160 if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1161 if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1168 if(combinedPID[0][0]<=-1&&combinedPID[1][0]<=-1){
1172 else if(hasPID[0]==0&&hasPID[1]==0){
1178 combinedPID[0][0]=0;
1179 combinedPID[0][1]=0;
1180 combinedPID[1][0]=0;
1181 combinedPID[1][1]=0;
1183 combinedPID[0][0]=isKaonPionTOF[0][0]+isKaonPionTPC[0][0];
1184 combinedPID[0][1]=isKaonPionTOF[0][1]+isKaonPionTPC[0][1];
1185 combinedPID[1][0]=isKaonPionTOF[1][0]+isKaonPionTPC[1][0];
1186 combinedPID[1][1]=isKaonPionTOF[1][1]+isKaonPionTPC[1][1];
1188 if(combinedPID[0][0]<=0&&combinedPID[1][0]<=0){
1195 return isD0D0barPID[0]+isD0D0barPID[1];
1200 Int_t selectionvalCand,
1201 Int_t selectionvalPID)
const 1206 if(selectionvalTrack==0)
return 0;
1210 switch(selectionvalPID) {
1215 returnvalue=((selectionvalCand==1 || selectionvalCand==3) ? 1 : 0);
1218 returnvalue=((selectionvalCand==2 || selectionvalCand==3) ? 2 : 0);
1221 returnvalue=selectionvalCand;
1241 Float_t normDecLengthCut=1.,decLengthCut=TMath::Min(d->P()*0.0066+0.01,0.06), normd0Cut=0.5;
1245 Int_t returnvalue=3;
1246 for(
Int_t i=0;i<2;i++){
1249 if(d->
DecayLength2()<decLengthCut*decLengthCut)
return 0;
1264 TString varNamesKF[11]={
"inv. mass [GeV]",
1275 Bool_t isUpperCutKF[11]={kTRUE,
1288 Bool_t forOpt[11]={kFALSE,
1311 SetName(
"D0toKpiCutsStandard");
1312 SetTitle(
"Standard Cuts for D0 analysis");
1323 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1324 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1325 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1326 esdTrackCuts->SetRequireITSRefit(kTRUE);
1328 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1329 esdTrackCuts->SetMinDCAToVertexXY(0.);
1330 esdTrackCuts->SetEtaRange(-0.8,0.8);
1331 esdTrackCuts->SetPtRange(0.3,1.e10);
1334 delete esdTrackCuts;
1339 const Int_t nvars=11;
1360 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.400,350.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,0.},
1361 {0.400,350.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,0.},
1362 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.80,0.,0.},
1363 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.85,0.,0.},
1364 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1365 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1366 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1367 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1368 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-7000.*1E-8,0.85,0.,0.},
1369 {0.400,300.*1E-4,0.9,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.85,0.,0.},
1370 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,10000.*1E-8,0.85,0.,0.},
1371 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,999999.*1E-8,0.85,0.,0.},
1372 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,999999.*1E-8,0.85,0.,0.},
1373 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,999999.*1E-8,0.85,0.,0.}};
1377 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1380 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1381 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1385 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1389 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1390 delete [] cutsMatrixTransposeStand;
1391 cutsMatrixTransposeStand=NULL;
1397 const Int_t nlims=2;
1433 SetName(
"D0toKpiCuts");
1434 SetTitle(
"Cuts for D0 analysis in 2010-data pp 7 TeV vs multiplicity");
1439 AliESDtrackCuts* esdTrackCuts=
new AliESDtrackCuts();
1440 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1442 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1443 esdTrackCuts->SetRequireITSRefit(kTRUE);
1444 esdTrackCuts->SetEtaRange(-0.8,0.8);
1445 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1446 AliESDtrackCuts::kAny);
1448 esdTrackCuts->SetMinDCAToVertexXY(0.);
1449 esdTrackCuts->SetPtRange(0.3,1.e10);
1452 delete esdTrackCuts;
1458 const Int_t nvars=11;
1461 ptbins=
new Float_t[nptbins+1];
1481 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.400,350.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,3.},
1482 {0.400,350.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,3.},
1483 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-30000.*1E-8,0.80,0.,4.},
1484 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-20000.*1E-8,0.85,0.,4.},
1485 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.85,0.,4.},
1486 {0.400,300.*1E-4,0.75,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.875,0.,0.},
1487 {0.400,300.*1E-4,0.75,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.875,0.,0.},
1488 {0.400,400.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1489 {0.400,400.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1490 {0.400,0.06,0.85,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00001,0.85,0.,0.},
1491 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1492 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1493 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1494 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.}};
1498 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1501 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1502 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1506 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1507 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1508 delete [] cutsMatrixTransposeStand;
1521 if(pidflag) cout<<
"PID is used"<<endl;
1522 else cout<<
"PID is not used"<<endl;
1526 const Int_t nlims=2;
1568 SetName(
"D0toKpiCutsStandard");
1569 SetTitle(
"Standard Cuts for D0 analysis in pp2011 at 2.76TeV run");
1574 AliESDtrackCuts* esdTrackCuts=
new AliESDtrackCuts();
1575 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1577 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1578 esdTrackCuts->SetRequireITSRefit(kTRUE);
1579 esdTrackCuts->SetEtaRange(-0.8,0.8);
1580 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1581 AliESDtrackCuts::kAny);
1583 esdTrackCuts->SetMinDCAToVertexXY(0.);
1584 esdTrackCuts->SetPtRange(0.3,1.e10);
1586 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1587 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1588 esdTrackCuts->SetMinDCAToVertexXYPtDep(
"0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
1591 delete esdTrackCuts;
1594 const Int_t nvars=11;
1614 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.400,0.04,0.75,0.3,0.3,1000.*1E-4,1000.*1E-4,0.,0.85,0.,0.},
1615 {0.400,0.04,0.75,0.3,0.3,1000.*1E-4,1000.*1E-4,0.,0.85,0.,0.},
1616 {0.400,0.03,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.8,0.,0.},
1617 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.0003,0.9,0.,0.},
1618 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.0002,0.9,0.,0.},
1619 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00015,0.9,0.,0.},
1620 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.0001,0.9,0.,0.},
1621 {0.400,0.09,0.85,0.7,0.7,1000.*1E-4,1000.*1E-4,0.,0.85,0.,0.},
1622 {0.400,0.06,0.85,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00001,0.85,0.,0.},
1623 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1624 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1625 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1626 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.}};
1630 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1632 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1633 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1636 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1637 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1638 delete [] cutsMatrixTransposeStand;
1643 const Int_t nlims=2;
1694 SetName(
"D0toKpiCutsStandard");
1695 SetTitle(
"Standard Cuts for D0 analysis in PbPb2010 run");
1712 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1713 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1714 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1715 esdTrackCuts->SetRequireITSRefit(kTRUE);
1717 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1718 esdTrackCuts->SetMinDCAToVertexXY(0.);
1719 esdTrackCuts->SetEtaRange(-0.8,0.8);
1720 esdTrackCuts->SetPtRange(0.7,1.e10);
1722 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1723 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1724 esdTrackCuts->SetMinDCAToVertexXYPtDep(
"0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
1727 delete esdTrackCuts;
1735 const Int_t nvars=11;
1756 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.400,400.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.85,0.99,2.},
1757 {0.400,400.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.9,0.99,2.},
1758 {0.400,400.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-43000.*1E-8,0.85,0.995,8.},
1759 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-45000.*1E-8,0.95,0.998,7.},
1760 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-36000.*1E-8,0.95,0.998,5.},
1761 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-27000.*1E-8,0.95,0.998,5.},
1762 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-21000.*1E-8,0.92,0.998,5.},
1763 {0.400,270.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-14000.*1E-8,0.88,0.998,5.},
1764 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.85,0.998,5.},
1765 {0.400,350.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,-1000.*1E-8,0.83,0.998,8.},
1766 {0.400,400.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,-1000.*1E-8,0.82,0.995,6.},
1767 {0.400,400.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,-1000.*1E-8,0.81,0.995,6.},
1768 {0.400,400.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,-1000.*1E-8,0.8,0.99,2.}};
1772 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1775 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1776 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1780 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1783 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1784 delete [] cutsMatrixTransposeStand;
1785 cutsMatrixTransposeStand=NULL;
1791 const Int_t nlims=2;
1824 SetName(
"D0toKpiCutsStandard");
1825 SetTitle(
"Standard Cuts for D0 analysis in PbPb2010 run, for peripheral events");
1842 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1843 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1844 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1845 esdTrackCuts->SetRequireITSRefit(kTRUE);
1847 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1848 esdTrackCuts->SetMinDCAToVertexXY(0.);
1849 esdTrackCuts->SetEtaRange(-0.8,0.8);
1850 esdTrackCuts->SetPtRange(0.5,1.e10);
1852 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1853 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1854 esdTrackCuts->SetMinDCAToVertexXYPtDep(
"0.0025*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
1857 delete esdTrackCuts;
1865 const Int_t nvars=11;
1886 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.400,400.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-20000.*1E-8,0.7,0.993,2.},
1887 {0.400,400.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.85,0.993,2.},
1888 {0.400,400.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-40000.*1E-8,0.85,0.995,6.},
1889 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-40000.*1E-8,0.95,0.991,5.},
1890 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-36000.*1E-8,0.95,0.993,5.},
1891 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-27000.*1E-8,0.95,0.995,5.},
1892 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-21000.*1E-8,0.92,0.998,5.},
1893 {0.400,270.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-14000.*1E-8,0.88,0.998,5.},
1894 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.85,0.995,5.},
1895 {0.400,350.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.83,0.995,4.},
1896 {0.400,400.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.82,0.995,4.},
1897 {0.400,400.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.81,0.995,4.},
1898 {0.400,400.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.8,0.995,4.}};
1902 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1905 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1906 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1910 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1913 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1914 delete [] cutsMatrixTransposeStand;
1915 cutsMatrixTransposeStand=NULL;
1921 const Int_t nlims=2;
1993 Int_t returnvalue = 0;
1995 Int_t isPosKaon = 0, isNegKaon = 0, isPosPion = 0, isNegPion = 0;
1999 Bool_t checkPIDInfo[2] = {kTRUE, kTRUE};
2000 AliAODTrack *aodtrack[2] = {(AliAODTrack*)d->GetDaughter(0), (AliAODTrack*)d->GetDaughter(1)};
2002 if ((aodtrack[0]->Charge()*aodtrack[1]->Charge()) != -1) {
2005 Double_t momentumpositive=0., momentumnegative=0.;
2006 for (
Int_t daught = 0; daught < 2; daught++) {
2009 if (aodtrack[daught]->Charge() == -1) {
2010 momentumnegative = aodtrack[daught]->P();
2012 if (aodtrack[daught]->Charge() == +1) {
2013 momentumpositive = aodtrack[daught]->P();
2016 checkPIDInfo[daught] = kFALSE;
2024 if (!checkPIDInfo[0] && !checkPIDInfo[1]) {
2056 GetBinContent(
fPidHF->
GetPidCombined()->GetPriorDistribution(AliPID::kKaon)->FindBin(momentumnegative)))) {
2060 GetBinContent(
fPidHF->
GetPidCombined()->GetPriorDistribution(AliPID::kKaon)->FindBin(momentumpositive)))) {
2089 if (isNegKaon && isPosKaon) {
2092 }
else if (isNegKaon && isPosPion) {
2094 }
else if (isPosKaon && isNegPion) {
2100 if (aodtrack[0]->Charge() == -1) {
2103 if (aodtrack[0]->Charge() == 1) {
2108 if (aodtrack[1]->Charge() == -1) {
2111 if (aodtrack[1]->Charge() == 1) {
2117 if (isD0 && isD0bar) {
2120 if (isD0 && !isD0bar) {
2123 if (!isD0 && isD0bar) {
2126 if (!isD0 && !isD0bar) {
2134 if (isPosKaon && isNegKaon) {
2136 }
else if (isNegKaon && isPosPion) {
2138 }
else if (isPosKaon && isNegPion) {
2140 }
else if (isPosPion && isNegPion) {
2142 }
else {returnvalue = 0;}
2154 AliAODTrack *aodtrack[2] = {(AliAODTrack*)d->GetDaughter(0), (AliAODTrack*)d->GetDaughter(1)};
2155 if ((aodtrack[0]->Charge() * aodtrack[1]->Charge()) != -1) {
2158 for (
Int_t daught = 0; daught < 2; daught++) {
2166 if (aodtrack[daught]->Charge() == +1) {
2170 if (aodtrack[daught]->Charge() == -1) {
2182 printf(
"Cuts on d0meas-d0exp:\n");
2189 printf(
"Cuts on d0:\n");
Double_t NormalizedDecayLengthXY() const
Int_t fIsSelectedCuts
fix the daughter track references
Double_t fPtMaxSpecialCuts
void SetAsym(Bool_t asym)
Int_t fnSpecies
switch for Bayesian
Int_t fWhyRejection
PID for heavy flavours manager.
void SetUseDefaultPID(Bool_t defPID)
UInt_t fUseImpParDCut
transverse momentum below which the strong PID is applied
Bool_t IsSignalMC(AliAODRecoDecay *d, AliAODEvent *aod, Int_t pdg) const
Bool_t IsTOFPiKexcluded(AliAODTrack *track, Double_t nsigmaK)
general method to perform PID using raw signals
Bool_t fUseKF
flag to switch on/off the default pid
void Getd0MeasMinusExpProng(Int_t ip, Double_t magf, Double_t &d0diff, Double_t &errd0diff) const
Bool_t fUseMCVertex
flag to switch on the removal of duaghters from the primary vertex computation
void SetSigmaForTPC(Double_t *sigma)
Double_t GetSigma(Int_t idet) const
void SetMaxVtxZ(Float_t z=1e6)
Bool_t SetMCPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod) const
Bool_t fCombPID
max momentum for applying PID
Bool_t fRemoveDaughtersFromPrimary
void SetUseCentrality(Int_t flag=1)
virtual void PrintAll() const
virtual Int_t IsSelectedCombPID(AliAODRecoDecayHF *d)
Double_t NormalizedDecayLength2() const
Double_t ImpParXY() const
Double_t fmaxPtrackForPID
transverse momentum below which the special cuts are applied
void SetPCompatTOF(Double_t pTOF)
virtual void SetStandardCutsPP2011_276TeV()
void SetNVars(Int_t nVars)
virtual void SetStandardCutsPP2010()
Double_t CosPointingAngleXY() const
Double_t fMaxRapidityCand
minimum pt of the candidate
void EnableSemiCentralTrigger()
Double_t InvMassD0() const
AliRDHFCutsD0toKpi(const char *name="CutsD0toKpi")
Double_t Prodd0d0() const
AliRDHFCuts & operator=(const AliRDHFCuts &source)
Bool_t fLowPt
flag to switch on/off special cuts
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
void SetSelectCandTrackSPDFirst(Bool_t flag, Double_t ptmax)
Flag and pt-maximum to check if the candidate daughters fulfill the kFirst criteria.
void SetPidHF(AliAODPidHF *pidObj)
see enum below
AliAODPidHF * GetPidHF() const
Bool_t HasBadDaughters() const
Bool_t fDefaultPID
flag to switch on/off different pid for low pt D0
UInt_t fUsed0MeasMinusExpCut
void SetMinVtxContr(Int_t contr=1)
void Setd0MeasMinusExpCut(UInt_t nPtBins, Float_t *cutval)
Bool_t fUseTrackSelectionWithFilterBits
flag to reject kink daughters
void SetCuts(Int_t nVars, Int_t nPtBins, Float_t **cutsRD)
void SetUseKF(Bool_t useKF)
void ResetMaskAndEnableMBTrigger()
void SetMaximumPtSpecialCuts(Double_t pt)
Double_t * fWeightsNegative
void SetMinCentrality(Float_t minCentrality=0.)
AliPIDCombined * GetPidCombined() const
Double_t CosThetaStarD0bar() const
angle of K
Double_t fMaxPtCand
minimum pt of the candidate
Bool_t CheckStatus(AliAODTrack *track, TString detectors) const
AliAODVertex * GetOwnPrimaryVtx() const
Bool_t fKeepSignalMC
max rapidity of candidate (if !=-999 overrides IsInFiducialAcceptance)
Float_t * fMaxImpParD
switch for cut on D0 ImpParXY; =0 –> not used, >0 value represents array size (it has to coincide wi...
virtual void CalculateBayesianWeights(AliAODRecoDecayHF *d)
Int_t fIsSelectedPID
outcome of cuts selection
void SetImpParDCut(UInt_t nPtBins, Float_t *cutval)
Double_t InvMassD0bar() const
Int_t MakeRawPid(AliAODTrack *track, Int_t specie)
AliPIDResponse * GetPidResponse() const
void SetSigma(Double_t *sigma)
void SetSigmaForTOFCompat(Double_t sigma)
Float_t * fCutsRD
fnVars*fnPtBins
Int_t IsSelectedKF(AliAODRecoDecayHF2Prong *d, AliAODEvent *aod) const
Double_t DecayLength2() const
kinematics & topology
void SetSigmaForTPCCompat(Double_t sigma)
void SetMaxCentrality(Float_t maxCentrality=100.)
AliRDHFCutsD0toKpi & operator=(const AliRDHFCutsD0toKpi &source)
Int_t IsSelectedSpecialCuts(AliAODRecoDecayHF *d) const
Int_t CombineSelectionLevels(Int_t selectionvalTrack, Int_t selectionvalCand, Int_t selectionvalPID) const
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
virtual ~AliRDHFCutsD0toKpi()
void SetVarNames(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Float_t * fMaxd0MeasMinusExp
switch for cut on d0meas-d0exp; =0 –> not used, >0 value represents array size (it has to coincide w...
Bool_t * fVarsForOpt
number of cut vars to be optimized for candidates
Bool_t AreDaughtersSelected(AliAODRecoDecayHF *rd, const AliAODEvent *aod=0x0) const
void EnableCentralTrigger()
Bool_t IsPionRaw(AliAODTrack *track, TString detector) const
void SetUsePID(Bool_t flag=kTRUE)
Double_t Normalizedd0Prong(Int_t ip) const
virtual void PrintAll() const
virtual Int_t IsSelectedPID(AliAODRecoDecayHF *rd)
void SetFlatd0MeasMinusExpCut(Float_t value)
void CleanOwnPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod, AliAODVertex *origownvtx) const
void SetRemoveDaughtersFromPrim(Bool_t removeDaughtersPrim)
void SetUseSpecialCuts(Bool_t useSpecialCuts)
void SetOldPid(Bool_t oldPid)
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
virtual void SetStandardCutsPP2010vsMult()
void SetLowPt(Bool_t lowpt, Double_t ptlow=2.)
void SetFlatImpParDCut(Float_t value)
Double_t * fWeightsPositive
number of species (used only for array declaration)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
Int_t fBayesianCondition
Switch for which Bayesian PID strategy to use.
void SetMatch(Int_t match)
void AddTrackCuts(const AliESDtrackCuts *cuts)
void SetPLimit(Double_t *plim, Int_t npLim)
void SetMinPtCandidate(Double_t ptCand=-1.)
Double_t CosPointingAngle() const
Int_t fnPtBins
cuts on the candidate
void SetStandardCutsPbPb2010Peripherals()
void SetCompat(Bool_t comp)
Double_t CosThetaStarD0() const
void SetTriggerClass(TString trclass0, TString trclass1="")
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Bool_t RecalcOwnPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod) const
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
Int_t PtBin(Double_t pt) const
void SetOptPileup(Int_t opt=0)
virtual void SetStandardCutsPbPb2010()
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Double_t fPtLowPID
flag to switch on/off D0 selection via KF
Double_t fMinPtCand
outcome of PID selection
Int_t IsSelectedPIDdefault(AliAODRecoDecayHF *rd)
virtual void SetStandardCutsPbPb2011()