Skip to content

[Tutorial,PWGLF] Update on the modular resonance initializer for data processing - #17507

Draft
mjkim525 wants to merge 5 commits into
AliceO2Group:masterfrom
mjkim525:Revising_ResoInitializer
Draft

[Tutorial,PWGLF] Update on the modular resonance initializer for data processing#17507
mjkim525 wants to merge 5 commits into
AliceO2Group:masterfrom
mjkim525:Revising_ResoInitializer

Conversation

@mjkim525

@mjkim525 mjkim525 commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR aims to move the daughter-table production functionality from the monolithic resonanceInitializer to resonanceModuleInitializer, following a design where collision initialization and daughter production are kept as separate processing stages

It also introduces a compact UltraMicroTrack table with a reduced data footprint and updates the derived-data schema to preserve original row IDs without requiring bound source-table relations.

This row-ID handling follows the same design philosophy as the current Resonance derived-data framework, which avoids a linked-table structure in favor of a stand-alone data model.

In the future, we will perform additional validation and replace resonanceInitializer with resonanceModuleInitializer.

As part of this process, this PR focuses on validating the data-related tables by comparing the results obtained with resonanceModuleInitializer against those from resonanceInitializer.

Main changes in resonanceModuleInitializer

  • Add independently configurable ResoTracks, ResoMicroTracks, and ResoUltraMicroTracks production.
  • Add compact UltraMicroTrack storage:
    • Momentum components quantized to ~ 1 MeV/c.
    • Packed TPC/TOF PID information.
    • Packed DCAxy/DCAz information.
    • Dynamic accessors for momentum, PID, DCA, and track flags.
  • Add detailed output-specific QA for full, micro, and ultra-micro tracks, including pT, η, φ, DCA-vs-pT, and PID distributions.
  • Remove the legacy spherocity and event-plane production logic from the modular initializer.

Compatibility notes

  • Existing sidecar tables that exposed bound track_as(), v0_as(), cascade_as(), or collision_as() relations now store scalar IDs instead. Users should use the corresponding *Id() columns or explicit joins.
  • In this context, the resonancesCombine tutorial and its CMake target are removed.
  • The UltraMicroTrack table stores one configured PID species per production.

This PR aims to validate the data processing. Updates related to the MC part will follow.

@github-actions github-actions Bot changed the title Backport modular resonance initializer [Tutorial,PWGLF] Backport modular resonance initializer Aug 19, 2026
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

O2 linter results: ❌ 0 errors, ⚠️ 28 warnings, 🔕 9 disabled

@mjkim525 mjkim525 changed the title [Tutorial,PWGLF] Backport modular resonance initializer [Tutorial,PWGLF] Backport the modular resonance initializer for data processing Aug 19, 2026
@mjkim525 mjkim525 changed the title [Tutorial,PWGLF] Backport the modular resonance initializer for data processing [Tutorial,PWGLF] Update on the modular resonance initializer for data processing Aug 19, 2026
@BongHwi

BongHwi commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Hello @mjkim525 thanks for your contribution. I think it is good to go. Please release it from the draft state. Don't forget to test it on the hyperloop after we merge it.

@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/code-check for 81c280e at 2026-08-19 14:38:

