1919#include " PWGLF/DataModel/EPCalibrationTables.h"
2020#include " PWGLF/DataModel/LFHypernucleiTables.h"
2121#include " PWGLF/Utils/svPoolCreator.h"
22+ #include " PWGCF/FemtoWorld/Core/FemtoWorldMath.h"
2223
2324#include " Common/Core/PID/PIDTOF.h"
2425#include " Common/Core/PID/TPCPIDResponse.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,16 +278,24 @@ 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 ,
279296 true };
280297
298+
281299 int numOfCentBins = 40 ;
282300 int numOfVertexZBins = 30 ;
283301 float Vz_low = -10 .0f ;
@@ -460,10 +478,21 @@ struct PiNucleiFemto {
460478 template <typename Ttrack>
461479 bool selectionPIDPion (const Ttrack& candidate)
462480 {
481+ if (abs (candidate.dcaXY ()) > settingCutPiDCAxyMin || abs (candidate.dcaZ ()) > settingCutPiDCAzMin)
482+ return false ;
483+
463484 auto tpcNSigmaPi = candidate.tpcNSigmaPi ();
464485 mQaRegistry .fill (HIST (" h2NsigmaPiTPC_preselection" ), candidate.tpcInnerParam (), tpcNSigmaPi);
465486 if (std::abs (candidate.pt ()) < settingCutPiptMin || std::abs (candidate.pt ()) > settingCutPiptMax)
466487 return false ;
488+ // reject protons
489+ if (std::abs (candidate.tpcNSigmaPr ()) < settingCutNsigTPCPrMin)
490+ return false ;
491+ mQaRegistry .fill (HIST (" h2NsigmaPiPrTPC" ), candidate.tpcNSigmaPr ());
492+ if (candidate.hasTOF () && std::abs (candidate.tofNSigmaPr ()) < settingCutNsigTOFPrMin)
493+ return false ;
494+ mQaRegistry .fill (HIST (" h2NsigmaPiPrTOF" ), candidate.tofNSigmaPr ());
495+
467496 if (candidate.hasTOF () && candidate.tpcInnerParam () >= settingCutPinMinTOFPi) {
468497 auto tofNSigmaPi = candidate.tofNSigmaPi ();
469498 auto combNsigma = std::sqrt (tofNSigmaPi * tofNSigmaPi + tpcNSigmaPi * tpcNSigmaPi);
@@ -499,6 +528,10 @@ struct PiNucleiFemto {
499528 {
500529 float tpcInnerParam = candidate.tpcInnerParam ();
501530 mQaRegistry .fill (HIST (" h2dEdx" ), candidate.sign () * tpcInnerParam, candidate.tpcSignal ());
531+
532+ float DeDCAxyMin = 0.015 + 0.0305 / TMath::Power (candidate.pt (), 1.1 );
533+ if (abs (candidate.dcaXY ()) > DeDCAxyMin || abs (candidate.dcaXY ()) > settingCutDeDCAzMin)
534+ return false ;
502535
503536 if (std::abs (tpcInnerParam) < settingCutPinMinDe) {
504537 return false ;
@@ -690,6 +723,9 @@ struct PiNucleiFemto {
690723 piNucand.massTOFPi = trackPi.tpcInnerParam () * std::sqrt (1 .f / (beta * beta) - 1 .f );
691724 }
692725
726+ piNucand.kstar = o2::analysis::femtoWorld::FemtoWorldMath::getkstar (trackPi, o2::constants::physics::MassPiPlus, trackDe, o2::constants::physics::MassDeuteron);
727+ piNucand.mT = o2::analysis::femtoWorld::FemtoWorldMath::getmT (trackPi, o2::constants::physics::MassPiPlus, trackDe, o2::constants::physics::MassDeuteron);
728+
693729 return true ;
694730 }
695731
@@ -763,11 +799,12 @@ struct PiNucleiFemto {
763799 }
764800
765801 template <typename Ttrack>
766- void pairTracksSameEvent (const Ttrack& tracks)
802+ void pairTracksSameEvent (const Ttrack& tracks, float cent )
767803 {
804+ bool filledAllOnce = false ;
768805 // LOG(info) << "Number of tracks: " << tracks.size();
769806 for (const auto & track0 : tracks) {
770-
807+
771808 mQaRegistry .fill (HIST (" hTrackSel" ), Selections::kNoCuts );
772809
773810 if (!selectTrack (track0)) {
@@ -779,6 +816,7 @@ struct PiNucleiFemto {
779816 continue ;
780817 }
781818 mQaRegistry .fill (HIST (" hTrackSel" ), Selections::kPID );
819+ mQaRegistry .fill (HIST (" hSingleNuPt" ), track0.pt () * track0.sign ());
782820
783821 for (const auto & track1 : tracks) {
784822 if (track0 == track1) {
@@ -797,6 +835,11 @@ struct PiNucleiFemto {
797835 if (!selectTrack (track1) || !selectionPIDPion (track1)) {
798836 continue ;
799837 }
838+
839+ if (!filledAllOnce) {
840+ mQaRegistry .fill (HIST (" hCollIDVsCentEachPion" ), track1.collisionId (), cent);
841+ mQaRegistry .fill (HIST (" hSinglePiPt" ), track1.pt () * track1.sign ());
842+ }
800843
801844 SVCand trackPair;
802845 trackPair.tr0Idx = track0.globalIndex ();
@@ -806,6 +849,7 @@ struct PiNucleiFemto {
806849 trackPair.collBracket = collBracket;
807850 mTrackPairs .push_back (trackPair);
808851 }
852+ filledAllOnce = true ;
809853 }
810854 }
811855
@@ -956,6 +1000,7 @@ struct PiNucleiFemto {
9561000 piNucand.itsClSizePi ,
9571001 piNucand.itsClSizeNu ,
9581002 piNucand.sharedClustersPi ,
1003+ piNucand.trackIDPi ,
9591004 piNucand.isBkgUS ,
9601005 piNucand.isBkgEM );
9611006 if (settingFillMultiplicity) {
@@ -985,80 +1030,26 @@ struct PiNucleiFemto {
9851030 mQaRegistry .fill (HIST (" hisBkgEM" ), piNucand.isBkgEM );
9861031 }
9871032
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)
1033+ template <typename Tcoll>
1034+ void fillKstar (const PiNucandidate& piNucand, const Tcoll& collision)
10351035 {
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);
10481036 if (piNucand.isBkgUS == 0 ) {
10491037 if (piNucand.recoPtNu () > 0 ) {
1050- mQaRegistry .fill (HIST (" hkStar_LS_M" ), kstar);
1038+ mQaRegistry .fill (HIST (" hkStar_LS_M" ), piNucand.kstar );
1039+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_LS_M" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10511040 } else {
1052- mQaRegistry .fill (HIST (" hkStar_LS_A" ), kstar);
1041+ mQaRegistry .fill (HIST (" hkStar_LS_A" ), piNucand.kstar );
1042+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_LS_A" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10531043 }
10541044 } else {
10551045 if (piNucand.recoPtNu () > 0 ) {
1056- mQaRegistry .fill (HIST (" hkStar_US_M" ), kstar);
1046+ mQaRegistry .fill (HIST (" hkStar_US_M" ), piNucand.kstar );
1047+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_US_M" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10571048 } else {
1058- mQaRegistry .fill (HIST (" hkStar_US_A" ), kstar);
1049+ mQaRegistry .fill (HIST (" hkStar_US_A" ), piNucand.kstar );
1050+ mQaRegistry .fill (HIST (" hkStaVsmTVsCent_US_A" ), piNucand.kstar , piNucand.mT , collision.centFT0C ());
10591051 }
10601052 }
1061- mQaRegistry .fill (HIST (" hkStar_All" ), kstar);
10621053 }
10631054
10641055 // ==================================================================================================================
@@ -1077,9 +1068,9 @@ struct PiNucleiFemto {
10771068 continue ;
10781069 }
10791070
1080- fillKstar (piNucand);
1081-
10821071 auto collision = collisions.rawIteratorAt (piNucand.collisionID );
1072+ fillKstar (piNucand, collision);
1073+ fillHistograms (piNucand);
10831074
10841075 if (settingFillTable) {
10851076 fillTable (piNucand, collision);
@@ -1139,7 +1130,7 @@ struct PiNucleiFemto {
11391130 auto trackTableThisCollision = tracks.sliceBy (mPerCol , collIdx);
11401131 trackTableThisCollision.bindExternalIndices (&tracks);
11411132
1142- pairTracksSameEvent (trackTableThisCollision);
1133+ pairTracksSameEvent (trackTableThisCollision, collision. centFT0C () );
11431134
11441135 if (mTrackPairs .size () == 0 ) {
11451136 continue ;
@@ -1234,42 +1225,48 @@ PROCESS_SWITCH(PiNucleiFemto, processMixedEventHyper, "Process Mixed event", fal
12341225 mQaRegistry .fill (HIST (" hCentrality" ), collision.centFT0C ());
12351226 mQaRegistry .fill (HIST (" hVtxZ" ), collision.posZ ());
12361227 int poolIndexPi = where_pool (collision.posZ (), collision.centFT0C ());
1237- auto & pool = All_Event_pool[poolIndexPi];
12381228
12391229 if (poolIndexPi < 0 || static_cast <size_t >(poolIndexPi) >= All_Event_pool.size ()) {
12401230 continue ;
12411231 }
1232+ auto & pool = All_Event_pool[poolIndexPi];
12421233
12431234 for (auto const & storedEvent : pool.events ) {
1244- auto c1 = collisions.iteratorAt (storedEvent.collisionId );
1245- const auto & c2 = collision;
1246- if (!c1. sel8 () || !c2. sel8 ())
1235+ const auto & c2 = collisions.iteratorAt (storedEvent.collisionId );
1236+ if (!collision. sel8 () || !c2. sel8 ()) {
1237+ mQaRegistry . fill ( HIST ( " hSkipReasons " ), 0 );
12471238 continue ;
1248-
1249- std::vector<TrackCandidates::iterator> tracks1;
1250- for (auto const & t : pitracks) {
1251- if (t.collisionId () == c1.globalIndex ()) {
1252- tracks1.push_back (t);
1253- }
12541239 }
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);
1240+
1241+ auto hypdTablepreviousCollision = V0Hypers.sliceBy (hypPerCol, c2.globalIndex ());
1242+ hypdTablepreviousCollision.bindExternalIndices (&V0Hypers);
1243+
1244+ if (hypdTablepreviousCollision.size () == 0 ) {
1245+ mQaRegistry .fill (HIST (" hSkipReasons" ), 1 );
1246+ continue ;
1247+ }
1248+
1249+ auto firstHyp = hypdTablepreviousCollision.iteratorAt (0 );
1250+ int poolIndexHyp = where_pool (firstHyp.zPrimVtx (), firstHyp.centralityFT0C ());
1251+
1252+ if (poolIndexHyp != poolIndexPi) {
1253+ mQaRegistry .fill (HIST (" hSkipReasons" ), 2 );
1254+ continue ;
12631255 }
1264- pairHyperEventMixing (tracks1, hypers2);
1256+
1257+ auto trackTableThisCollision = pitracks.sliceBy (mPerCol , collision.globalIndex ());
1258+ trackTableThisCollision.bindExternalIndices (&pitracks);
1259+
1260+ mQaRegistry .fill (HIST (" hNHypsPerPrevColl" ), c2.globalIndex (), hypdTablepreviousCollision.size ());
1261+ pairHyperEventMixing (trackTableThisCollision, hypdTablepreviousCollision);
12651262 }
1266- fillPairsHyper (collisions, pitracks, V0Hypers, /* isMixedEvent*/ true );
12671263
12681264 if (static_cast <int >(pool.events .size ()) >= settingNoMixedEvents) {
12691265 pool.events .pop_front ();
12701266 }
12711267 pool.events .push_back ({collision.globalIndex ()});
1272- }
1268+ }
1269+ fillPairsHyper (collisions, pitracks, V0Hypers, /* isMixedEvent*/ true );
12731270 }
12741271 PROCESS_SWITCH (PiNucleiFemto, processMixedEventHyperPool, " Process Mixed event" , false );
12751272};
0 commit comments