diff --git a/PWGJE/Tasks/jetHadronsPid.cxx b/PWGJE/Tasks/jetHadronsPid.cxx index 2bdce5fb820..f1e59447406 100644 --- a/PWGJE/Tasks/jetHadronsPid.cxx +++ b/PWGJE/Tasks/jetHadronsPid.cxx @@ -104,7 +104,10 @@ struct JetHadronsPid { Configurable deltaEtaEdge{"deltaEtaEdge", 0.05, "eta gap from the edge"}; Configurable requirePvContributor{"requirePvContributor", false, "require that the track is a PV contributor"}; - Configurable minTpcNcrossedRows{"minTpcNcrossedRows", 70, "minimum number of TPC crossed pad rows"}; + Configurable minTpcNcrossedRows{"minTpcNcrossedRows", 100, "minimum number of TPC crossed pad rows"}; + Configurable minTpcNclusters{"minTpcNclusters", 110, "Minimum number of clusters in TPC"}; + Configurable minItsNclusters{"minItsNclusters", 7, "Minimum number of clusters in ITS"}; + Configurable minItsIbNclusters{"minItsIbNclusters", 3, "Minimum number of clusters in inner barrel (max 3) of ITS"}; Configurable minChiSquareTpc{"minChiSquareTpc", 0.0, "minimum TPC chi^2/Ncls"}; Configurable maxChiSquareTpc{"maxChiSquareTpc", 4.0, "maximum TPC chi^2/Ncls"}; Configurable maxChiSquareIts{"maxChiSquareIts", 36.0, "maximum ITS chi^2/Ncls"}; @@ -112,8 +115,10 @@ struct JetHadronsPid { Configurable maxPt{"maxPt", 4.0, "maximum pt of the tracks for PID analysis"}; Configurable minEta{"minEta", -0.8, "minimum eta"}; Configurable maxEta{"maxEta", +0.8, "maximum eta"}; - Configurable maxDcaxy{"maxDcaxy", 0.2, "Maximum DCAxy"}; - Configurable maxDcaz{"maxDcaz", 0.1, "Maximum DCAz"}; + Configurable maxDcaxy{"maxDcaxy", 0.004, "constant term of the DCAxy cut -> |DCAxy| < maxDcaxy + dcaXyPtPart/pT, in cm"}; + Configurable maxDcaz{"maxDcaz", 0.004, "constant term of the DCAz cut -> |DCAz| < maxDcaz + dcaZPtPart/pT, in cm"}; + Configurable dcaXyPtPart{"dcaXyPtPart", 0.013, "pt-dependent term of the DCAxy cut -> |DCAxy| < maxDcaxy + dcaXyPtPart/pT"}; + Configurable dcaZPtPart{"dcaZPtPart", 0.013, "pt-dependent term of the DCAz cut -> |DCAz| < maxDcaz + dcaZPtPart/pT"}; Configurable setMCDefaultItsParams{"setMCDefaultItsParams", true, "set MC default parameters"}; struct : ConfigurableGroup { @@ -1139,6 +1144,7 @@ struct JetHadronsPid { constexpr int ClosestMatch = 0; constexpr int ExclusiveMatch = 1; constexpr int RejectionBased = 2; + constexpr int NoRejection = 3; double const buffer = 999.0; double pt = track.pt(); @@ -1208,8 +1214,17 @@ struct JetHadronsPid { bool isPrMatch = (dForProtonsPr <= cfg.nSigmaCutPr); PidResult res{.isPion = false, .isKaon = false, .isProton = false}; - - if (cfg.pidMethod == ClosestMatch) { + if (cfg.pidMethod == NoRejection) { + if (isPiMatch) { + res.isPion = true; + } + if (isKaMatch) { + res.isKaon = true; + } + if (isPrMatch) { + res.isProton = true; + } + } else if (cfg.pidMethod == ClosestMatch) { if (isPiMatch && dForPionsPi < dForPionsKa && dForPionsPi < dForPionsPr) { res.isPion = true; } @@ -1269,6 +1284,15 @@ struct JetHadronsPid { if (track.tpcNClsCrossedRows() < minTpcNcrossedRows) { return false; } + if (track.tpcNClsFound() < minTpcNclusters) { + return false; + } + if (track.itsNCls() < minItsNclusters) { + return false; + } + if (track.itsNClsInnerBarrel() < minItsIbNclusters) { + return false; + } if (!track.passedTPCCrossedRowsOverNCls()) { return false; } @@ -1287,7 +1311,9 @@ struct JetHadronsPid { if (track.pt() < minPt || track.pt() > maxPt) { return false; } - if (std::abs(track.dcaXY()) > maxDcaxy || std::abs(track.dcaZ()) > maxDcaz) { + const double maxDcaxyCut = maxDcaxy + dcaXyPtPart / track.pt(); + const double maxDcazCut = maxDcaz + dcaZPtPart / track.pt(); + if (std::abs(track.dcaXY()) > maxDcaxyCut || std::abs(track.dcaZ()) > maxDcazCut) { return false; } return true;