Skip to content

Store TPC track A/C side info in the AO2D TrackExtra.fFlags unused bits#15014

Open
shahor02 wants to merge 2 commits intoAliceO2Group:devfrom
shahor02:pr_aodTPCSide
Open

Store TPC track A/C side info in the AO2D TrackExtra.fFlags unused bits#15014
shahor02 wants to merge 2 commits intoAliceO2Group:devfrom
shahor02:pr_aodTPCSide

Conversation

@shahor02
Copy link
Collaborator

@shahor02 shahor02 commented Feb 4, 2026

No description provided.

@shahor02 shahor02 requested review from a team as code owners February 4, 2026 14:16
@github-actions
Copy link
Contributor

github-actions bot commented Feb 4, 2026

REQUEST FOR PRODUCTION RELEASES:
To request your PR to be included in production software, please add the corresponding labels called "async-" to your PR. Add the labels directly (if you have the permissions) or add a comment of the form (note that labels are separated by a ",")

+async-label <label1>, <label2>, !<label3> ...

This will add <label1> and <label2> and removes <label3>.

The following labels are available
async-2023-pbpb-apass4
async-2023-pp-apass4
async-2024-pp-apass1
async-2022-pp-apass7
async-2024-pp-cpass0
async-2024-PbPb-apass1
async-2024-ppRef-apass1
async-2024-PbPb-apass2
async-2023-PbPb-apass5

@miranov25
Copy link
Contributor

Thanks Ruben for the quick implementation — this is exactly what we discussed.

Summary: This PR adds TPC side information (A/C/both) to the AO2D track flags.

Changes:

  • New flags in DataTypes.h: TPCSideA = 0x20 (bit 5), TPCSideC = 0x40 (bit 6)
  • Uses existing hasASideClusters() / hasCSideClusters() methods from TPC track class

Interpretation:

  • 00 = No TPC
  • 10 = A-side only
  • 01 = C-side only
  • 11 = Both sides (crosses CE)

Use cases:

  • Cosmic muon association — know which side each half-track is on
  • Fake split rejection — identify incorrectly split CE-crossing tracks
  • Efficiency studies — we observed a spike excess for TPC-only tracks and a corresponding decrease for combined tracks near CE; this variable provides a handle to diagnose it
  • Jet energy bias — efficiency loss near CE affects jet reconstruction; we lose part of the fiducial volume within the jet, registering only a fraction of the energy
  • Time reassociation — constrain allowed drift direction, reducing combinatorial background

Cost: No AO2D schema change, uses 2 unused bits, ~1 bit effective entropy.

=== Diff summary was automatically compared with agrrement in matermost discussion

Lets merge

@jgrosseo
Copy link
Collaborator

jgrosseo commented Feb 5, 2026

No objection. Should this come with dynamic columns for easier use from AO2D, like:
https://github.com/AliceO2Group/AliceO2/blob/dev/Framework/Core/include/Framework/AnalysisDataModel.h#L405

@jgrosseo
Copy link
Collaborator

jgrosseo commented Feb 5, 2026

As it is a data model change, maybe @dsekihat (and predecessor @ddobrigk) want to comment, as well.

@dsekihat
Copy link
Contributor

dsekihat commented Feb 5, 2026

It looks good to me too, and I agree with Jan Fiete's point above.

@ddobrigk
Copy link
Contributor

ddobrigk commented Feb 5, 2026

Hi everyone, just to say this does look okay to me as well as it is a relatively straightforward addition of 2 bits of information. It's also nice that this doesn't add an extra converter because it uses the existing flags column. In any case, IMHO it might be good to prepare some (very few) slides to present in one of the Monday meetings just as a reference for this change, though in this case I believe we could merge already now if we all agree since the space change is likely rather negligible indeed. Thanks!

@alibuild
Copy link
Collaborator

alibuild commented Feb 6, 2026

Error while checking build/O2/fullCI_slc9 for 3d1f32c at 2026-02-06 05:55:

## sw/BUILD/O2-latest/log
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/AnalysisDataModel.h:2216: error: unterminated argument list invoking macro "DECLARE_SOA_DYNAMIC_COLUMN"
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/AnalysisDataModel.h:415:1: error: 'DECLARE_SOA_DYNAMIC_COLUMN' does not name a type
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/src/AnalysisDataModel.cxx:23:2: error: expected '}' at end of input
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/src/AnalysisDataModel.cxx:23:2: error: expected '}' at end of input
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/src/AnalysisDataModel.cxx:23:2: error: expected '}' at end of input
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/AnalysisDataModel.h:2216: error: unterminated argument list invoking macro "DECLARE_SOA_DYNAMIC_COLUMN"
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/AnalysisDataModel.h:415:1: error: 'DECLARE_SOA_DYNAMIC_COLUMN' does not name a type
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:36:16: error: 'ConcreteDataMatcher' was not declared in this scope; did you mean 'o2::framework::ConcreteDataMatcher'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:36:37: error: 'ConcreteDataTypeMatcher' was not declared in this scope; did you mean 'o2::framework::ConcreteDataTypeMatcher'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:36:60: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:36:60: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:36:8: error: '<expression error>' in namespace 'std' does not name a type
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:44:26: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:44:41: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:44:41: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:44:43: error: expected identifier before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:50:26: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:50:41: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:50:41: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:50:43: error: expected identifier before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:55:26: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:55:41: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:55:41: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:55:43: error: expected identifier before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:60:26: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:60:41: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:60:41: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:60:43: error: expected identifier before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:63:44: error: 'ConcreteDataMatcher' has not been declared
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:65:26: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:65:41: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:65:41: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:65:43: error: expected identifier before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:68:33: error: expected ')' before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:70:64: error: expected unqualified-id before ')' token
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:74:44: error: 'ConcreteDataTypeMatcher' has not been declared
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:76:26: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:76:41: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:76:41: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:76:43: error: expected identifier before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:74:3: error: 'o2::aod::track::o2::framework::OutputSpec::OutputSpec(const o2::aod::track::o2::framework::OutputLabel&, const int&, o2::aod::track::o2::framework::Lifetime, const int&)' cannot be overloaded with 'o2::aod::track::o2::framework::OutputSpec::OutputSpec(const o2::aod::track::o2::framework::OutputLabel&, const int&, o2::aod::track::o2::framework::Lifetime, const int&)'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:80:37: error: expected ')' before 'const'
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:82:64: error: expected unqualified-id before ')' token
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:87:15: error: 'ConfigParamSpec' was not declared in this scope; did you mean 'o2::framework::ConfigParamSpec'?
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:87:30: error: template argument 1 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:87:30: error: template argument 2 is invalid
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/OutputSpec.h:87:8: error: '<expression error>' in namespace 'std' does not name a type
/sw/SOURCES/O2/15014-slc9_x86-64/0/Framework/Core/include/Framework/DataProcessingHeader.h:60:30: error: 'header' in namespace 'o2::aod::track::o2' does not name a type
[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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

6 participants