Skip to content

Commit 31b13b3

Browse files
authored
[PWGLF] Add changes in track selection (#12217)
1 parent 14e6d4f commit 31b13b3

File tree

1 file changed

+63
-46
lines changed

1 file changed

+63
-46
lines changed

PWGLF/Tasks/GlobalEventProperties/flattenictyPikp.cxx

Lines changed: 63 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ static constexpr std::string_view kSpeciesAll[Npart] = {"El", "Mu", "Pi", "Ka",
9090
// histogram naming
9191
static constexpr std::string_view kCharge[] = {"all/", "pos/", "neg/"};
9292
static constexpr std::string_view kPrefix = "Tracks/";
93-
static constexpr std::string_view kQA = "QA/";
9493
static constexpr std::string_view kPrefixCleanTof = "Tracks/CleanTof/";
9594
static constexpr std::string_view kPrefixCleanV0 = "Tracks/CleanV0/";
9695
static constexpr std::string_view kStatus[] = {"preSel/", "postSel/"};
@@ -122,6 +121,7 @@ enum TrkSelNoFilt {
122121
trkSelEta,
123122
trkSelPt,
124123
trkSelDCA,
124+
trkNRowsTPC,
125125
trkSelNCls,
126126
trkSelTPCBndr,
127127
nTrkSel
@@ -226,7 +226,7 @@ struct FlattenictyPikp {
226226
} flatSelOpt;
227227

228228
struct : ConfigurableGroup {
229-
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0}, "pT binning"};
229+
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0}, "pT binning"};
230230
ConfigurableAxis axisMultPerc{"axisMultPerc", {100, 0, 100}, "Multiplicity percentiles binning"};
231231
ConfigurableAxis axisVertexZ{"axisVertexZ", {60, -15., 15.}, "Vertex z binning"};
232232
ConfigurableAxis axisMult{"axisMult", {301, -0.5, 300.5}, "Multiplicity binning"};
@@ -244,9 +244,12 @@ struct FlattenictyPikp {
244244
Configurable<float> cfgTrkEtaMax{"cfgTrkEtaMax", 0.8f, "Eta range for tracks"};
245245
Configurable<float> cfgRapMax{"cfgRapMax", 0.5f, "Maximum range of rapidity for tracks"};
246246
Configurable<float> cfgTrkPtMin{"cfgTrkPtMin", 0.15f, "Minimum pT of tracks"};
247+
Configurable<float> cfgNclTPCMin{"cfgNclTPCMin", 100.0f, "Minimum of number of TPC clusters"};
247248
Configurable<float> cfgPhiCutPtMin{"cfgPhiCutPtMin", 2.0f, "Minimum pT for phi cut"};
248249
Configurable<float> cfgTOFBetaPion{"cfgTOFBetaPion", 1.0f, "Minimum beta for TOF pions"};
249250
Configurable<bool> cfgUseExtraTrkCut{"cfgUseExtraTrkCut", true, "Use extra track cut"};
251+
Configurable<std::string> cfgGeoTrkCutMin{"cfgGeoTrkCutMin", "0.06/x+pi/18.0-0.06", "ROOT TF1 formula for minimum phi cut in TPC"};
252+
Configurable<std::string> cfgGeoTrkCutMax{"cfgGeoTrkCutMax", "0.1/x+pi/18.0+0.06", "ROOT TF1 formula for maximum phi cut in TPC"};
250253
Configurable<float> cfgMomMIPMax{"cfgMomMIPMax", 0.6f, "Maximum momentum of MIP pions"};
251254
Configurable<float> cfgMomMIPMin{"cfgMomMIPMin", 0.4f, "Minimum momentum of MIP pions"};
252255
Configurable<float> cfgDeDxMIPMax{"cfgDeDxMIPMax", 60.0f, "Maximum range of MIP dedx"};
@@ -301,7 +304,7 @@ struct FlattenictyPikp {
301304
Configurable<int> minITSnClusters{"minITSnClusters", 5, "minimum number of found ITS clusters"};
302305
Configurable<float> maxDcaXYFactor{"maxDcaXYFactor", 1.f, "Multiplicative factor on the maximum value of the DCA xy"};
303306
Configurable<float> maxDcaZ{"maxDcaZ", 2.f, "Additional cut on the maximum value of the DCA z"};
304-
Configurable<float> minTPCNClsFound{"minTPCNClsFound", 0.f, "Additional cut on the minimum value of the number of found clusters in the TPC"};
307+
Configurable<float> minTPCNClsFound{"minTPCNClsFound", 70.0f, "Additional cut on the minimum value of the number of found clusters in the TPC"};
305308

306309
TF1* fPhiCutLow = nullptr;
307310
TF1* fPhiCutHigh = nullptr;
@@ -398,12 +401,13 @@ struct FlattenictyPikp {
398401
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkSelEta + 1, "Eta");
399402
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkSelPt + 1, "Pt");
400403
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkSelDCA + 1, "DCA");
401-
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkSelNCls + 1, "NCls");
404+
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkNRowsTPC + 1, "trkNRowsTPC");
405+
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkSelNCls + 1, "NClsTPC");
402406
flatchrg.get<TH1>(HIST("Tracks/hTrkSel"))->GetXaxis()->SetBinLabel(trkSelTPCBndr + 1, "TPC Boundary");
403407

