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