Skip to content

Commit 8f3db24

Browse files
blacwoviealibuild
andauthored
[PWGCF] Pi nuclei update (#13197)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 353b24d commit 8f3db24

File tree

2 files changed

+87
-89
lines changed

2 files changed

+87
-89
lines changed

PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ DECLARE_SOA_COLUMN(MassTOFNu, massTOFNu, float);
5656
DECLARE_SOA_COLUMN(MassTOFPi, massTOFPi, float);
5757
DECLARE_SOA_COLUMN(PidTrkNu, pidTrkNu, uint32_t);
5858
DECLARE_SOA_COLUMN(PidTrkPi, pidTrkPi, uint32_t);
59+
DECLARE_SOA_COLUMN(TrackIDPi, trackIDPi, int);
5960

6061
DECLARE_SOA_COLUMN(ItsClusterSizeNu, itsClusterSizeNu, uint32_t);
6162
DECLARE_SOA_COLUMN(ItsClusterSizePi, itsClusterSizePi, uint32_t);
@@ -127,6 +128,7 @@ DECLARE_SOA_TABLE(PionHyperTable, "AOD", "PIHYPERTABLE",
127128
pion_nuclei_tables::ItsClusterSizePi,
128129
pion_nuclei_tables::ItsClusterSizeNu,
129130
pion_nuclei_tables::SharedClustersPi,
131+
pion_nuclei_tables::TrackIDPi,
130132
pion_nuclei_tables::IsBkgUS,
131133
pion_nuclei_tables::IsBkgEM)
132134
DECLARE_SOA_TABLE(PionNucleiMult, "AOD", "PINUCLEIMULT",

PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx

Lines changed: 85 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
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;
7677
using CollBracket = o2::math_utils::Bracket<int>;
7778
using CollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults>;
7879
using 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

8182
namespace
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

148155
struct 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

Comments
 (0)