Skip to content

Commit d2cc45b

Browse files
authored
[PWGLF] Improve mix event weight (#13352)
1 parent 1023ee8 commit d2cc45b

File tree

1 file changed

+82
-97
lines changed

1 file changed

+82
-97
lines changed

PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx

Lines changed: 82 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -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,10 @@ 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+
ConfigurableAxis ax_dphi_h{"ax_dphi_h", {72, 0.0, 2.0 * TMath::Pi()}, "Δφ_h"};
111+
ConfigurableAxis ax_deta{"ax_deta", {32, -1.6, 1.6}, "Δη"};
112+
ConfigurableAxis ax_ptpair{"ax_ptpair", {100, 0.0, 10.0}, "p_{T,pair} (GeV/c)"};
113+
120114
// THnsparse bining
121115
ConfigurableAxis configThnAxisInvMass{"configThnAxisInvMass", {50, 1.09, 1.14}, "#it{M} (GeV/#it{c}^{2})"};
122116
ConfigurableAxis configThnAxisR{"configThnAxisR", {80, 0.0, 8.0}, "#it{R}"};
@@ -137,12 +131,16 @@ struct lambdaspincorrderived {
137131
histos.add("ptCent", "ptCent", HistType::kTH2D, {{100, 0.0, 10.0}, {8, 0.0, 80.0}}, true);
138132
histos.add("etaCent", "etaCent", HistType::kTH2D, {{32, -0.8, 0.8}, {8, 0.0, 80.0}}, true);
139133

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);
134+
// --- 3D SE/ME pair-space maps per category (LL, LAL, ALL, ALAL)
135+
histos.add("SE_LL", "SE pairs LL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
136+
histos.add("SE_LAL", "SE pairs LAL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
137+
histos.add("SE_ALL", "SE pairs ALL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
138+
histos.add("SE_ALAL", "SE pairs ALAL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
143139

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);
140+
histos.add("ME_LL", "ME pairs LL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
141+
histos.add("ME_LAL", "ME pairs LAL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
142+
histos.add("ME_ALL", "ME pairs ALL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
143+
histos.add("ME_ALAL", "ME pairs ALAL;Δφ_h;Δη;p_{T,pair}", HistType::kTH3D, {ax_dphi_h, ax_deta, ax_ptpair}, true);
146144

147145
histos.add("hSparseLambdaLambda", "hSparseLambdaLambda", HistType::kTHnSparseF, {configThnAxisInvMass, configThnAxisInvMass, configThnAxisPol, configThnAxisR}, true);
148146
histos.add("hSparseLambdaAntiLambda", "hSparseLambdaAntiLambda", HistType::kTHnSparseF, {configThnAxisInvMass, configThnAxisInvMass, configThnAxisPol, configThnAxisR}, true);
@@ -181,8 +179,10 @@ struct lambdaspincorrderived {
181179
ccdb->setCreatedNotAfter(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
182180
LOGF(info, "Getting alignment offsets from the CCDB...");
183181
if (useweight) {
184-
hEff_L = ccdb->getForTimeStamp<TH3D>(ConfEffPathL.value, cfgCcdbParam.nolaterthan.value);
185-
hEff_AL = ccdb->getForTimeStamp<TH3D>(ConfEffPathAL.value, cfgCcdbParam.nolaterthan.value);
182+
hweight1 = ccdb->getForTimeStamp<TH3D>(ConfWeightPathLL.value, cfgCcdbParam.nolaterthan.value);
183+
hweight2 = ccdb->getForTimeStamp<TH3D>(ConfWeightPathLAL.value, cfgCcdbParam.nolaterthan.value);
184+
hweight3 = ccdb->getForTimeStamp<TH3D>(ConfWeightPathALL.value, cfgCcdbParam.nolaterthan.value);
185+
hweight4 = ccdb->getForTimeStamp<TH3D>(ConfWeightPathALAL.value, cfgCcdbParam.nolaterthan.value);
186186
}
187187
}
188188

@@ -319,18 +319,26 @@ struct lambdaspincorrderived {
319319
cosThetaDiff = cosDeltaTheta_hel;
320320
}
321321

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();
322+
// --- helper to compute pair-space variables
323+
auto phi1h = RecoDecay::constrainAngle(particle1Dummy.Phi(), 0.0F, harmonic);
324+
auto phi2h = RecoDecay::constrainAngle(particle2Dummy.Phi(), 0.0F, harmonic);
325+
double dphi_h = std::abs(phi1h - phi2h);
326+
double deta_pair = particle1Dummy.Eta() - particle2Dummy.Eta();
327+
double pt_pair = (particle1Dummy + particle2Dummy).Pt();
324328
double deltaRap = std::abs(particle1Dummy.Rapidity() - particle2Dummy.Rapidity());
325-
double deltaR = TMath::Sqrt(deltaEta * deltaEta + deltaPhi * deltaPhi);
329+
double deltaR = TMath::Sqrt(deta_pair * deta_pair + dphi_h * dphi_h);
326330

327-
double epsWeightParticle1 = 1.0;
331+
double epsWeight = 1.0;
328332

329333
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)));
334+
if (tag1 == 0 && tag2 == 0) {
335+
epsWeight = hweight1->GetBinContent(hweight1->FindBin(dphi_h, deta_pair, pt_pair));
336+
} else if (tag1 == 0 && tag2 == 1) {
337+
epsWeight = hweight2->GetBinContent(hweight2->FindBin(dphi_h, deta_pair, pt_pair));
338+
} else if (tag1 == 1 && tag2 == 0) {
339+
epsWeight = hweight3->GetBinContent(hweight3->FindBin(dphi_h, deta_pair, pt_pair));
340+
} else if (tag1 == 1 && tag2 == 1) {
341+
epsWeight = hweight4->GetBinContent(hweight4->FindBin(dphi_h, deta_pair, pt_pair));
334342
}
335343
}
336344

@@ -341,22 +349,26 @@ struct lambdaspincorrderived {
341349
histos.fill(HIST("hSparseLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, mixpairweight);
342350
histos.fill(HIST("hSparseRapLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, mixpairweight);
343351
histos.fill(HIST("hSparsePairMassLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), mixpairweight);
352+
histos.fill(HIST("SE_LL"), dphi_h, deta_pair, pt_pair);
344353
} else if (tag1 == 0 && tag2 == 1) {
345354
histos.fill(HIST("hSparseLambdaAntiLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, mixpairweight);
346355
histos.fill(HIST("hSparseRapLambdaAntiLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, mixpairweight);
347356
histos.fill(HIST("hSparsePairMassLambdaAntiLambda"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), mixpairweight);
357+
histos.fill(HIST("SE_LAL"), dphi_h, deta_pair, pt_pair);
348358
} else if (tag1 == 1 && tag2 == 0) {
349359
histos.fill(HIST("hSparseAntiLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, mixpairweight);
350360
histos.fill(HIST("hSparseRapAntiLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, mixpairweight);
351361
histos.fill(HIST("hSparsePairMassAntiLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), mixpairweight);
362+
histos.fill(HIST("SE_ALL"), dphi_h, deta_pair, pt_pair);
352363
} else if (tag1 == 1 && tag2 == 1) {
353364
histos.fill(HIST("hSparseAntiLambdaAntiLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, mixpairweight);
354365
histos.fill(HIST("hSparseRapAntiLambdaAntiLambda"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, mixpairweight);
355366
histos.fill(HIST("hSparsePairMassAntiLambdaAntiLambda"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), mixpairweight);
367+
histos.fill(HIST("SE_ALAL"), dphi_h, deta_pair, pt_pair);
356368
}
357369
} else if (datatype == 1) {
358370
double weight = mixpairweight;
359-
weight = mixpairweight / epsWeightParticle1;
371+
weight = mixpairweight / epsWeight;
360372
if (weight <= 0.0) {
361373
weight = 1.0;
362374
}
@@ -365,21 +377,25 @@ struct lambdaspincorrderived {
365377
histos.fill(HIST("hSparseLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, weight);
366378
histos.fill(HIST("hSparseRapLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, weight);
367379
histos.fill(HIST("hSparsePairMassLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), weight);
380+
histos.fill(HIST("ME_LL"), dphi_h, deta_pair, pt_pair);
368381
} else if (tag1 == 0 && tag2 == 1) {
369382
histos.fill(HIST("hPtYMix"), particle1.Pt(), particle1.Rapidity(), weight);
370383
histos.fill(HIST("hSparseLambdaAntiLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, weight);
371384
histos.fill(HIST("hSparseRapLambdaAntiLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, weight);
372385
histos.fill(HIST("hSparsePairMassLambdaAntiLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), weight);
386+
histos.fill(HIST("ME_LAL"), dphi_h, deta_pair, pt_pair);
373387
} else if (tag1 == 1 && tag2 == 0) {
374388
histos.fill(HIST("hPtYMix"), particle1.Pt(), particle1.Rapidity(), weight);
375389
histos.fill(HIST("hSparseAntiLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, weight);
376390
histos.fill(HIST("hSparseRapAntiLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, weight);
377391
histos.fill(HIST("hSparsePairMassAntiLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), weight);
392+
histos.fill(HIST("ME_ALL"), dphi_h, deta_pair, pt_pair);
378393
} else if (tag1 == 1 && tag2 == 1) {
379394
histos.fill(HIST("hPtYMix"), particle1.Pt(), particle1.Rapidity(), weight);
380395
histos.fill(HIST("hSparseAntiLambdaAntiLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaR, weight);
381396
histos.fill(HIST("hSparseRapAntiLambdaAntiLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, deltaRap, weight);
382397
histos.fill(HIST("hSparsePairMassAntiLambdaAntiLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, pairDummy.M(), weight);
398+
histos.fill(HIST("ME_ALAL"), dphi_h, deta_pair, pt_pair);
383399
}
384400
}
385401
}
@@ -606,131 +622,100 @@ struct lambdaspincorrderived {
606622

607623
void processMEV3(EventCandidates const& collisions, AllTrackCandidates const& V0s)
608624
{
609-
// one pool (deque) per mixing bin; each entry holds (collision index, slice of its V0s)
610625
auto nBins = colBinning.getAllBinsCount();
611626
std::vector<std::deque<std::pair<int, AllTrackCandidates>>> eventPools(nBins);
612627

613628
for (auto& collision1 : collisions) {
614-
// select mixing bin for this event
615629
const int bin = colBinning.getBin(std::make_tuple(collision1.posz(), collision1.cent()));
616630

617-
// --- if pool is still empty, just store this event and skip mixing
631+
// if pool empty, push and continue
618632
if (eventPools[bin].empty()) {
619633
auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.index());
620634
eventPools[bin].emplace_back(collision1.index(), std::move(sliced));
621-
if (static_cast<int>(eventPools[bin].size()) > nEvtMixing) {
635+
if ((int)eventPools[bin].size() > nEvtMixing)
622636
eventPools[bin].pop_front();
623-
}
624-
continue; // skip directly to the next event
637+
continue;
625638
}
626639

627-
// all V0s from the current event
640+
// current event slice
628641
auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.index());
629642

630-
// loop over same-event candidate pairs (t1,t2)
631-
int oldindex = -555;
643+
// loop over SE unordered pairs (t1,t2)
632644
for (auto& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(poolA, poolA))) {
633645
if (!selectionV0(t1) || !selectionV0(t2))
634646
continue;
635647
if (t2.index() <= t1.index())
636-
continue; // unique unordered pairs
648+
continue;
637649
if (t1.protonIndex() == t2.protonIndex())
638-
continue; // no shared daughter
650+
continue;
639651
if (t1.pionIndex() == t2.pionIndex())
640652
continue;
641653
if (t1.protonIndex() == t2.pionIndex())
642654
continue;
643655
if (t1.pionIndex() == t2.protonIndex())
644656
continue;
645657

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
658+
// scan prior events for replacements for t1
659+
struct PV {
660+
AllTrackCandidates* pool;
661+
int nRepl;
652662
};
653-
654-
std::vector<PoolView> usable;
663+
std::vector<PV> usable;
655664
int totalRepl = 0;
656665

666+
int mixes = 0;
657667
for (auto it = eventPools[bin].rbegin();
658668
it != eventPools[bin].rend() && mixes < nEvtMixing; ++it, ++mixes) {
659669
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-
}
670+
auto& poolB = it->second;
671+
if (collision2idx == collision1.index())
672+
continue;
673+
664674
int nRepl = 0;
665675
for (auto& tX : poolB) {
666676
if (!selectionV0(tX))
667677
continue;
668678
if (checkKinematics(t1, tX))
669-
++nRepl; // <-- match against t1 only
679+
++nRepl;
670680
}
671-
672681
if (nRepl > 0) {
673-
usable.push_back(PoolView{&poolB, nRepl});
682+
usable.push_back(PV{&poolB, nRepl});
674683
totalRepl += nRepl;
675684
}
676685
}
677686

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-
697687
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
688+
continue;
701689
const float wBase = 1.0f / static_cast<float>(totalRepl);
702690

691+
// emit mixed pairs: tX replaces t1; t2 stays
703692
for (auto& pv : usable) {
704693
auto& poolB = *pv.pool;
705694
for (auto& tX : poolB) {
706695
if (!selectionV0(tX))
707696
continue;
708697
if (!checkKinematics(t1, tX))
709-
continue; // defensive re-check
698+
continue;
710699

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());
700+
auto proton = ROOT::Math::PtEtaPhiMVector(tX.protonPt(), tX.protonEta(), tX.protonPhi(), o2::constants::physics::MassProton);
701+
auto lambda = ROOT::Math::PtEtaPhiMVector(tX.lambdaPt(), tX.lambdaEta(), tX.lambdaPhi(), tX.lambdaMass());
702+
auto proton2 = ROOT::Math::PtEtaPhiMVector(t2.protonPt(), t2.protonEta(), t2.protonPhi(), o2::constants::physics::MassProton);
703+
auto lambda2 = ROOT::Math::PtEtaPhiMVector(t2.lambdaPt(), t2.lambdaEta(), t2.lambdaPhi(), t2.lambdaMass());
716704

717-
const float dPhi = std::fabs(
718-
RecoDecay::constrainAngle(lambda.Phi(), 0.0F, harmonic) -
719-
RecoDecay::constrainAngle(lambda2.Phi(), 0.0F, harmonic));
705+
const float dPhi = std::fabs(RecoDecay::constrainAngle(lambda.Phi(), 0.0F, harmonic) - RecoDecay::constrainAngle(lambda2.Phi(), 0.0F, harmonic));
720706
histos.fill(HIST("deltaPhiMix"), dPhi, wBase);
721707
fillHistograms(tX.v0Status(), t2.v0Status(), lambda, lambda2, proton, proton2, 1, wBase);
722708
}
723709
}
724-
} // end same-event pair loop
725-
// after mixing with prior events, push current event into the pool
710+
}
711+
// push current event into pool
726712
auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.index());
727713
eventPools[bin].emplace_back(collision1.index(), std::move(sliced));
728-
if (static_cast<int>(eventPools[bin].size()) > nEvtMixing) {
714+
if ((int)eventPools[bin].size() > nEvtMixing)
729715
eventPools[bin].pop_front();
730-
}
731-
} // end primary-event loop
716+
}
732717
}
733-
PROCESS_SWITCH(lambdaspincorrderived, processMEV3, "Process data ME", false);
718+
PROCESS_SWITCH(lambdaspincorrderived, processMEV3, "Process data ME (first-leg, pair-3D maps)", false);
734719
};
735720
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
736721
{

0 commit comments

Comments
 (0)