Repository navigation
[PWGJE] Fix physical primary V0 selection in MC and add V0 jet spectra vs multiplicity task - #18594
Conversation
|
O2 linter results: ❌ 0 errors, |
|
Error while checking build/O2Physics/o2 for 34fedc2 at 2026-11-04 18:37: Full log here. |
|
Error while checking build/O2Physics/staging for 34fedc2 at 2026-11-04 18:41: Full log here. |
|
Error while checking build/O2Physics/code-check for 34fedc2 at 2026-11-04 19:05: Full log here. |
|
Error while checking build/O2Physics/o2 for 7f798ee at 2026-11-05 10:01: Full log here. |
|
Error while checking build/O2Physics/staging for 7f798ee at 2026-11-05 10:13: Full log here. |
|
Error while checking build/O2Physics/code-check for 7f798ee at 2026-11-05 10:30: Full log here. |
|
Error while checking build/O2Physics/code-check for 20a3147 at 2026-11-05 11:14: Full log here. |
| registryMC.fill(HIST("number_of_events_vsmultiplicity_rec"), multiplicity, weight); | ||
|
|
||
| // Generated particles of the MC collision associated to the reconstructed collision | ||
| const auto genV0s = jetParticles.sliceBy(particlesPerMcCollision, mcCollision.mcCollisionId()); |
There was a problem hiding this comment.
I think this should be mcCollision.globalIndex() the other one points to the aod::McCollisions table
| const float multiplicity = jcoll.centFT0M(); | ||
| registryData.fill(HIST("number_of_events_vsmultiplicity"), multiplicity); | ||
|
|
||
| const auto jetFinderV0s = buildDetectorLevelInput(v0s, tracks); |
There was a problem hiding this comment.
you can get the V0s directly from the jet with
for (auto v0Cand : v0jets.candidate_asaod::CandidatesV0Data())
There was a problem hiding this comment.
If I understand correctly your comment here, for the in-jet V0 observables I think the code should already iterate over the jet constituents directly using CandidatesV0Data. The loop over the full v0s table here is intentional to fill the inclusive QA once per candidate, including candidates that are not jet constituents. The UE loop also, bc it needs to consider V0s outside the jet.
| return false; | ||
| } | ||
| for (const auto& v0 : v0s) { | ||
| if (jetcandidateutilities::isDaughterTrack(track, v0)) { |
There was a problem hiding this comment.
if you take the jet constituents this is already removed by the jet finder. But if you take the full JTracks it is not
There was a problem hiding this comment.
Yes this is always used with JetTracks
| using MatchedMCPV0JetsWithConstituents = soa::Join<aod::V0ChargedMCParticleLevelJets, aod::V0ChargedMCParticleLevelJetConstituents, aod::V0ChargedMCParticleLevelJetsMatchedToV0ChargedMCDetectorLevelJets>; | ||
|
|
||
| // PWGJE MC collisions and their indices to the original AO2D MC collisions. | ||
| using JetMcCollisionsWithPIs = soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs>; |
There was a problem hiding this comment.
aod::JMcCollisionPIs
this you could remove since you don't link back to the original table anymore
|
|
||
| // Reconstructed collisions of this MC collision passing the event selection | ||
| std::unordered_set<int> selectedCollisions; | ||
| for (const auto& collision : collisions) { |
There was a problem hiding this comment.
does smallGroups already group these with the JetMcCollisions?
There was a problem hiding this comment.
Yes I think SmallGroups here gives the reconstructed collisions associated with the current JetMcCollision
| } | ||
| } | ||
|
|
||
| const auto jetFinderV0s = buildParticleLevelInput(v0s, particles); |
There was a problem hiding this comment.
same here with getting them directly from the jet
There was a problem hiding this comment.
Same here I think for the in-jet generated V0s the loop uses jet.candidates_asaod::CandidatesV0MCP() to retrieve the V0 constituents. The loop over v0s is for the UE, since those are not constituents of the current jet it filters them to those accepted by the jet finder and excludes V0s belonging to jets above threshold. This was the rationale
|
Error while checking build/O2Physics/code-check for 3e2d0a8 at 2026-11-06 15:34: Full log here. |
|
Error while checking build/O2Physics/code-check for 36d531a at 2026-11-06 17:51: Full log here. |
Hi,
This PR introduces two main changes:
A small fix for V0 clustering in analyseV0s (MC Particle-Level): analyseV0s now skips non-physical-primary V0s on MC particle-level tables.
Previously, Lambda particles originating from Xi+- / Omega+- decays were clustered together with their primary charged mother, leading to double-counting of their momentum in the jet pT.
Detector-level and data remain unchanged.
Note: This changes the default behavior for all users of the MCP V0 jet finder.
New task lf-jet-spectra to measures K0s, Lambda, and Lambda-bar pT spectra in jets and in the UE vs FT0M multiplicity.
It follows the same principle as PWGLF strangenessInJets, but integrates JET tools to include the V0 pT directly in the jet clustering as suggested by PWGJE convenors.
Cheers,
Francesca