@@ -67,24 +67,14 @@ struct lambdaspincorrderived {
6767 // Enable access to the CCDB for the offset and correction constants and save them in dedicated variables.
6868 Service<o2::ccdb::BasicCCDBManager> ccdb;
6969 o2::ccdb::CcdbApi ccdbApi;
70- // TH3D* hweightNUAL;
71- // TH3D* hweightNUAAL;
72- // TH3D* hweight1;
73- // TH3D* hweight2;
74- // TH3D* hweight3;
75- // TH3D* hweight4;
76- // Configurable<std::string> ConfWeightPathNUAL{"ConfWeightPathNUAL", "Users/s/skundu/My/Object/spincorr/cent010LL", "Weight path"};
77- // Configurable<std::string> ConfWeightPathNUAAL{"ConfWeightPathNUAAL", "Users/s/skundu/My/Object/spincorr/cent010LL", "Weight path"};
78- // Configurable<std::string> ConfWeightPathLL{"ConfWeightPathLL", "Users/s/skundu/My/Object/spincorr/cent010LL", "Weight path"};
79- // Configurable<std::string> ConfWeightPathALAL{"ConfWeightPathALAL", "Users/s/skundu/My/Object/spincorr/cent010LL", "Weight path"};
80- // Configurable<std::string> ConfWeightPathLAL{"ConfWeightPathLAL", "Users/s/skundu/My/Object/spincorr/cent010LL", "Weight path"};
81- // Configurable<std::string> ConfWeightPathALL{"ConfWeightPathALL", "Users/s/skundu/My/Object/spincorr/cent010LL", "Weight path"};
82-
83- Configurable<std::string> ConfEffPathL{" ConfEffPathL" , " " , " CCDB path to Eff (optional)" };
84- Configurable<std::string> ConfEffPathAL{" ConfEffPathAL" , " " , " CCDB path to Eff (optional)" };
85-
86- TH3D* hEff_L = nullptr ;
87- TH3D* hEff_AL = nullptr ;
70+ TH3D* hweight1;
71+ TH3D* hweight2;
72+ TH3D* hweight3;
73+ TH3D* hweight4;
74+ Configurable<std::string> ConfWeightPathLL{" ConfWeightPathLL" , " Users/s/skundu/My/Object/spincorr/cent010LL" , " Weight path" };
75+ Configurable<std::string> ConfWeightPathALAL{" ConfWeightPathALAL" , " Users/s/skundu/My/Object/spincorr/cent010LL" , " Weight path" };
76+ Configurable<std::string> ConfWeightPathLAL{" ConfWeightPathLAL" , " Users/s/skundu/My/Object/spincorr/cent010LL" , " Weight path" };
77+ Configurable<std::string> ConfWeightPathALL{" ConfWeightPathALL" , " Users/s/skundu/My/Object/spincorr/cent010LL" , " Weight path" };
8878
8979 // event sel/////////
9080 Configurable<float > centMin{" centMin" , 0 , " Minimum Centrality" };
@@ -117,6 +107,11 @@ struct lambdaspincorrderived {
117107 Configurable<float > phiMix{" phiMix" , 0.1 , " Phi cut on event mixing" };
118108 Configurable<float > massMix{" massMix" , 0.0028 , " Masscut on event mixing" };
119109
110+ // --- Pair-space axes (add near your other ConfigurableAxis)
111+ ConfigurableAxis ax_dphi_h{" ax_dphi_h" , {72 , 0.0 , 2.0 * TMath::Pi ()}, " Δφ_h" };
112+ ConfigurableAxis ax_deta{" ax_deta" , {32 , -1.6 , 1.6 }, " Δη" };
113+ ConfigurableAxis ax_ptpair{" ax_ptpair" , {100 , 0.0 , 10.0 }, " p_{T,pair} (GeV/c)" };
114+
120115 // THnsparse bining
121116 ConfigurableAxis configThnAxisInvMass{" configThnAxisInvMass" , {50 , 1.09 , 1.14 }, " #it{M} (GeV/#it{c}^{2})" };
122117 ConfigurableAxis configThnAxisR{" configThnAxisR" , {80 , 0.0 , 8.0 }, " #it{R}" };
@@ -137,12 +132,17 @@ struct lambdaspincorrderived {
137132 histos.add (" ptCent" , " ptCent" , HistType::kTH2D , {{100 , 0.0 , 10.0 }, {8 , 0.0 , 80.0 }}, true );
138133 histos.add (" etaCent" , " etaCent" , HistType::kTH2D , {{32 , -0.8 , 0.8 }, {8 , 0.0 , 80.0 }}, true );
139134
140- // Attempted-for-replacement (Den) and Succeeded (Num) per SE leg kinematics
141- histos.add (" hMatchDen_L" , " Attempted #Lambda; p_{T}; #eta; #varphi" , kTH3D , {{50 , 0.0 , 5.0 }, {40 , -1.0 , 1.0 }, {72 , 0.0 , 2.0 * TMath::Pi ()}}, true );
142- histos.add (" hMatchDen_AL" , " Attempted #bar{#Lambda}; p_{T}; #eta; #varphi" , kTH3D , {{50 , 0.0 , 5.0 }, {40 , -1.0 , 1.0 }, {72 , 0.0 , 2.0 * TMath::Pi ()}}, true );
135+ // --- 3D SE/ME pair-space maps per category (LL, LAL, ALL, ALAL)
136+ // SE = same-event (unit weight), ME = mixed-event (uses your mixing+CCDB weight)
137+ histos.add (" SE_LL" , " SE pairs LL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
138+ histos.add (" SE_LAL" , " SE pairs LAL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
139+ histos.add (" SE_ALL" , " SE pairs ALL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
140+ histos.add (" SE_ALAL" , " SE pairs ALAL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
143141
144- histos.add (" hMatchNum_L" , " Succeeded #Lambda; p_{T}; #eta; #varphi" , kTH3D , {{50 , 0.0 , 5.0 }, {40 , -1.0 , 1.0 }, {72 , 0.0 , 2.0 * TMath::Pi ()}}, true );
145- histos.add (" hMatchNum_AL" , " Succeeded #bar{#Lambda}; p_{T}; #eta; #varphi" , kTH3D , {{50 , 0.0 , 5.0 }, {40 , -1.0 , 1.0 }, {72 , 0.0 , 2.0 * TMath::Pi ()}}, true );
142+ histos.add (" ME_LL" , " ME pairs LL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
143+ histos.add (" ME_LAL" , " ME pairs LAL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
144+ histos.add (" ME_ALL" , " ME pairs ALL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
145+ histos.add (" ME_ALAL" , " ME pairs ALAL;Δφ_h;Δη;p_{T,pair}" , HistType::kTH3D , {ax_dphi_h, ax_deta, ax_ptpair}, true );
146146
147147 histos.add (" hSparseLambdaLambda" , " hSparseLambdaLambda" , HistType::kTHnSparseF , {configThnAxisInvMass, configThnAxisInvMass, configThnAxisPol, configThnAxisR}, true );
148148 histos.add (" hSparseLambdaAntiLambda" , " hSparseLambdaAntiLambda" , HistType::kTHnSparseF , {configThnAxisInvMass, configThnAxisInvMass, configThnAxisPol, configThnAxisR}, true );
@@ -181,8 +181,10 @@ struct lambdaspincorrderived {
181181 ccdb->setCreatedNotAfter (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now ().time_since_epoch ()).count ());
182182 LOGF (info, " Getting alignment offsets from the CCDB..." );
183183 if (useweight) {
184- hEff_L = ccdb->getForTimeStamp <TH3D>(ConfEffPathL.value , cfgCcdbParam.nolaterthan .value );
185- hEff_AL = ccdb->getForTimeStamp <TH3D>(ConfEffPathAL.value , cfgCcdbParam.nolaterthan .value );
184+ hweight1 = ccdb->getForTimeStamp <TH3D>(ConfWeightPathLL.value , cfgCcdbParam.nolaterthan .value );
185+ hweight2 = ccdb->getForTimeStamp <TH3D>(ConfWeightPathLAL.value , cfgCcdbParam.nolaterthan .value );
186+ hweight3 = ccdb->getForTimeStamp <TH3D>(ConfWeightPathALL.value , cfgCcdbParam.nolaterthan .value );
187+ hweight4 = ccdb->getForTimeStamp <TH3D>(ConfWeightPathALAL.value , cfgCcdbParam.nolaterthan .value );
186188 }
187189 }
188190
@@ -319,18 +321,26 @@ struct lambdaspincorrderived {
319321 cosThetaDiff = cosDeltaTheta_hel;
320322 }
321323
322- double deltaPhi = std::abs (RecoDecay::constrainAngle (particle1Dummy.Phi (), 0 .0F , harmonic) - RecoDecay::constrainAngle (particle2Dummy.Phi (), 0 .0F , harmonic));
323- double deltaEta = particle1Dummy.Eta () - particle2Dummy.Eta ();
324+ // --- helper to compute pair-space variables
325+ auto phi1h = RecoDecay::constrainAngle (particle1Dummy.Phi (), 0 .0F , harmonic);
326+ auto phi2h = RecoDecay::constrainAngle (particle2Dummy.Phi (), 0 .0F , harmonic);
327+ double dphi_h = std::abs (phi1h - phi2h);
328+ double deta_pair = particle1Dummy.Eta () - particle2Dummy.Eta ();
329+ double pt_pair = (particle1Dummy + particle2Dummy).Pt ();
324330 double deltaRap = std::abs (particle1Dummy.Rapidity () - particle2Dummy.Rapidity ());
325- double deltaR = TMath::Sqrt (deltaEta * deltaEta + deltaPhi * deltaPhi );
331+ double deltaR = TMath::Sqrt (deta_pair * deta_pair + dphi_h * dphi_h );
326332
327- double epsWeightParticle1 = 1.0 ;
333+ double epsWeight = 1.0 ;
328334
329335 if (useweight && datatype == 1 ) {
330- if (tag1 == 0 ) {
331- epsWeightParticle1 = hEff_L->GetBinContent (hEff_L->FindBin (particle1.Pt (), particle1.Eta (), RecoDecay::constrainAngle (particle1.Phi (), 0 .0F , harmonic)));
332- } else {
333- epsWeightParticle1 = hEff_AL->GetBinContent (hEff_AL->FindBin (particle1.Pt (), particle1.Eta (), RecoDecay::constrainAngle (particle1.Phi (), 0 .0F , harmonic)));
336+ if (tag1 == 0 && tag2 == 0 ) {
337+ epsWeight = hweight1->GetBinContent (hweight1->FindBin (dphi_h, deta_pair, pt_pair));
338+ } else if (tag1 == 0 && tag2 == 1 ) {
339+ epsWeight = hweight2->GetBinContent (hweight2->FindBin (dphi_h, deta_pair, pt_pair));
340+ } else if (tag1 == 1 && tag2 == 0 ) {
341+ epsWeight = hweight3->GetBinContent (hweight3->FindBin (dphi_h, deta_pair, pt_pair));
342+ } else if (tag1 == 1 && tag2 == 1 ) {
343+ epsWeight = hweight4->GetBinContent (hweight4->FindBin (dphi_h, deta_pair, pt_pair));
334344 }
335345 }
336346
@@ -341,22 +351,26 @@ struct lambdaspincorrderived {
341351 histos.fill (HIST (" hSparseLambdaLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, mixpairweight);
342352 histos.fill (HIST (" hSparseRapLambdaLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, mixpairweight);
343353 histos.fill (HIST (" hSparsePairMassLambdaLambda" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), mixpairweight);
354+ histos.fill (HIST (" SE_LL" ), dphi_h, deta_pair, pt_pair);
344355 } else if (tag1 == 0 && tag2 == 1 ) {
345356 histos.fill (HIST (" hSparseLambdaAntiLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, mixpairweight);
346357 histos.fill (HIST (" hSparseRapLambdaAntiLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, mixpairweight);
347358 histos.fill (HIST (" hSparsePairMassLambdaAntiLambda" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), mixpairweight);
359+ histos.fill (HIST (" SE_LAL" ), dphi_h, deta_pair, pt_pair);
348360 } else if (tag1 == 1 && tag2 == 0 ) {
349361 histos.fill (HIST (" hSparseAntiLambdaLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, mixpairweight);
350362 histos.fill (HIST (" hSparseRapAntiLambdaLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, mixpairweight);
351363 histos.fill (HIST (" hSparsePairMassAntiLambdaLambda" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), mixpairweight);
364+ histos.fill (HIST (" SE_ALL" ), dphi_h, deta_pair, pt_pair);
352365 } else if (tag1 == 1 && tag2 == 1 ) {
353366 histos.fill (HIST (" hSparseAntiLambdaAntiLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, mixpairweight);
354367 histos.fill (HIST (" hSparseRapAntiLambdaAntiLambda" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, mixpairweight);
355368 histos.fill (HIST (" hSparsePairMassAntiLambdaAntiLambda" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), mixpairweight);
369+ histos.fill (HIST (" SE_ALAL" ), dphi_h, deta_pair, pt_pair);
356370 }
357371 } else if (datatype == 1 ) {
358372 double weight = mixpairweight;
359- weight = mixpairweight / epsWeightParticle1 ;
373+ weight = mixpairweight / epsWeight ;
360374 if (weight <= 0.0 ) {
361375 weight = 1.0 ;
362376 }
@@ -365,21 +379,25 @@ struct lambdaspincorrderived {
365379 histos.fill (HIST (" hSparseLambdaLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, weight);
366380 histos.fill (HIST (" hSparseRapLambdaLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, weight);
367381 histos.fill (HIST (" hSparsePairMassLambdaLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), weight);
382+ histos.fill (HIST (" ME_LL" ), dphi_h, deta_pair, pt_pair);
368383 } else if (tag1 == 0 && tag2 == 1 ) {
369384 histos.fill (HIST (" hPtYMix" ), particle1.Pt (), particle1.Rapidity (), weight);
370385 histos.fill (HIST (" hSparseLambdaAntiLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, weight);
371386 histos.fill (HIST (" hSparseRapLambdaAntiLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, weight);
372387 histos.fill (HIST (" hSparsePairMassLambdaAntiLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), weight);
388+ histos.fill (HIST (" ME_LAL" ), dphi_h, deta_pair, pt_pair);
373389 } else if (tag1 == 1 && tag2 == 0 ) {
374390 histos.fill (HIST (" hPtYMix" ), particle1.Pt (), particle1.Rapidity (), weight);
375391 histos.fill (HIST (" hSparseAntiLambdaLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, weight);
376392 histos.fill (HIST (" hSparseRapAntiLambdaLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, weight);
377393 histos.fill (HIST (" hSparsePairMassAntiLambdaLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), weight);
394+ histos.fill (HIST (" ME_ALL" ), dphi_h, deta_pair, pt_pair);
378395 } else if (tag1 == 1 && tag2 == 1 ) {
379396 histos.fill (HIST (" hPtYMix" ), particle1.Pt (), particle1.Rapidity (), weight);
380397 histos.fill (HIST (" hSparseAntiLambdaAntiLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaR, weight);
381398 histos.fill (HIST (" hSparseRapAntiLambdaAntiLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, deltaRap, weight);
382399 histos.fill (HIST (" hSparsePairMassAntiLambdaAntiLambdaMixed" ), particle1.M (), particle2.M (), cosThetaDiff, pairDummy.M (), weight);
400+ histos.fill (HIST (" ME_ALAL" ), dphi_h, deta_pair, pt_pair);
383401 }
384402 }
385403 }
@@ -606,131 +624,100 @@ struct lambdaspincorrderived {
606624
607625 void processMEV3 (EventCandidates const & collisions, AllTrackCandidates const & V0s)
608626 {
609- // one pool (deque) per mixing bin; each entry holds (collision index, slice of its V0s)
610627 auto nBins = colBinning.getAllBinsCount ();
611628 std::vector<std::deque<std::pair<int , AllTrackCandidates>>> eventPools (nBins);
612629
613630 for (auto & collision1 : collisions) {
614- // select mixing bin for this event
615631 const int bin = colBinning.getBin (std::make_tuple (collision1.posz (), collision1.cent ()));
616632
617- // --- if pool is still empty, just store this event and skip mixing
633+ // if pool empty, push and continue
618634 if (eventPools[bin].empty ()) {
619635 auto sliced = V0s.sliceBy (tracksPerCollisionV0, collision1.index ());
620636 eventPools[bin].emplace_back (collision1.index (), std::move (sliced));
621- if (static_cast < int >( eventPools[bin].size ()) > nEvtMixing) {
637+ if (( int ) eventPools[bin].size () > nEvtMixing)
622638 eventPools[bin].pop_front ();
623- }
624- continue ; // skip directly to the next event
639+ continue ;
625640 }
626641
627- // all V0s from the current event
642+ // current event slice
628643 auto poolA = V0s.sliceBy (tracksPerCollisionV0, collision1.index ());
629644
630- // loop over same-event candidate pairs (t1,t2)
631- int oldindex = -555 ;
645+ // loop over SE unordered pairs (t1,t2)
632646 for (auto & [t1, t2] : soa::combinations (o2::soa::CombinationsFullIndexPolicy (poolA, poolA))) {
633647 if (!selectionV0 (t1) || !selectionV0 (t2))
634648 continue ;
635649 if (t2.index () <= t1.index ())
636- continue ; // unique unordered pairs
650+ continue ;
637651 if (t1.protonIndex () == t2.protonIndex ())
638- continue ; // no shared daughter
652+ continue ;
639653 if (t1.pionIndex () == t2.pionIndex ())
640654 continue ;
641655 if (t1.protonIndex () == t2.pionIndex ())
642656 continue ;
643657 if (t1.pionIndex () == t2.protonIndex ())
644658 continue ;
645659
646- // --- First pass over previous events: count replacements for t1 (first leg)
647- int mixes = 0 ;
648-
649- struct PoolView {
650- AllTrackCandidates* pool; // pointer to slice of V0s from a prior event
651- int nRepl; // how many tX match t1 by checkKinematics
660+ // scan prior events for replacements for t1
661+ struct PV {
662+ AllTrackCandidates* pool;
663+ int nRepl;
652664 };
653-
654- std::vector<PoolView> usable;
665+ std::vector<PV> usable;
655666 int totalRepl = 0 ;
656667
668+ int mixes = 0 ;
657669 for (auto it = eventPools[bin].rbegin ();
658670 it != eventPools[bin].rend () && mixes < nEvtMixing; ++it, ++mixes) {
659671 const int collision2idx = it->first ;
660- auto & poolB = it->second ; // V0 slice of that prior event in this bin
661- if (collision2idx == collision1.index ()) {
662- continue ; // skip same-event mixing
663- }
672+ auto & poolB = it->second ;
673+ if (collision2idx == collision1.index ())
674+ continue ;
675+
664676 int nRepl = 0 ;
665677 for (auto & tX : poolB) {
666678 if (!selectionV0 (tX))
667679 continue ;
668680 if (checkKinematics (t1, tX))
669- ++nRepl; // <-- match against t1 only
681+ ++nRepl;
670682 }
671-
672683 if (nRepl > 0 ) {
673- usable.push_back (PoolView {&poolB, nRepl});
684+ usable.push_back (PV {&poolB, nRepl});
674685 totalRepl += nRepl;
675686 }
676687 }
677688
678- // --- Track-by-track matching efficiency (count each t1 once in this event)
679- if (t1.index () != oldindex) {
680- const double phi1 = RecoDecay::constrainAngle (t1.lambdaPhi (), 0 .0F , harmonic);
681- if (t1.v0Status () == 0 ) {
682- histos.fill (HIST (" hMatchDen_L" ), t1.lambdaPt (), t1.lambdaEta (), phi1);
683- } else {
684- histos.fill (HIST (" hMatchDen_AL" ), t1.lambdaPt (), t1.lambdaEta (), phi1);
685- }
686-
687- if (totalRepl > 0 ) { // success for this t1 this event
688- if (t1.v0Status () == 0 ) {
689- histos.fill (HIST (" hMatchNum_L" ), t1.lambdaPt (), t1.lambdaEta (), phi1);
690- } else {
691- histos.fill (HIST (" hMatchNum_AL" ), t1.lambdaPt (), t1.lambdaEta (), phi1);
692- }
693- }
694- oldindex = t1.index ();
695- }
696-
697689 if (totalRepl == 0 )
698- continue ; // no viable replacement for this t1
699-
700- // --- Second pass: build mixed pairs (tX replaces t1), normalized per-SE-leg
690+ continue ;
701691 const float wBase = 1 .0f / static_cast <float >(totalRepl);
702692
693+ // emit mixed pairs: tX replaces t1; t2 stays
703694 for (auto & pv : usable) {
704695 auto & poolB = *pv.pool ;
705696 for (auto & tX : poolB) {
706697 if (!selectionV0 (tX))
707698 continue ;
708699 if (!checkKinematics (t1, tX))
709- continue ; // defensive re-check
700+ continue ;
710701
711- // Build mixed pair: tX (from prior event) replaces t1; t2 stays (current event)
712- proton = ROOT::Math::PtEtaPhiMVector (tX.protonPt (), tX.protonEta (), tX.protonPhi (), o2::constants::physics::MassProton);
713- lambda = ROOT::Math::PtEtaPhiMVector (tX.lambdaPt (), tX.lambdaEta (), tX.lambdaPhi (), tX.lambdaMass ());
714- proton2 = ROOT::Math::PtEtaPhiMVector (t2.protonPt (), t2.protonEta (), t2.protonPhi (), o2::constants::physics::MassProton);
715- lambda2 = ROOT::Math::PtEtaPhiMVector (t2.lambdaPt (), t2.lambdaEta (), t2.lambdaPhi (), t2.lambdaMass ());
702+ auto proton = ROOT::Math::PtEtaPhiMVector (tX.protonPt (), tX.protonEta (), tX.protonPhi (), o2::constants::physics::MassProton);
703+ auto lambda = ROOT::Math::PtEtaPhiMVector (tX.lambdaPt (), tX.lambdaEta (), tX.lambdaPhi (), tX.lambdaMass ());
704+ auto proton2 = ROOT::Math::PtEtaPhiMVector (t2.protonPt (), t2.protonEta (), t2.protonPhi (), o2::constants::physics::MassProton);
705+ auto lambda2 = ROOT::Math::PtEtaPhiMVector (t2.lambdaPt (), t2.lambdaEta (), t2.lambdaPhi (), t2.lambdaMass ());
716706
717- const float dPhi = std::fabs (
718- RecoDecay::constrainAngle (lambda.Phi (), 0 .0F , harmonic) -
719- RecoDecay::constrainAngle (lambda2.Phi (), 0 .0F , harmonic));
707+ const float dPhi = std::fabs (RecoDecay::constrainAngle (lambda.Phi (), 0 .0F , harmonic) - RecoDecay::constrainAngle (lambda2.Phi (), 0 .0F , harmonic));
720708 histos.fill (HIST (" deltaPhiMix" ), dPhi, wBase);
721709 fillHistograms (tX.v0Status (), t2.v0Status (), lambda, lambda2, proton, proton2, 1 , wBase);
722710 }
723711 }
724- } // end same-event pair loop
725- // after mixing with prior events, push current event into the pool
712+ }
713+ // push current event into pool
726714 auto sliced = V0s.sliceBy (tracksPerCollisionV0, collision1.index ());
727715 eventPools[bin].emplace_back (collision1.index (), std::move (sliced));
728- if (static_cast < int >( eventPools[bin].size ()) > nEvtMixing) {
716+ if (( int ) eventPools[bin].size () > nEvtMixing)
729717 eventPools[bin].pop_front ();
730- }
731- } // end primary-event loop
718+ }
732719 }
733- PROCESS_SWITCH (lambdaspincorrderived, processMEV3, " Process data ME" , false );
720+ PROCESS_SWITCH (lambdaspincorrderived, processMEV3, " Process data ME (first-leg, pair-3D maps) " , false );
734721};
735722WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
736723{
0 commit comments