Skip to content

Commit fb05a92

Browse files
authored
[PWGLF] Add more PID selection criteria (#9666)
1 parent a02aaac commit fb05a92

File tree

1 file changed

+158
-11
lines changed

1 file changed

+158
-11
lines changed

PWGLF/Tasks/Resonances/highmasslambda.cxx

Lines changed: 158 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,135 @@ struct highmasslambda {
360360
return false;
361361
}
362362

363+
// TPC TOF
364+
template <typename T>
365+
bool selectionPID4(const T& candidate)
366+
{
367+
if (candidate.pt() < 0.7 && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
368+
return true;
369+
}
370+
if (candidate.pt() >= 0.7 && candidate.pt() < 1.4) {
371+
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC && std::abs(candidate.tofNSigmaPr()) < nsigmaCutTOF) {
372+
return true;
373+
}
374+
if (!candidate.hasTOF()) {
375+
if (candidate.pt() >= 0.7 && candidate.pt() < 0.8 && candidate.tpcNSigmaPr() > -1.8 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
376+
return true;
377+
}
378+
if (candidate.pt() >= 0.8 && candidate.pt() < 0.9 && candidate.tpcNSigmaPr() > -1.7 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
379+
return true;
380+
}
381+
if (candidate.pt() >= 0.9 && candidate.pt() < 1.0 && candidate.tpcNSigmaPr() > -1.6 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
382+
return true;
383+
}
384+
if (candidate.pt() >= 1.0 && candidate.pt() < 1.4 && candidate.tpcNSigmaPr() > -1.0 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
385+
return true;
386+
}
387+
}
388+
}
389+
if (candidate.pt() >= 1.4) {
390+
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
391+
if (candidate.pt() < 2.5 && std::abs(candidate.tofNSigmaPr()) < nsigmaCutTOF) {
392+
return true;
393+
}
394+
if (candidate.pt() >= 2.5 && candidate.pt() < 4 && candidate.tofNSigmaPr() > -2.0 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
395+
return true;
396+
}
397+
if (candidate.pt() >= 4 && candidate.pt() < 5 && candidate.tofNSigmaPr() > -1.5 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
398+
return true;
399+
}
400+
if (candidate.pt() >= 5 && candidate.tofNSigmaPr() > -1.0 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
401+
return true;
402+
}
403+
}
404+
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
405+
return true;
406+
}
407+
}
408+
return false;
409+
}
410+
411+
// TPC TOF
412+
template <typename T>
413+
bool selectionPID5(const T& candidate)
414+
{
415+
if (candidate.pt() < 0.7 && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
416+
return true;
417+
}
418+
if (candidate.pt() >= 0.7 && candidate.pt() < 1.8) {
419+
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC && std::abs(candidate.tofNSigmaPr()) < nsigmaCutTOF) {
420+
return true;
421+
}
422+
if (!candidate.hasTOF()) {
423+
if (candidate.pt() >= 0.7 && candidate.pt() < 0.8 && candidate.tpcNSigmaPr() > -1.8 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
424+
return true;
425+
}
426+
if (candidate.pt() >= 0.8 && candidate.pt() < 0.9 && candidate.tpcNSigmaPr() > -1.7 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
427+
return true;
428+
}
429+
if (candidate.pt() >= 0.9 && candidate.pt() < 1.0 && candidate.tpcNSigmaPr() > -1.6 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
430+
return true;
431+
}
432+
}
433+
}
434+
if (candidate.pt() >= 1.8) {
435+
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
436+
if (candidate.pt() < 2.5 && std::abs(candidate.tofNSigmaPr()) < nsigmaCutTOF) {
437+
return true;
438+
}
439+
if (candidate.pt() >= 2.5 && candidate.pt() < 4 && candidate.tofNSigmaPr() > -2.0 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
440+
return true;
441+
}
442+
if (candidate.pt() >= 4 && candidate.pt() < 5 && candidate.tofNSigmaPr() > -1.5 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
443+
return true;
444+
}
445+
if (candidate.pt() >= 5 && candidate.tofNSigmaPr() > -1.0 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
446+
return true;
447+
}
448+
}
449+
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
450+
return true;
451+
}
452+
}
453+
return false;
454+
}
455+
// TPC TOF
456+
template <typename T>
457+
bool selectionPID6(const T& candidate)
458+
{
459+
if (candidate.pt() < 0.7 && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
460+
return true;
461+
}
462+
if (candidate.pt() >= 0.7) {
463+
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < nsigmaCutTPC) {
464+
if (candidate.pt() < 2.5 && std::abs(candidate.tofNSigmaPr()) < nsigmaCutTOF) {
465+
return true;
466+
}
467+
if (candidate.pt() >= 2.5 && candidate.pt() < 4 && candidate.tofNSigmaPr() > -2.0 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
468+
return true;
469+
}
470+
if (candidate.pt() >= 4 && candidate.pt() < 5 && candidate.tofNSigmaPr() > -1.5 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
471+
return true;
472+
}
473+
if (candidate.pt() >= 5 && candidate.tofNSigmaPr() > -1.0 && candidate.tofNSigmaPr() < nsigmaCutTOF) {
474+
return true;
475+
}
476+
}
477+
if (!candidate.hasTOF()) {
478+
if (candidate.pt() >= 0.7 && candidate.pt() < 0.8 && candidate.tpcNSigmaPr() > -1.8 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
479+
return true;
480+
}
481+
if (candidate.pt() >= 0.8 && candidate.pt() < 0.9 && candidate.tpcNSigmaPr() > -1.7 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
482+
return true;
483+
}
484+
if (candidate.pt() >= 0.9 && candidate.pt() < 1.0 && candidate.tpcNSigmaPr() > -1.6 && candidate.tpcNSigmaPr() < nsigmaCutTPC) {
485+
return true;
486+
}
487+
}
488+
}
489+
return false;
490+
}
491+
363492
template <typename Collision, typename V0>
364493
bool SelectionV0(Collision const& collision, V0 const& candidate)
365494
{
@@ -497,7 +626,6 @@ struct highmasslambda {
497626
continue;
498627
}
499628
histos.fill(HIST("hNsigmaProtonTPCPre"), track1.tpcNSigmaPr(), track1.pt());
500-
// PID check
501629
if (PIDstrategy == 0 && !selectionPID1(track1)) {
502630
continue;
503631
}
@@ -507,6 +635,15 @@ struct highmasslambda {
507635
if (PIDstrategy == 2 && !selectionPID3(track1)) {
508636
continue;
509637
}
638+
if (PIDstrategy == 3 && !selectionPID4(track1)) {
639+
continue;
640+
}
641+
if (PIDstrategy == 4 && !selectionPID5(track1)) {
642+
continue;
643+
}
644+
if (PIDstrategy == 5 && !selectionPID6(track1)) {
645+
continue;
646+
}
510647
histos.fill(HIST("hEta"), track1.eta());
511648
histos.fill(HIST("hDcaxy"), track1.dcaXY());
512649
histos.fill(HIST("hDcaz"), track1.dcaZ());
@@ -634,7 +771,15 @@ struct highmasslambda {
634771
if (PIDstrategy == 2 && !selectionPID3(track1)) {
635772
continue;
636773
}
637-
774+
if (PIDstrategy == 3 && !selectionPID4(track1)) {
775+
continue;
776+
}
777+
if (PIDstrategy == 4 && !selectionPID5(track1)) {
778+
continue;
779+
}
780+
if (PIDstrategy == 5 && !selectionPID6(track1)) {
781+
continue;
782+
}
638783
if (!SelectionV0(collision2, v0)) {
639784
continue;
640785
}
@@ -736,6 +881,15 @@ struct highmasslambda {
736881
if (PIDstrategy == 2 && !selectionPID3(track1)) {
737882
continue;
738883
}
884+
if (PIDstrategy == 3 && !selectionPID4(track1)) {
885+
continue;
886+
}
887+
if (PIDstrategy == 4 && !selectionPID5(track1)) {
888+
continue;
889+
}
890+
if (PIDstrategy == 5 && !selectionPID6(track1)) {
891+
continue;
892+
}
739893
histos.fill(HIST("hEta"), track1.eta());
740894
histos.fill(HIST("hDcaxy"), track1.dcaXY());
741895
histos.fill(HIST("hDcaz"), track1.dcaZ());
@@ -885,14 +1039,7 @@ struct highmasslambda {
8851039
histos.fill(HIST("hImpactPar1"), kshortimpactparameter);
8861040
histos.fill(HIST("hCPA"), CPAlambdac);
8871041
histos.fill(HIST("hMomCorr"), Proton.P() - track1.p(), v0.p() - Kshort.P());
888-
if (decaylength > ConfMaxDecayLength) {
889-
continue;
890-
}
891-
if (CPAlambdac < ConfMinCPA) {
892-
continue;
893-
}
894-
895-
if (Lambdac.M() > cMinLambdaMass && Lambdac.M() <= cMaxLambdaMass && std::abs(Lambdac.Rapidity()) < confRapidity && Lambdac.Pt() > 1.0 && Lambdac.Pt() <= 6.0) {
1042+
if (Lambdac.M() > cMinLambdaMass && Lambdac.M() <= cMaxLambdaMass && std::abs(Lambdac.Rapidity()) < confRapidity && Lambdac.Pt() > 1.0 && Lambdac.Pt() <= 6.0 && decaylength < ConfMaxDecayLength && CPAlambdac > ConfMinCPA) {
8961043
histos.fill(HIST("hSparseV2SASameEvent_V2_SVX"), Lambdac.M(), Lambdac.Pt(), v2, decaylength, CPAlambdac);
8971044
}
8981045
if (fillRotation) {
@@ -942,7 +1089,7 @@ struct highmasslambda {
9421089
// double decaylengthxyrot = TMath::Sqrt(decaylengthxrot * decaylengthxrot + decaylengthyrot * decaylengthyrot);
9431090
double anglesignrot = decaylengthxrot * LambdacRot.Px() + decaylengthyrot * LambdacRot.Py() + decaylengthzrot * LambdacRot.Pz();
9441091
double CPAlambdacrot = anglesignrot / (decaylengthrot * LambdacRot.P());
945-
if (LambdacRot.M() > cMinLambdaMass && LambdacRot.M() <= cMaxLambdaMass && std::abs(LambdacRot.Rapidity()) < confRapidity && LambdacRot.Pt() > 1.0 && LambdacRot.Pt() <= 6.0) {
1092+
if (LambdacRot.M() > cMinLambdaMass && LambdacRot.M() <= cMaxLambdaMass && std::abs(LambdacRot.Rapidity()) < confRapidity && LambdacRot.Pt() > 1.0 && LambdacRot.Pt() <= 6.0 && decaylengthrot < ConfMaxDecayLength && CPAlambdacrot > ConfMinCPA) {
9461093
histos.fill(HIST("hSparseV2SASameEventRotational_V2_SVX"), LambdacRot.M(), LambdacRot.Pt(), v2Rot, decaylengthrot, CPAlambdacrot);
9471094
}
9481095
}

0 commit comments

Comments
 (0)