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"
50 fUseSpecialCuts(kFALSE),
55 fPtMaxSpecialCuts(9999.),
56 fmaxPtrackForPID(9999),
58 fnSpecies(AliPID::kSPECIES),
70 TString varNames[11]={
"inv. mass [GeV]",
81 Bool_t isUpperCut[11]={kTRUE,
105 Float_t limits[2]={0,999999999.};
111 for (
Int_t i = 0; i<AliPID::kSPECIES; i++) {
120 fUseSpecialCuts(source.fUseSpecialCuts),
121 fLowPt(source.fLowPt),
122 fDefaultPID(source.fDefaultPID),
123 fUseKF(source.fUseKF),
124 fPtLowPID(source.fPtLowPID),
125 fPtMaxSpecialCuts(source.fPtMaxSpecialCuts),
126 fmaxPtrackForPID(source.fmaxPtrackForPID),
127 fCombPID(source.fCombPID),
128 fnSpecies(source.fnSpecies),
129 fWeightsPositive(source.fWeightsPositive),
130 fWeightsNegative(source.fWeightsNegative),
131 fProbThreshold(source.fProbThreshold),
132 fBayesianStrategy(source.fBayesianStrategy),
133 fBayesianCondition(source.fBayesianCondition)
146 if(&source ==
this)
return *
this;
191 printf(
"AliRDHFCutsD0toKpi::GetCutsVarsForOpt: wrong number of variables\n");
199 AliAODVertex *origownvtx=0x0;
212 if(TMath::Abs(pdgdaughters[0])==211) {
220 vars[iter]=dd->GetDCA();
224 if(TMath::Abs(pdgdaughters[0])==211) {
232 if(TMath::Abs(pdgdaughters[0])==321) {
233 vars[iter]=dd->PtProng(0);
236 vars[iter]=dd->PtProng(1);
241 if(TMath::Abs(pdgdaughters[0])==211) {
242 vars[iter]=dd->PtProng(0);
245 vars[iter]=dd->PtProng(1);
250 if(TMath::Abs(pdgdaughters[0])==321) {
251 vars[iter]=dd->Getd0Prong(0);
254 vars[iter]=dd->Getd0Prong(1);
259 if(TMath::Abs(pdgdaughters[0])==211) {
260 vars[iter]=dd->Getd0Prong(0);
263 vars[iter]=dd->Getd0Prong(1);
299 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
305 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
318 Int_t returnvaluePID=3;
319 Int_t returnvalueCuts=3;
328 AliAODVertex *origownvtx=0x0;
347 Int_t okD0=0,okD0bar=0;
358 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
391 if (returnvalueCuts!=0) {
392 if (okD0) returnvalueCuts=1;
393 if (okD0bar) returnvalueCuts=2;
394 if (okD0 && okD0bar) returnvalueCuts=3;
411 if(!returnvalueCuts)
return 0;
421 if(!returnvaluePID)
return 0;
424 if(!returnvaluePID)
return 0;
430 if(!returnvalueComb)
return 0;
439 return returnvalueComb;
449 AliAODTrack *track0 = (AliAODTrack*)d->GetDaughter(0);
450 AliAODTrack *track1 = (AliAODTrack*)d->GetDaughter(1);
452 if(!track0 || !track1) {
453 cout<<
"one or two D0 daughters missing!"<<endl;
458 Int_t returnvalueCuts=3;
461 AliKFParticle::SetField(aod->GetMagneticField());
463 Int_t okD0=0,okD0bar=0;
468 AliKFParticle negPiKF(*track1,-211);
469 AliKFParticle negKKF(*track1,-321);
470 AliKFParticle posPiKF(*track0,211);
471 AliKFParticle posKKF(*track0,321);
475 AliKFParticle d0c(negKKF,posPiKF);
476 AliKFParticle ad0c(posKKF,negPiKF);
480 AliAODVertex *vtx1 = aod->GetPrimaryVertex();
481 AliKFVertex primVtx(*vtx1);
482 AliKFVertex aprimVtx(*vtx1);
484 if(primVtx.GetNContributors()<=0) okD0 = 0;
485 if(aprimVtx.GetNContributors()<=0) okD0bar = 0;
486 if(!okD0 && !okD0bar) returnvalueCuts=0;
510 if(track0->GetUsedForPrimVtxFit()) {
515 if(track1->GetUsedForPrimVtxFit()) {
523 if(primVtx.GetNContributors()<=0) okD0 = 0;
524 if(aprimVtx.GetNContributors()<=0) okD0bar = 0;
525 if(!okD0 && !okD0bar) returnvalueCuts=0;
531 Double_t impactPi = posPiKF.GetDistanceFromVertexXY(primVtx);
532 Double_t aimpactPi = negPiKF.GetDistanceFromVertexXY(aprimVtx);
533 Double_t impactKa = negKKF.GetDistanceFromVertexXY(primVtx);
534 Double_t aimpactKa = posKKF.GetDistanceFromVertexXY(aprimVtx);
538 Double_t prodParam = impactPi*impactKa;
539 Double_t aprodParam = aimpactPi*aimpactKa;
543 TVector3 mom(d0c.GetPx(),d0c.GetPy(),d0c.GetPz());
544 TVector3 fline(d0c.GetX()-primVtx.GetX(),
545 d0c.GetY()-primVtx.GetY(),
546 d0c.GetZ()-primVtx.GetZ());
550 TVector3 amom(ad0c.GetPx(),ad0c.GetPy(),ad0c.GetPz());
551 TVector3 afline(ad0c.GetX()-aprimVtx.GetX(),
552 ad0c.GetY()-aprimVtx.GetY(),
553 ad0c.GetZ()-aprimVtx.GetZ());
558 negKKF.TransportToParticle(d0c);
559 posPiKF.TransportToParticle(d0c);
560 posKKF.TransportToParticle(ad0c);
561 negPiKF.TransportToParticle(ad0c);
579 Double_t massvtx = TDatabasePDG::Instance()->GetParticle(421)->Mass();
581 massp[0] = TDatabasePDG::Instance()->GetParticle(321)->Mass();
582 massp[1] = TDatabasePDG::Instance()->GetParticle(211)->Mass();
583 Double_t pStar = TMath::Sqrt(TMath::Power(massvtx*massvtx-massp[0]*massp[0]-massp[1]*massp[1],2.)
584 -4.*massp[0]*massp[0]*massp[1]*massp[1])/(2.*massvtx);
588 Double_t d0E = TMath::Sqrt(massvtx*massvtx + d0P*d0P);
591 TVector3 momPi(pxPi,pyPi,pzPi);
592 TVector3 momTot(d0Px,d0Py,d0Pz);
593 Double_t q1 = momPi.Dot(momTot)/momTot.Mag();
594 Double_t cts = (q1/gamma-beta*TMath::Sqrt(pStar*pStar+massp[1]*massp[1]))/pStar;
598 Double_t ad0E = TMath::Sqrt(massvtx*massvtx + ad0P*ad0P);
601 TVector3 amomPi(apxPi,apyPi,apzPi);
602 TVector3 amomTot(ad0Px,ad0Py,ad0Pz);
603 Double_t aq1 = amomPi.Dot(amomTot)/amomTot.Mag();
604 Double_t acts = (aq1/agamma-abeta*TMath::Sqrt(pStar*pStar+massp[1]*massp[1]))/pStar;
607 d0c.SetProductionVertex(primVtx);
608 ad0c.SetProductionVertex(aprimVtx);
609 negKKF.SetProductionVertex(d0c);
610 posPiKF.SetProductionVertex(d0c);
611 posKKF.SetProductionVertex(ad0c);
612 negPiKF.SetProductionVertex(ad0c);
613 d0c.TransportToProductionVertex();
614 ad0c.TransportToProductionVertex();
617 Double_t decayLengthD0 = d0c.GetDecayLength();
618 Double_t adecayLengthD0 = ad0c.GetDecayLength();
621 if(d0c.GetNDF() > 0 && d0c.GetChi2() >= 0) {
622 chi2D0 = d0c.GetChi2()/d0c.GetNDF();
626 if(ad0c.GetNDF() > 0 && ad0c.GetChi2() >= 0) {
627 achi2D0 = ad0c.GetChi2()/ad0c.GetNDF();
634 if(ptbin < 0) okD0 = 0;
635 if(aptbin < 0) okD0bar = 0;
636 if(!okD0 && !okD0bar) returnvalueCuts=0;
640 if(!okD0 && !okD0bar) returnvalueCuts=0;
649 if(!okD0 && !okD0bar) returnvalueCuts=0;
654 if(!okD0 && !okD0bar) returnvalueCuts=0;
658 if(!okD0 && !okD0bar) returnvalueCuts=0;
662 if(!okD0 && !okD0bar) returnvalueCuts=0;
666 if(!okD0 && !okD0bar) returnvalueCuts=0;
670 if(!okD0 && !okD0bar) returnvalueCuts=0;
674 if(!okD0 && !okD0bar) returnvalueCuts=0;
678 if(!okD0 && !okD0bar) returnvalueCuts=0;
680 if(returnvalueCuts!=0) {
681 if(okD0) returnvalueCuts=1;
682 if(okD0bar) returnvalueCuts=2;
683 if(okD0 && okD0bar) returnvalueCuts=3;
686 return returnvalueCuts;
703 AliDebug(2,Form(
"pt of D0 = %f (> 5), cutting at |y| < 0.8\n",pt));
704 if (TMath::Abs(y) > 0.8){
709 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
710 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
711 AliDebug(2,Form(
"pt of D0 = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
712 if (y < minFiducialY || y > maxFiducialY){
733 Int_t isD0D0barPID[2]={1,2};
734 Int_t combinedPID[2][2];
746 Bool_t checkPIDInfo[2]={kTRUE,kTRUE};
749 AliAODTrack *aodtrack1=(AliAODTrack*)d->GetDaughter(0);
750 AliAODTrack *aodtrack2=(AliAODTrack*)d->GetDaughter(1);
751 Short_t relativeSign = aodtrack1->Charge() * aodtrack2->Charge();
752 for(
Int_t daught=0;daught<2;daught++){
754 AliAODTrack *aodtrack=(AliAODTrack*)d->GetDaughter(daught);
758 checkPIDInfo[daught]=kFALSE;
770 combinedPID[daught][1]=0;
779 if(combinedPID[daught][0]<=-1&&combinedPID[daught][1]<=-1){
783 else if(combinedPID[daught][0]==2&&combinedPID[daught][1]>=1){
784 if((relativeSign == -1 && aodtrack->Charge() == -1) || (relativeSign == 1 && daught == 1)) isD0D0barPID[1]=0;
785 else isD0D0barPID[0]=0;
792 else if(combinedPID[daught][0]>=1||combinedPID[daught][1]<=-1){
793 if((relativeSign == -1 && aodtrack->Charge() == -1) || (relativeSign == 1 && daught == 1)) isD0D0barPID[1]=0;
794 else isD0D0barPID[0]=0;
796 else if(combinedPID[daught][0]<=-1||combinedPID[daught][1]>=1){
797 if((relativeSign == -1 && aodtrack->Charge() == -1) || (relativeSign == 1 && daught == 1)) isD0D0barPID[0]=0;
798 else isD0D0barPID[1]=0;
814 combinedPID[daught][1]=0;
824 combinedPID[daught][1]=1;
826 combinedPID[daught][1]=-1;
835 if(!checkPIDInfo[0] && !checkPIDInfo[1]) {
842 if(combinedPID[0][0]<=-1&&combinedPID[1][0]<=-1){
849 if(combinedPID[0][0]<=0&&combinedPID[1][0]<=0){
858 return isD0D0barPID[0]+isD0D0barPID[1];
896 Int_t isD0D0barPID[2]={1,2};
897 Double_t nsigmaTPCpi=-1., nsigmaTPCK=-1.;
899 Int_t hasPID[2]={2,2};
900 Int_t isKaonPionTOF[2][2],isKaonPionTPC[2][2];
901 Int_t combinedPID[2][2];
908 isKaonPionTOF[0][0]=0;
909 isKaonPionTOF[0][1]=0;
910 isKaonPionTOF[1][0]=0;
911 isKaonPionTOF[1][1]=0;
913 isKaonPionTPC[0][0]=0;
914 isKaonPionTPC[0][1]=0;
915 isKaonPionTPC[1][0]=0;
916 isKaonPionTPC[1][1]=0;
923 for(
Int_t daught=0;daught<2;daught++){
928 AliAODTrack *aodtrack=(AliAODTrack*)d->GetDaughter(daught);
930 if(!(aodtrack->GetStatus()&AliESDtrack::kTPCrefit)){
934 if(!(aodtrack->GetStatus()&AliESDtrack::kITSrefit)){
939 AliAODPid *pid=aodtrack->GetDetPid();
950 if (!(aodtrack->GetStatus()&AliESDtrack::kTPCpid )){
955 static AliTPCPIDResponse theTPCpid;
956 AliAODPid *pidObj = aodtrack->GetDetPid();
957 Double_t ptProng=pidObj->GetTPCmomentum();
958 nsigmaTPCpi = theTPCpid.GetNumberOfSigmas(ptProng,(
Float_t)pid->GetTPCsignal(),(
Int_t)aodtrack->GetTPCClusterMap().CountBits(),AliPID::kPion);
959 nsigmaTPCK = theTPCpid.GetNumberOfSigmas(ptProng,(
Float_t)pid->GetTPCsignal(),(
Int_t)aodtrack->GetTPCClusterMap().CountBits(),AliPID::kKaon);
962 if(TMath::Abs(nsigmaTPCK)<2.)isKaonPionTPC[daught][0]=1;
963 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
964 if(TMath::Abs(nsigmaTPCpi)<2.)isKaonPionTPC[daught][1]=1;
965 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
969 if(TMath::Abs(nsigmaTPCK)<1.)isKaonPionTPC[daught][0]=1;
970 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
971 if(TMath::Abs(nsigmaTPCpi)<1.)isKaonPionTPC[daught][1]=1;
972 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
976 if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
978 if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
983 if(!((aodtrack->GetStatus()&AliESDtrack::kTOFpid)&&(aodtrack->GetStatus()&AliESDtrack::kTOFout)&&(aodtrack->GetStatus()&AliESDtrack::kTIME))){
988 tofSig=pid->GetTOFsignal();
989 pid->GetIntegratedTimes(times);
990 if((tofSig-times[3])>5.*160.)
return 0;
991 if(TMath::Abs(tofSig-times[3])>3.*160.){
992 isKaonPionTOF[daught][0]=-1;
996 isKaonPionTOF[daught][0]=1;
1003 combinedPID[daught][0]=isKaonPionTOF[daught][0]+isKaonPionTPC[daught][0];
1004 combinedPID[daught][1]=isKaonPionTOF[daught][1]+isKaonPionTPC[daught][1];
1008 if(combinedPID[daught][0]<=-1&&combinedPID[daught][1]<=-1){
1012 else if(combinedPID[daught][0]==2&&combinedPID[daught][1]>=1){
1013 if(aodtrack->Charge()==-1)isD0D0barPID[1]=0;
1014 else isD0D0barPID[0]=0;
1016 else if(combinedPID[daught][0]==1&&combinedPID[daught][1]>=1){
1020 else if(combinedPID[daught][0]>=1||combinedPID[daught][1]<=-1){
1021 if(aodtrack->Charge()==-1)isD0D0barPID[1]=0;
1022 else isD0D0barPID[0]=0;
1024 else if(combinedPID[daught][0]<=-1||combinedPID[daught][1]>=1){
1025 if(aodtrack->Charge()==-1)isD0D0barPID[0]=0;
1026 else isD0D0barPID[1]=0;
1033 isKaonPionTPC[daught][0]=0;
1034 isKaonPionTPC[daught][1]=0;
1035 AliAODPid *pidObj = aodtrack->GetDetPid();
1036 Double_t ptProng=pidObj->GetTPCmomentum();
1039 if(TMath::Abs(nsigmaTPCK)<3.)isKaonPionTPC[daught][0]=1;
1040 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1041 if(TMath::Abs(nsigmaTPCpi)<3.)isKaonPionTPC[daught][1]=1;
1042 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1045 else if(ptProng<.8){
1046 if(TMath::Abs(nsigmaTPCK)<2.)isKaonPionTPC[daught][0]=1;
1047 else if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1048 if(TMath::Abs(nsigmaTPCpi)<3.)isKaonPionTPC[daught][1]=1;
1049 else if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1052 if(TMath::Abs(nsigmaTPCK)>3.)isKaonPionTPC[daught][0]=-1;
1053 if(TMath::Abs(nsigmaTPCpi)>3.)isKaonPionTPC[daught][1]=-1;
1060 if(combinedPID[0][0]<=-1&&combinedPID[1][0]<=-1){
1064 else if(hasPID[0]==0&&hasPID[1]==0){
1070 combinedPID[0][0]=0;
1071 combinedPID[0][1]=0;
1072 combinedPID[1][0]=0;
1073 combinedPID[1][1]=0;
1075 combinedPID[0][0]=isKaonPionTOF[0][0]+isKaonPionTPC[0][0];
1076 combinedPID[0][1]=isKaonPionTOF[0][1]+isKaonPionTPC[0][1];
1077 combinedPID[1][0]=isKaonPionTOF[1][0]+isKaonPionTPC[1][0];
1078 combinedPID[1][1]=isKaonPionTOF[1][1]+isKaonPionTPC[1][1];
1080 if(combinedPID[0][0]<=0&&combinedPID[1][0]<=0){
1087 return isD0D0barPID[0]+isD0D0barPID[1];
1092 Int_t selectionvalCand,
1093 Int_t selectionvalPID)
const
1098 if(selectionvalTrack==0)
return 0;
1102 switch(selectionvalPID) {
1107 returnvalue=((selectionvalCand==1 || selectionvalCand==3) ? 1 : 0);
1110 returnvalue=((selectionvalCand==2 || selectionvalCand==3) ? 2 : 0);
1113 returnvalue=selectionvalCand;
1133 Float_t normDecLengthCut=1.,decLengthCut=TMath::Min(d->P()*0.0066+0.01,0.06), normd0Cut=0.5;
1137 Int_t returnvalue=3;
1138 for(
Int_t i=0;i<2;i++){
1141 if(d->
DecayLength2()<decLengthCut*decLengthCut)
return 0;
1156 TString varNamesKF[11]={
"inv. mass [GeV]",
1167 Bool_t isUpperCutKF[11]={kTRUE,
1180 Bool_t forOpt[11]={kFALSE,
1203 SetName(
"D0toKpiCutsStandard");
1204 SetTitle(
"Standard Cuts for D0 analysis");
1215 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1216 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1217 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1218 esdTrackCuts->SetRequireITSRefit(kTRUE);
1220 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1221 esdTrackCuts->SetMinDCAToVertexXY(0.);
1222 esdTrackCuts->SetEtaRange(-0.8,0.8);
1223 esdTrackCuts->SetPtRange(0.3,1.e10);
1226 delete esdTrackCuts;
1231 const Int_t nvars=11;
1252 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.},
1253 {0.400,350.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,0.},
1254 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.80,0.,0.},
1255 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.85,0.,0.},
1256 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1257 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1258 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1259 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1260 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-7000.*1E-8,0.85,0.,0.},
1261 {0.400,300.*1E-4,0.9,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.85,0.,0.},
1262 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,10000.*1E-8,0.85,0.,0.},
1263 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,999999.*1E-8,0.85,0.,0.},
1264 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,999999.*1E-8,0.85,0.,0.},
1265 {0.400,300.*1E-4,1.0,0.7,0.7,1000.*1E-4,1000.*1E-4,999999.*1E-8,0.85,0.,0.}};
1269 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1272 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1273 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1277 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1281 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1282 delete [] cutsMatrixTransposeStand;
1283 cutsMatrixTransposeStand=NULL;
1289 const Int_t nlims=2;
1325 SetName(
"D0toKpiCuts");
1326 SetTitle(
"Cuts for D0 analysis in 2010-data pp 7 TeV vs multiplicity");
1331 AliESDtrackCuts* esdTrackCuts=
new AliESDtrackCuts();
1332 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1334 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1335 esdTrackCuts->SetRequireITSRefit(kTRUE);
1336 esdTrackCuts->SetEtaRange(-0.8,0.8);
1337 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1338 AliESDtrackCuts::kAny);
1340 esdTrackCuts->SetMinDCAToVertexXY(0.);
1341 esdTrackCuts->SetPtRange(0.3,1.e10);
1344 delete esdTrackCuts;
1350 const Int_t nvars=11;
1353 ptbins=
new Float_t[nptbins+1];
1373 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.},
1374 {0.400,350.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,3.},
1375 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-30000.*1E-8,0.80,0.,4.},
1376 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-20000.*1E-8,0.85,0.,4.},
1377 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.85,0.,4.},
1378 {0.400,300.*1E-4,0.75,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.875,0.,0.},
1379 {0.400,300.*1E-4,0.75,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.875,0.,0.},
1380 {0.400,400.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1381 {0.400,400.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85,0.,0.},
1382 {0.400,0.06,0.85,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00001,0.85,0.,0.},
1383 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1384 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1385 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1386 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.}};
1390 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1393 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1394 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1398 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1399 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1400 delete [] cutsMatrixTransposeStand;
1413 if(pidflag) cout<<
"PID is used"<<endl;
1414 else cout<<
"PID is not used"<<endl;
1418 const Int_t nlims=2;
1460 SetName(
"D0toKpiCutsStandard");
1461 SetTitle(
"Standard Cuts for D0 analysis in pp2011 at 2.76TeV run");
1466 AliESDtrackCuts* esdTrackCuts=
new AliESDtrackCuts();
1467 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1469 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1470 esdTrackCuts->SetRequireITSRefit(kTRUE);
1471 esdTrackCuts->SetEtaRange(-0.8,0.8);
1472 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1473 AliESDtrackCuts::kAny);
1475 esdTrackCuts->SetMinDCAToVertexXY(0.);
1476 esdTrackCuts->SetPtRange(0.3,1.e10);
1478 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1479 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1480 esdTrackCuts->SetMinDCAToVertexXYPtDep(
"0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
1483 delete esdTrackCuts;
1486 const Int_t nvars=11;
1506 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.},
1507 {0.400,0.04,0.75,0.3,0.3,1000.*1E-4,1000.*1E-4,0.,0.85,0.,0.},
1508 {0.400,0.03,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.8,0.,0.},
1509 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.0003,0.9,0.,0.},
1510 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.0002,0.9,0.,0.},
1511 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00015,0.9,0.,0.},
1512 {0.400,0.03,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.0001,0.9,0.,0.},
1513 {0.400,0.09,0.85,0.7,0.7,1000.*1E-4,1000.*1E-4,0.,0.85,0.,0.},
1514 {0.400,0.06,0.85,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00001,0.85,0.,0.},
1515 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1516 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1517 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.},
1518 {0.400,0.09,1.0,0.7,0.7,9999.,9999.,0.,0.,0.,0.}};
1522 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1524 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1525 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1528 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1529 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1530 delete [] cutsMatrixTransposeStand;
1535 const Int_t nlims=2;
1586 SetName(
"D0toKpiCutsStandard");
1587 SetTitle(
"Standard Cuts for D0 analysis in PbPb2010 run");
1604 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1605 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1606 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1607 esdTrackCuts->SetRequireITSRefit(kTRUE);
1609 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1610 esdTrackCuts->SetMinDCAToVertexXY(0.);
1611 esdTrackCuts->SetEtaRange(-0.8,0.8);
1612 esdTrackCuts->SetPtRange(0.7,1.e10);
1614 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1615 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1616 esdTrackCuts->SetMinDCAToVertexXYPtDep(
"0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
1619 delete esdTrackCuts;
1627 const Int_t nvars=11;
1648 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.},
1649 {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.},
1650 {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.},
1651 {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.},
1652 {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.},
1653 {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.},
1654 {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.},
1655 {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.},
1656 {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.},
1657 {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.},
1658 {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.},
1659 {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.},
1660 {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.}};
1664 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1667 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1668 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1672 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1675 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1676 delete [] cutsMatrixTransposeStand;
1677 cutsMatrixTransposeStand=NULL;
1683 const Int_t nlims=2;
1716 SetName(
"D0toKpiCutsStandard");
1717 SetTitle(
"Standard Cuts for D0 analysis in PbPb2010 run, for peripheral events");
1734 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1735 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1736 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1737 esdTrackCuts->SetRequireITSRefit(kTRUE);
1739 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1740 esdTrackCuts->SetMinDCAToVertexXY(0.);
1741 esdTrackCuts->SetEtaRange(-0.8,0.8);
1742 esdTrackCuts->SetPtRange(0.5,1.e10);
1744 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1745 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1746 esdTrackCuts->SetMinDCAToVertexXYPtDep(
"0.0025*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
1749 delete esdTrackCuts;
1757 const Int_t nvars=11;
1778 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.},
1779 {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.},
1780 {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.},
1781 {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.},
1782 {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.},
1783 {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.},
1784 {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.},
1785 {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.},
1786 {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.},
1787 {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.},
1788 {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.},
1789 {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.},
1790 {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.}};
1794 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1797 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1798 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1802 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1805 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1806 delete [] cutsMatrixTransposeStand;
1807 cutsMatrixTransposeStand=NULL;
1813 const Int_t nlims=2;
1885 Int_t returnvalue = 0;
1887 Int_t isPosKaon = 0, isNegKaon = 0, isPosPion = 0, isNegPion = 0;
1891 Bool_t checkPIDInfo[2] = {kTRUE, kTRUE};
1892 AliAODTrack *aodtrack[2] = {(AliAODTrack*)d->GetDaughter(0), (AliAODTrack*)d->GetDaughter(1)};
1894 if ((aodtrack[0]->Charge()*aodtrack[1]->Charge()) != -1) {
1897 Double_t momentumpositive=0., momentumnegative=0.;
1898 for (
Int_t daught = 0; daught < 2; daught++) {
1901 if (aodtrack[daught]->Charge() == -1) {
1902 momentumnegative = aodtrack[daught]->P();
1904 if (aodtrack[daught]->Charge() == +1) {
1905 momentumpositive = aodtrack[daught]->P();
1908 checkPIDInfo[daught] = kFALSE;
1916 if (!checkPIDInfo[0] && !checkPIDInfo[1]) {
1948 GetBinContent(
fPidHF->
GetPidCombined()->GetPriorDistribution(AliPID::kKaon)->FindBin(momentumnegative)))) {
1952 GetBinContent(
fPidHF->
GetPidCombined()->GetPriorDistribution(AliPID::kKaon)->FindBin(momentumpositive)))) {
1981 if (isNegKaon && isPosKaon) {
1984 }
else if (isNegKaon && isPosPion) {
1986 }
else if (isPosKaon && isNegPion) {
1992 if (aodtrack[0]->Charge() == -1) {
1995 if (aodtrack[0]->Charge() == 1) {
2000 if (aodtrack[1]->Charge() == -1) {
2003 if (aodtrack[1]->Charge() == 1) {
2009 if (isD0 && isD0bar) {
2012 if (isD0 && !isD0bar) {
2015 if (!isD0 && isD0bar) {
2018 if (!isD0 && !isD0bar) {
2026 if (isPosKaon && isNegKaon) {
2028 }
else if (isNegKaon && isPosPion) {
2030 }
else if (isPosKaon && isNegPion) {
2032 }
else if (isPosPion && isNegPion) {
2034 }
else {returnvalue = 0;}
2046 AliAODTrack *aodtrack[2] = {(AliAODTrack*)d->GetDaughter(0), (AliAODTrack*)d->GetDaughter(1)};
2047 if ((aodtrack[0]->Charge() * aodtrack[1]->Charge()) != -1) {
2050 for (
Int_t daught = 0; daught < 2; daught++) {
2058 if (aodtrack[daught]->Charge() == +1) {
2062 if (aodtrack[daught]->Charge() == -1) {
Double_t NormalizedDecayLengthXY() const
Int_t fIsSelectedCuts
fix the daughter track references
Double_t fPtMaxSpecialCuts
transverse momentum below which the strong PID is applied
void SetAsym(Bool_t asym)
Int_t fnSpecies
switch for Bayesian
Int_t fWhyRejection
PID for heavy flavours manager.
void SetUseDefaultPID(Bool_t defPID)
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
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 Int_t IsSelectedCombPID(AliAODRecoDecayHF *d)
Double_t NormalizedDecayLength2() 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
void SetMinVtxContr(Int_t contr=1)
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)
virtual void CalculateBayesianWeights(AliAODRecoDecayHF *d)
Int_t fIsSelectedPID
outcome of cuts selection
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)
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
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
virtual Int_t IsSelectedPID(AliAODRecoDecayHF *rd)
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.)
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
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()