diff --git a/PWGEM/PhotonMeson/Core/CutsLibrary.cxx b/PWGEM/PhotonMeson/Core/CutsLibrary.cxx index db523cdbe8c..7bb2b726206 100644 --- a/PWGEM/PhotonMeson/Core/CutsLibrary.cxx +++ b/PWGEM/PhotonMeson/Core/CutsLibrary.cxx @@ -282,78 +282,84 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_all_tpchadrejortofreq_lowB")) { // for pair - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTOFNsigmaElRange(-3, +3); cut->SetTPCNsigmaMuRange(-2, +2); cut->SetTPCNsigmaPiRange(-3, +3); cut->SetTPCNsigmaKaRange(-3, +3); cut->SetTPCNsigmaPrRange(-3, +3); + cut->SetMuonExclusionTPC(true); return cut; } if (!nameStr.compare("mee_all_tpchadrej_lowB")) { // for pair - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrej); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaMuRange(-2, +2); cut->SetTPCNsigmaPiRange(-3, +3); cut->SetTPCNsigmaKaRange(-3, +3); cut->SetTPCNsigmaPrRange(-3, +3); + cut->SetMuonExclusionTPC(true); + cut->SetTOFbetaRange(true, 0.0, 0.95); return cut; } if (!nameStr.compare("mee_all_tofreq_lowB")) { // for pair - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTOFNsigmaElRange(-3, +3); cut->SetTPCNsigmaPiRange(-3, +3); @@ -361,18 +367,18 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) } if (!nameStr.compare("mee_all_nopid_lowB")) { // for pair - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); @@ -383,23 +389,74 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_0_120_tpconly")) { // for pair cut->SetMeeRange(0., 0.12); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.2f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly); + cut->SetTOFbetaRange(true, 0.0, 0.95); + cut->SetTPCNsigmaElRange(-2, +3); + cut->SetTPCNsigmaPiRange(-1e+10, +3); + return cut; + } + if (!nameStr.compare("mee_120_500_tpconly")) { + // for pair + cut->SetMeeRange(0.12, 0.5); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); + }); + + // for track + cut->SetTrackPtRange(0.2f, 1e10f); + cut->SetTrackEtaRange(-0.9, +0.9); + cut->SetMinNCrossedRowsTPC(80); + cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); + cut->SetChi2PerClusterTPC(0.0, 4.0); + cut->SetChi2PerClusterITS(0.0, 5.0); + cut->SetNClustersITS(4, 7); + cut->SetMaxDcaXY(1.0); + cut->SetMaxDcaZ(1.0); + + // for PID + cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly); + cut->SetTOFbetaRange(true, 0.0, 0.95); + cut->SetTPCNsigmaElRange(-2, +3); + cut->SetTPCNsigmaPiRange(-1e+10, +3); + return cut; + } + if (!nameStr.compare("mee_0_500_tpconly")) { + // for pair + cut->SetMeeRange(0., 0.5); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); + }); + + // for track + cut->SetTrackPtRange(0.2f, 1e10f); + cut->SetTrackEtaRange(-0.9, +0.9); + cut->SetMinNCrossedRowsTPC(80); + cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); + cut->SetChi2PerClusterTPC(0.0, 4.0); + cut->SetChi2PerClusterITS(0.0, 5.0); + cut->SetNClustersITS(4, 7); + cut->SetMaxDcaXY(1.0); + cut->SetMaxDcaZ(1.0); + + // for PID + cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-1e+10, +3); return cut; @@ -407,23 +464,74 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_0_120_tpconly_lowB")) { // for pair cut->SetMeeRange(0., 0.12); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); + }); + + // for track + cut->SetTrackPtRange(0.05f, 1e10f); + cut->SetTrackEtaRange(-0.9, +0.9); + cut->SetMinNCrossedRowsTPC(80); + cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); + cut->SetChi2PerClusterTPC(0.0, 4.0); + cut->SetChi2PerClusterITS(0.0, 5.0); + cut->SetNClustersITS(4, 7); + cut->SetMaxDcaXY(1.0); + cut->SetMaxDcaZ(1.0); + + // for PID + cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly); + cut->SetTOFbetaRange(true, 0.0, 0.95); + cut->SetTPCNsigmaElRange(-2, +3); + cut->SetTPCNsigmaPiRange(-3, +3); + return cut; + } + if (!nameStr.compare("mee_120_500_tpconly_lowB")) { + // for pair + cut->SetMeeRange(0.12, 0.5); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); + }); + + // for track + cut->SetTrackPtRange(0.05f, 1e10f); + cut->SetTrackEtaRange(-0.9, +0.9); + cut->SetMinNCrossedRowsTPC(80); + cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); + cut->SetChi2PerClusterTPC(0.0, 4.0); + cut->SetChi2PerClusterITS(0.0, 5.0); + cut->SetNClustersITS(4, 7); + cut->SetMaxDcaXY(1.0); + cut->SetMaxDcaZ(1.0); + + // for PID + cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly); + cut->SetTOFbetaRange(true, 0.0, 0.95); + cut->SetTPCNsigmaElRange(-2, +3); + cut->SetTPCNsigmaPiRange(-3, +3); + return cut; + } + if (!nameStr.compare("mee_0_500_tpconly_lowB")) { + // for pair + cut->SetMeeRange(0., 0.5); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-3, +3); return cut; @@ -431,107 +539,114 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_0_120_tpchadrejortofreq_lowB")) { // for pair cut->SetMeeRange(0., 0.12); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTOFNsigmaElRange(-3, +3); cut->SetTPCNsigmaMuRange(-2, +2); cut->SetTPCNsigmaPiRange(-3, +3); cut->SetTPCNsigmaKaRange(-3, +3); cut->SetTPCNsigmaPrRange(-3, +3); + cut->SetMuonExclusionTPC(true); return cut; } if (!nameStr.compare("mee_120_500_tpchadrejortofreq_lowB")) { // for pair cut->SetMeeRange(0.12, 0.5); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTOFNsigmaElRange(-3, +3); cut->SetTPCNsigmaMuRange(-2, +2); cut->SetTPCNsigmaPiRange(-3, +3); cut->SetTPCNsigmaKaRange(-3, +3); cut->SetTPCNsigmaPrRange(-3, +3); + cut->SetMuonExclusionTPC(true); return cut; } if (!nameStr.compare("mee_0_500_tpchadrejortofreq_lowB")) { // for pair cut->SetMeeRange(0., 0.5); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.05f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTOFNsigmaElRange(-3, +3); cut->SetTPCNsigmaMuRange(-2, +2); cut->SetTPCNsigmaPiRange(-3, +3); cut->SetTPCNsigmaKaRange(-3, +3); cut->SetTPCNsigmaPrRange(-3, +3); + cut->SetMuonExclusionTPC(true); return cut; } if (!nameStr.compare("mee_all_tpchadrejortofreq")) { // for pair - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.2f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-1e+10, +3); cut->SetTPCNsigmaKaRange(-3, +3); @@ -542,23 +657,24 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_0_120_tpchadrejortofreq")) { // for pair cut->SetMeeRange(0, 0.12); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.2f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-1e+10, +3); cut->SetTPCNsigmaKaRange(-3, +3); @@ -573,16 +689,17 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) // for track cut->SetTrackPtRange(0.2f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-1e+10, +3); cut->SetTPCNsigmaKaRange(-3, +3); @@ -593,23 +710,24 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_120_500_tpchadrejortofreq")) { // for pair cut->SetMeeRange(0.12, 0.5); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.2f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-1e+10, +3); cut->SetTPCNsigmaKaRange(-3, +3); @@ -620,23 +738,24 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) if (!nameStr.compare("mee_0_500_tpchadrejortofreq")) { // for pair cut->SetMeeRange(0., 0.5); - cut->SetMinMeePhivPairDep([](float phiv) { - return phiv < 1.5 ? 0.0 : (phiv < 2.5 ? 0.01 : 0.03); + cut->SetMaxPhivPairMeeDep([](float mee) { + return mee < 0.01 ? 1.5 : (mee < 0.02 ? 2.0 : (mee < 0.03 ? 2.5 : 3.2)); }); // for track cut->SetTrackPtRange(0.2f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); // for PID cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq); + cut->SetTOFbetaRange(true, 0.0, 0.95); cut->SetTPCNsigmaElRange(-2, +3); cut->SetTPCNsigmaPiRange(-1e+10, +3); cut->SetTPCNsigmaKaRange(-3, +3); @@ -649,11 +768,11 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName) // for track cut->SetTrackPtRange(0.01f, 1e10f); cut->SetTrackEtaRange(-0.9, +0.9); - cut->SetMinNCrossedRowsTPC(100); + cut->SetMinNCrossedRowsTPC(80); cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8); cut->SetChi2PerClusterTPC(0.0, 4.0); cut->SetChi2PerClusterITS(0.0, 5.0); - cut->SetNClustersITS(5, 7); + cut->SetNClustersITS(4, 7); cut->SetMaxDcaXY(1.0); cut->SetMaxDcaZ(1.0); return cut; diff --git a/PWGEM/PhotonMeson/Core/DalitzEECut.cxx b/PWGEM/PhotonMeson/Core/DalitzEECut.cxx index bc5a804188c..ce61281159a 100644 --- a/PWGEM/PhotonMeson/Core/DalitzEECut.cxx +++ b/PWGEM/PhotonMeson/Core/DalitzEECut.cxx @@ -38,16 +38,10 @@ void DalitzEECut::SetMeeRange(float min, float max) mMaxMee = max; LOG(info) << "DalitzEE selection, set mee range: " << mMinMee << " - " << mMaxMee; } -void DalitzEECut::SetPhivPairRange(float min, float max) +void DalitzEECut::SetMaxPhivPairMeeDep(std::function meeDepCut) { - mMinPhivPair = min; - mMaxPhivPair = max; - LOG(info) << "DalitzEE selection, set phiv pair range: " << mMinPhivPair << " - " << mMaxPhivPair; -} -void DalitzEECut::SetMinMeePhivPairDep(std::function phivDepCut) -{ - mMinMeePhivPairDep = phivDepCut; - LOG(info) << "DalitzEE Cut, set min mee phiv pair dep: " << mMinMeePhivPairDep(2.8); + mMaxPhivPairMeeDep = meeDepCut; + LOG(info) << "DalitzEE Cut, set max phiv pair mee dep: " << mMaxPhivPairMeeDep(0.02); } void DalitzEECut::SetTrackPtRange(float minPt, float maxPt) { @@ -124,6 +118,20 @@ void DalitzEECut::SetMinPinTOF(float min) LOG(info) << "DalitzEE Cut, set min pin for TOF: " << mMinPinTOF; } +void DalitzEECut::SetMuonExclusionTPC(bool flag) +{ + mMuonExclusionTPC = flag; + LOG(info) << "DalitzEE Cut, set flag for muon exclusion in TPC: " << mMuonExclusionTPC; +} + +void DalitzEECut::SetTOFbetaRange(bool flag, float min, float max) +{ + mApplyTOFbeta = flag; + mMinTOFbeta = min; + mMaxTOFbeta = max; + LOG(info) << "DalitzEE selection, set TOF beta rejection range: " << mMinTOFbeta << " - " << mMaxTOFbeta; +} + void DalitzEECut::SetTPCNsigmaElRange(float min, float max) { mMinTPCNsigmaEl = min; diff --git a/PWGEM/PhotonMeson/Core/DalitzEECut.h b/PWGEM/PhotonMeson/Core/DalitzEECut.h index 650c8b1a69d..0bb3855f450 100644 --- a/PWGEM/PhotonMeson/Core/DalitzEECut.h +++ b/PWGEM/PhotonMeson/Core/DalitzEECut.h @@ -137,6 +137,10 @@ class DalitzEECut : public TNamed if (!PassPID(track)) { return false; } + + if (mApplyTOFbeta && (mMinTOFbeta < track.beta() && track.beta() < mMaxTOFbeta)) { + return false; + } } return true; } @@ -190,7 +194,7 @@ class DalitzEECut : public TNamed bool PassTPChadrej(T const& track) const { bool is_el_included_TPC = mMinTPCNsigmaEl < track.tpcNSigmaEl() && track.tpcNSigmaEl() < mMaxTPCNsigmaEl; - bool is_mu_excluded_TPC = track.tpcNSigmaMu() < mMinTPCNsigmaMu || mMaxTPCNsigmaMu < track.tpcNSigmaMu(); + bool is_mu_excluded_TPC = mMuonExclusionTPC ? track.tpcNSigmaMu() < mMinTPCNsigmaMu || mMaxTPCNsigmaMu < track.tpcNSigmaMu() : true; bool is_pi_excluded_TPC = track.tpcNSigmaPi() < mMinTPCNsigmaPi || mMaxTPCNsigmaPi < track.tpcNSigmaPi(); bool is_ka_excluded_TPC = track.tpcNSigmaKa() < mMinTPCNsigmaKa || mMaxTPCNsigmaKa < track.tpcNSigmaKa(); bool is_pr_excluded_TPC = track.tpcNSigmaPr() < mMinTPCNsigmaPr || mMaxTPCNsigmaPr < track.tpcNSigmaPr(); @@ -216,10 +220,10 @@ class DalitzEECut : public TNamed return pair.eta() >= mMinPairEta && pair.eta() <= mMaxPairEta; case DalitzEECuts::kMee: - return ((mMinMeePhivPairDep) ? mMinMeePhivPairDep(abs(pair.phiv())) : mMinMee) <= pair.mee() && pair.mee() <= mMaxMee; + return mMinMee <= pair.mee() && pair.mee() <= mMaxMee; case DalitzEECuts::kPhiV: - return pair.phiv() >= mMinPhivPair && pair.phiv() <= mMaxPhivPair; + return mMinPhivPair <= pair.phiv() && pair.phiv() <= (mMaxPhivPairMeeDep ? mMaxPhivPairMeeDep(pair.mee()) : mMaxPhivPair); default: return false; @@ -268,9 +272,8 @@ class DalitzEECut : public TNamed // Setters void SetPairPtRange(float minPt = 0.f, float maxPt = 1e10f); void SetPairEtaRange(float minEta = -1e10f, float maxEta = 1e10f); - void SetMeeRange(float min = 0.f, float max = 0.1); - void SetPhivPairRange(float min = 0.f, float max = +3.15); - void SetMinMeePhivPairDep(std::function phivDepCut); + void SetMeeRange(float min = 0.f, float max = 0.5); + void SetMaxPhivPairMeeDep(std::function meeDepCut); void SetTrackPtRange(float minPt = 0.f, float maxPt = 1e10f); void SetTrackEtaRange(float minEta = -1e10f, float maxEta = 1e10f); @@ -283,6 +286,8 @@ class DalitzEECut : public TNamed void SetPIDScheme(PIDSchemes scheme); void SetMinPinTOF(float min); + void SetMuonExclusionTPC(bool flag); + void SetTOFbetaRange(bool flag, float min, float max); void SetTPCNsigmaElRange(float min = -1e+10, float max = 1e+10); void SetTPCNsigmaMuRange(float min = -1e+10, float max = 1e+10); void SetTPCNsigmaPiRange(float min = -1e+10, float max = 1e+10); @@ -306,8 +311,8 @@ class DalitzEECut : public TNamed float mMinMee{0.f}, mMaxMee{1e10f}; float mMinPairPt{0.f}, mMaxPairPt{1e10f}; // range in pT float mMinPairEta{-1e10f}, mMaxPairEta{1e10f}; // range in eta - float mMinPhivPair{0.f}, mMaxPhivPair{+3.15}; - std::function mMinMeePhivPairDep{}; // min mee as a function of phiv + float mMinPhivPair{0.f}, mMaxPhivPair{+3.2}; + std::function mMaxPhivPairMeeDep{}; // max phiv as a function of mee // kinematic cuts float mMinTrackPt{0.f}, mMaxTrackPt{1e10f}; // range in pT @@ -327,7 +332,10 @@ class DalitzEECut : public TNamed // pid cuts PIDSchemes mPIDScheme{PIDSchemes::kUnDef}; - float mMinPinTOF{0.0f}; // min pin cut for TOF. + float mMinPinTOF{0.0f}; // min pin cut for TOF. + bool mMuonExclusionTPC{false}; // flag to reject muon in TPC for low B + bool mApplyTOFbeta{false}; // flag to reject hadron contamination with TOF + float mMinTOFbeta{0.0}, mMaxTOFbeta{0.95}; float mMinTPCNsigmaEl{-1e+10}, mMaxTPCNsigmaEl{+1e+10}; float mMinTPCNsigmaMu{-1e+10}, mMaxTPCNsigmaMu{+1e+10}; float mMinTPCNsigmaPi{-1e+10}, mMaxTPCNsigmaPi{+1e+10}; diff --git a/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx b/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx index caa3e7b9733..c1401fb04fa 100644 --- a/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx +++ b/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx @@ -144,9 +144,9 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char* } const int ndim = 4; // m, pt, dca, phiv - const int nbins[ndim] = {nm - 1, npt - 1, ndca - 1, 90}; + const int nbins[ndim] = {nm - 1, npt - 1, ndca - 1, 32}; const double xmin[ndim] = {0.0, 0.0, 0.0, 0.0}; - const double xmax[ndim] = {5.0, 10.0, 20.0, TMath::Pi()}; + const double xmax[ndim] = {5.0, 10.0, 20.0, 3.2}; THnSparseF* hs_dilepton_uls = new THnSparseF("hs_dilepton_uls", "hs_dilepton_uls;m_{ee} (GeV/c);p_{T,ee} (GeV/c);DCA_{xy,ee} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax); hs_dilepton_uls->SetBinEdges(0, mee);