Skip to content

Commit 1988078

Browse files
[PWGJE] jetHadronsPid.cxx task: Add TPC and ITS clusters selection, new PID method and pt-dependent cut on DCA (#18345)
Co-authored-by: Leonard <myfavoriteornot@gmail.com> Co-authored-by: Leonard Lorenc <107263905+llorenc-11@users.noreply.github.com>
1 parent 3c6f631 commit 1988078

1 file changed

Lines changed: 32 additions & 6 deletions

File tree

‎PWGJE/Tasks/jetHadronsPid.cxx‎

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,21 @@ struct JetHadronsPid {
104104
Configurable<double> deltaEtaEdge{"deltaEtaEdge", 0.05, "eta gap from the edge"};
105105

106106
Configurable<bool> requirePvContributor{"requirePvContributor", false, "require that the track is a PV contributor"};
107-
Configurable<int> minTpcNcrossedRows{"minTpcNcrossedRows", 70, "minimum number of TPC crossed pad rows"};
107+
Configurable<int> minTpcNcrossedRows{"minTpcNcrossedRows", 100, "minimum number of TPC crossed pad rows"};
108+
Configurable<int> minTpcNclusters{"minTpcNclusters", 110, "Minimum number of clusters in TPC"};
109+
Configurable<int> minItsNclusters{"minItsNclusters", 7, "Minimum number of clusters in ITS"};
110+
Configurable<int> minItsIbNclusters{"minItsIbNclusters", 3, "Minimum number of clusters in inner barrel (max 3) of ITS"};
108111
Configurable<double> minChiSquareTpc{"minChiSquareTpc", 0.0, "minimum TPC chi^2/Ncls"};
109112
Configurable<double> maxChiSquareTpc{"maxChiSquareTpc", 4.0, "maximum TPC chi^2/Ncls"};
110113
Configurable<double> maxChiSquareIts{"maxChiSquareIts", 36.0, "maximum ITS chi^2/Ncls"};
111114
Configurable<double> minPt{"minPt", 0.05, "minimum pt of the tracks"};
112115
Configurable<double> maxPt{"maxPt", 4.0, "maximum pt of the tracks for PID analysis"};
113116
Configurable<double> minEta{"minEta", -0.8, "minimum eta"};
114117
Configurable<double> maxEta{"maxEta", +0.8, "maximum eta"};
115-
Configurable<double> maxDcaxy{"maxDcaxy", 0.2, "Maximum DCAxy"};
116-
Configurable<double> maxDcaz{"maxDcaz", 0.1, "Maximum DCAz"};
118+
Configurable<double> maxDcaxy{"maxDcaxy", 0.004, "constant term of the DCAxy cut -> |DCAxy| < maxDcaxy + dcaXyPtPart/pT, in cm"};
119+
Configurable<double> maxDcaz{"maxDcaz", 0.004, "constant term of the DCAz cut -> |DCAz| < maxDcaz + dcaZPtPart/pT, in cm"};
120+
Configurable<double> dcaXyPtPart{"dcaXyPtPart", 0.013, "pt-dependent term of the DCAxy cut -> |DCAxy| < maxDcaxy + dcaXyPtPart/pT"};
121+
Configurable<double> dcaZPtPart{"dcaZPtPart", 0.013, "pt-dependent term of the DCAz cut -> |DCAz| < maxDcaz + dcaZPtPart/pT"};
117122
Configurable<bool> setMCDefaultItsParams{"setMCDefaultItsParams", true, "set MC default parameters"};
118123

119124
struct : ConfigurableGroup {
@@ -1139,6 +1144,7 @@ struct JetHadronsPid {
11391144
constexpr int ClosestMatch = 0;
11401145
constexpr int ExclusiveMatch = 1;
11411146
constexpr int RejectionBased = 2;
1147+
constexpr int NoRejection = 3;
11421148

11431149
double const buffer = 999.0;
11441150
double pt = track.pt();
@@ -1208,8 +1214,17 @@ struct JetHadronsPid {
12081214
bool isPrMatch = (dForProtonsPr <= cfg.nSigmaCutPr);
12091215

12101216
PidResult res{.isPion = false, .isKaon = false, .isProton = false};
1211-
1212-
if (cfg.pidMethod == ClosestMatch) {
1217+
if (cfg.pidMethod == NoRejection) {
1218+
if (isPiMatch) {
1219+
res.isPion = true;
1220+
}
1221+
if (isKaMatch) {
1222+
res.isKaon = true;
1223+
}
1224+
if (isPrMatch) {
1225+
res.isProton = true;
1226+
}
1227+
} else if (cfg.pidMethod == ClosestMatch) {
12131228
if (isPiMatch && dForPionsPi < dForPionsKa && dForPionsPi < dForPionsPr) {
12141229
res.isPion = true;
12151230
}
@@ -1269,6 +1284,15 @@ struct JetHadronsPid {
12691284
if (track.tpcNClsCrossedRows() < minTpcNcrossedRows) {
12701285
return false;
12711286
}
1287+
if (track.tpcNClsFound() < minTpcNclusters) {
1288+
return false;
1289+
}
1290+
if (track.itsNCls() < minItsNclusters) {
1291+
return false;
1292+
}
1293+
if (track.itsNClsInnerBarrel() < minItsIbNclusters) {
1294+
return false;
1295+
}
12721296
if (!track.passedTPCCrossedRowsOverNCls()) {
12731297
return false;
12741298
}
@@ -1287,7 +1311,9 @@ struct JetHadronsPid {
12871311
if (track.pt() < minPt || track.pt() > maxPt) {
12881312
return false;
12891313
}
1290-
if (std::abs(track.dcaXY()) > maxDcaxy || std::abs(track.dcaZ()) > maxDcaz) {
1314+
const double maxDcaxyCut = maxDcaxy + dcaXyPtPart / track.pt();
1315+
const double maxDcazCut = maxDcaz + dcaZPtPart / track.pt();
1316+
if (std::abs(track.dcaXY()) > maxDcaxyCut || std::abs(track.dcaZ()) > maxDcazCut) {
12911317
return false;
12921318
}
12931319
return true;

0 commit comments

Comments
 (0)