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++) {
124 fUseImpParDCut(source.fUseImpParDCut),
126 fUsed0MeasMinusExpCut(source.fUsed0MeasMinusExpCut),
127 fMaxd0MeasMinusExp(0x0),
128 fUseSpecialCuts(source.fUseSpecialCuts),
129 fLowPt(source.fLowPt),
130 fDefaultPID(source.fDefaultPID),
131 fUseKF(source.fUseKF),
132 fPtLowPID(source.fPtLowPID),
133 fPtMaxSpecialCuts(source.fPtMaxSpecialCuts),
134 fmaxPtrackForPID(source.fmaxPtrackForPID),
135 fCombPID(source.fCombPID),
136 fnSpecies(source.fnSpecies),
137 fWeightsPositive(source.fWeightsPositive),
138 fWeightsNegative(source.fWeightsNegative),
139 fProbThreshold(source.fProbThreshold),
140 fBayesianStrategy(source.fBayesianStrategy),
141 fBayesianCondition(source.fBayesianCondition)
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 matrice 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 wit...
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)
ClassImp(AliAnalysisTaskDeltaPt) AliAnalysisTaskDeltaPt
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 wi...
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()