@@ -114,7 +114,7 @@ struct kstarpbpb {
114114 Configurable<bool > timFrameEvsel{" timFrameEvsel" , false , " TPC Time frame boundary cut" };
115115 Configurable<bool > additionalEvselITS{" additionalEvselITS" , true , " Additional event selcection for ITS" };
116116 Configurable<bool > ispTdepPID{" ispTdepPID" , true , " pT dependent PID" };
117- Configurable<bool > isNoTOF{ " isNoTOF " , true , " isNoTOF " };
117+ Configurable<bool > isTOFOnly{ " isTOFOnly " , false , " use TOF only PID " };
118118 Configurable<bool > PDGcheck{" PDGcheck" , true , " PDGcheck" };
119119 Configurable<int > strategyPID{" strategyPID" , 2 , " PID strategy" };
120120 Configurable<float > cfgCutTOFBeta{" cfgCutTOFBeta" , 0.0 , " cut TOF beta" };
@@ -125,6 +125,7 @@ struct kstarpbpb {
125125 Configurable<int > nBkgRotations{" nBkgRotations" , 9 , " Number of rotated copies (background) per each original candidate" };
126126 Configurable<bool > fillRotation{" fillRotation" , true , " fill rotation" };
127127 Configurable<bool > same{" same" , true , " same event" };
128+ Configurable<bool > isNoTOF{" isNoTOF" , true , " isNoTOF" };
128129 Configurable<bool > like{" like" , false , " like-sign" };
129130 Configurable<bool > fillOccupancy{" fillOccupancy" , false , " fill Occupancy" };
130131 Configurable<int > cfgOccupancyCut{" cfgOccupancyCut" , 500 , " Occupancy cut" };
@@ -421,7 +422,21 @@ struct kstarpbpb {
421422 }
422423 return false ;
423424 }
424-
425+ template <typename T>
426+ bool selectionPID2 (const T& candidate, int PID)
427+ {
428+ if (PID == 0 ) {
429+ if (candidate.hasTOF () && candidate.beta () > cfgCutTOFBeta && TMath::Abs (candidate.tofNSigmaKa ()) < nsigmaCutTOF) {
430+ return true ;
431+ }
432+ }
433+ if (PID == 1 ) {
434+ if (candidate.hasTOF () && candidate.beta () > cfgCutTOFBeta && TMath::Abs (candidate.tofNSigmaPi ()) < nsigmaCutTOF) {
435+ return true ;
436+ }
437+ }
438+ return false ;
439+ }
425440 double GetPhiInRange (double phi)
426441 {
427442 double result = phi;
@@ -506,7 +521,10 @@ struct kstarpbpb {
506521 }
507522 bool track1kaon = false ;
508523 auto track1ID = track1.globalIndex ();
509- if (!strategySelectionPID (track1, 0 , strategyPID)) {
524+ if (!isTOFOnly && !strategySelectionPID (track1, 0 , strategyPID)) {
525+ continue ;
526+ }
527+ if (isTOFOnly && !selectionPID2 (track1, 0 )) {
510528 continue ;
511529 }
512530 track1kaon = true ;
@@ -523,7 +541,10 @@ struct kstarpbpb {
523541 }
524542 bool track2pion = false ;
525543 auto track2ID = track2.globalIndex ();
526- if (!strategySelectionPID (track2, 1 , strategyPID)) {
544+ if (!isTOFOnly && !strategySelectionPID (track2, 1 , strategyPID)) {
545+ continue ;
546+ }
547+ if (isTOFOnly && !selectionPID2 (track2, 1 )) {
527548 continue ;
528549 }
529550 track2pion = true ;
@@ -670,10 +691,13 @@ struct kstarpbpb {
670691
671692 bool track1pion = false ;
672693 bool track1kaon = false ;
673- if (ispTdepPID && !(selectionPIDNew (track1, 0 ) || selectionPIDNew (track1, 1 ))) {
694+ if (ispTdepPID && !isTOFOnly && ! (selectionPIDNew (track1, 0 ) || selectionPIDNew (track1, 1 ))) {
674695 continue ;
675696 }
676- if (!ispTdepPID && !(selectionPID (track1, 0 ) || selectionPID (track1, 1 ))) {
697+ if (!ispTdepPID && !isTOFOnly && !(selectionPID (track1, 0 ) || selectionPID (track1, 1 ))) {
698+ continue ;
699+ }
700+ if (isTOFOnly && !(selectionPID2 (track1, 0 ) || selectionPID2 (track1, 1 ))) {
677701 continue ;
678702 }
679703 auto track1ID = track1.globalIndex ();
@@ -690,10 +714,13 @@ struct kstarpbpb {
690714 histos.fill (HIST (" QAbefore/trkDCAxypi" ), track2.dcaXY ());
691715 histos.fill (HIST (" QAbefore/trkDCAzpi" ), track2.dcaZ ());
692716 }
693- if (ispTdepPID && !(selectionPIDNew (track2, 0 ) || selectionPIDNew (track2, 1 ))) {
717+ if (ispTdepPID && !isTOFOnly && !(selectionPIDNew (track2, 0 ) || selectionPIDNew (track2, 1 ))) {
718+ continue ;
719+ }
720+ if (!ispTdepPID && !isTOFOnly && !(selectionPID (track2, 0 ) || selectionPID (track2, 1 ))) {
694721 continue ;
695722 }
696- if (!ispTdepPID && !(selectionPID (track2, 0 ) || selectionPID (track2, 1 ))) {
723+ if (isTOFOnly && !(selectionPID2 (track2, 0 ) || selectionPID2 (track2, 1 ))) {
697724 continue ;
698725 }
699726 auto track2ID = track2.globalIndex ();
@@ -704,7 +731,7 @@ struct kstarpbpb {
704731 continue ;
705732 }
706733
707- if (ispTdepPID) {
734+ if (ispTdepPID && !isTOFOnly ) {
708735 if (selectionPIDNew (track1, 1 ) && selectionPIDNew (track2, 0 )) {
709736 track1pion = true ;
710737 track2kaon = true ;
@@ -720,7 +747,7 @@ struct kstarpbpb {
720747 }
721748 }
722749 }
723- if (!ispTdepPID) {
750+ if (!ispTdepPID && !isTOFOnly ) {
724751 if (selectionPID (track1, 1 ) && selectionPID (track2, 0 )) {
725752 track1pion = true ;
726753 track2kaon = true ;
@@ -736,6 +763,22 @@ struct kstarpbpb {
736763 }
737764 }
738765 }
766+ if (isTOFOnly) {
767+ if (selectionPID2 (track1, 1 ) && selectionPID2 (track2, 0 )) {
768+ track1pion = true ;
769+ track2kaon = true ;
770+ if (removefaketrak && isFakeKaon (track2, 0 )) {
771+ continue ;
772+ }
773+ }
774+ if (selectionPID2 (track2, 1 ) && selectionPID2 (track1, 0 )) {
775+ track2pion = true ;
776+ track1kaon = true ;
777+ if (removefaketrak && isFakeKaon (track1, 0 )) {
778+ continue ;
779+ }
780+ }
781+ }
739782 if (same) {
740783 if (track1kaon && track2pion) {
741784 if (additionalQAplots) {
@@ -852,10 +895,13 @@ struct kstarpbpb {
852895 }
853896 bool track1pion = false ;
854897 bool track1kaon = false ;
855- if (ispTdepPID && !(selectionPIDNew (track1, 0 ) || selectionPIDNew (track1, 1 ))) {
898+ if (ispTdepPID && !isTOFOnly && !(selectionPIDNew (track1, 0 ) || selectionPIDNew (track1, 1 ))) {
899+ continue ;
900+ }
901+ if (!ispTdepPID && !isTOFOnly && !(selectionPID (track1, 0 ) || selectionPID (track1, 1 ))) {
856902 continue ;
857903 }
858- if (!ispTdepPID && !(selectionPID (track1, 0 ) || selectionPID (track1, 1 ))) {
904+ if (isTOFOnly && !(selectionPID2 (track1, 0 ) || selectionPID2 (track1, 1 ))) {
859905 continue ;
860906 }
861907 for (auto track2 : tracks) {
@@ -864,17 +910,20 @@ struct kstarpbpb {
864910 if (!selectionTrack (track2)) {
865911 continue ;
866912 }
867- if (ispTdepPID && !(selectionPIDNew (track2, 0 ) || selectionPIDNew (track2, 1 ))) {
913+ if (ispTdepPID && !isTOFOnly && ! (selectionPIDNew (track2, 0 ) || selectionPIDNew (track2, 1 ))) {
868914 continue ;
869915 }
870- if (!ispTdepPID && !(selectionPID (track2, 0 ) || selectionPID (track2, 1 ))) {
916+ if (!ispTdepPID && !isTOFOnly && !(selectionPID (track2, 0 ) || selectionPID (track2, 1 ))) {
917+ continue ;
918+ }
919+ if (isTOFOnly && !(selectionPID2 (track2, 0 ) || selectionPID2 (track2, 1 ))) {
871920 continue ;
872921 }
873922 if (track1.sign () * track2.sign () < 0 ) {
874923 continue ;
875924 }
876925
877- if (ispTdepPID) {
926+ if (ispTdepPID && !isTOFOnly ) {
878927 if (selectionPIDNew (track1, 1 ) && selectionPIDNew (track2, 0 )) {
879928 track1pion = true ;
880929 track2kaon = true ;
@@ -890,7 +939,7 @@ struct kstarpbpb {
890939 }
891940 }
892941 }
893- if (!ispTdepPID) {
942+ if (!ispTdepPID && !isTOFOnly ) {
894943 if (selectionPID (track1, 1 ) && selectionPID (track2, 0 )) {
895944 track1pion = true ;
896945 track2kaon = true ;
@@ -906,6 +955,22 @@ struct kstarpbpb {
906955 }
907956 }
908957 }
958+ if (isTOFOnly) {
959+ if (selectionPID2 (track1, 1 ) && selectionPID2 (track2, 0 )) {
960+ track1pion = true ;
961+ track2kaon = true ;
962+ if (removefaketrak && isFakeKaon (track2, 0 )) {
963+ continue ;
964+ }
965+ }
966+ if (selectionPID2 (track2, 1 ) && selectionPID2 (track1, 0 )) {
967+ track2pion = true ;
968+ track1kaon = true ;
969+ if (removefaketrak && isFakeKaon (track1, 0 )) {
970+ continue ;
971+ }
972+ }
973+ }
909974 if (track1kaon && track2pion) {
910975 if (track1.sign () < 0 && track2.sign () < 0 ) {
911976
@@ -1001,18 +1066,25 @@ struct kstarpbpb {
10011066 if (track2ID == track1ID) {
10021067 continue ;
10031068 }
1004- if (ispTdepPID && !(selectionPIDNew (track1, 0 ))) {
1069+ if (ispTdepPID && !isTOFOnly && ! (selectionPIDNew (track1, 0 ))) {
10051070 continue ;
10061071 }
1007- if (ispTdepPID && !(selectionPIDNew (track2, 1 ))) {
1072+ if (ispTdepPID && !isTOFOnly && ! (selectionPIDNew (track2, 1 ))) {
10081073 continue ;
10091074 }
1010- if (!ispTdepPID && !(selectionPID (track1, 0 ))) {
1075+ if (!ispTdepPID && !isTOFOnly && !(selectionPID (track1, 0 ))) {
1076+ continue ;
1077+ }
1078+ if (!ispTdepPID && !isTOFOnly && !(selectionPID (track2, 1 ))) {
10111079 continue ;
10121080 }
1013- if (!ispTdepPID && !( selectionPID (track2, 1 ) )) {
1081+ if (isTOFOnly && !selectionPID2 (track1, 0 )) {
10141082 continue ;
10151083 }
1084+ if (isTOFOnly && !selectionPID2 (track2, 1 )) {
1085+ continue ;
1086+ }
1087+
10161088 daughter1 = ROOT::Math::PxPyPzMVector (track1.px (), track1.py (), track1.pz (), massKa);
10171089 daughter2 = ROOT::Math::PxPyPzMVector (track2.px (), track2.py (), track2.pz (), massPi);
10181090 KstarMother = daughter1 + daughter2;
0 commit comments