Skip to content

Commit 0a5940d

Browse files
sarjeetagamisarjeeta gami
andauthored
[PWGLF] : added only TOF PID selection for kstar flow task (#10349)
Co-authored-by: sarjeeta gami <sarjeetagami@sarjeetas-MacBook-Air.local>
1 parent e0bea7e commit 0a5940d

File tree

1 file changed

+92
-20
lines changed

1 file changed

+92
-20
lines changed

PWGLF/Tasks/Resonances/kstarpbpb.cxx

Lines changed: 92 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)