@@ -591,7 +591,13 @@ struct SGResonanceAnalyzer {
591591 }
592592 }
593593 }
594- if (kstar && selectionPIDKaon1 (t0) && std::abs (t0.tpcNSigmaPi ()) > 3.0 && selectionPIDPion1 (t1) && std::abs (t1.tpcNSigmaKa ()) > 3.0 ) {
594+ }
595+ for (auto & [t0, t1] : combinations (o2::soa::CombinationsFullIndexPolicy (tracks, tracks))) {
596+ if (!trackselector (t0, parameters) || !trackselector (t1, parameters))
597+ continue ;
598+ if (t0.globalIndex () == t1.globalIndex ())
599+ continue ;
600+ if (kstar && selectionPIDKaon1 (t0) && selectionPIDPion1 (t1)) {
595601 // Apply kaon hypothesis and create pairs
596602 v0.SetXYZM (t0.px (), t0.py (), t0.pz (), o2::constants::physics::MassKaonCharged);
597603 v1.SetXYZM (t1.px (), t1.py (), t1.pz (), o2::constants::physics::MassPionCharged);
@@ -656,7 +662,13 @@ struct SGResonanceAnalyzer {
656662 }
657663 }
658664 }
659- if (kstar && selectionPIDKaon1 (t0) && std::abs (t0.tpcNSigmaPi ()) > 3.0 && selectionPIDPion1 (t1) && std::abs (t1.tpcNSigmaKa ()) > 3.0 ) {
665+ }
666+ for (auto & [t0, t1] : combinations (o2::soa::CombinationsFullIndexPolicy (tracks, tracks))) {
667+ if (!trackselector (t0, parameters) || !trackselector (t1, parameters))
668+ continue ;
669+ if (t0.globalIndex () == t1.globalIndex ())
670+ continue ;
671+ if (kstar && selectionPIDKaon1 (t0) && selectionPIDPion1 (t1)) {
660672 // Apply kaon hypothesis and create pairs
661673 v0.SetXYZM (t0.px (), t0.py (), t0.pz (), o2::constants::physics::MassKaonCharged);
662674 v1.SetXYZM (t1.px (), t1.py (), t1.pz (), o2::constants::physics::MassPionCharged);
@@ -720,7 +732,13 @@ struct SGResonanceAnalyzer {
720732 }
721733 }
722734 }
723- if (kstar && selectionPIDKaon1 (t0) && std::abs (t0.tpcNSigmaPi ()) > 3.0 && selectionPIDPion1 (t1) && std::abs (t1.tpcNSigmaKa ()) > 3.0 ) {
735+ }
736+ for (auto & [t0, t1] : combinations (o2::soa::CombinationsFullIndexPolicy (tracks, tracks))) {
737+ if (!trackselector (t0, parameters) || !trackselector (t1, parameters))
738+ continue ;
739+ if (t0.globalIndex () == t1.globalIndex ())
740+ continue ;
741+ if (kstar && selectionPIDKaon1 (t0) && selectionPIDPion1 (t1)) {
724742 // Apply kaon hypothesis and create pairs
725743 v0.SetXYZM (t0.px (), t0.py (), t0.pz (), o2::constants::physics::MassKaonCharged);
726744 v1.SetXYZM (t1.px (), t1.py (), t1.pz (), o2::constants::physics::MassPionCharged);
@@ -756,6 +774,7 @@ struct SGResonanceAnalyzer {
756774 for (auto & [t0, t1] : combinations (tracks, tracks)) {
757775 if (!trackselector (t0, parameters) || !trackselector (t1, parameters))
758776 continue ;
777+
759778 if (phi && selectionPIDKaon1 (t0) && selectionPIDKaon1 (t1)) {
760779 // Apply kaon hypothesis and create pairs
761780 v0.SetXYZM (t0.px (), t0.py (), t0.pz (), o2::constants::physics::MassKaonCharged);
@@ -814,7 +833,13 @@ struct SGResonanceAnalyzer {
814833 }
815834 }
816835 }
817- if (rho && selectionPIDPion1 (t0) && selectionPIDPion1 (t1)) {
836+ }
837+ for (auto & [t0, t1] : combinations (o2::soa::CombinationsFullIndexPolicy (tracks, tracks))) {
838+ if (!trackselector (t0, parameters) || !trackselector (t1, parameters))
839+ continue ;
840+ if (t0.globalIndex () == t1.globalIndex ())
841+ continue ;
842+ if (rho && selectionPIDProton (t0, use_tof, nsigmatpc_cut, nsigmatof_cut) && selectionPIDPion1 (t1)) {
818843 v0.SetXYZM (t0.px (), t0.py (), t0.pz (), mproton);
819844 v1.SetXYZM (t1.px (), t1.py (), t1.pz (), o2::constants::physics::MassPionCharged);
820845 v01 = v0 + v1;
@@ -842,7 +867,7 @@ struct SGResonanceAnalyzer {
842867 }
843868 }
844869 }
845- if (kstar && selectionPIDKaon1 (t0) && std::abs (t0. tpcNSigmaPi ()) > 3.0 && selectionPIDPion1 (t1) && std::abs (t1. tpcNSigmaKa ()) > 3.0 ) {
870+ if (kstar && selectionPIDKaon1 (t0) && selectionPIDPion1 (t1)) {
846871 v0.SetXYZM (t0.px (), t0.py (), t0.pz (), o2::constants::physics::MassKaonCharged);
847872 v1.SetXYZM (t1.px (), t1.py (), t1.pz (), o2::constants::physics::MassPionCharged);
848873 v01 = v0 + v1;
@@ -968,7 +993,8 @@ struct SGResonanceAnalyzer {
968993 continue ;
969994 auto posThisColl = posTracks->sliceByCached (aod::udtrack::udCollisionId, collision1.globalIndex (), cache);
970995 auto negThisColl = negTracks->sliceByCached (aod::udtrack::udCollisionId, collision2.globalIndex (), cache);
971- for (auto & [track1, track2] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posThisColl, negThisColl))) {
996+ // for (auto& [track1, track2] : o2::soa::combinations(o2::soa::CombinationsFullIndexPolicy(posThisColl, negThisColl))) {
997+ for (auto & [track1, track2] : o2::soa::combinations (posThisColl, negThisColl)) {
972998 if (!trackselector (track1, parameters) || !trackselector (track2, parameters))
973999 continue ;
9741000 if (selectionPIDKaon1 (track1) && selectionPIDKaon1 (track2)) {
@@ -988,7 +1014,13 @@ struct SGResonanceAnalyzer {
9881014 }
9891015 }
9901016 }
991- if (selectionPIDKaon1 (track1) && std::abs (track1.tpcNSigmaPi ()) > 3.0 && selectionPIDPion1 (track2) && std::abs (track2.tpcNSigmaKa ()) > 3.0 ) {
1017+ }
1018+ for (auto & [track1, track2] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posThisColl, negThisColl))) {
1019+ if (!trackselector (track1, parameters) || !trackselector (track2, parameters))
1020+ continue ;
1021+ if (track1.globalIndex () == track2.globalIndex ())
1022+ continue ;
1023+ if (selectionPIDKaon1 (track1) && selectionPIDPion1 (track2)) {
9921024 v0.SetXYZM (track1.px (), track1.py (), track1.pz (), o2::constants::physics::MassKaonCharged);
9931025 v1.SetXYZM (track2.px (), track2.py (), track2.pz (), o2::constants::physics::MassPionCharged);
9941026 v01 = v0 + v1;
0 commit comments