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"
63 TString varNames[16]={
73 "inv. mass half width of D* [GeV]",
74 "half width of (M_Kpipi-M_D0) [GeV]",
75 "PtMin of pi_s [GeV/c]",
76 "PtMax of pi_s [GeV/c]",
77 "theta, angle between the pi_s and decay plane of the D0 [rad]",
80 Bool_t isUpperCut[16]={
116 Float_t limits[2]={0,999999999.};
140 if(&source ==
this)
return *
this;
158 printf(
"AliRDHFCutsDStartoKpipi::GetCutsVarsForOpt: wrong number of variables\n");
165 AliAODTrack *softPi = (AliAODTrack*)dstarD0pi->
GetBachelor();
173 if(TMath::Abs(pdgdaughters[0])==211) {
181 vars[iter]=dd->GetDCA();
185 if(TMath::Abs(pdgdaughters[0])==211) {
193 if(TMath::Abs(pdgdaughters[0])==321) {
194 vars[iter]=dd->PtProng(0);
197 vars[iter]=dd->PtProng(1);
202 if(TMath::Abs(pdgdaughters[0])==211) {
203 vars[iter]=dd->PtProng(0);
206 vars[iter]=dd->PtProng(1);
211 if(TMath::Abs(pdgdaughters[0])==321) {
212 vars[iter]=dd->Getd0Prong(0);
215 vars[iter]=dd->Getd0Prong(1);
220 if(TMath::Abs(pdgdaughters[0])==211) {
221 vars[iter]=dd->Getd0Prong(0);
224 vars[iter]=dd->Getd0Prong(1);
245 vars[iter] = softPi->Pt();
249 vars[iter] = softPi->Pt();
276 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
282 cout<<
"AliAODRecoCascadeHF null"<<endl;
286 Double_t ptD=d->Pt();
293 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
301 if(!(b->TestFilterMask(BIT(4))))
return 0;
305 Int_t returnvaluePID=3;
313 Int_t ptbin=
PtBin(pt);
316 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
317 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
319 Double_t deltaPDG = mDSPDG-mD0PDG;
334 if((b->Charge()==+1 && returnvalue==2) || (b->Charge()==-1 && returnvalue==1))
return 0;
347 if(returnvaluePID!=3) returnvalue =0;
356 Double_t pos[3],cov[6];
358 vAOD->GetCovarianceMatrix(cov);
359 const AliESDVertex vESD(pos,cov,100.,100);
375 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
382 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
395 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
399 AliAODVertex *origownvtx=0x0;
417 Int_t ptbin=
PtBin(pt);
423 Double_t mD0,mD0bar,ctsD0,ctsD0bar;
461 if (okD0) returnvalue=1;
462 if (okD0bar) returnvalue=2;
463 if (okD0 && okD0bar) returnvalue=3;
486 AliDebug(4,Form(
"pt of D* = %f (> 5), cutting at |y| < 0.8\n",pt));
487 if (TMath::Abs(y) > 0.8){
492 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
493 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
494 AliDebug(2,Form(
"pt of D* = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
495 if (y < minFiducialY || y > maxFiducialY){
512 cout<<
"AliAODRecoCascadeHF null"<<endl;
520 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
525 AliAODTrack *pos = (AliAODTrack*)dstar->
Get2Prong()->GetDaughter(0);
526 AliAODTrack *neg = (AliAODTrack*)dstar->
Get2Prong()->GetDaughter(1);
528 if (dstar->Charge()>0){
537 AliAODTrack *softPion = (AliAODTrack*) dstar->
GetBachelor();
553 Bool_t isParticle=kTRUE;
557 Bool_t TPCon=TMath::Abs(2)>1e-4?kTRUE:kFALSE;
558 Bool_t TOFon=TMath::Abs(3)>1e-4?kTRUE:kFALSE;
579 Double_t pPIDcut = track->P();
582 isParticle = isTPC&&isTOF;
587 Double_t prob[5]={1.,1.,1.,1.,1.};
594 for (Int_t i=0; i<5; i++) {
595 if (prob[i]>max) {k=i; max=prob[i];}
597 isParticle = Bool_t(k==type);
600 if (match == 10 || match == 11) {
604 isParticle = checkTPC >= 0 && checkTOF >= 0 ? kTRUE : kFALSE;
606 isParticle = isParticle && checkTPC+checkTOF >= 1 ? kTRUE : kFALSE;
611 Double_t nSigmaTOF = 0;
612 Double_t nSigmaTPC = 0;
620 if (TPCok != -1 && TOFok != -1) {
622 isParticle = TMath::Sqrt(nSigmaTPC*nSigmaTPC + nSigmaTOF*nSigmaTOF) <= radius ? kTRUE : kFALSE;
627 isParticle = nSigmaTPC <= radius ? kTRUE : kFALSE;
630 isParticle = nSigmaTOF <= radius ? kTRUE : kFALSE;
647 SetName(
"DStartoD0piCutsStandard");
648 SetTitle(
"Standard Cuts for D* analysis");
657 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
658 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
659 esdTrackCuts->SetRequireTPCRefit(kTRUE);
660 esdTrackCuts->SetRequireITSRefit(kTRUE);
661 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
662 esdTrackCuts->SetMinDCAToVertexXY(0.);
663 esdTrackCuts->SetEtaRange(-0.8,0.8);
664 esdTrackCuts->SetPtRange(0.3,1.e10);
667 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
668 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
669 esdSoftPicuts->SetRequireTPCRefit(kFALSE);
670 esdSoftPicuts->SetRequireITSRefit(kFALSE);
671 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
672 AliESDtrackCuts::kAny);
673 esdSoftPicuts->SetPtRange(0.0,1.e10);
679 delete esdSoftPicuts;
683 const Double_t
ptmax = 9999.;
684 const Int_t nvars=16;
685 Float_t ptbins[nptbins+1];
704 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.},
705 {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.},
706 {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.},
707 {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.},
708 {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.},
709 {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.},
710 {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.},
711 {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.},
712 {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.},
713 {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.},
714 {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.},
715 {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.},
716 {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.}};
720 Float_t **cutsMatrixTransposeStand=
new Float_t*[nvars];
721 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
723 for (Int_t ibin=0;ibin<
nptbins;ibin++){
724 for (Int_t ivar = 0; ivar<nvars; ivar++){
725 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
729 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
731 for(Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
732 delete [] cutsMatrixTransposeStand;
733 cutsMatrixTransposeStand=NULL;
739 Double_t priors[5]={0.01,0.001,0.3,0.3,0.3};
765 SetName(
"DStartoD0piCutsStandard");
766 SetTitle(
"Standard Cuts for D* analysis in PbPb 2010");
772 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
773 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
774 esdTrackCuts->SetRequireTPCRefit(kTRUE);
775 esdTrackCuts->SetRequireITSRefit(kTRUE);
776 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
777 esdTrackCuts->SetMinDCAToVertexXY(0.);
778 esdTrackCuts->SetEtaRange(-0.8,0.8);
779 esdTrackCuts->SetPtRange(0.3,1.e10);
782 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
783 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
784 esdSoftPicuts->SetRequireTPCRefit(kTRUE);
785 esdSoftPicuts->SetRequireITSRefit(kTRUE);
786 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
787 AliESDtrackCuts::kAny);
788 esdSoftPicuts->SetPtRange(0.25,5);
794 delete esdSoftPicuts;
798 const Double_t
ptmax = 9999.;
799 const Int_t nvars=16;
800 Float_t ptbins[nptbins+1];
819 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.},
820 {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.},
821 {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.},
822 {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.},
823 {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.},
824 {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.},
825 {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.},
826 {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.},
827 {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.},
828 {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.},
829 {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.},
830 {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.},
831 {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.}};
835 Float_t **cutsMatrixTransposeStand=
new Float_t*[nvars];
836 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
838 for (Int_t ibin=0;ibin<
nptbins;ibin++){
839 for (Int_t ivar = 0; ivar<nvars; ivar++){
840 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
844 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
846 for(Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
847 delete [] cutsMatrixTransposeStand;
848 cutsMatrixTransposeStand=NULL;
854 Double_t priors[5]={0.01,0.001,0.3,0.3,0.3};
887 SetName(
"DStartoD0piCutsStandard2011");
888 SetTitle(
"Standard Cuts for D* analysis in PbPb 2011");
906 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
907 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
908 esdTrackCuts->SetRequireTPCRefit(kTRUE);
909 esdTrackCuts->SetRequireITSRefit(kTRUE);
910 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
911 esdTrackCuts->SetMinDCAToVertexXY(0.);
912 esdTrackCuts->SetEtaRange(-0.8,0.8);
913 esdTrackCuts->SetPtRange(0.3,1.e10);
915 esdTrackCuts->SetMaxDCAToVertexXY(1.);
916 esdTrackCuts->SetMaxDCAToVertexZ(1.);
920 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
921 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
922 esdSoftPicuts->SetRequireTPCRefit(kTRUE);
923 esdSoftPicuts->SetRequireITSRefit(kTRUE);
924 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
925 AliESDtrackCuts::kAny);
926 esdSoftPicuts->SetPtRange(0.1,10);
928 esdSoftPicuts->SetMaxDCAToVertexXY(1.);
929 esdSoftPicuts->SetMaxDCAToVertexZ(1.);
940 delete esdSoftPicuts;
944 const Double_t
ptmax = 36.;
945 const Int_t nvars=16;
946 Float_t ptbins[nptbins+1];
966 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.},
967 {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.},
968 {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.},
969 {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.},
970 {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},
971 {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.},
972 {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},
973 {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},
974 {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},
975 {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},
976 {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},
977 {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.},
978 {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.},
979 {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.}};
983 Float_t **cutsMatrixTransposeStand=
new Float_t*[nvars];
984 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
986 for (Int_t ibin=0;ibin<
nptbins;ibin++){
987 for (Int_t ivar = 0; ivar<nvars; ivar++){
988 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
992 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
994 for(Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
995 delete [] cutsMatrixTransposeStand;
996 cutsMatrixTransposeStand=NULL;
1037 SetName(
"DStartoD0piCutsStandard");
1038 SetTitle(
"Standard Cuts for D* analysis pp mult");
1049 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1050 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1051 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1052 esdTrackCuts->SetRequireITSRefit(kTRUE);
1053 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1054 esdTrackCuts->SetMinDCAToVertexXY(0.);
1055 esdTrackCuts->SetEtaRange(-0.8,0.8);
1056 esdTrackCuts->SetPtRange(0.3,1.e10);
1058 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1059 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1063 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
1064 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
1065 esdSoftPicuts->SetRequireTPCRefit(kFALSE);
1066 esdSoftPicuts->SetRequireITSRefit(kTRUE);
1067 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1068 AliESDtrackCuts::kAny);
1069 esdSoftPicuts->SetPtRange(0.08,1.e10);
1074 delete esdTrackCuts;
1076 delete esdSoftPicuts;
1080 const Double_t
ptmax = 9999.;
1081 const Int_t nvars=16;
1082 Float_t ptbins[nptbins+1];
1102 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.},
1103 {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.},
1104 {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.},
1105 {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.},
1106 {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.},
1107 {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.},
1108 {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.},
1109 {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.},
1110 {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.},
1111 {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.},
1112 {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.},
1113 {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.},
1114 {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.},
1115 {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.}};
1119 Float_t **cutsMatrixTransposeStand=
new Float_t*[nvars];
1120 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1122 for (Int_t ibin=0;ibin<
nptbins;ibin++){
1123 for (Int_t ivar = 0; ivar<nvars; ivar++){
1124 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1128 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1130 for(Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1131 delete [] cutsMatrixTransposeStand;
1132 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)
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
Bool_t IsDaughterSelected(AliAODTrack *track, const AliESDVertex *primary, AliESDtrackCuts *cuts) const
AliAODTrack * GetBachelor() const
AliAODVertex * GetOwnPrimaryVtx() const
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod)
Bool_t AreDaughtersSelected(AliAODRecoDecayHF *rd) const
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 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
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 void PrintAll() const
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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")
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
AliRDHFCutsDStartoKpipi & operator=(const AliRDHFCutsDStartoKpipi &source)