## sw/BUILD/O2Physics-code-check-latest/log
--
========== List of issues found ==========
++ echo 'Found 37 errors and 43 warnings.'
Found 37 errors and 43 warnings.
++ [[ 37 -gt 0 ]]
++ cat /sw/BUILD/0dc1dcef18df5b01ccc040c52042d141ff1190ee/O2Physics-code-check/errors.txt
PWGLF/DataModel/LFResonanceTables.h:47:1: error: initial values in enum '<unnamed>' are not consistent, consider explicit initialization of all, none or only the first enumerator [readability-enum-initial-value,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:167:9: error: function-like macro 'requireTrackFlag' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:169:9: error: function-like macro 'requirePassedITSRefit' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:170:9: error: function-like macro 'requirePassedTPCRefit' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:171:9: error: function-like macro 'requireGlobalTrack' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:172:9: error: function-like macro 'requireGlobalTrackWoDCA' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:173:9: error: function-like macro 'requirePrimaryTrack' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:174:9: error: function-like macro 'requirePVContributor' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:175:9: error: function-like macro 'requireHasTOF' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:176:9: error: function-like macro 'requireSign' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:178:9: error: function-like macro 'DECLARE_DYN_TRKSEL_COLUMN' used; consider a 'constexpr' template function [cppcoreguidelines-macro-usage,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:192:38: error: do not declare C-style arrays, use 'std::array' instead [modernize-avoid-c-arrays,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:193:52: error: do not declare C-style arrays, use 'std::array' instead [modernize-avoid-c-arrays,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:254:44: error: do not declare C-style arrays, use 'std::array' instead [modernize-avoid-c-arrays,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:402:3: error: function 'hasTOF' should be marked [[nodiscard]] [modernize-use-nodiscard,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:447:5: error: 'flag' should be initialized in a member initializer of the constructor [cppcoreguidelines-prefer-member-initializer,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:479:3: error: function 'getDCAxyFlag' should be marked [[nodiscard]] [modernize-use-nodiscard,-warnings-as-errors]
PWGLF/DataModel/LFResonanceTables.h:485:3: error: function 'getDCAzFlag' should be marked [[nodiscard]] [modernize-use-nodiscard,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:67:8: error: constructor does not initialize these fields: ccdb, pdg [cppcoreguidelines-pro-type-member-init,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:232:5: error: use auto when initializing with a template cast to avoid duplicating the type name [modernize-use-auto,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:233:43: error: use nullptr [modernize-use-nullptr,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:287:26: error: the parameter 'ResoEvents' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:465:25: error: implicit conversion 'int' -> 'bool' [readability-implicit-bool-conversion,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:554:66: error: no header providing "o2::aod::v0data::collisionId" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:556:79: error: no header providing "o2::aod::cascdata::collisionId" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:686:39: error: implicit conversion 'bool' -> 'int' [readability-implicit-bool-conversion,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:686:55: error: implicit conversion 'bool' -> 'int' [readability-implicit-bool-conversion,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:686:83: error: implicit conversion 'bool' -> 'int' [readability-implicit-bool-conversion,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:686:97: error: implicit conversion 'bool' -> 'int' [readability-implicit-bool-conversion,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:782:13: error: use auto when initializing with a cast to avoid duplicating the type name [modernize-use-auto,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:783:13: error: use auto when initializing with a cast to avoid duplicating the type name [modernize-use-auto,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:791:57: error: no header providing "o2::aod::pidtpc_tiny::binning" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:793:57: error: no header providing "o2::aod::pidtof_tiny::binning" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:1430:5: error: do not declare C-style arrays, use 'std::array' instead [modernize-avoid-c-arrays,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:1442:11: error: the 'empty' method should be used to check for emptiness instead of 'size' [readability-container-size-empty,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:1488:13: error: do not declare C-style arrays, use 'std::array' instead [modernize-avoid-c-arrays,-warnings-as-errors]
PWGLF/TableProducer/Resonances/resonanceModuleInitializer.cxx:1662:13: error: do not declare C-style arrays, use 'std::array' instead [modernize-avoid-c-arrays,-warnings-as-errors]
++ [[ 43 -gt 0 ]]
++ cat /sw/BUILD/0dc1dcef18df5b01ccc040c52042d141ff1190ee/O2Physics-code-check/warnings.txt
PWGLF/DataModel/LFResonanceTables.h:380:24: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/DataModel/LFResonanceTables.h:384:21: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/DataModel/LFResonanceTables.h:386:33: warning: statement should be inside braces [readability-braces-around-statements]
[0 more errors; see full log]

Full log here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

3 participants