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