Skip to content

Conversation

@davidrohr
Copy link
Collaborator

@davidrohr davidrohr commented Jul 24, 2025

Will take some time to be stable, but want to check in the CI already. Improvements so far:

  • Change track fit and track storage to operate on legs, not on looping tracks.
    • This avoids problems in the fit when something goes wrong in one leg, not the rest of the track is lost.
  • Improvements to visualization and QA to benchmark it.
  • Optimize memory layouts to save memory, and adjust defaults.

In particular:

  • Change some default settings: consider only edge pad to flag as edge cluster, not 2 pads; reject clusters that come from IFC instead of giving them huge errors.
  • Improve weights-formula for ambiguity solving for cluster to track association.
  • Add some optional sanity checks to check that e.g. the track merge graph is non-cyclic. Since these do not trigger I believe the problems we had are fixed, thus removed workarounds for cyclic graphs.
  • Changed to track fit in projections by default, since there seem to be some problems in the non-projected fit - to be fixed later.
  • Some code cleanup of obsolete code.
  • Rejection of clusters based on interpolated track position moved to fit iterations 0 and 1, but rejection is only applied in 2.
  • fraction of allowed shared clusters is computed outside-in (instead of inside-out), so we have a higher chance to allow shared clusters in the inner pad row, and fraction is more accurate there.
  • Legs of looping tracks are kept as individual track (segments). All segments are kept separate in the fit, and fit independently. This fixes several problems in the track fit and allows for better parallelization. We just keep the linked index, so we can recover the full track at any time. When storing the final O2 TPC track, only the primary leg is stored anyway, so nothing changes here.
  • Fix some bugs in extrapolation of looping tracks to find clusters nearby.
  • Some improvements to event display and QA.

@github-actions
Copy link
Contributor

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

@alibuild
Copy link
Collaborator

alibuild commented Jul 25, 2025

Error while checking build/O2/fullCI_slc9 for c79a241 at 2025-07-25 07:33:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
grep: error-log.txt: binary file matches
/sw/SOURCES/O2/14542-slc9_x86-64/0/Framework/Core/src/StepTHn.cxx:330:20: error: statement should be inside braces [readability-braces-around-statements]
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@alibuild
Copy link
Collaborator

alibuild commented Jul 25, 2025

Error while checking build/O2/fullCI_slc9 for 3faeb33 at 2025-07-25 19:30:

## sw/BUILD/O2-latest/log
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMSectorTrack.cxx(278): error: explicit specialization of function "o2::gpu::GPUTPCGMSectorTrack::TransportToX(o2::gpu::GPUTPCGMMerger *, float, float, o2::gpu::GPUTPCGMBorderTrack &, float, __nv_bool) const [with I=2]" must precede its first use (at line 1741 of /sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx)
ninja: build stopped: subcommand failed.

Full log here.

@alibuild
Copy link
Collaborator

Error while checking build/O2/fullCI_slc9 for 94013b9 at 2025-07-26 00:44:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
/sw/SOURCES/O2/14542-slc9_x86-64/0/Framework/Core/src/StepTHn.cxx:330:20: error: statement should be inside braces [readability-braces-around-statements]
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@alibuild
Copy link
Collaborator

Error while checking build/O2/fullCI_slc9 for 2ec5599 at 2025-07-26 09:58:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
/sw/SOURCES/O2/14542-slc9_x86-64/0/Framework/Core/src/StepTHn.cxx:330:20: error: statement should be inside braces [readability-braces-around-statements]
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@alibuild
Copy link
Collaborator

Error while checking build/O2/fullCI_slc9 for e7b16f9 at 2025-07-31 13:32:

## sw/BUILD/O2-latest/log
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx:761:17: error: expected initializer before 'ries'
/sw/SOURCES/O2/14542-slc9_x86-64/0/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx:762:10: error: 'maxTries' was not declared in this scope
ninja: build stopped: subcommand failed.

Full log here.

@alibuild
Copy link
Collaborator

alibuild commented Aug 1, 2025

Error while checking build/O2/fullCI_slc9 for fb63238 at 2025-08-25 03:36:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
/sw/SOURCES/O2/14542-slc9_x86-64/0/Detectors/TOF/workflow/src/make-parameter-collection.cxx:66:3: error: annotate this function with 'override' or (rarely) 'final' [modernize-use-override]
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@alibuild
Copy link
Collaborator

alibuild commented Aug 26, 2025

Error while checking build/O2/fullCI_slc9 for 222fa1b at 2025-08-28 08:52:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
/sw/SOURCES/O2/14542-slc9_x86-64/0/Detectors/TOF/workflow/src/make-parameter-collection.cxx:66:3: error: annotate this function with 'override' or (rarely) 'final' [modernize-use-override]
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@alibuild
Copy link
Collaborator

Error while checking build/O2/fullCI_slc9 for d971cac at 2025-08-29 10:40:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
grep: error-log.txt: binary file matches
/sw/SOURCES/O2/14542-slc9_x86-64/0/Detectors/TOF/workflow/src/make-parameter-collection.cxx:66:3: error: annotate this function with 'override' or (rarely) 'final' [modernize-use-override]
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@davidrohr davidrohr force-pushed the dev branch 3 times, most recently from 62dee1a to 9ee262c Compare September 4, 2025 10:45
@davidrohr davidrohr marked this pull request as draft September 4, 2025 13:50
@davidrohr
Copy link
Collaborator Author

davidrohr commented Sep 4, 2025

Marking as draft: had passed the CI, will collect future tracking changes in separate PR.
This contains all the changes to the track fit for now. Once this is validated, it can be merged in principle, but other changes will come in few weeks.

…Position to avoid killing some tracks when some first clusters are bad
@davidrohr davidrohr marked this pull request as ready for review September 11, 2025 07:22
@alibuild
Copy link
Collaborator

alibuild commented Sep 11, 2025

Error while checking build/O2/fullCI_slc9 for ac854e3 at 2025-09-15 17:36:

## sw/BUILD/o2checkcode-latest/log
--
========== List of errors found ==========
++ GRERR=0
++ grep -v clang-diagnostic-error error-log.txt
++ grep ' error:'
grep: error-log.txt: binary file matches
error: error: clang-tidy: Unknown command line argument '--load /sw/slc9_x86-64/o2codechecker/v20.1.7-local2/lib/libclangTidyAliceO2Module.so --extra-arg=--gcc-install-dir='.  Try: '/sw/slc9_x86-64/Clang/v20.1.7-1/bin-safe/clang-tidy --help'
error: error: clang-tidy: Unknown command line argument '--load /sw/slc9_x86-64/o2codechecker/v20.1.7-local2/lib/libclangTidyAliceO2Module.so --extra-arg=--gcc-install-dir='.  Try: '/sw/slc9_x86-64/Clang/v20.1.7-1/bin-safe/clang-tidy --help'
++ [[ 0 == 0 ]]
++ exit 1
--

Full log here.

@davidrohr davidrohr changed the title GPU TPC: Tracking Developments - DO NOT MERGE GPU TPC: Tracking Developments Sep 14, 2025
@davidrohr davidrohr merged commit ac46fff into AliceO2Group:dev Sep 16, 2025
10 of 11 checks passed
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.

2 participants