[PWGLF] Updates on RingPolarization spurious signal estimation - #17531
Merged
romainschotter merged 39 commits intoAug 20, 2026
Conversation
…ntroducing an error in AO2D merging, due to the previous way my local aod-writer was written. Now fixed using local o2-aod-merger tests.
…grams on consumer and simple QAs to estimate Cov(R, N_Lambda)
…d ones. Consumer: Adding uncertainty estimation via delta method (considers covariance), post-processing options for minimum leading jet and leading particle pT (purity knobs), QA of the observable in positive eta and negative eta
…were specific decay topologies are favored due to easier V0 reconstruction (pions boosted in such a way that their momentum is small are harder to reconstruct). This introduces a non-trivial FAKE signal of polarization which must be understood and properly accounted for in the computations! Fixed BoostToCM usage (which, surprisingly, by the definition of the observable, does an effect close to a scaling factor only). Added QA histograms to understand negative signal from positive #eta and negative #eta.
…efficiency problem. Modifies (minimally) DataModel and TableProducer accordingly.
…points in the same direction (for a simple QA that only uses direction). Additional QAs for the helicity efficiency effect
…ming some histograms and creating subfolders to keep things tidy.
…arization sources from efficiency effects). Consumer: better titles for histograms, new plots to probe AEE and HEE effects.
…nto LambdaPolRing-v3
…e the effects of) the "Azimuthal Efficiency Effect" (AEE), which is the main source of fake polarization signal -- caused by reconstruction efficiency
…al Efficiency Effect (AEE)'s fake polarization signal is inherent to the Lambdas themselves and the magnetic field, randomly changing jet orientation should still give an AEE signal, but no true vorticity signal. By doing this, we can possibly get an efficiency map of AEE alone. Idea is similar to an event mixing where we take whole Lambdas from one event and whole jets from another -- but instead just randomizing the jet in the same event, avoiding some spurious physics correlations that could arise.
- Adding a new QA where we do a very naive event mixing: cache the proxy from the previous collision to calculate spurious AEE effects. - Adding new ring observable plots wrt the Lambda being in the mass peak or outside the mass peak, to understand how the integrated ring may change between background and signal
…roxyDistortion. Still need to properly work out the phiWeights and etaWeights distributions for the jets and subleading jets though!
… atan2's -PI to PI output
…xperiment. When the jet direction is drawn from a distribution in an attempt to disentangle physical ring polarization and efficiency-induced contributions, one can experiment with taking 10 different jet directions for each Lambda as a way of artificially reducing error bars and probing Lambda-only effects, to some level; - Fixed the eta axis for V0s, which was too small compared to what is allowed by the lambdaJetPolarizationIons table producer; - Added DCA-dependency checks for the ring observable, for DCA between the V0's daughters, of the proton-like track and the pion-like track; - Added simplistic event-mixing capabilities (see forcePreviousJet) where the previous event's jet direction is taken as the current event's proxy direction for the ring;
…tograms of TableProducer, organizing Consumer and adding new histograms. - Datamodel: Added Zvtx and IR to event table. Removed jetNConstituents and simplified V0 table for a new format that doesn't store ambiguous Lambda/antiLambda candidates. - TableProducer: Adequation to new datamodel. Organized event selections, changed V0 selection defaults, fixed hEventSelection and hSelectionV0s - Consumer: Added 2D histograms for polarization vector-field plotting. Implemented per-family switches for histogram declaration and filling, in order to avoid the max 512 limit on histograms declared to a single HistogramRegistry. Adequations and optimizations to new datamodel where we don't store ambiguous Lambda/antiLambda candidates. To-do: QA the interaction rate in larger datasets (currently running). Check if the new "fetch IR in all collisions" philosophy does not impact performance in an unsustainable way.
…ymmetries. Renamed QA TFolders - Consumer: Added simple Ring Vs PVz plots. Included inexpensive mass-window (in Vs out of window) checks as a naive signal-extraction estimator for QAing. - Introduced structure for event mixing of leading particle direction. Some QA plots implemented, still need to run. - TODO: still have to implement event mixing for leading jets and subleading jets - TODO: possible performance improvements over sliceBy
…"last neighbour wins" before commiting the uniform randomization via reservoir sampling for leading particles.
…eding major changes for leading jet and subleading jet event mixing, which will change some things in the structure of the code)
…s. Some refactoring of leading particle code in order to avoid repetition and to preserve performance.
…often), expressions that were difficult to read and "to-dos". Some additions listed below. - TableProducer: Added an in-out of acceptance comparison for jet QAing; cached pos/negTrackExtra usages; fixed some improper histogram filling guards. - TableConsumer: refactored the DeltaError estimators into a more performant format using flat vectors instead of maps. Added FATAL errors for configurable bool selection validation to avoid errors when other people are running this. Properly gated some expensive QA histogram fills. Added more event mixing QAs related to collision cannibalization. Refactored applyProxyDistortion to accept some small structs to better organize the callsite. Corrected a small bug between my commits where I seem to have removed excludeOutOfPeakQA and excludeInPeakQA options.
…his anticipates some CI check in the central repo, via a custom task I create in my own .vscode!
cmuncinelli
requested review from
HorstMa,
abmodak,
dmallick2,
ercolessi,
gbencedi,
lhusova,
maciacco,
mario-krueger,
mpuccio,
prottayCMT,
romainschotter,
skundu692 and
smaff92
as code owners
August 20, 2026 18:09
|
O2 linter results: ❌ 28 errors, |
Please consider the following formatting changes to AliceO2Group#17531
Collaborator
|
Error while checking build/O2Physics/o2 for a9d7056 at 2026-08-20 20:24: Full log here. |
cmuncinelli
marked this pull request as draft
August 20, 2026 18:30
cmuncinelli
marked this pull request as ready for review
August 20, 2026 18:41
Collaborator
|
Error while checking build/O2Physics/code-check for 3f17087 at 2026-08-20 20:56: Full log here. |
romainschotter
approved these changes
Aug 20, 2026
romainschotter
enabled auto-merge (squash)
August 20, 2026 22:05
Collaborator
|
Error while checking build/O2Physics/code-check for 6c7094a at 2026-08-21 00:15: Full log here. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit adds the infrastructure needed to estimate spurious polarization signals around jets, including event mixing for the jet-V0 matching in the task. It also substantially improves the analysis code's documentation, QA, histogram labeling, and adherence to O2Physics linting and formatting conventions.
Main changes: