Skip to content

Commit 6e3ec44

Browse files
DelloStrittoLuigi
andauthored
PWGHF: fix the PID in the Lc->pKpi selector (#5496)
Co-authored-by: Luigi <ldellost@aliceml.cern.ch>
1 parent 0980ed5 commit 6e3ec44

File tree

3 files changed

+53
-44
lines changed

3 files changed

+53
-44
lines changed

Analysis/Tasks/PWGHF/HFD0CandidateSelector.cxx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ struct HFD0CandidateSelector {
6767
Configurable<double> d_pidTOFMaxpT{"d_pidTOFMaxpT", 5., "Upper bound of track pT for TOF PID"};
6868

6969
Configurable<double> d_TPCNClsFindablePIDCut{"d_TPCNClsFindablePIDCut", 50., "Lower bound of TPC findable clusters for good PID"};
70-
Configurable<bool> b_requireTPC{"b_requireTPC", true, "Flag to require a positive Number of found clusters in TPC"};
7170
Configurable<double> d_nSigmaTPC{"d_nSigmaTPC", 3., "Nsigma cut on TPC only"};
7271
Configurable<double> d_nSigmaTPCCombined{"d_nSigmaTPCCombined", 5., "Nsigma cut on TPC combined with TOF"};
7372
Configurable<double> d_nSigmaTOF{"d_nSigmaTOF", 3., "Nsigma cut on TOF only"};
@@ -101,9 +100,9 @@ struct HFD0CandidateSelector {
101100
if (track.charge() == 0) {
102101
return false;
103102
}
104-
if (b_requireTPC.value && track.tpcNClsFound() == 0) {
103+
/* if (track.tpcNClsFound() == 0) {
105104
return false; //is it clusters findable or found - need to check
106-
}
105+
}*/
107106
return true;
108107
}
109108

Analysis/Tasks/PWGHF/HFJpsiToEECandidateSelector.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ struct HFJpsiToEECandidateSelector {
7979
if (track.charge() == 0) {
8080
return false;
8181
}
82-
if (track.tpcNClsFound() == 0) {
82+
/*if (track.tpcNClsFound() == 0) {
8383
return false; //is it clusters findable or found - need to check
84-
}
84+
}*/
8585
return true;
8686
}
8787

Analysis/Tasks/PWGHF/HFLcCandidateSelector.cxx

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// granted to it by virtue of its status as an Intergovernmental Organization
99
// or submit itself to any jurisdiction.
1010

11-
/// \file HFD0CandidateSelector.cxx
11+
/// \file HFLcCandidateSelector.cxx
1212
/// \brief Lc->pKpi selection task.
1313
///
1414
/// \author Luigi Dello Stritto <luigi.dello.stritto@cern.ch>, University and INFN SALERNO
@@ -46,11 +46,12 @@ struct HFLcCandidateSelector {
4646
Configurable<double> d_pTCandMin{"d_pTCandMin", 0., "Lower bound of candidate pT"};
4747
Configurable<double> d_pTCandMax{"d_pTCandMax", 36., "Upper bound of candidate pT"};
4848

49-
Configurable<double> d_pidTPCMinpT{"d_pidTPCMinpT", 0.15, "Lower bound of track pT for TPC PID"};
49+
Configurable<double> d_pidTPCMinpT{"d_pidTPCMinpT", 0.1, "Lower bound of track pT for TPC PID"};
5050
Configurable<double> d_pidTPCMaxpT{"d_pidTPCMaxpT", 1., "Upper bound of track pT for TPC PID"};
5151
Configurable<double> d_pidTOFMinpT{"d_pidTOFMinpT", 0.5, "Lower bound of track pT for TOF PID"};
52-
Configurable<double> d_pidTOFMaxpT{"d_pidTOFMaxpT", 4., "Upper bound of track pT for TOF PID"};
52+
Configurable<double> d_pidTOFMaxpT{"d_pidTOFMaxpT", 2.5, "Upper bound of track pT for TOF PID"};
5353

54+
Configurable<bool> d_FilterPID{"d_FilterPID", true, "Bool to use or not the PID at filtering level"};
5455
Configurable<double> d_TPCNClsFindablePIDCut{"d_TPCNClsFindablePIDCut", 70., "Lower bound of TPC findable clusters for good PID"};
5556
Configurable<double> d_nSigmaTPC{"d_nSigmaTPC", 3., "Nsigma cut on TPC only"};
5657
Configurable<double> d_nSigmaTPCCombined{"d_nSigmaTPCCombined", 5., "Nsigma cut on TPC combined with TOF"};
@@ -85,9 +86,9 @@ struct HFLcCandidateSelector {
8586
if (track.charge() == 0) {
8687
return false;
8788
}
88-
if (track.tpcNClsFound() == 0) {
89+
/*if (track.tpcNClsFound() == 0) {
8990
return false; //is it clusters findable or found - need to check
90-
}
91+
}*/
9192
return true;
9293
}
9394

@@ -190,17 +191,17 @@ struct HFLcCandidateSelector {
190191
template <typename T>
191192
bool selectionPIDTPC(const T& track, int nPDG, int nSigmaCut)
192193
{
193-
double nSigma = 1.0; //arbitarily large value
194+
double nSigma = 100.; //arbitarily large value
194195
nPDG = TMath::Abs(nPDG);
195-
/* if (nPDG == 2212) {
196+
if (nPDG == kProton) {
196197
nSigma = track.tpcNSigmaPr();
197-
} else if (nPDG == 321) {
198+
} else if (nPDG == kKPlus) {
198199
nSigma = track.tpcNSigmaKa();
199-
} else if (nPDG == 111) {
200+
} else if (nPDG == kPiPlus) {
200201
nSigma = track.tpcNSigmaPi();
201202
} else {
202203
return false;
203-
}*/
204+
}
204205
return nSigma < nSigmaCut;
205206
}
206207

@@ -213,17 +214,17 @@ struct HFLcCandidateSelector {
213214
template <typename T>
214215
bool selectionPIDTOF(const T& track, int nPDG, int nSigmaCut)
215216
{
216-
double nSigma = 1.; //arbitarily large value
217+
double nSigma = 100.; //arbitarily large value
217218
nPDG = TMath::Abs(nPDG);
218-
/* if (nPDG == 2212) {
219+
if (nPDG == kProton) {
219220
nSigma = track.tofNSigmaPr();
220-
} else if (nPDG == 321) {
221+
} else if (nPDG == kKPlus) {
221222
nSigma = track.tofNSigmaKa();
222-
} else if (nPDG == 321) {
223+
} else if (nPDG == kPiPlus) {
223224
nSigma = track.tofNSigmaPi();
224225
} else {
225226
return false;
226-
}*/
227+
}
227228
return nSigma < nSigmaCut;
228229
}
229230

@@ -280,8 +281,7 @@ struct HFLcCandidateSelector {
280281
void process(aod::HfCandProng3 const& hfCandProng3s, aod::BigTracksPID const& tracks)
281282
{
282283
int statusLcpKpi, statusLcpiKp; // final selection flag : 0-rejected 1-accepted
283-
bool topolLcpKpi, topolLcpiKp;
284-
int pidLc, proton, kaonMinus, pionPlus;
284+
int pidLcpKpi, pidLcpiKp;
285285

286286
for (auto& hfCandProng3 : hfCandProng3s) { //looping over 3 prong candidates
287287

@@ -297,12 +297,8 @@ struct HFLcCandidateSelector {
297297
auto trackNeg1 = hfCandProng3.index1_as<aod::BigTracksPID>(); //negative daughter (positive for the antiparticles)
298298
auto trackPos2 = hfCandProng3.index2_as<aod::BigTracksPID>(); //positive daughter (negative for the antiparticles)
299299

300-
topolLcpKpi = true;
301-
topolLcpiKp = true;
302-
pidLc = -1;
303-
proton = -1;
304-
kaonMinus = -1;
305-
pionPlus = -1;
300+
pidLcpKpi = -1;
301+
pidLcpiKp = -1;
306302

307303
// daughter track validity selection
308304
if (!daughterSelection(trackPos1) || !daughterSelection(trackNeg1) || !daughterSelection(trackPos2)) {
@@ -320,35 +316,49 @@ struct HFLcCandidateSelector {
320316

321317
//conjugate dependent toplogical selection for Lc
322318

323-
topolLcpKpi = selectionTopolConjugate(hfCandProng3, trackPos1, trackNeg1, trackPos2);
324-
topolLcpiKp = selectionTopolConjugate(hfCandProng3, trackPos2, trackNeg1, trackPos1);
319+
bool topolLcpKpi = selectionTopolConjugate(hfCandProng3, trackPos1, trackNeg1, trackPos2);
320+
bool topolLcpiKp = selectionTopolConjugate(hfCandProng3, trackPos2, trackNeg1, trackPos1);
325321

326322
if (!topolLcpKpi && !topolLcpiKp) {
327323
hfSelLcCandidate(statusLcpKpi, statusLcpiKp);
328324
continue;
329325
}
330326

331-
proton = selectionPID(trackPos1, 2212);
332-
kaonMinus = selectionPID(trackNeg1, 321);
333-
pionPlus = selectionPID(trackPos2, 211);
334-
335-
if (proton == 0 || kaonMinus == 0 || pionPlus == 0) {
336-
pidLc = 0; //exclude Lc
337-
}
338-
if (proton == 1 && kaonMinus == 1 && pionPlus == 1) {
339-
pidLc = 1; //accept Lc
327+
if (!d_FilterPID) {
328+
// PID non applied
329+
pidLcpKpi = 1;
330+
pidLcpiKp = 1;
331+
} else {
332+
int proton1 = selectionPID(trackPos1, kProton);
333+
int proton2 = selectionPID(trackPos2, kProton);
334+
int kaonMinus = selectionPID(trackNeg1, kKPlus);
335+
int pionPlus1 = selectionPID(trackPos1, kPiPlus);
336+
int pionPlus2 = selectionPID(trackPos2, kPiPlus);
337+
338+
if (proton1 == 0 || kaonMinus == 0 || pionPlus2 == 0) {
339+
pidLcpKpi = 0; //exclude LcpKpi
340+
}
341+
if (proton1 == 1 && kaonMinus == 1 && pionPlus2 == 1) {
342+
pidLcpKpi = 1; //accept LcpKpi
343+
}
344+
if (proton2 == 0 || kaonMinus == 0 || pionPlus1 == 0) {
345+
pidLcpiKp = 0; //exclude LcpiKp
346+
}
347+
if (proton2 == 1 && kaonMinus == 1 && pionPlus1 == 1) {
348+
pidLcpiKp = 1; //accept LcpiKp
349+
}
340350
}
341351

342-
if (pidLc == 0) {
352+
if (pidLcpKpi == 0 && pidLcpiKp == 0) {
343353
hfSelLcCandidate(statusLcpKpi, statusLcpiKp);
344354
continue;
345355
}
346356

347-
if ((pidLc == -1 || pidLc == 1) && topolLcpKpi) {
348-
statusLcpKpi = 1; //identified as Lc
357+
if ((pidLcpKpi == -1 || pidLcpKpi == 1) && topolLcpKpi) {
358+
statusLcpKpi = 1; //identified as LcpKpi
349359
}
350-
if ((pidLc == -1 || pidLc == 1) && topolLcpiKp) {
351-
statusLcpiKp = 1; //identified as Lc
360+
if ((pidLcpiKp == -1 || pidLcpiKp == 1) && topolLcpiKp) {
361+
statusLcpiKp = 1; //identified as LcpiKp
352362
}
353363

354364
hfSelLcCandidate(statusLcpKpi, statusLcpiKp);

0 commit comments

Comments
 (0)