28 #include <TDatabasePDG.h> 29 #include <Riostream.h> 34 #include "AliAODTrack.h" 35 #include "AliESDtrack.h" 36 #include "AliAODPid.h" 37 #include "AliTPCPIDResponse.h" 38 #include "AliAODVertex.h" 39 #include "AliESDVertex.h" 56 fUseTPCtrackCutsOnD0Daughters(kTRUE),
57 fUseTPCtrackCutsOnSoftPion(kFALSE)
75 "inv. mass half width of D* [GeV]",
76 "half width of (M_Kpipi-M_D0) [GeV]",
77 "PtMin of pi_s [GeV/c]",
78 "PtMax of pi_s [GeV/c]",
79 "theta, angle between the pi_s and decay plane of the D0 [rad]",
118 Float_t limits[2]={0,999999999.};
144 if(&source ==
this)
return *
this;
162 printf(
"AliRDHFCutsDStartoKpipi::GetCutsVarsForOpt: wrong number of variables\n");
169 AliAODTrack *softPi = (AliAODTrack*)dstarD0pi->
GetBachelor();
177 if(TMath::Abs(pdgdaughters[0])==211) {
185 vars[iter]=dd->GetDCA();
189 if(TMath::Abs(pdgdaughters[0])==211) {
197 if(TMath::Abs(pdgdaughters[0])==321) {
198 vars[iter]=dd->PtProng(0);
201 vars[iter]=dd->PtProng(1);
206 if(TMath::Abs(pdgdaughters[0])==211) {
207 vars[iter]=dd->PtProng(0);
210 vars[iter]=dd->PtProng(1);
215 if(TMath::Abs(pdgdaughters[0])==321) {
216 vars[iter]=dd->Getd0Prong(0);
219 vars[iter]=dd->Getd0Prong(1);
224 if(TMath::Abs(pdgdaughters[0])==211) {
225 vars[iter]=dd->Getd0Prong(0);
228 vars[iter]=dd->Getd0Prong(1);
249 vars[iter] = softPi->Pt();
253 vars[iter] = softPi->Pt();
280 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
286 cout<<
"AliAODRecoCascadeHF null"<<endl;
297 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
305 if(!(b->TestFilterMask(BIT(4))))
return 0;
309 Int_t returnvaluePID=3;
320 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
321 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
338 if((b->Charge()==+1 && returnvalue==2) || (b->Charge()==-1 && returnvalue==1))
return 0;
351 if(returnvaluePID!=3) returnvalue =0;
368 vAOD->GetCovarianceMatrix(cov);
369 const AliESDVertex vESD(pos,cov,100.,100);
389 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
396 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
409 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
413 AliAODVertex *origownvtx=0x0;
475 if (okD0) returnvalue=1;
476 if (okD0bar) returnvalue=2;
477 if (okD0 && okD0bar) returnvalue=3;
500 AliDebug(4,Form(
"pt of D* = %f (> 5), cutting at |y| < 0.8\n",pt));
501 if (TMath::Abs(y) > 0.8){
506 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
507 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
508 AliDebug(2,Form(
"pt of D* = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
509 if (y < minFiducialY || y > maxFiducialY){
526 cout<<
"AliAODRecoCascadeHF null"<<endl;
534 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
539 AliAODTrack *pos = (AliAODTrack*)dstar->
Get2Prong()->GetDaughter(0);
540 AliAODTrack *neg = (AliAODTrack*)dstar->
Get2Prong()->GetDaughter(1);
542 if (dstar->Charge()>0){
551 AliAODTrack *softPion = (AliAODTrack*) dstar->
GetBachelor();
571 Bool_t TPCon=TMath::Abs(2)>1e-4?kTRUE:kFALSE;
572 Bool_t TOFon=TMath::Abs(3)>1e-4?kTRUE:kFALSE;
596 isParticle = isTPC&&isTOF;
608 for (
Int_t i=0; i<5; i++) {
609 if (prob[i]>max) {k=i; max=prob[i];}
611 isParticle =
Bool_t(k==type);
614 if (match == 10 || match == 11) {
618 isParticle = checkTPC >= 0 && checkTOF >= 0 ? kTRUE : kFALSE;
620 isParticle = isParticle && checkTPC+checkTOF >= 1 ? kTRUE : kFALSE;
634 if (TPCok != -1 && TOFok != -1) {
636 isParticle = TMath::Sqrt(nSigmaTPC*nSigmaTPC + nSigmaTOF*nSigmaTOF) <= radius ? kTRUE : kFALSE;
641 isParticle = nSigmaTPC <= radius ? kTRUE : kFALSE;
644 isParticle = nSigmaTOF <= radius ? kTRUE : kFALSE;
661 SetName(
"DStartoD0piCutsStandard");
662 SetTitle(
"Standard Cuts for D* analysis");
671 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
672 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
673 esdTrackCuts->SetRequireTPCRefit(kTRUE);
674 esdTrackCuts->SetRequireITSRefit(kTRUE);
675 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
676 esdTrackCuts->SetMinDCAToVertexXY(0.);
677 esdTrackCuts->SetEtaRange(-0.8,0.8);
678 esdTrackCuts->SetPtRange(0.3,1.e10);
681 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
682 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
683 esdSoftPicuts->SetRequireTPCRefit(kFALSE);
684 esdSoftPicuts->SetRequireITSRefit(kFALSE);
685 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
686 AliESDtrackCuts::kAny);
687 esdSoftPicuts->SetPtRange(0.0,1.e10);
693 delete esdSoftPicuts;
698 const Int_t nvars=16;
718 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.7,220.*1E-4,0.7,0.21,0.21,500.*1E-4,500.*1E-4,-2000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,0.},
719 {0.7,220.*1E-4,0.7,0.21,0.21,500.*1E-4,500.*1E-4,-16000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,0.},
720 {0.7,400.*1E-4,0.8,0.7,0.7,400.*1E-4,400.*1E-4,-36000.*1E-8,0.82,0.3,0.1,0.05,100,0.5,-1.,0.},
721 {0.7,200.*1E-4,0.8,0.7,0.7,800.*1E-4,800.*1E-4,-16000.*1E-8,0.9,0.3,0.1,0.05,100,0.5,-1.,0.},
722 {0.7,500.*1E-4,0.8,1.0,1.0,420.*1E-4,560.*1E-4,-6500.*1E-8,0.9,0.3,0.1,0.05,100,0.5,-1.,0.},
723 {0.7,800.*1E-4,0.9,1.2,1.2,700.*1E-4,700.*1E-4,1000.*1E-8,0.9,0.3,0.1,0.05,100,0.5,-1.,0.},
724 {0.7,1000.*1E-4,1.0,1.0,1.0,800.*1E-4,800.*1E-4,50000.*1E-8,0.8,0.3,0.1,0.05,100,0.5,-1.,0.},
725 {0.7,1000.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,100000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
726 {0.7,1000.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,100000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
727 {0.7,1000.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,600000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
728 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
729 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
730 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.}};
735 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
738 for (
Int_t ivar = 0; ivar<nvars; ivar++){
739 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
743 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
745 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
746 delete [] cutsMatrixTransposeStand;
747 cutsMatrixTransposeStand=NULL;
753 Double_t priors[5]={0.01,0.001,0.3,0.3,0.3};
779 SetName(
"DStartoD0piCutsStandard");
780 SetTitle(
"Standard Cuts for D* analysis in PbPb 2010");
786 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
787 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
788 esdTrackCuts->SetRequireTPCRefit(kTRUE);
789 esdTrackCuts->SetRequireITSRefit(kTRUE);
790 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
791 esdTrackCuts->SetMinDCAToVertexXY(0.);
792 esdTrackCuts->SetEtaRange(-0.8,0.8);
793 esdTrackCuts->SetPtRange(0.3,1.e10);
796 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
797 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
798 esdSoftPicuts->SetRequireTPCRefit(kTRUE);
799 esdSoftPicuts->SetRequireITSRefit(kTRUE);
800 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
801 AliESDtrackCuts::kAny);
802 esdSoftPicuts->SetPtRange(0.25,5);
808 delete esdSoftPicuts;
813 const Int_t nvars=16;
833 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.7,220.*1E-4,0.7,0.21,0.21,500.*1E-4,500.*1E-4,-2000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,0.},
834 {0.7,220.*1E-4,0.7,0.21,0.21,500.*1E-4,500.*1E-4,-16000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,0.},
835 {0.7,400.*1E-4,0.8,0.7,0.7,800.*1E-4,800.*1E-4,-36000.*1E-8,0.82,0.3,0.1,0.05,100,0.5,-1.,0.},
836 {0.7,200.*1E-4,0.8,0.7,0.7,800.*1E-4,800.*1E-4,-16000.*1E-8,0.9,0.3,0.1,0.05,100,0.5,-1.,0.},
837 {0.7,500.*1E-4,0.8,1.0,1.0,420.*1E-4,560.*1E-4,-6500.*1E-8,0.9,0.3,0.1,0.05,100,0.5,-1.,0.},
838 {0.7,800.*1E-4,0.9,1.2,1.2,700.*1E-4,700.*1E-4,1000.*1E-8,0.9,0.3,0.1,0.05,100,0.5,-1.,0.},
839 {0.7,1000.*1E-4,1.0,1.0,1.0,800.*1E-4,800.*1E-4,50000.*1E-8,0.8,0.3,0.1,0.05,100,0.5,-1.,0.},
840 {0.7,1000.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,100000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
841 {0.7,1000.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,100000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
842 {0.7,1000.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,600000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
843 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
844 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.},
845 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,0.5,-1.,0.}};
850 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
853 for (
Int_t ivar = 0; ivar<nvars; ivar++){
854 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
858 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
860 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
861 delete [] cutsMatrixTransposeStand;
862 cutsMatrixTransposeStand=NULL;
868 Double_t priors[5]={0.01,0.001,0.3,0.3,0.3};
901 SetName(
"DStartoD0piCutsStandard2011");
902 SetTitle(
"Standard Cuts for D* analysis in PbPb 2011");
920 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
921 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
922 esdTrackCuts->SetRequireTPCRefit(kTRUE);
923 esdTrackCuts->SetRequireITSRefit(kTRUE);
924 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
925 esdTrackCuts->SetMinDCAToVertexXY(0.);
926 esdTrackCuts->SetEtaRange(-0.8,0.8);
927 esdTrackCuts->SetPtRange(0.3,1.e10);
929 esdTrackCuts->SetMaxDCAToVertexXY(1.);
930 esdTrackCuts->SetMaxDCAToVertexZ(1.);
934 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
935 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
936 esdSoftPicuts->SetRequireTPCRefit(kTRUE);
937 esdSoftPicuts->SetRequireITSRefit(kTRUE);
938 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
939 AliESDtrackCuts::kAny);
940 esdSoftPicuts->SetPtRange(0.1,10);
942 esdSoftPicuts->SetMaxDCAToVertexXY(1.);
943 esdSoftPicuts->SetMaxDCAToVertexZ(1.);
954 delete esdSoftPicuts;
959 const Int_t nvars=16;
980 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.032,220.*1E-4,0.9,0.5,0.5,500.*1E-4,500.*1E-4,-16000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,9.},
981 {0.032,350.*1E-4,0.9,0.5,0.5,800.*1E-4,800.*1E-4,-20000.*1E-8,0.96,0.3,0.15,0.05,100,0.5,0.99,10.},
982 {0.032,300.*1E-4,0.9,0.5,0.5,900.*1E-4,900.*1E-4,-42000.*1E-8,0.96,0.3,0.15,0.05,100,0.5,0.99,9.},
983 {0.036,300.*1E-4,0.8,0.8,0.8,900.*1E-4,900.*1E-4,-39000.*1E-8,0.99,0.3,0.15,0.05,100,0.5,0.998,8.},
984 {0.038,225.*1E-4,0.8,1.0,1.0,1000.*1E-4,1000.*1E-4,-30000.*1E-8,0.99,0.3,0.15,0.05,100,0.5,0.998,7.5},
985 {0.045,200.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,-23000.*1E-8,0.99,0.3,0.15,0.05,100,0.5,0.998,7.},
986 {0.045,210.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.982,0.3,0.15,0.05,100,0.5,0.998,6.4},
987 {0.050,230.*1E-4,1.0,1.0,1.0,1000.*1E-4,1000.*1E-4,-12700.*1E-8,0.98,0.3,0.15,0.05,100,0.5,0.998,6.4},
988 {0.060,200.*1E-4,1.0,0.9,0.9,1000.*1E-4,1000.*1E-4,-7500.*1E-8,0.98,0.3,0.15,0.05,100,0.5,0.998,4.7},
989 {0.060,200.*1E-4,1.0,0.9,0.9,1000.*1E-4,1000.*1E-4,-7500.*1E-8,0.97,0.3,0.15,0.05,100,1.0,0.998,4.7},
990 {0.074,200.*1E-4,1.0,0.5,0.5,1500.*1E-4,1500.*1E-4,-7500.*1E-8,0.95,0.3,0.15,0.05,100,1.0,0.998,3},
991 {0.074,210.*1E-4,1.0,0.5,0.5,1500.*1E-4,1500.*1E-4,-5000.*1E-8,0.95,0.3,0.15,0.05,100,1.0,0.998,2.},
992 {0.074,220.*1E-4,1.0,0.5,0.5,1500.*1E-4,1500.*1E-4,-5000.*1E-8,0.93,0.3,0.15,0.05,100,1.0,0.995,2.},
993 {0.074,400.*1E-4,1.0,0.5,0.5,2000.*1E-4,2000.*1E-4,40000.*1E-8,0.7,0.3,0.15,0.05,100,1.0,0.9,1.}};
998 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1001 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1002 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1006 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1008 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1009 delete [] cutsMatrixTransposeStand;
1010 cutsMatrixTransposeStand=NULL;
1051 SetName(
"DStartoD0piCutsStandard");
1052 SetTitle(
"Standard Cuts for D* analysis pp mult");
1063 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1064 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1065 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1066 esdTrackCuts->SetRequireITSRefit(kTRUE);
1067 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1068 esdTrackCuts->SetMinDCAToVertexXY(0.);
1069 esdTrackCuts->SetEtaRange(-0.8,0.8);
1070 esdTrackCuts->SetPtRange(0.3,1.e10);
1072 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1073 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1077 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
1078 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
1079 esdSoftPicuts->SetRequireTPCRefit(kFALSE);
1080 esdSoftPicuts->SetRequireITSRefit(kTRUE);
1081 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1082 AliESDtrackCuts::kAny);
1083 esdSoftPicuts->SetPtRange(0.08,1.e10);
1088 delete esdTrackCuts;
1090 delete esdSoftPicuts;
1095 const Int_t nvars=16;
1116 Float_t cutsMatrixD0toKpiStand[
nptbins][nvars]={{0.026,220.*1E-4,0.7,0.21,0.21,500.*1E-4,500.*1E-4,-2000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,0.},
1117 {0.039,300.*1E-4,0.7,0.21,0.21,500.*1E-4,500.*1E-4,-16000.*1E-8,0.85,0.3,0.1,0.05,100,0.5,-1.,0.},
1118 {0.022,400.*1E-4,0.8,0.7,0.7,800.*1E-4,800.*1E-4,-20000.*1E-8,0.8,0.3,0.3,0.05,100,0.5,-1.,0.},
1119 {0.032,350.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-13000.*1E-8,0.9,0.3,0.3,0.05,100,0.8,-1.,0.},
1120 {0.032,500.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.9,0.3,0.3,0.05,100,0.8,-1.,0.},
1121 {0.032,700.*1E-4,0.9,0.9,0.9,1000.*1E-4,1000.*1E-4,10000.*1E-8,0.9,0.3,0.3,0.05,100,1.0,-1.,0.},
1122 {0.036,1000.*1E-4,1.0,0.8,0.8,1000.*1E-4,1000.*1E-4,50000.*1E-8,0.9,0.3,0.3,0.05,100,1.0,-1.,0.},
1123 {0.036,1000.*1E-4,1.0,0.8,0.8,1000.*1E-4,1000.*1E-4,100000.*1E-8,0.7,0.3,0.3,0.05,100,1.0,-1.,0.},
1124 {0.036,1000.*1E-4,1.0,0.8,0.8,1200.*1E-4,1200.*1E-4,100000.*1E-8,0.6,0.3,0.3,0.05,100,1.0,-1.,0.},
1125 {0.065,2000.*1E-4,1.0,0.3,0.3,2000.*1E-4,2000.*1E-4,1000000.*1E-8,0.5,0.3,0.3,0.05,100,1.0,-1.,0.},
1126 {0.075,2000.*1E-4,1.0,0.3,0.3,2000.*1E-4,2000.*1E-4,1000000.*1E-8,0.3,0.3,0.3,0.05,100,1.0,-1.,0.},
1127 {0.084,6000.*1E-4,1.0,0.3,0.3,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.1,0.3,0.1,0.05,100,1.0,-1.,0.},
1128 {0.084,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,1.0,-1.,0.},
1129 {0.7,1000.*1E-4,1.0,1.0,1.0,1500.*1E-4,1500.*1E-4,1000000.*1E-8,0.7,0.3,0.1,0.05,100,1.0,-1.,0.}};
1134 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1137 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1138 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1142 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1144 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1145 delete [] cutsMatrixTransposeStand;
1146 cutsMatrixTransposeStand=NULL;
Double_t NormalizedDecayLengthXY() const
Int_t fIsSelectedCuts
fix the daughter track references
Float_t fMaxPtPid
cuts for soft pion (AOD converted to ESD on the flight!)
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
Int_t GetnSigmaTOF(AliAODTrack *track, Int_t species, Double_t &sigma) const
Double_t DeltaInvMass() const
Bool_t fUseMCVertex
flag to switch on the removal of duaghters from the primary vertex computation
void SetMaxVtxZ(Float_t z=1e6)
Bool_t IsKaonRaw(AliAODTrack *track, TString detector) const
Bool_t SetMCPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod) const
Bool_t fRemoveDaughtersFromPrimary
void SetStandardCutsPP2010DStarMult(Bool_t rec=kFALSE)
void SetHistoForCentralityFlattening(TH1F *h, Double_t minCentr, Double_t maxCentr, Double_t centrRef=0., Int_t switchTRand=0)
Int_t GetnSigmaTPC(AliAODTrack *track, Int_t species, Double_t &sigma) const
void SetUseCentrality(Int_t flag=1)
Bool_t fUseTPCtrackCutsOnD0Daughters
Radius for circular PID nsigma cut.
Int_t IsD0FromDStarSelected(Double_t pt, TObject *obj, Int_t selectionLevel, AliAODEvent *aod) const
void SetPriors(Double_t *priors, Int_t npriors)
void SetNVars(Int_t nVars)
virtual Int_t IsSelectedPID(AliAODRecoDecayHF *rd)
Double_t CosPointingAngleXY() const
Double_t fMaxRapidityCand
minimum pt of the candidate
void EnableSemiCentralTrigger()
Double_t InvMassD0() const
Double_t Prodd0d0() const
AliRDHFCuts & operator=(const AliRDHFCuts &source)
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
Double_t AngleD0dkpPisoft() const
void SetStandardCutsPbPb2011DStar(TH1F *hfl)
Bool_t HasBadDaughters() const
Int_t CheckBands(AliPID::EParticleType specie, AliPIDResponse::EDetector detector, AliAODTrack *track)
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 ResetMaskAndEnableMBTrigger()
void SetMinCentrality(Float_t minCentrality=0.)
Double_t CosThetaStarD0bar() const
angle of K
Double_t fMaxPtCand
minimum pt of the candidate
Bool_t CheckStatus(AliAODTrack *track, TString detectors) const
AliAODTrack * GetBachelor() const
AliAODVertex * GetOwnPrimaryVtx() const
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod)
void AddTrackCutsSoftPi(const AliESDtrackCuts *cuts)
Int_t fIsSelectedPID
outcome of cuts selection
Double_t InvMassD0bar() const
virtual void SetStandardCutsPP2010()
AliESDtrackCuts * fTrackCutsSoftPi
void SetSigma(Double_t *sigma)
Float_t * fCutsRD
fnVars*fnPtBins
void SetMaxCentrality(Float_t maxCentrality=100.)
void SetUseTPCtrackCutsOnThisDaughter(Bool_t flag=kTRUE)
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
void SetVarNames(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
virtual AliESDtrackCuts * GetTrackCutsSoftPi() const
Bool_t * fVarsForOpt
number of cut vars to be optimized for candidates
Bool_t AreDaughtersSelected(AliAODRecoDecayHF *rd, const AliAODEvent *aod=0x0) const
void EnableCentralTrigger()
virtual Int_t SelectPID(AliAODTrack *track, Int_t type)
Bool_t IsPionRaw(AliAODTrack *track, TString detector) const
void SetUsePID(Bool_t flag=kTRUE)
virtual void SetStandardCutsPbPb2010()
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
void CleanOwnPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod, AliAODVertex *origownvtx) const
void SetRemoveDaughtersFromPrim(Bool_t removeDaughtersPrim)
void SetOldPid(Bool_t oldPid)
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
void SetMatch(Int_t match)
virtual void SetStandardCutsPbPb2011()
AliAODVertex * GetPrimaryVtx() const
Double_t InvMassDstarKpipi() const
Float_t fTPCflag
maximum Dstar Pt for using PID
void AddTrackCuts(const AliESDtrackCuts *cuts)
void SetOffHighPtPIDinTPC(Float_t TPCrem=999.)
void SetMinPtCandidate(Double_t ptCand=-1.)
Double_t CosPointingAngle() const
Double_t CosThetaStarD0() const
AliRDHFCutsDStartoKpipi(const char *name="CutsDStartoKpipi")
Bool_t fUseTPCtrackCutsOnSoftPion
flag to apply TPC track quality cuts on D0 daughter from Dstar decay (used for different strategies f...
AliAODRecoDecayHF2Prong * Get2Prong() const
void SetTriggerClass(TString trclass0, TString trclass1="")
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Bool_t RecalcOwnPrimaryVtx(AliAODRecoDecayHF *d, AliAODEvent *aod) const
Int_t PtBin(Double_t pt) const
void SetOptPileup(Int_t opt=0)
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Double_t fMinPtCand
outcome of PID selection
Bool_t IsDaughterSelected(AliAODTrack *track, const AliESDVertex *primary, AliESDtrackCuts *cuts, const AliAODEvent *aod=0x0) const
AliRDHFCutsDStartoKpipi & operator=(const AliRDHFCutsDStartoKpipi &source)