Skip to content
Open
38 changes: 32 additions & 6 deletions PWGJE/Tasks/jetHadronsPid.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,21 @@ struct JetHadronsPid {
Configurable<double> deltaEtaEdge{"deltaEtaEdge", 0.05, "eta gap from the edge"};

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

struct : ConfigurableGroup {
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
Expand Down
Loading