1616// / \date 2025-04-10
1717
1818#include " PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h"
19+ #include " PWGCF/FemtoWorld/Core/FemtoWorldMath.h"
1920#include " PWGLF/DataModel/EPCalibrationTables.h"
2021#include " PWGLF/DataModel/LFHypernucleiTables.h"
2122#include " PWGLF/Utils/svPoolCreator.h"
@@ -76,7 +77,7 @@ using std::array;
7677using CollBracket = o2::math_utils::Bracket<int >;
7778using CollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults>;
7879using CollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults>;
79- using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullDe, aod::pidTOFFullDe, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::TOFSignal, aod::TOFEvTime>;
80+ using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullDe, aod::pidTOFFullDe, aod::pidTPCFullPr, aod::pidTOFFullPr, aod:: pidTPCFullPi, aod::pidTOFFullPi, aod::TOFSignal, aod::TOFEvTime>;
8081
8182namespace
8283{
@@ -125,6 +126,8 @@ struct PiNucandidate {
125126 float chi2TPCPi = -10 .f;
126127 float nSigmaNu = -10 .f;
127128 float nSigmaPi = -10 .f;
129+ float tpcPrnsigma = -10 .f;
130+ float tofPrnsigma = -10 .f;
128131 uint32_t pidTrkNu = 0xFFFFF ; // PID in tracking
129132 uint32_t pidTrkPi = 0xFFFFF ;
130133 float massTOFNu = -10 ;
@@ -141,8 +144,12 @@ struct PiNucandidate {
141144 int trackIDNu = -1 ;
142145 int trackIDPi = -1 ;
143146
147+ float kstar = 1 .f;
148+ float mT = 1 .f;
149+
144150 // collision information
145151 int32_t collisionID = 0 ;
152+ float cent = 1 .f;
146153};
147154
148155struct PiNucleiFemto {
@@ -237,6 +244,7 @@ struct PiNucleiFemto {
237244 {" hNcontributor" , " Number of primary vertex contributor" , {HistType::kTH1F , {{2000 , 0 .0f , 2000 .0f }}}},
238245 {" hCentrality" , " Centrality" , {HistType::kTH1F , {{100 , 0 .0f , 100 .0f }}}},
239246 {" hTrackSel" , " Accepted tracks" , {HistType::kTH1F , {{Selections::kAll , -0.5 , static_cast <double >(Selections::kAll ) - 0.5 }}}},
247+ {" hSkipReasons" , " Why storedEvent skipped;Reason;Counts" , {HistType::kTH1F , {{5 , -0.5 , 4.5 }}}},
240248 {" hEvents" , " ; Events;" , {HistType::kTH1F , {{3 , -0.5 , 2.5 }}}},
241249 {" hEmptyPool" , " svPoolCreator did not find track pairs false/true" , {HistType::kTH1F , {{2 , -0.5 , 1.5 }}}},
242250 {" hdcaxyNu" , " ;DCA_{xy} (cm)" , {HistType::kTH1F , {{200 , -1 .0f , 1 .0f }}}},
@@ -247,6 +255,8 @@ struct PiNucleiFemto {
247255 {" hNuPitInvMass" , " ; M(Nu + p) (GeV/#it{c}^{2})" , {HistType::kTH1F , {{300 , 3 .74f , 4 .34f }}}},
248256 {" hNuPt" , " #it{p}_{T} distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{240 , -6 .0f , 6 .0f }}}},
249257 {" hPiPt" , " Pt distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{120 , -3 .0f , 3 .0f }}}},
258+ {" hSingleNuPt" , " #it{p}_{T} distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{240 , -6 .0f , 6 .0f }}}},
259+ {" hSinglePiPt" , " Pt distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{120 , -3 .0f , 3 .0f }}}},
250260 {" hHe3TPCnsigma" , " NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(He3)" , {HistType::kTH2F , {{100 , -2 .0f , 2 .0f }, {200 , -5 .0f , 5 .0f }}}},
251261 {" hHe3P" , " Pin distribution; p (GeV/#it{c})" , {HistType::kTH1F , {{120 , -3 .0f , 3 .0f }}}},
252262 {" hHe3P_preselected" , " Pin distribution_preselected; p (GeV/#it{c})" , {HistType::kTH1F , {{120 , -3 .0f , 3 .0f }}}},
@@ -268,11 +278,18 @@ struct PiNucleiFemto {
268278 {" h2NsigmaPiTOF" , " NsigmaPi TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(p)" , {HistType::kTH2F , {{200 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
269279 {" h2NsigmaNuTOF" , " NsigmaNu TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(Nu)" , {HistType::kTH2F , {{200 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
270280 {" h2NsigmaPiTOF_preselection" , " NsigmaPi TOF distribution; #iit{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(p)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
281+ {" hkStaVsmTVsCent_LS_M" , " ;kStar (GeV/c);mT (GeV/#it{c}^{2});Centrality" , {HistType::kTH3F , {{300 , 0 .0f , 3 .0f }, {100 , 0 .2f , 3 .2f }, {100 , 0 .0f , 100 .0f }}}},
282+ {" hkStaVsmTVsCent_LS_A" , " ;kStar (GeV/c);mT (GeV/#it{c}^{2});Centrality" , {HistType::kTH3F , {{300 , 0 .0f , 3 .0f }, {100 , 0 .2f , 3 .2f }, {100 , 0 .0f , 100 .0f }}}},
283+ {" hkStaVsmTVsCent_US_M" , " ;kStar (GeV/c);mT (GeV/#it{c}^{2});Centrality" , {HistType::kTH3F , {{300 , 0 .0f , 3 .0f }, {100 , 0 .2f , 3 .2f }, {100 , 0 .0f , 100 .0f }}}},
284+ {" hkStaVsmTVsCent_US_A" , " ;kStar (GeV/c);mT (GeV/#it{c}^{2});Centrality" , {HistType::kTH3F , {{300 , 0 .0f , 3 .0f }, {100 , 0 .2f , 3 .2f }, {100 , 0 .0f , 100 .0f }}}},
285+ {" hCollIDVsCentEachPion" , " ;CollisionID;Centrality" , {HistType::kTH2F , {{4000 , 0 .0f , 4000 .0f }, {100 , 0 .0f , 100 .0f }}}},
286+ {" hNHypsPerPrevColl" , " Number of V0Hypers in previous collision used for mixing;N_{V0Hypers};Entries" , {HistType::kTH2F , {{4000 , 0 .0f , 4000 .0f }, {50 , -0.5 , 49.5 }}}},
271287 {" hkStar_LS_M" , " ;kStar (GeV/c)" , {HistType::kTH1F , {{300 , 0 .0f , 3 .0f }}}},
272288 {" hkStar_LS_A" , " ;kStar (GeV/c)" , {HistType::kTH1F , {{300 , 0 .0f , 3 .0f }}}},
273289 {" hkStar_US_M" , " ;kStar (GeV/c)" , {HistType::kTH1F , {{300 , 0 .0f , 3 .0f }}}},
274290 {" hkStar_US_A" , " ;kStar (GeV/c)" , {HistType::kTH1F , {{300 , 0 .0f , 3 .0f }}}},
275- {" hkStar_All" , " ;kStar (GeV/c)" , {HistType::kTH1F , {{300 , 0 .0f , 3 .0f }}}},
291+ {" h2NsigmaPiPrTPC" , " NsigmaPi TPC distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(p)" , {HistType::kTH1F , {{200 , -5 .0f , 5 .0f }}}},
292+ {" h2NsigmaPiPrTOF" , " NsigmaPi TOF distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(p)" , {HistType::kTH1F , {{200 , -5 .0f , 5 .0f }}}},
276293 {" hisBkgEM" , " ; isBkgEM;" , {HistType::kTH1F , {{3 , -1 , 2 }}}}},
277294 OutputObjHandlingPolicy::AnalysisObject,
278295 false ,
@@ -460,10 +477,21 @@ struct PiNucleiFemto {
460477 template <typename Ttrack>
461478 bool selectionPIDPion (const Ttrack& candidate)
462479 {
480+ if (abs (candidate.dcaXY ()) > settingCutPiDCAxyMin || abs (candidate.dcaZ ()) > settingCutPiDCAzMin)
481+ return false ;
482+
463483 auto tpcNSigmaPi = candidate.tpcNSigmaPi ();
464484 mQaRegistry .fill (HIST (" h2NsigmaPiTPC_preselection" ), candidate.tpcInnerParam (), tpcNSigmaPi);
465485 if (std::abs (candidate.pt ()) < settingCutPiptMin || std::abs (candidate.pt ()) > settingCutPiptMax)
466486 return false ;
487+ // reject protons
488+ if (std::abs (candidate.tpcNSigmaPr ()) < settingCutNsigTPCPrMin)
489+ return false ;
490+ mQaRegistry .fill (HIST (" h2NsigmaPiPrTPC" ), candidate.tpcNSigmaPr ());
491+ if (candidate.hasTOF () && std::abs (candidate.tofNSigmaPr ()) < settingCutNsigTOFPrMin)
492+ return false ;
493+ mQaRegistry .fill (HIST (" h2NsigmaPiPrTOF" ), candidate.tofNSigmaPr ());
494+
467495 if (candidate.hasTOF () && candidate.tpcInnerParam () >= settingCutPinMinTOFPi) {
468496 auto tofNSigmaPi = candidate.tofNSigmaPi ();
469497 auto combNsigma = std::sqrt (tofNSigmaPi * tofNSigmaPi + tpcNSigmaPi * tpcNSigmaPi);
@@ -500,6 +528,10 @@ struct PiNucleiFemto {
500528 float tpcInnerParam = candidate.tpcInnerParam ();
501529 mQaRegistry .fill (HIST (" h2dEdx" ), candidate.sign () * tpcInnerParam, candidate.tpcSignal ());
502530
531+ float DeDCAxyMin = 0.015 + 0.0305 / TMath::Power (candidate.pt (), 1.1 );
532+ if (abs (candidate.dcaXY ()) > DeDCAxyMin || abs (candidate.dcaXY ()) > settingCutDeDCAzMin)
533+ return false ;
534+
503535 if (std::abs (tpcInnerParam) < settingCutPinMinDe) {
504536 return false ;
505537 }
@@ -690,6 +722,9 @@ struct PiNucleiFemto {
690722 piNucand.massTOFPi = trackPi.tpcInnerParam () * std::sqrt (1 .f / (beta * beta) - 1 .f );
691723 }
692724
725+ piNucand.kstar = o2::analysis::femtoWorld::FemtoWorldMath::getkstar (trackPi, o2::constants::physics::MassPiPlus, trackDe, o2::constants::physics::MassDeuteron);
726+ piNucand.mT = o2::analysis::femtoWorld::FemtoWorldMath::getmT (trackPi, o2::constants::physics::MassPiPlus, trackDe, o2::constants::physics::MassDeuteron);
727+
693728 return true ;
694729 }
695730
@@ -763,8 +798,9 @@ struct PiNucleiFemto {
763798 }
764799
765800 template <typename Ttrack>
766- void pairTracksSameEvent (const Ttrack& tracks)
801+ void pairTracksSameEvent (const Ttrack& tracks, float cent )
767802 {
803+ bool filledAllOnce = false ;
768804 // LOG(info) << "Number of tracks: " << tracks.size();
769805 for (const auto & track0 : tracks) {
770806
@@ -779,6 +815,7 @@ struct PiNucleiFemto {
779815 continue ;
780816 }
781817 mQaRegistry .fill (HIST (" hTrackSel" ), Selections::kPID );
818+ mQaRegistry .fill (HIST (" hSingleNuPt" ), track0.pt () * track0.sign ());
782819
783820 for (const auto & track1 : tracks) {
784821 if (track0 == track1) {
@@ -798,6 +835,11 @@ struct PiNucleiFemto {
798835 continue ;
799836 }
800837
838+ if (!filledAllOnce) {
839+ mQaRegistry .fill (HIST (" hCollIDVsCentEachPion" ), track1.collisionId (), cent);
840+ mQaRegistry .fill (HIST (" hSinglePiPt" ), track1.pt () * track1.sign ());
841+ }
842+
801843 SVCand trackPair;
802844 trackPair.tr0Idx = track0.globalIndex ();
803845 trackPair.tr1Idx = track1.globalIndex ();
@@ -806,6 +848,7 @@ struct PiNucleiFemto {
806848 trackPair.collBracket = collBracket;
807849 mTrackPairs .push_back (trackPair);
808850 }
851+ filledAllOnce = true ;
809852 }
810853 }
811854
@@ -956,6 +999,7 @@ struct PiNucleiFemto {
956999 piNucand.itsClSizePi ,
9571000 piNucand.itsClSizeNu ,
9581001 piNucand.sharedClustersPi ,
1002+ piNucand.trackIDPi ,
9591003 piNucand.isBkgUS ,
9601004 piNucand.isBkgEM );
9611005 if (settingFillMultiplicity) {
@@ -985,80 +1029,26 @@ struct PiNucleiFemto {
9851029 mQaRegistry .fill (HIST (" hisBkgEM" ), piNucand.isBkgEM );
9861030 }
9871031
988- double computePrTPCnsig (double InnerParamTPCHad, double SignalTPCHad)
989- {
990- double m_BBparamsProton[6 ] = {-54.42066571222577 , 0.2857381250239097 , 1.247140602468868 , 0.6297483918147729 , 2.985438833884555 , 0.09 };
991-
992- float TPCinnerParam = InnerParamTPCHad;
993- float expTPCSignal = o2::tpc::BetheBlochAleph ((TPCinnerParam / 0.9382721 ), m_BBparamsProton[0 ], m_BBparamsProton[1 ], m_BBparamsProton[2 ], m_BBparamsProton[3 ], m_BBparamsProton[4 ]);
994- double resoTPC{expTPCSignal * m_BBparamsProton[5 ]};
995- return ((SignalTPCHad - expTPCSignal) / resoTPC);
996- }
997-
998- double tofNSigmaCalculation (double MassTOFHad, double ptHad)
999- {
1000- double fExpTOFMassHad = 0.9487 ; // Proton mass in TOF
1001- const float kp0 = 1.22204e-02 ;
1002- const float kp1 = 7.48467e-01 ;
1003-
1004- double fSigmaTOFMassHad = (kp0 * TMath::Exp (kp1 * TMath::Abs (ptHad))) * fExpTOFMassHad ;
1005- double fNSigmaTOFHad = (MassTOFHad - fExpTOFMassHad ) / fSigmaTOFMassHad ;
1006- return fNSigmaTOFHad ;
1007- }
1008-
1009- double computeKstar (const PiNucandidate& piNucand)
1010- {
1011- constexpr double massDe = o2::constants::physics::MassDeuteron;
1012- constexpr double massHad = o2::constants::physics::MassPiPlus;
1013-
1014- const ROOT::Math::PtEtaPhiMVector De (std::abs (piNucand.recoPtNu ()), piNucand.recoEtaNu (), piNucand.recoPhiNu (), massDe);
1015- const ROOT::Math::PtEtaPhiMVector Had (std::abs (piNucand.recoPtPi ()), piNucand.recoEtaPi (), piNucand.recoPhiPi (), massHad);
1016- const ROOT::Math::PtEtaPhiMVector trackSum = De + Had;
1017-
1018- const float beta = trackSum.Beta ();
1019- const float betax = beta * std::cos (trackSum.Phi ()) * std::sin (trackSum.Theta ());
1020- const float betay = beta * std::sin (trackSum.Phi ()) * std::sin (trackSum.Theta ());
1021- const float betaz = beta * std::cos (trackSum.Theta ());
1022-
1023- ROOT::Math::PxPyPzMVector DeCMS (De);
1024- ROOT::Math::PxPyPzMVector HadCMS (Had);
1025-
1026- const ROOT::Math::Boost boostPRF = ROOT::Math::Boost (-betax, -betay, -betaz);
1027- DeCMS = boostPRF (DeCMS);
1028- HadCMS = boostPRF (HadCMS);
1029-
1030- const ROOT::Math::PxPyPzMVector RelKstar = DeCMS - HadCMS;
1031- return 0.5 * RelKstar.P ();
1032- }
1033-
1034- void fillKstar (const PiNucandidate& piNucand)
1032+ template <typename Tcoll>
1033+ void fillKstar (const PiNucandidate& piNucand, const Tcoll& collision)
10351034 {
1036- double PrTPCnsigma = computePrTPCnsig (piNucand.momPiTPC , piNucand.tpcSignalPi );
1037- double PrTOFnsigma = tofNSigmaCalculation (piNucand.massTOFPi , piNucand.recoPtPi ());
1038- if (abs (PrTPCnsigma) < settingCutNsigTPCPrMin)
1039- return ;
1040- if (abs (PrTOFnsigma) < settingCutNsigTOFPrMin)
1041- return ;
1042- float DeDCAxyMin = 0.015 + 0.0305 / TMath::Power (piNucand.recoPtNu (), 1.1 );
1043- if (abs (piNucand.dcaxyNu ) > DeDCAxyMin || abs (piNucand.dcazNu ) > settingCutDeDCAzMin || abs (piNucand.dcaxyPi ) > settingCutPiDCAxyMin || abs (piNucand.dcazPi ) > settingCutPiDCAzMin)
1044- return ;
1045- fillHistograms (piNucand);
1046-
1047- double kstar = computeKstar (piNucand);
10481035 if (piNucand.isBkgUS == 0 ) {
10491036 if (piNucand.recoPtNu () > 0 ) {
1050- mQaRegistry .fill (HIST (" hkStar_LS_M" ), kstar);
1037+ mQaRegistry .fill (HIST (" hkStar_LS_M" ), piNucand.kstar );
1038+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_LS_M" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10511039 } else {
1052- mQaRegistry .fill (HIST (" hkStar_LS_A" ), kstar);
1040+ mQaRegistry .fill (HIST (" hkStar_LS_A" ), piNucand.kstar );
1041+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_LS_A" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10531042 }
10541043 } else {
10551044 if (piNucand.recoPtNu () > 0 ) {
1056- mQaRegistry .fill (HIST (" hkStar_US_M" ), kstar);
1045+ mQaRegistry .fill (HIST (" hkStar_US_M" ), piNucand.kstar );
1046+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_US_M" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10571047 } else {
1058- mQaRegistry .fill (HIST (" hkStar_US_A" ), kstar);
1048+ mQaRegistry .fill (HIST (" hkStar_US_A" ), piNucand.kstar );
1049+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_US_A" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10591050 }
10601051 }
1061- mQaRegistry .fill (HIST (" hkStar_All" ), kstar);
10621052 }
10631053
10641054 // ==================================================================================================================
@@ -1077,9 +1067,9 @@ struct PiNucleiFemto {
10771067 continue ;
10781068 }
10791069
1080- fillKstar (piNucand);
1081-
10821070 auto collision = collisions.rawIteratorAt (piNucand.collisionID );
1071+ fillKstar (piNucand, collision);
1072+ fillHistograms (piNucand);
10831073
10841074 if (settingFillTable) {
10851075 fillTable (piNucand, collision);
@@ -1139,7 +1129,7 @@ struct PiNucleiFemto {
11391129 auto trackTableThisCollision = tracks.sliceBy (mPerCol , collIdx);
11401130 trackTableThisCollision.bindExternalIndices (&tracks);
11411131
1142- pairTracksSameEvent (trackTableThisCollision);
1132+ pairTracksSameEvent (trackTableThisCollision, collision. centFT0C () );
11431133
11441134 if (mTrackPairs .size () == 0 ) {
11451135 continue ;
@@ -1234,42 +1224,48 @@ PROCESS_SWITCH(PiNucleiFemto, processMixedEventHyper, "Process Mixed event", fal
12341224 mQaRegistry .fill (HIST (" hCentrality" ), collision.centFT0C ());
12351225 mQaRegistry .fill (HIST (" hVtxZ" ), collision.posZ ());
12361226 int poolIndexPi = where_pool (collision.posZ (), collision.centFT0C ());
1237- auto & pool = All_Event_pool[poolIndexPi];
12381227
12391228 if (poolIndexPi < 0 || static_cast <size_t >(poolIndexPi) >= All_Event_pool.size ()) {
12401229 continue ;
12411230 }
1231+ auto & pool = All_Event_pool[poolIndexPi];
12421232
12431233 for (auto const & storedEvent : pool.events ) {
1244- auto c1 = collisions.iteratorAt (storedEvent.collisionId );
1245- const auto & c2 = collision;
1246- if (!c1. sel8 () || !c2. sel8 ())
1234+ const auto & c2 = collisions.iteratorAt (storedEvent.collisionId );
1235+ if (!collision. sel8 () || !c2. sel8 ()) {
1236+ mQaRegistry . fill ( HIST ( " hSkipReasons " ), 0 );
12471237 continue ;
1238+ }
12481239
1249- std::vector<TrackCandidates::iterator> tracks1;
1250- for (auto const & t : pitracks) {
1251- if (t.collisionId () == c1.globalIndex ()) {
1252- tracks1.push_back (t);
1253- }
1240+ auto hypdTablepreviousCollision = V0Hypers.sliceBy (hypPerCol, c2.globalIndex ());
1241+ hypdTablepreviousCollision.bindExternalIndices (&V0Hypers);
1242+
1243+ if (hypdTablepreviousCollision.size () == 0 ) {
1244+ mQaRegistry .fill (HIST (" hSkipReasons" ), 1 );
1245+ continue ;
12541246 }
1255- std::vector<o2::aod::DataHypCandsWColl::iterator> hypers2;
1256- for (auto const & h : V0Hypers) {
1257- if (h.collisionId () != c2.globalIndex ())
1258- continue ;
1259- int poolIndexHyp = where_pool (h.zPrimVtx (), h.centralityFT0C ());
1260- if (poolIndexHyp != poolIndexPi)
1261- continue ;
1262- hypers2.push_back (h);
1247+
1248+ auto firstHyp = hypdTablepreviousCollision.iteratorAt (0 );
1249+ int poolIndexHyp = where_pool (firstHyp.zPrimVtx (), firstHyp.centralityFT0C ());
1250+
1251+ if (poolIndexHyp != poolIndexPi) {
1252+ mQaRegistry .fill (HIST (" hSkipReasons" ), 2 );
1253+ continue ;
12631254 }
1264- pairHyperEventMixing (tracks1, hypers2);
1255+
1256+ auto trackTableThisCollision = pitracks.sliceBy (mPerCol , collision.globalIndex ());
1257+ trackTableThisCollision.bindExternalIndices (&pitracks);
1258+
1259+ mQaRegistry .fill (HIST (" hNHypsPerPrevColl" ), c2.globalIndex (), hypdTablepreviousCollision.size ());
1260+ pairHyperEventMixing (trackTableThisCollision, hypdTablepreviousCollision);
12651261 }
1266- fillPairsHyper (collisions, pitracks, V0Hypers, /* isMixedEvent*/ true );
12671262
12681263 if (static_cast <int >(pool.events .size ()) >= settingNoMixedEvents) {
12691264 pool.events .pop_front ();
12701265 }
12711266 pool.events .push_back ({collision.globalIndex ()});
12721267 }
1268+ fillPairsHyper (collisions, pitracks, V0Hypers, /* isMixedEvent*/ true );
12731269 }
12741270 PROCESS_SWITCH (PiNucleiFemto, processMixedEventHyperPool, " Process Mixed event" , false );
12751271};
0 commit comments