From 90e0f3194a76af7154f7fd8f87d4d5e4fa111f18 Mon Sep 17 00:00:00 2001 From: blacwovie Date: Wed, 24 Sep 2025 18:51:44 +0800 Subject: [PATCH 1/3] Update PionNucleiTables.h --- PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h b/PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h index 6b94b6a105c..eb99608b5b8 100644 --- a/PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h +++ b/PWGCF/Femto/FemtoNuclei/DataModel/PionNucleiTables.h @@ -30,7 +30,9 @@ DECLARE_SOA_COLUMN(PtNu, ptNu, float); DECLARE_SOA_COLUMN(EtaNu, etaNu, float); DECLARE_SOA_COLUMN(PhiNu, phiNu, float); DECLARE_SOA_COLUMN(PtHyp, ptHyp, float); +DECLARE_SOA_COLUMN(PtHe3, ptHe3, float); DECLARE_SOA_COLUMN(EtaHyp, etaHyp, float); +DECLARE_SOA_COLUMN(EtaHe3, etaHe3, float); DECLARE_SOA_COLUMN(PhiHyp, phiHyp, float); DECLARE_SOA_COLUMN(PtPi, ptPi, float); DECLARE_SOA_COLUMN(EtaPi, etaPi, float); @@ -105,6 +107,8 @@ DECLARE_SOA_TABLE(PionNucleiTable, "AOD", "PINUCLEITABLE", DECLARE_SOA_TABLE(PionHyperTable, "AOD", "PIHYPERTABLE", pion_nuclei_tables::PtHyp, pion_nuclei_tables::EtaHyp, + pion_nuclei_tables::PtHe3, + pion_nuclei_tables::EtaHe3, pion_nuclei_tables::PhiHyp, pion_nuclei_tables::PtPi, pion_nuclei_tables::EtaPi, From 2030106d76487d6757646fbddcf63f6408084ab1 Mon Sep 17 00:00:00 2001 From: blacwovie Date: Wed, 24 Sep 2025 18:52:25 +0800 Subject: [PATCH 2/3] Update PiNucleiFemto.cxx --- .../TableProducer/PiNucleiFemto.cxx | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx b/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx index 74f0746732c..891a0b25ae7 100644 --- a/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx +++ b/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx @@ -104,6 +104,8 @@ struct PiNucandidate { std::array momNu = {99.f, 99.f, 99.f}; std::array momPi = {99.f, 99.f, 99.f}; + float ptHe3 = 1.f; + float etaHe3 = 1.f; float signNu = 1.f; float signPi = 1.f; float invMass = -10.f; @@ -159,6 +161,8 @@ struct PiNucleiFemto { Configurable settingCutPtMinDePi{"settingCutPtMinDePi", 0.0f, "Minimum PT cut on DePi4"}; Configurable settingCutClSizeItsDe{"settingCutClSizeItsDe", 4.0f, "Minimum ITS cluster size for De"}; Configurable settingCutNCls{"settingCutNCls", 5.0f, "Minimum ITS Ncluster for tracks"}; + Configurable settingCutTPCChi2He{"settingCutTPCChi2He", 0.0f, "Minimum tpcChi2He for Hyper He3"}; + Configurable settingCutAverClsSizeHe{"settingCutAverClsSizeHe", 0.0f, "Minimum averClusSizeHe for Hyper He3"}; Configurable settingCutChi2NClITS{"settingCutChi2NClITS", 999.f, "Maximum ITS Chi2 for tracks"}; Configurable settingCutNsigmaTPCPi{"settingCutNsigmaTPCPi", 3.0f, "Value of the TPC Nsigma cut on Pi"}; Configurable settingCutNsigmaTPCDe{"settingCutNsigmaTPCDe", 2.5f, "Value of the TPC Nsigma cut on De"}; @@ -231,7 +235,7 @@ struct PiNucleiFemto { "QA", {{"hVtxZ", "Vertex distribution in Z;Z (cm)", {HistType::kTH1F, {{400, -20.0, 20.0}}}}, {"hNcontributor", "Number of primary vertex contributor", {HistType::kTH1F, {{2000, 0.0f, 2000.0f}}}}, - {"hCentrality", "Centrality", {HistType::kTH1F, {{200, 0.0f, 100.0f}}}}, + {"hCentrality", "Centrality", {HistType::kTH1F, {{100, 0.0f, 100.0f}}}}, {"hTrackSel", "Accepted tracks", {HistType::kTH1F, {{Selections::kAll, -0.5, static_cast(Selections::kAll) - 0.5}}}}, {"hEvents", "; Events;", {HistType::kTH1F, {{3, -0.5, 2.5}}}}, {"hEmptyPool", "svPoolCreator did not find track pairs false/true", {HistType::kTH1F, {{2, -0.5, 1.5}}}}, @@ -562,15 +566,15 @@ struct PiNucleiFemto { bool selectionPIDHyper(const aod::DataHypCandsWColl::iterator& V0Hyper) { mQaRegistry.fill(HIST("hHe3P_preselected"), V0Hyper.tpcMomHe()); - /*float averClusSizeHe = averageClusterSizeCosl(V0Hyper.itsClusterSizesHe(), V0Hyper.etaHe3()); - if (averClusSizeHe <= 4) { + float averClusSizeHe = averageClusterSizeCosl(V0Hyper.itsClusterSizesHe(), V0Hyper.etaHe3()); + if (averClusSizeHe <= settingCutAverClsSizeHe) { return false; } - if (V0Hyper.tpcChi2He() <= 0.5) { + if (V0Hyper.tpcChi2He() <= settingCutTPCChi2He) { return false; } mQaRegistry.fill(HIST("hHe3P"), V0Hyper.tpcMomHe()); - mQaRegistry.fill(HIST("hHe3TPCnsigma"), V0Hyper.nSigmaHe());*/ + mQaRegistry.fill(HIST("hHe3TPCnsigma"), V0Hyper.ptHe3(), V0Hyper.nSigmaHe()); return true; } @@ -697,7 +701,7 @@ struct PiNucleiFemto { // constexpr double mHe3 = o2::constants::physics::MassHelium3; // constexpr double mPi = o2::constants::physics::MassPiPlus; // --- He3 - float pxHe3 = V0Hyper.ptHe3() * std::cos(V0Hyper.phiHe3()); + float pxHe3 = V0Hyper.ptHe3() * std::cos(V0Hyper.phiHe3()); float pyHe3 = V0Hyper.ptHe3() * std::sin(V0Hyper.phiHe3()); float pzHe3 = V0Hyper.ptHe3() * std::sinh(V0Hyper.etaHe3()); // float pHe3 = V0Hyper.ptHe3() * std::cosh(V0Hyper.etaHe3()); @@ -720,18 +724,15 @@ struct PiNucleiFemto { if (settingCutInvMass > 0 && invMass > settingCutInvMass) { return false; } - float ptDePi = std::hypot(piHypercand.momNu[0] + piHypercand.momPi[0], piHypercand.momNu[1] + piHypercand.momPi[1]); - if (ptDePi < settingCutPtMinDePi) { - return false; - } - + piHypercand.signPi = trackPi.sign(); if (V0Hyper.isMatter()) { piHypercand.signNu = 1; } else { piHypercand.signNu = -1; } - + piHypercand.etaHe3 = V0Hyper.etaHe3(); + piHypercand.ptHe3 = V0Hyper.ptHe3(); piHypercand.dcaxyPi = trackPi.dcaXY(); piHypercand.dcazPi = trackPi.dcaZ(); piHypercand.tpcSignalPi = trackPi.tpcSignal(); @@ -753,6 +754,7 @@ struct PiNucleiFemto { piHypercand.trackIDPi = trackPi.globalIndex(); + if (trackPi.hasTOF()) { float beta = o2::pid::tof::Beta::GetBeta(trackPi); beta = std::min(1.f - 1.e-6f, std::max(1.e-4f, beta)); /// sometimes beta > 1 or < 0, to be checked @@ -830,8 +832,8 @@ struct PiNucleiFemto { mQaRegistry.fill(HIST("hTrackSel"), Selections::kPID); SVCand pair; - pair.tr0Idx = piTrack.globalIndex(); - pair.tr1Idx = V0Hyper.globalIndex(); + pair.tr0Idx = V0Hyper.globalIndex(); + pair.tr1Idx = piTrack.globalIndex(); const int collIdx = V0Hyper.collisionId(); CollBracket collBracket{collIdx, collIdx}; pair.collBracket = collBracket; @@ -935,6 +937,8 @@ struct PiNucleiFemto { mOutputHyperDataTable( piNucand.recoPtNu(), piNucand.recoEtaNu(), + piNucand.ptHe3, + piNucand.etaHe3, piNucand.recoPhiNu(), piNucand.recoPtPi(), piNucand.recoEtaPi(), @@ -1089,14 +1093,15 @@ struct PiNucleiFemto { { for (const auto& trackPair : mTrackHypPairs) { - auto v0hyper = V0Hypers.rawIteratorAt(trackPair.tr1Idx); - auto piTrack = piTracks.rawIteratorAt(trackPair.tr0Idx); + auto v0hyper = V0Hypers.rawIteratorAt(trackPair.tr0Idx); + auto piTrack = piTracks.rawIteratorAt(trackPair.tr1Idx); // auto collBracket = trackPair.collBracket; PiNucandidate piNucand; - if (!fillCandidateInfoHyper(v0hyper, piTrack, piNucand, isMixedEvent)) { + if (!fillCandidateInfoHyper(v0hyper, piTrack, piNucand, isMixedEvent)) { continue; } + mQaRegistry.fill(HIST("hNuPt"), piNucand.recoPtNu()); mQaRegistry.fill(HIST("hPiPt"), piNucand.recoPtPi()); mQaRegistry.fill(HIST("hNuEta"), piNucand.recoEtaNu()); @@ -1220,14 +1225,15 @@ PROCESS_SWITCH(PiNucleiFemto, processMixedEventHyper, "Process Mixed event", fal void processMixedEventHyperPool(const CollisionsFull& collisions, o2::aod::DataHypCandsWColl const& V0Hypers, const TrackCandidates& pitracks) { - LOG(info) << "Processing mixed event for hypertriton"; - mTrackHypPairs.clear(); if (!isInitialized) { initializePools(); LOG(info) << "Initialized event pool with size = " << All_Event_pool.size(); } for (auto const& collision : collisions) { + mQaRegistry.fill(HIST("hNcontributor"), collision.numContrib()); + mQaRegistry.fill(HIST("hCentrality"), collision.centFT0C()); + mQaRegistry.fill(HIST("hVtxZ"), collision.posZ()); int poolIndexPi = where_pool(collision.posZ(), collision.centFT0C()); auto& pool = All_Event_pool[poolIndexPi]; @@ -1247,7 +1253,6 @@ PROCESS_SWITCH(PiNucleiFemto, processMixedEventHyper, "Process Mixed event", fal tracks1.push_back(t); } } - std::vector hypers2; for (auto const& h : V0Hypers) { if (h.collisionId() != c2.globalIndex()) From 5c9c7efde410bd1d23a1fb9cd2cb391d492fcc69 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Wed, 24 Sep 2025 10:53:30 +0000 Subject: [PATCH 3/3] Please consider the following formatting changes --- .../FemtoNuclei/TableProducer/PiNucleiFemto.cxx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx b/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx index 891a0b25ae7..77bc5ae2c0e 100644 --- a/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx +++ b/PWGCF/Femto/FemtoNuclei/TableProducer/PiNucleiFemto.cxx @@ -701,7 +701,7 @@ struct PiNucleiFemto { // constexpr double mHe3 = o2::constants::physics::MassHelium3; // constexpr double mPi = o2::constants::physics::MassPiPlus; // --- He3 - float pxHe3 = V0Hyper.ptHe3() * std::cos(V0Hyper.phiHe3()); + float pxHe3 = V0Hyper.ptHe3() * std::cos(V0Hyper.phiHe3()); float pyHe3 = V0Hyper.ptHe3() * std::sin(V0Hyper.phiHe3()); float pzHe3 = V0Hyper.ptHe3() * std::sinh(V0Hyper.etaHe3()); // float pHe3 = V0Hyper.ptHe3() * std::cosh(V0Hyper.etaHe3()); @@ -724,7 +724,7 @@ struct PiNucleiFemto { if (settingCutInvMass > 0 && invMass > settingCutInvMass) { return false; } - + piHypercand.signPi = trackPi.sign(); if (V0Hyper.isMatter()) { piHypercand.signNu = 1; @@ -754,7 +754,6 @@ struct PiNucleiFemto { piHypercand.trackIDPi = trackPi.globalIndex(); - if (trackPi.hasTOF()) { float beta = o2::pid::tof::Beta::GetBeta(trackPi); beta = std::min(1.f - 1.e-6f, std::max(1.e-4f, beta)); /// sometimes beta > 1 or < 0, to be checked @@ -1098,10 +1097,10 @@ struct PiNucleiFemto { // auto collBracket = trackPair.collBracket; PiNucandidate piNucand; - if (!fillCandidateInfoHyper(v0hyper, piTrack, piNucand, isMixedEvent)) { + if (!fillCandidateInfoHyper(v0hyper, piTrack, piNucand, isMixedEvent)) { continue; } - + mQaRegistry.fill(HIST("hNuPt"), piNucand.recoPtNu()); mQaRegistry.fill(HIST("hPiPt"), piNucand.recoPtPi()); mQaRegistry.fill(HIST("hNuEta"), piNucand.recoEtaNu()); @@ -1231,9 +1230,9 @@ PROCESS_SWITCH(PiNucleiFemto, processMixedEventHyper, "Process Mixed event", fal LOG(info) << "Initialized event pool with size = " << All_Event_pool.size(); } for (auto const& collision : collisions) { - mQaRegistry.fill(HIST("hNcontributor"), collision.numContrib()); - mQaRegistry.fill(HIST("hCentrality"), collision.centFT0C()); - mQaRegistry.fill(HIST("hVtxZ"), collision.posZ()); + mQaRegistry.fill(HIST("hNcontributor"), collision.numContrib()); + mQaRegistry.fill(HIST("hCentrality"), collision.centFT0C()); + mQaRegistry.fill(HIST("hVtxZ"), collision.posZ()); int poolIndexPi = where_pool(collision.posZ(), collision.centFT0C()); auto& pool = All_Event_pool[poolIndexPi];