From 378106d4bd637bb79ea385182e2969cc98869614 Mon Sep 17 00:00:00 2001 From: Gyula Bencedi Date: Fri, 29 May 2026 15:18:26 +0200 Subject: [PATCH 1/3] Add event selection on ITS layers --- PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx index 8ecdaafd555..ecc9d8bad16 100644 --- a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx +++ b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx @@ -120,6 +120,7 @@ enum class EvtSel { evtNoCollInRofStrict, evtNoCollInRofStandard, evtNoHighMultCollInPrevRof, + evtGoodITSLayersAll, evtBelowMinOccup, evtAboveMaxOccup, evtRCTFlagChecker, @@ -428,6 +429,7 @@ struct DndetaMFTPbPb { Configurable requireNoCollInRofStrict{"requireNoCollInRofStrict", true, "requireNoCollInRofStrict"}; Configurable requireNoCollInRofStandard{"requireNoCollInRofStandard", false, "requireNoCollInRofStandard"}; Configurable requireNoHighMultCollInPrevRof{"requireNoHighMultCollInPrevRof", false, "requireNoHighMultCollInPrevRof"}; + Configurable requireGoodITSLayersAll{"requireGoodITSLayersAll", true, "requireGoodITSLayersAll"}; Configurable requireNoCollInTimeRangeStd{"requireNoCollInTimeRangeStd", false, "reject collisions corrupted by the cannibalism, with other collisions within +/- 10 microseconds"}; Configurable requireNoCollInTimeRangeNarrow{"requireNoCollInTimeRangeNarrow", false, "reject collisions corrupted by the cannibalism, with other collisions within +/- 10 microseconds"}; Configurable occupancyEstimator{"occupancyEstimator", 1, "Occupancy estimator: 1 = trackOccupancyInTimeRange, 2 = ft0cOccupancyInTimeRange"}; @@ -577,6 +579,7 @@ struct DndetaMFTPbPb { labelEvtSel[static_cast(EvtSel::evtNoCollInRofStrict)] = "kNoCollInRofStrict"; labelEvtSel[static_cast(EvtSel::evtNoCollInRofStandard)] = "kNoCollInRofStandard"; labelEvtSel[static_cast(EvtSel::evtNoHighMultCollInPrevRof)] = "kNoHighMultCollInPrevRof"; + labelEvtSel[static_cast(EvtSel::evtGoodITSLayersAll)] = "kIsGoodITSLayersAll"; labelEvtSel[static_cast(EvtSel::evtBelowMinOccup)] = "Below min occup."; labelEvtSel[static_cast(EvtSel::evtAboveMaxOccup)] = "Above max occup."; labelEvtSel[static_cast(EvtSel::evtRCTFlagChecker)] = "RCT Flag Checker"; @@ -2241,6 +2244,12 @@ struct DndetaMFTPbPb { if constexpr (fillHis) { registry.fill(HIST("Events/hEvtSel"), static_cast(EvtSel::evtNoHighMultCollInPrevRof)); } + if (eventCuts.requireGoodITSLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) { + return false; + } + if constexpr (fillHis) { + registry.fill(HIST("Events/hEvtSel"), static_cast(EvtSel::evtGoodITSLayersAll)); + } if (eventCuts.minOccupancy >= 0 && getOccupancy(collision, eventCuts.occupancyEstimator) < eventCuts.minOccupancy) { From 57aa4153f723e55aa0052900134ec3fa5dd96302 Mon Sep 17 00:00:00 2001 From: Gyula Bencedi Date: Fri, 29 May 2026 15:42:29 +0200 Subject: [PATCH 2/3] fix build error --- PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx index ecc9d8bad16..4c23df14c8e 100644 --- a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx +++ b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx @@ -98,7 +98,7 @@ auto static constexpr CmaxAccFT0A = 4.9f; auto static constexpr CminAccFT0C = -3.3f; auto static constexpr CmaxAccFT0C = -2.1f; -constexpr int CevtSel = 15; +constexpr int CevtSel = 16; constexpr int CtrkSel = 7; constexpr int CtrkTrkBestSel = 6; constexpr int CambTrkType = 7; From 6387d0a997b74c93577f02e75d3ffbac6d19078f Mon Sep 17 00:00:00 2001 From: Gyula Bencedi Date: Fri, 29 May 2026 15:45:31 +0200 Subject: [PATCH 3/3] fix linter error --- PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx index 4c23df14c8e..575470dc8af 100644 --- a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx +++ b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx @@ -90,6 +90,8 @@ using namespace o2::aod::rctsel; auto static constexpr CminCharge = 3.f; auto static constexpr CintZero = 0; +auto static constexpr CintOne = 1; +auto static constexpr CintTwo = 2; auto static constexpr Czero = 0.f; auto static constexpr Cninety = 90.f; auto static constexpr ConeHeighty = 180.f; @@ -4969,9 +4971,9 @@ struct DndetaMFTPbPb { if (gConf.cfgDCAtype == 0) { dcaInfo[0] = dcaInfOrig[0]; - } else if (gConf.cfgDCAtype == 1) { + } else if (gConf.cfgDCAtype == CintOne) { dcaInfo[0] = dcaInfOrig[1]; - } else if (gConf.cfgDCAtype == 2) { + } else if (gConf.cfgDCAtype == CintTwo) { dcaInfo[0] = std::sqrt(dcaInfOrig[0] * dcaInfOrig[0] + dcaInfOrig[1] * dcaInfOrig[1]); } dcaInfo[1] = dcaInfOrig[2];