404408
if (trkSelOpt.cfgUseExtraTrkCut) {
405-
fPhiCutLow = new TF1("fPhiCutLow", "0.06/x+pi/18.0-0.06", 0, 100);
406-
fPhiCutHigh = new TF1("fPhiCutHigh", "0.1/x+pi/18.0+0.06", 0, 100);
409+
fPhiCutLow = new TF1("fPhiCutLow", trkSelOpt.cfgGeoTrkCutMin.value.c_str(), 0, 100);
410+
fPhiCutHigh = new TF1("fPhiCutHigh", trkSelOpt.cfgGeoTrkCutMax.value.c_str(), 0, 100);
407411
}
408412

409413
if (doprocessFlat) {
@@ -413,25 +417,26 @@ struct FlattenictyPikp {
413417
if (cfgFillTrackQaHist || cfgFilldEdxQaHist || cfgFillNsigmaQAHist) {
414418
if (cfgFillTrackQaHist) {
415419
flatchrg.add("Tracks/postSel/hPtPhi", "; #it{p}_{T} (GeV/#it{c}); fmod(#varphi,#pi/9)", {HistType::kTH2D, {ptAxis, phiAxisMod}});
416-
flatchrg.add("Tracks/QA/hPtVsWOcutDCA", "hPtVsWOcutDCA", HistType::kTH2D, {ptAxis, dcaXYAxis});
417-
flatchrg.add("Tracks/QA/hPt", "", HistType::kTH1D, {ptAxis});
418-
flatchrg.add("Tracks/QA/hPhi", "", HistType::kTH1D, {phiAxis});
419-
flatchrg.add("Tracks/QA/hEta", "", HistType::kTH1D, {etaAxis});
420-
flatchrg.add("Tracks/QA/hDCAXYvsPt", "", HistType::kTH2D, {ptAxis, dcaXYAxis});
421-
flatchrg.add("Tracks/QA/hDCAZvsPt", "", HistType::kTH2D, {ptAxis, dcaZAxis});
420+
flatchrg.add("Tracks/postSel/hPtVsWOcutDCA", "hPtVsWOcutDCA", HistType::kTH2D, {ptAxis, dcaXYAxis});
421+
flatchrg.add("Tracks/postSel/hPt", "", HistType::kTH1D, {ptAxis});
422+
flatchrg.add("Tracks/postSel/hPhi", "", HistType::kTH1D, {phiAxis});
423+
flatchrg.add("Tracks/postSel/hEta", "", HistType::kTH1D, {etaAxis});
424+
flatchrg.add("Tracks/postSel/hDCAXYvsPt", "", HistType::kTH2D, {ptAxis, dcaXYAxis});
425+
flatchrg.add("Tracks/postSel/hDCAZvsPt", "", HistType::kTH2D, {ptAxis, dcaZAxis});
422426
// tpc
423-
flatchrg.add("Tracks/QA/hShTpcClvsPt", "", {HistType::kTH2D, {ptAxis, shCluserAxis}});
424-
flatchrg.add("Tracks/QA/hCrossTPCvsPt", "", {HistType::kTH2D, {ptAxis, clTpcAxis}});
425-
flatchrg.add("Tracks/QA/hTPCCluster", "N_{cluster}", HistType::kTH1D, {{200, -0.5, 199.5}});
426-
flatchrg.add("Tracks/QA/tpcNClsShared", " ; # shared TPC clusters TPC", HistType::kTH1D, {{165, -0.5, 164.5}});
427-
flatchrg.add("Tracks/QA/tpcCrossedRows", " ; # crossed TPC rows", HistType::kTH1D, {{165, -0.5, 164.5}});
428-
flatchrg.add("Tracks/QA/tpcCrossedRowsOverFindableCls", " ; crossed rows / findable TPC clusters", HistType::kTH1D, {{60, 0.7, 1.3}});
427+
flatchrg.add("Tracks/postSel/hPtPhiTPCCluster", "; #it{p}_{T} (GeV/#it{c}); fmod(#varphi,#pi/9); N_{cluster}", {HistType::kTHnSparseD, {ptAxis, phiAxisMod, clTpcAxis}});
428+
flatchrg.add("Tracks/postSel/hShTpcClvsPt", "", {HistType::kTH2D, {ptAxis, shCluserAxis}});
429+
flatchrg.add("Tracks/postSel/hCrossTPCvsPt", "", {HistType::kTH2D, {ptAxis, clTpcAxis}});
430+
flatchrg.add("Tracks/postSel/hTPCCluster", "N_{cluster}", HistType::kTH1D, {clTpcAxis});
431+
flatchrg.add("Tracks/postSel/tpcNClsShared", " ; # shared TPC clusters TPC", HistType::kTH1D, {{165, -0.5, 164.5}});
432+
flatchrg.add("Tracks/postSel/tpcCrossedRows", " ; # crossed TPC rows", HistType::kTH1D, {{165, -0.5, 164.5}});
433+
flatchrg.add("Tracks/postSel/tpcCrossedRowsOverFindableCls", " ; crossed rows / findable TPC clusters", HistType::kTH1D, {{60, 0.7, 1.3}});
429434
// its
430-
flatchrg.add("Tracks/QA/itsNCls", " ; # ITS clusters", HistType::kTH1D, {{8, -0.5, 7.5}});
431-
flatchrg.add("Tracks/QA/hChi2ITSTrkSegment", "chi2ITS", HistType::kTH1D, {{100, -0.5, 99.5}});
435+
flatchrg.add("Tracks/postSel/itsNCls", " ; # ITS clusters", HistType::kTH1D, {{8, -0.5, 7.5}});
436+
flatchrg.add("Tracks/postSel/hChi2ITSTrkSegment", "chi2ITS", HistType::kTH1D, {{100, -0.5, 99.5}});
432437
// tof
433-
flatchrg.add("Tracks/QA/hTOFPvsBeta", "Beta from TOF; #it{p} (GeV/#it{c}); #beta", {HistType::kTH2D, {pAxis, {120, 0.0, 1.2}}});
434-
flatchrg.add("Tracks/QA/hTOFpi", "Primary Pions from TOF; #eta; #it{p} (GeV/#it{c}); dEdx", {HistType::kTHnSparseD, {etaAxis, pAxis, dEdxAxis}});
438+
flatchrg.add("Tracks/postSel/hTOFPvsBeta", "Beta from TOF; #it{p} (GeV/#it{c}); #beta", {HistType::kTH2D, {pAxis, {120, 0.0, 1.2}}});
439+
flatchrg.add("Tracks/postSel/hTOFpi", "Primary Pions from TOF; #eta; #it{p} (GeV/#it{c}); dEdx", {HistType::kTHnSparseD, {etaAxis, pAxis, dEdxAxis}});
435440
}
436441
if (cfgFilldEdxQaHist) {
437442
flatchrg.add("Tracks/postCalib/all/hMIP", "; mult; flat; #eta; #LT dE/dx #GT_{MIP, primary tracks};", {HistType::kTHnSparseD, {multAxis, flatAxis, etaAxis, dEdxAxis}});
@@ -707,22 +712,22 @@ struct FlattenictyPikp {
707712
fillTrackQA<kAfter, true>(track);
708713
}
709714
if (cfgFilldEdxQaHist) {
710-
filldEdxQA<kAll, kBefore, true>(track, collision);
715+
filldEdxQA<kAll, kBefore, true>(track, collision, dEdx);
711716
if (posP) {
712-
filldEdxQA<kPos, kBefore, true>(track, collision);
717+
filldEdxQA<kPos, kBefore, true>(track, collision, dEdx);
713718
} else {
714-
filldEdxQA<kNeg, kBefore, true>(track, collision);
719+
filldEdxQA<kNeg, kBefore, true>(track, collision, dEdx);
715720
}
716721
}
717722
if (applyCalibDeDx) {
718723
dEdx *= (50.0 / getCalibration(true, track.eta()));
719724
}
720725
if (cfgFilldEdxQaHist) {
721-
filldEdxQA<kAll, kAfter, true>(track, collision);
726+
filldEdxQA<kAll, kAfter, true>(track, collision, dEdx);
722727
if (posP) {
723-
filldEdxQA<kPos, kAfter, true>(track, collision);
728+
filldEdxQA<kPos, kAfter, true>(track, collision, dEdx);
724729
} else {
725-
filldEdxQA<kNeg, kAfter, true>(track, collision);
730+
filldEdxQA<kNeg, kAfter, true>(track, collision, dEdx);
726731
}
727732
}
728733

@@ -788,6 +793,7 @@ struct FlattenictyPikp {
788793
if (eta < 0.) {
789794
if (isMIP) {
790795
valCalib = fDeDxVsEtaNeg->Eval(eta);
796+
// LOGF(info, "--------> \t fDeDxVsEtaNeg->Eval(%f) = %f", eta, valCalib);
791797
} else {
792798
valCalib = fEDeDxVsEtaNeg->Eval(eta);
793799
}
@@ -830,12 +836,18 @@ struct FlattenictyPikp {
830836

831837
if (cfgFillTrackQaHist) {
832838
flatchrg.fill(HIST("Tracks/preSel/hPtPhi"), track.pt(), phimodn);
839+
if (track.hasTPC() && track.hasITS()) {
840+
flatchrg.fill(HIST("Tracks/preSel/hPtPhiTPCCluster"), track.pt(), phimodn, track.tpcNClsFindable() - track.tpcNClsFindableMinusFound());
841+
}
833842
}
834843
if (phimodn < fphiCutHigh->Eval(track.pt()) && phimodn > fphiCutLow->Eval(track.pt())) {
835844
return false;
836845
}
837846
if (cfgFillTrackQaHist) {
838847
flatchrg.fill(HIST("Tracks/postSel/hPtPhi"), track.pt(), phimodn);
848+
if (track.hasTPC() && track.hasITS()) {
849+
flatchrg.fill(HIST("Tracks/postSel/hPtPhiTPCCluster"), track.pt(), phimodn, track.tpcNClsFindable() - track.tpcNClsFindableMinusFound());
850+
}
839851
}
840852
return true;
841853
}
@@ -858,6 +870,11 @@ struct FlattenictyPikp {
858870
if (track.tpcNClsCrossedRows() < minNCrossedRowsTPC) {
859871
return false;
860872
}
873+
flatchrg.fill(HIST("Tracks/hTrkSel"), trkNRowsTPC);
874+
auto nClusterTPC = track.tpcNClsFindable() - track.tpcNClsFindableMinusFound();
875+
if (nClusterTPC < trkSelOpt.cfgNclTPCMin) {
876+
return false;
877+
}
861878
flatchrg.fill(HIST("Tracks/hTrkSel"), trkSelNCls);
862879
if (trkSelOpt.cfgUseExtraTrkCut && !phiCut(track, magfield, fPhiCutLow, fPhiCutHigh)) {
863880
return false;
@@ -1009,46 +1026,46 @@ struct FlattenictyPikp {
10091026
inline void fillTrackQA(T const& track)
10101027
{
10111028
if constexpr (fillHist) {
1012-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hPt"), track.pt());
1013-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hPhi"), track.phi());
1014-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hEta"), track.eta());
1015-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hDCAXYvsPt"), track.pt(), track.dcaXY());
1016-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hDCAZvsPt"), track.pt(), track.dcaZ());
1029+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hPt"), track.pt());
1030+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hPhi"), track.phi());
1031+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hEta"), track.eta());
1032+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hDCAXYvsPt"), track.pt(), track.dcaXY());
1033+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hDCAZvsPt"), track.pt(), track.dcaZ());
10171034

10181035
if (track.hasTPC() && track.hasITS()) {
10191036
int nFindable = track.tpcNClsFindable();
10201037
int nMinusFound = track.tpcNClsFindableMinusFound();
10211038
int nCluster = nFindable - nMinusFound;
1022-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hTPCCluster"), nCluster);
1023-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hShTpcClvsPt"), track.pt(), track.tpcFractionSharedCls());
1024-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hCrossTPCvsPt"), track.pt(), track.tpcNClsFound());
1025-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("tpcNClsShared"), track.tpcNClsShared());
1026-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("tpcCrossedRows"), track.tpcNClsCrossedRows());
1027-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("tpcCrossedRowsOverFindableCls"), track.tpcCrossedRowsOverFindableCls());
1028-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hChi2ITSTrkSegment"), track.itsChi2NCl());
1029-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("itsNCls"), track.itsNCls());
1039+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hTPCCluster"), nCluster);
1040+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hShTpcClvsPt"), track.pt(), track.tpcFractionSharedCls());
1041+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hCrossTPCvsPt"), track.pt(), track.tpcNClsFound());
1042+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("tpcNClsShared"), track.tpcNClsShared());
1043+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("tpcCrossedRows"), track.tpcNClsCrossedRows());
1044+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("tpcCrossedRowsOverFindableCls"), track.tpcCrossedRowsOverFindableCls());
1045+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hChi2ITSTrkSegment"), track.itsChi2NCl());
1046+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("itsNCls"), track.itsNCls());
10301047
}
10311048

1032-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hTOFPvsBeta"), track.tpcInnerParam(), track.beta());
1049+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hTOFPvsBeta"), track.tpcInnerParam(), track.beta());
10331050
if (track.beta() > trkSelOpt.cfgTOFBetaPion && track.beta() < trkSelOpt.cfgTOFBetaPion + 0.05) { // TOF pions
1034-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hTOFpi"), track.eta(), track.tpcInnerParam(), track.tpcSignal());
1051+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hTOFpi"), track.eta(), track.tpcInnerParam(), track.tpcSignal());
10351052
}
10361053

10371054
if (std::abs(track.eta()) < trkSelOpt.cfgTrkEtaMax) {
10381055
if (isDCAxyWoCut(track)) {
1039-
flatchrg.fill(HIST(kPrefix) + HIST(kQA) + HIST("hPtVsWOcutDCA"), track.pt(), track.dcaXY());
1056+
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hPtVsWOcutDCA"), track.pt(), track.dcaXY());
10401057
}
10411058
}
10421059
}
10431060
flatchrg.fill(HIST(kPrefix) + HIST(kStatus[ft]) + HIST("hPVsPtEta"), track.tpcInnerParam(), track.pt(), track.eta());
10441061
}
10451062

10461063
template <ChargeType chrg, FillType ft, bool fillHist = false, typename T, typename C>
1047-
inline void filldEdxQA(T const& track, C const& collision)
1064+
inline void filldEdxQA(T const& track, C const& collision, const float dEdx)
10481065
{
10491066
const float mult = getMult(collision);
10501067
const float flat = fillFlat<true>(collision);
1051-
float dEdx = track.tpcSignal();
1068+
// float dEdx = track.tpcSignal();
10521069
if constexpr (fillHist) {
10531070
if (track.tpcInnerParam() >= trkSelOpt.cfgMomMIPMin && track.tpcInnerParam() <= trkSelOpt.cfgMomMIPMax) {
10541071
if (dEdx > trkSelOpt.cfgDeDxMIPMin && dEdx < trkSelOpt.cfgDeDxMIPMax) { // MIP pions

0 commit comments

Comments
 (0)