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" 40 #include "TObjArray.h" 57 fUseTPCtrackCutsOnD0Daughters(kTRUE),
58 fUseTPCtrackCutsOnSoftPion(kFALSE)
76 "inv. mass half width of D* [GeV]",
77 "half width of (M_Kpipi-M_D0) [GeV]",
78 "PtMin of pi_s [GeV/c]",
79 "PtMax of pi_s [GeV/c]",
80 "theta, angle between the pi_s and decay plane of the D0 [rad]",
119 Float_t limits[2]={0,999999999.};
145 if(&source ==
this)
return *
this;
163 printf(
"AliRDHFCutsDStartoKpipi::GetCutsVarsForOpt: wrong number of variables\n");
170 AliAODTrack *softPi = (AliAODTrack*)dstarD0pi->
GetBachelor();
178 if(TMath::Abs(pdgdaughters[0])==211) {
186 vars[iter]=dd->GetDCA();
190 if(TMath::Abs(pdgdaughters[0])==211) {
198 if(TMath::Abs(pdgdaughters[0])==321) {
199 vars[iter]=dd->PtProng(0);
202 vars[iter]=dd->PtProng(1);
207 if(TMath::Abs(pdgdaughters[0])==211) {
208 vars[iter]=dd->PtProng(0);
211 vars[iter]=dd->PtProng(1);
216 if(TMath::Abs(pdgdaughters[0])==321) {
217 vars[iter]=dd->Getd0Prong(0);
220 vars[iter]=dd->Getd0Prong(1);
225 if(TMath::Abs(pdgdaughters[0])==211) {
226 vars[iter]=dd->Getd0Prong(0);
229 vars[iter]=dd->Getd0Prong(1);
250 vars[iter] = softPi->Pt();
254 vars[iter] = softPi->Pt();
281 AliAODTrack *track[3];
282 for(
Int_t iDaught=0; iDaught<3; iDaught++) {
283 track[iDaught] = (AliAODTrack*)aodTracks.At(iDaught);
284 if(!track[iDaught])
return retVal;
285 px += track[iDaught]->Px();
286 py += track[iDaught]->Py();
289 Double_t ptD=TMath::Sqrt(px*px+py*py);
299 track[1]->GetImpactParameters(xy[0],z[0]);
300 track[2]->GetImpactParameters(xy[1],z[1]);
317 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
323 cout<<
"AliAODRecoCascadeHF null"<<endl;
334 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
342 if(!(b->TestFilterMask(BIT(4))))
return 0;
346 Int_t returnvaluePID=3;
357 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
358 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
375 if((b->Charge()==+1 && returnvalue==2) || (b->Charge()==-1 && returnvalue==1))
return 0;
388 if(returnvaluePID!=3) returnvalue =0;
405 vAOD->GetCovarianceMatrix(cov);
406 const AliESDVertex vESD(pos,cov,100.,100);
426 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
433 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
446 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
450 AliAODVertex *origownvtx=0x0;
512 if (okD0) returnvalue=1;
513 if (okD0bar) returnvalue=2;
514 if (okD0 && okD0bar) returnvalue=3;
537 AliDebug(4,Form(
"pt of D* = %f (> 5), cutting at |y| < 0.8\n",pt));
538 if (TMath::Abs(y) > 0.8){
543 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
544 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
545 AliDebug(2,Form(
"pt of D* = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
546 if (y < minFiducialY || y > maxFiducialY){
561 cout<<
"AliAODRecoCascadeHF null"<<endl;
566 cout<<
"AliAODRecoDecayHF2Prong null"<<endl;
574 aodTracks.AddAt(d0->GetDaughter(0),1);
575 aodTracks.AddAt(d0->GetDaughter(1),2);
592 AliAODTrack *softPion = (AliAODTrack*)aodTracks.At(0);
593 AliAODTrack *pos = (AliAODTrack*)aodTracks.At(1);
594 AliAODTrack *neg = (AliAODTrack*)aodTracks.At(2);
596 if (softPion->Charge()>0){
623 Bool_t TPCon=TMath::Abs(2)>1e-4?kTRUE:kFALSE;
624 Bool_t TOFon=TMath::Abs(3)>1e-4?kTRUE:kFALSE;
648 isParticle = isTPC&&isTOF;
660 for (
Int_t i=0; i<5; i++) {
661 if (prob[i]>max) {k=i; max=prob[i];}
663 isParticle =
Bool_t(k==type);
666 if (match == 10 || match == 11) {
670 isParticle = checkTPC >= 0 && checkTOF >= 0 ? kTRUE : kFALSE;
672 isParticle = isParticle && checkTPC+checkTOF >= 1 ? kTRUE : kFALSE;
686 if (TPCok != -1 && TOFok != -1) {
688 isParticle = TMath::Sqrt(nSigmaTPC*nSigmaTPC + nSigmaTOF*nSigmaTOF) <= radius ? kTRUE : kFALSE;
693 isParticle = nSigmaTPC <= radius ? kTRUE : kFALSE;
696 isParticle = nSigmaTOF <= radius ? kTRUE : kFALSE;
713 SetName(
"DStartoD0piCutsStandard");
714 SetTitle(
"Standard Cuts for D* analysis");
723 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
724 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
725 esdTrackCuts->SetRequireTPCRefit(kTRUE);
726 esdTrackCuts->SetRequireITSRefit(kTRUE);
727 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
728 esdTrackCuts->SetMinDCAToVertexXY(0.);
729 esdTrackCuts->SetEtaRange(-0.8,0.8);
730 esdTrackCuts->SetPtRange(0.3,1.e10);
733 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
734 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
735 esdSoftPicuts->SetRequireTPCRefit(kFALSE);
736 esdSoftPicuts->SetRequireITSRefit(kFALSE);
737 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
738 AliESDtrackCuts::kAny);
739 esdSoftPicuts->SetPtRange(0.0,1.e10);
745 delete esdSoftPicuts;
750 const Int_t nvars=16;
770 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.},
771 {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.},
772 {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.},
773 {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.},
774 {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.},
775 {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.},
776 {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.},
777 {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.},
778 {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.},
779 {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.},
780 {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.},
781 {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.},
782 {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.}};
787 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
790 for (
Int_t ivar = 0; ivar<nvars; ivar++){
791 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
795 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
797 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
798 delete [] cutsMatrixTransposeStand;
799 cutsMatrixTransposeStand=NULL;
805 Double_t priors[5]={0.01,0.001,0.3,0.3,0.3};
831 SetName(
"DStartoD0piCutsStandard");
832 SetTitle(
"Standard Cuts for D* analysis in PbPb 2010");
838 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
839 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
840 esdTrackCuts->SetRequireTPCRefit(kTRUE);
841 esdTrackCuts->SetRequireITSRefit(kTRUE);
842 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
843 esdTrackCuts->SetMinDCAToVertexXY(0.);
844 esdTrackCuts->SetEtaRange(-0.8,0.8);
845 esdTrackCuts->SetPtRange(0.3,1.e10);
848 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
849 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
850 esdSoftPicuts->SetRequireTPCRefit(kTRUE);
851 esdSoftPicuts->SetRequireITSRefit(kTRUE);
852 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
853 AliESDtrackCuts::kAny);
854 esdSoftPicuts->SetPtRange(0.25,5);
860 delete esdSoftPicuts;
865 const Int_t nvars=16;
885 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.},
886 {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.},
887 {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.},
888 {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.},
889 {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.},
890 {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.},
891 {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.},
892 {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.},
893 {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.},
894 {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.},
895 {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.},
896 {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.},
897 {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.}};
902 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
905 for (
Int_t ivar = 0; ivar<nvars; ivar++){
906 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
910 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
912 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
913 delete [] cutsMatrixTransposeStand;
914 cutsMatrixTransposeStand=NULL;
920 Double_t priors[5]={0.01,0.001,0.3,0.3,0.3};
953 SetName(
"DStartoD0piCutsStandard2011");
954 SetTitle(
"Standard Cuts for D* analysis in PbPb 2011");
972 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
973 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
974 esdTrackCuts->SetRequireTPCRefit(kTRUE);
975 esdTrackCuts->SetRequireITSRefit(kTRUE);
976 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
977 esdTrackCuts->SetMinDCAToVertexXY(0.);
978 esdTrackCuts->SetEtaRange(-0.8,0.8);
979 esdTrackCuts->SetPtRange(0.3,1.e10);
981 esdTrackCuts->SetMaxDCAToVertexXY(1.);
982 esdTrackCuts->SetMaxDCAToVertexZ(1.);
986 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
987 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
988 esdSoftPicuts->SetRequireTPCRefit(kTRUE);
989 esdSoftPicuts->SetRequireITSRefit(kTRUE);
990 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
991 AliESDtrackCuts::kAny);
992 esdSoftPicuts->SetPtRange(0.1,10);
994 esdSoftPicuts->SetMaxDCAToVertexXY(1.);
995 esdSoftPicuts->SetMaxDCAToVertexZ(1.);
1004 delete esdTrackCuts;
1006 delete esdSoftPicuts;
1011 const Int_t nvars=16;
1032 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.},
1033 {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.},
1034 {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.},
1035 {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.},
1036 {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},
1037 {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.},
1038 {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},
1039 {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},
1040 {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},
1041 {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},
1042 {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},
1043 {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.},
1044 {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.},
1045 {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.}};
1050 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1053 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1054 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1058 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1060 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1061 delete [] cutsMatrixTransposeStand;
1062 cutsMatrixTransposeStand=NULL;
1103 SetName(
"DStartoD0piCutsStandard");
1104 SetTitle(
"Standard Cuts for D* analysis pp mult");
1115 AliESDtrackCuts *esdTrackCuts =
new AliESDtrackCuts(
"AliESDtrackCuts",
"default");
1116 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
1117 esdTrackCuts->SetRequireTPCRefit(kTRUE);
1118 esdTrackCuts->SetRequireITSRefit(kTRUE);
1119 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1120 esdTrackCuts->SetMinDCAToVertexXY(0.);
1121 esdTrackCuts->SetEtaRange(-0.8,0.8);
1122 esdTrackCuts->SetPtRange(0.3,1.e10);
1124 esdTrackCuts->SetMaxDCAToVertexXY(1.);
1125 esdTrackCuts->SetMaxDCAToVertexZ(1.);
1129 AliESDtrackCuts* esdSoftPicuts=
new AliESDtrackCuts();
1130 esdSoftPicuts->SetRequireSigmaToVertex(kFALSE);
1131 esdSoftPicuts->SetRequireTPCRefit(kFALSE);
1132 esdSoftPicuts->SetRequireITSRefit(kTRUE);
1133 esdSoftPicuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1134 AliESDtrackCuts::kAny);
1135 esdSoftPicuts->SetPtRange(0.08,1.e10);
1140 delete esdTrackCuts;
1142 delete esdSoftPicuts;
1147 const Int_t nvars=16;
1168 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.},
1169 {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.},
1170 {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.},
1171 {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.},
1172 {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.},
1173 {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.},
1174 {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.},
1175 {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.},
1176 {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.},
1177 {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.},
1178 {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.},
1179 {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.},
1180 {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.},
1181 {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.}};
1186 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
1189 for (
Int_t ivar = 0; ivar<nvars; ivar++){
1190 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
1194 SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
1196 for(
Int_t iv=0;iv<nvars;iv++)
delete [] cutsMatrixTransposeStand[iv];
1197 delete [] cutsMatrixTransposeStand;
1198 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
virtual Int_t PreSelect(TObjArray aodtracks)
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)