@@ -629,7 +629,8 @@ struct strangenessFilter {
629629 const auto primaryVertex = getPrimaryVertex (collision);
630630 o2::dataformats::DCA impactParameterTrk;
631631
632- for (auto & v00 : v0Base) { // loop over v0
632+ std::vector<int > v0sLambdaSel;
633+ for (auto & v00 : v0Base) { // loop over v0 for pre selection
633634 hCandidate->Fill (0.5 ); // All candidates
634635
635636 const auto posTrack0 = v00.posTrack_as <TrackCandidates>();
@@ -643,22 +644,47 @@ struct strangenessFilter {
643644 }
644645 int Tag = 0 ;
645646 if (cfgPIDPi > std::fabs (negTrack0.tpcNSigmaPi ()) && cfgPIDPr > std::fabs (posTrack0.tpcNSigmaPr ())) {
646- if (cfgLambdaMassWindow > std::fabs (mStraHelper .v0 .massLambda - o2::constants::physics::MassLambda0) || cfgCompV0Rej < std::fabs (mStraHelper .v0 .massK0Short - o2::constants::physics::MassLambda0)) {
647- Tag++;
647+ if (cfgLambdaMassWindow > std::fabs (mStraHelper .v0 .massLambda - o2::constants::physics::MassLambda0)) {
648+ if (cfgCompV0Rej < std::fabs (mStraHelper .v0 .massK0Short - o2::constants::physics::MassLambda0)) {
649+ Tag++;
650+ }
648651 }
649652 }
650653 if (cfgPIDPi > std::fabs (posTrack0.tpcNSigmaPi ()) && cfgPIDPr > std::fabs (negTrack0.tpcNSigmaPr ())) {
651- if (cfgLambdaMassWindow > std::fabs (mStraHelper .v0 .massAntiLambda - o2::constants::physics::MassLambda0) || cfgCompV0Rej < std::fabs (mStraHelper .v0 .massK0Short - o2::constants::physics::MassLambda0)) {
652- Tag++;
654+ if (cfgLambdaMassWindow > std::fabs (mStraHelper .v0 .massAntiLambda - o2::constants::physics::MassLambda0)) {
655+ if (cfgCompV0Rej < std::fabs (mStraHelper .v0 .massK0Short - o2::constants::physics::MassLambda0)) {
656+ Tag++;
657+ }
653658 }
654659 }
655660 if (Tag != 1 ) { // Select when only one option is satisfied
656661 continue ;
657662 }
663+ v0sLambdaSel.push_back (v00.globalIndex ());
664+ }
665+
666+ for (auto & v00 : v0Base) { // loop over lambda using previous selection
667+ if (std::find (v0sLambdaSel.begin (), v0sLambdaSel.end (), v00.globalIndex ()) == v0sLambdaSel.end () ) {
668+ continue ;
669+ }
670+
671+ const auto posTrack0 = v00.posTrack_as <TrackCandidates>();
672+ const auto negTrack0 = v00.negTrack_as <TrackCandidates>();
673+
674+ auto trackParPos0 = getTrackParCov (posTrack0);
675+ auto trackParNeg0 = getTrackParCov (negTrack0);
676+
677+ if (!mStraHelper .buildV0Candidate (v00.collisionId (), pvPos[0 ], pvPos[1 ], pvPos[2 ], posTrack0, negTrack0, trackParPos0, trackParNeg0)) {
678+ continue ;
679+ }
680+
658681 TVector3 v00pos (mStraHelper .v0 .position [0 ], mStraHelper .v0 .position [1 ], mStraHelper .v0 .position [2 ]);
659682 TVector3 v00mom (mStraHelper .v0 .momentum [0 ], mStraHelper .v0 .momentum [1 ], mStraHelper .v0 .momentum [2 ]);
660683
661684 for (auto & v01 : v0Base) {
685+ if (std::find (v0sLambdaSel.begin (), v0sLambdaSel.end (), v01.globalIndex ()) == v0sLambdaSel.end () ) {
686+ continue ;
687+ }
662688 if (v00.globalIndex () <= v01.globalIndex ()) {
663689 continue ;
664690 }
@@ -672,24 +698,17 @@ struct strangenessFilter {
672698 if (!mStraHelper .buildV0Candidate (v01.collisionId (), pvPos[0 ], pvPos[1 ], pvPos[2 ], posTrack1, negTrack1, trackParPos1, trackParNeg1)) {
673699 continue ;
674700 }
675- Tag = 0 ;
676- if (cfgPIDPi > std::fabs (negTrack1.tpcNSigmaPi ()) && cfgPIDPr > std::fabs (posTrack1.tpcNSigmaPr ())) {
677- if (cfgLambdaMassWindow > std::fabs (mStraHelper .v0 .massLambda - o2::constants::physics::MassLambda0) || cfgCompV0Rej < std::fabs (mStraHelper .v0 .massK0Short - o2::constants::physics::MassLambda0)) {
678- Tag++;
679- }
680- }
681- if (cfgPIDPi > std::fabs (posTrack1.tpcNSigmaPi ()) && cfgPIDPr > std::fabs (negTrack1.tpcNSigmaPr ())) {
682- if (cfgLambdaMassWindow > std::fabs (mStraHelper .v0 .massAntiLambda - o2::constants::physics::MassLambda0) || cfgCompV0Rej < std::fabs (mStraHelper .v0 .massK0Short - o2::constants::physics::MassLambda0)) {
683- Tag++;
684- }
685- }
701+
686702 if (posTrack0.globalIndex () == posTrack1.globalIndex () || posTrack0.globalIndex () == negTrack1.globalIndex () || negTrack0.globalIndex () == posTrack1.globalIndex () || negTrack0.globalIndex () == negTrack1.globalIndex ()) {
687703 continue ;
688704 }
705+
689706 TVector3 v01pos (mStraHelper .v0 .position [0 ], mStraHelper .v0 .position [1 ], mStraHelper .v0 .position [2 ]);
690707 TVector3 v01mom (mStraHelper .v0 .momentum [0 ], mStraHelper .v0 .momentum [1 ], mStraHelper .v0 .momentum [2 ]);
691708
692- keepEvent[12 ] = true ;
709+ if (isSelectedV0V0 (v00pos, v00mom, v01pos, v01mom)) {
710+ keepEvent[12 ] = true ;
711+ }
693712 }
694713 }
695714
0 commit comments