@@ -98,7 +98,6 @@ struct SigmaHadCand {
9898
9999struct SigmaHadCorr {
100100
101- std::vector<SigmaHadCand> sigmaHadCandidates; // Vector to store Sigma-hadron candidates
102101 Produces<aod::SigmaProtonCands> outputDataTable; // Output table for Sigma-hadron candidates
103102 Produces<aod::SigmaProtonMCCands> outputDataTableMC; // Output table for Sigma-hadron candidates in MC
104103 Produces<aod::SlimKinkCandsMC> outputKinkCandsMC; // Single-Sigma-level MC truth record, filled before hadron pairing
@@ -499,8 +498,9 @@ struct SigmaHadCorr {
499498 }
500499
501500 template <bool IsMC, typename Ttrack, typename Tcollision>
502- void fillTreeAndHistograms (aod::KinkCands const & kinkCands, Ttrack const & tracksDauSigma, Ttrack const & tracks, Tcollision const & collision)
501+ std::vector<SigmaHadCand> fillTreeAndHistograms (aod::KinkCands const & kinkCands, Ttrack const & tracksDauSigma, Ttrack const & tracks, Tcollision const & collision)
503502 {
503+ std::vector<SigmaHadCand> sigmaHadCandidates;
504504 for (const auto & sigmaCand : kinkCands) {
505505 auto kinkDauTrack = tracksDauSigma.rawIteratorAt (sigmaCand.trackDaugId ());
506506 if (!selectSigma (sigmaCand, kinkDauTrack)) {
@@ -612,20 +612,20 @@ struct SigmaHadCorr {
612612 sigmaHadCandidates.push_back (candidate);
613613 }
614614 }
615+ return sigmaHadCandidates;
615616 }
616617
617618 void processSameEvent (CollisionsFull const & collisions, aod::KinkCands const & kinkCands, TracksFull const & tracks)
618619 {
619620 for (auto const & collision : collisions) {
620621
621- sigmaHadCandidates.clear ();
622622 auto kinkCandsC = kinkCands.sliceBy (kinkCandsPerCollisionPreslice, collision.globalIndex ());
623623 auto tracksC = tracks.sliceBy (tracksPerCollisionPreslice, collision.globalIndex ());
624624 if (std::abs (collision.posZ ()) > cutZVertex || !collision.sel8 ()) {
625625 continue ;
626626 }
627627 rEventSelection.fill (HIST (" hVertexZRec" ), collision.posZ ());
628- fillTreeAndHistograms<false >(kinkCandsC, tracks, tracksC, collision);
628+ auto sigmaHadCandidates = fillTreeAndHistograms<false >(kinkCandsC, tracks, tracksC, collision);
629629 if (fillOutputTree) {
630630 // Fill output table
631631 for (const auto & candidate : sigmaHadCandidates) {
@@ -663,14 +663,13 @@ struct SigmaHadCorr {
663663 selfCombinations (BinningTypeMultNTracksPV{{cfgVtxBins, cfgMultBins}, true }, nEvtMixingBkg, -1 , collisions, collisions)) {
664664 if (collision1.index () == collision2.index ())
665665 continue ;
666- sigmaHadCandidates.clear ();
667666 if (std::abs (collision1.posZ ()) > cutZVertex || !collision1.sel8 ())
668667 continue ;
669668 if (std::abs (collision2.posZ ()) > cutZVertex || !collision2.sel8 ())
670669 continue ;
671670 auto kinkCandsC1 = kinkCands.sliceBy (kinkCandsPerCollisionPreslice, collision1.globalIndex ());
672671 auto tracksC2 = tracks.sliceBy (tracksPerCollisionPreslice, collision2.globalIndex ());
673- fillTreeAndHistograms<false >(kinkCandsC1, tracks, tracksC2, collision1);
672+ auto sigmaHadCandidates = fillTreeAndHistograms<false >(kinkCandsC1, tracks, tracksC2, collision1);
674673 if (fillOutputTree) {
675674 for (const auto & candidate : sigmaHadCandidates) {
676675 outputDataTable (candidate.sigmaCharge , candidate.sigmaPx , candidate.sigmaPy , candidate.sigmaPz ,
@@ -686,14 +685,13 @@ struct SigmaHadCorr {
686685 selfCombinations (BinningTypeNumContrib{{cfgVtxBins, cfgMultBins}, true }, nEvtMixingBkg, -1 , collisions, collisions)) {
687686 if (collision1.index () == collision2.index ())
688687 continue ;
689- sigmaHadCandidates.clear ();
690688 if (std::abs (collision1.posZ ()) > cutZVertex || !collision1.sel8 ())
691689 continue ;
692690 if (std::abs (collision2.posZ ()) > cutZVertex || !collision2.sel8 ())
693691 continue ;
694692 auto kinkCandsC1 = kinkCands.sliceBy (kinkCandsPerCollisionPreslice, collision1.globalIndex ());
695693 auto tracksC2 = tracks.sliceBy (tracksPerCollisionPreslice, collision2.globalIndex ());
696- fillTreeAndHistograms<false >(kinkCandsC1, tracks, tracksC2, collision1);
694+ auto sigmaHadCandidates = fillTreeAndHistograms<false >(kinkCandsC1, tracks, tracksC2, collision1);
697695 if (fillOutputTree) {
698696 for (const auto & candidate : sigmaHadCandidates) {
699697 outputDataTable (candidate.sigmaCharge , candidate.sigmaPx , candidate.sigmaPy , candidate.sigmaPz ,
@@ -712,15 +710,14 @@ struct SigmaHadCorr {
712710 {
713711 for (auto const & collision : collisions) {
714712
715- sigmaHadCandidates.clear ();
716713 auto kinkCandsC = kinkCands.sliceBy (kinkCandsPerCollisionPreslice, collision.globalIndex ());
717714 auto tracksC = tracks.sliceBy (tracksMCPerCollisionPreslice, collision.globalIndex ());
718715
719716 if (std::abs (collision.posZ ()) > cutZVertex || !collision.sel8 ()) {
720717 continue ;
721718 }
722719 rEventSelection.fill (HIST (" hVertexZRec" ), collision.posZ ());
723- fillTreeAndHistograms<true >(kinkCandsC, tracks, tracksC, collision);
720+ auto sigmaHadCandidates = fillTreeAndHistograms<true >(kinkCandsC, tracks, tracksC, collision);
724721 for (const auto & candidate : sigmaHadCandidates) {
725722 auto mcLabelSigma = tracks.rawIteratorAt (candidate.sigmaID );
726723 auto mcLabelSigmaDau = tracks.rawIteratorAt (candidate.kinkDauID );
@@ -832,14 +829,13 @@ struct SigmaHadCorr {
832829 selfCombinations (BinningTypeMultNTracksPV{{cfgVtxBins, cfgMultBins}, true }, nEvtMixingBkg, -1 , collisions, collisions)) {
833830 if (collision1.index () == collision2.index ())
834831 continue ;
835- sigmaHadCandidates.clear ();
836832 if (std::abs (collision1.posZ ()) > cutZVertex || !collision1.sel8 ())
837833 continue ;
838834 if (std::abs (collision2.posZ ()) > cutZVertex || !collision2.sel8 ())
839835 continue ;
840836 auto kinkCandsC1 = kinkCands.sliceBy (kinkCandsPerCollisionPreslice, collision1.globalIndex ());
841837 auto tracksC2 = tracks.sliceBy (tracksPerCollisionPreslice, collision2.globalIndex ());
842- fillTreeAndHistograms<true >(kinkCandsC1, tracks, tracksC2, collision1);
838+ auto sigmaHadCandidates = fillTreeAndHistograms<true >(kinkCandsC1, tracks, tracksC2, collision1);
843839 for (const auto & candidate : sigmaHadCandidates) {
844840 auto mcLabelSigma = tracks.rawIteratorAt (candidate.sigmaID );
845841 auto mcLabelSigmaDau = tracks.rawIteratorAt (candidate.kinkDauID );
@@ -881,14 +877,13 @@ struct SigmaHadCorr {
881877 selfCombinations (BinningTypeNumContrib{{cfgVtxBins, cfgMultBins}, true }, nEvtMixingBkg, -1 , collisions, collisions)) {
882878 if (collision1.index () == collision2.index ())
883879 continue ;
884- sigmaHadCandidates.clear ();
885880 if (std::abs (collision1.posZ ()) > cutZVertex || !collision1.sel8 ())
886881 continue ;
887882 if (std::abs (collision2.posZ ()) > cutZVertex || !collision2.sel8 ())
888883 continue ;
889884 auto kinkCandsC1 = kinkCands.sliceBy (kinkCandsPerCollisionPreslice, collision1.globalIndex ());
890885 auto tracksC2 = tracks.sliceBy (tracksPerCollisionPreslice, collision2.globalIndex ());
891- fillTreeAndHistograms<true >(kinkCandsC1, tracks, tracksC2, collision1);
886+ auto sigmaHadCandidates = fillTreeAndHistograms<true >(kinkCandsC1, tracks, tracksC2, collision1);
892887 for (const auto & candidate : sigmaHadCandidates) {
893888 auto mcLabelSigma = tracks.rawIteratorAt (candidate.sigmaID );
894889 auto mcLabelSigmaDau = tracks.rawIteratorAt (candidate.kinkDauID );
0 commit comments