@@ -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