Skip to content

[Common] Fix TPC side determination in VDrift correction - #17846

Open
matthias-kleiner wants to merge 4 commits into
AliceO2Group:masterfrom
matthias-kleiner:fix-tpc-vdrift-ce-side
Open

matthias-kleiner wants to merge 4 commits into
AliceO2Group:masterfrom
matthias-kleiner:fix-tpc-vdrift-ce-side

Conversation

@matthias-kleiner

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

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

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ddobrigk
ddobrigk previously approved these changes Sep 11, 2026
@ddobrigk

Copy link
Copy Markdown
Collaborator

Hi @matthias-kleiner, thanks a lot for this fix!

However, I was wondering what will happen with data for which the TPC side flags are not stored: this is relevant, since those were added only in February this year. Further, since they were added "adiabatically" by taking unused bits in the flags integer, older datasets will appear to have all tracks only in one side, and thus the fix will break in that situation. Is there perhaps some way in which the TPC side information could be inferred from other parameters that existed already before? For instance, a combination of tgl and the sign of Z (given we store tracks at the position of their innermost update?)... Sorry if I am overlooking something. Thanks again!

The TPCSideA/TPCSideC flags were only added to the AOD format in
February 2026, so datasets produced before that always have neither
bit set. Detect CE-crossing tracks from the track's asymmetric time
margins and otherwise infer the side from a cross-check of Z and tgl
sign, per TPC domain expert guidance, instead of silently skipping
the correction for all tracks in older datasets.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@matthias-kleiner

Copy link
Copy Markdown
Author

Hi @matthias-kleiner, thanks a lot for this fix!

However, I was wondering what will happen with data for which the TPC side flags are not stored: this is relevant, since those were added only in February this year. Further, since they were added "adiabatically" by taking unused bits in the flags integer, older datasets will appear to have all tracks only in one side, and thus the fix will break in that situation. Is there perhaps some way in which the TPC side information could be inferred from other parameters that existed already before? For instance, a combination of tgl and the sign of Z (given we store tracks at the position of their innermost update?)... Sorry if I am overlooking something. Thanks again!

Hi @ddobrigk ,
I added a fallback solution for the older data as @shahor02 suggested. @shahor02 could you have look if this is correct?

shahor02
shahor02 previously approved these changes Sep 11, 2026
@ddobrigk

Copy link
Copy Markdown
Collaborator

Hi @matthias-kleiner, thanks a lot! I have one question and a request, if I may:

  • Do you know what effect this change has? I would presume this was making us miss valid candidates, so it might recover some efficiency for photon conversions?
  • Could you please add a switch between old and new behaviour, with the default being old behaviour? This will allow for testing without silently changing the result of analysis code that hasn't been touched; then, at a later stage, we can switch the default to new behaviour and send out a notification.

Thanks again - and please only worry about this whenever convenient and don't let me disturb your weekend!

@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/code-check for be7148b at 2026-09-14 04:43:

## sw/BUILD/O2Physics-latest/log
2026-09-14T04:41:16.743+0200 [646:140109793848960] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "BatchReadBlobs()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.771+0200 [646:140109793848960] [executioncontext.cpp:739] [ERROR] Failed to download output blob 7cff6ac277297adbd49f5f3f0d82594719a616adcb055ad73a4b6c02b42f06fa: 14: Socket closed
2026-09-14T04:41:16.744+0200 [597:140695875731072] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "BatchReadBlobs()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.772+0200 [597:140695875731072] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T04:41:16.772+0200 [597:140695875731072] [executioncontext.cpp:739] [ERROR] Failed to download output blob 4359310b17d587e2290b7a23f75fe761c80e5209ba7f73e187269d111cebd3b1: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T04:41:16.743+0200 [40:140008125353600] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: recvmsg:Connection reset by peer]
2026-09-14T04:41:16.776+0200 [40:140008125353600] [executioncontext.cpp:739] [ERROR] Failed to download output blob 2c54ad001f0826db896c53c835492816be4a7116633588206d7c736c2a52a442: 14: recvmsg:Connection reset by peer
2026-09-14T04:41:16.744+0200 [553:139843598601856] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "BatchReadBlobs()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.772+0200 [553:139843598601856] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T04:41:16.773+0200 [553:139843598601856] [executioncontext.cpp:739] [ERROR] Failed to download output blob 641b6004410c0841e0ec7ac9b4164d9643d112fe1ca42af0e1bdfefb247ca0c6: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T04:41:16.744+0200 [576:140289896222336] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "BatchReadBlobs()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.772+0200 [576:140289896222336] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T04:41:16.772+0200 [576:140289896222336] [executioncontext.cpp:739] [ERROR] Failed to download output blob 8247bc71c1fb741b735e540af445416b51e8134b4c7f9f77d1ed9a6765f9114d: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T04:41:16.743+0200 [34:140612122689152] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: recvmsg:Connection reset by peer]
2026-09-14T04:41:16.776+0200 [34:140612122689152] [executioncontext.cpp:739] [ERROR] Failed to download output blob 8e775bf9d7dab06e67fc442ba2816a5668adcad2e2b0afca66de91fb6c06a7b7: 14: recvmsg:Connection reset by peer
2026-09-14T04:41:16.744+0200 [35:140020979887744] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.781+0200 [35:140020979887744] [executioncontext.cpp:739] [ERROR] Failed to download output blob 979e4c7f807d7ae8fc93ccb51d7d121083625295c7062db319d15fc986525846: 14: Socket closed
2026-09-14T04:41:16.743+0200 [32:140147137064576] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: recvmsg:Connection reset by peer]
2026-09-14T04:41:16.782+0200 [32:140147137064576] [executioncontext.cpp:739] [ERROR] Failed to download output blob ac2f21d140c37272fb316b72d932c4e3ee78028ac89117891f668986198d2734: 14: recvmsg:Connection reset by peer
2026-09-14T04:41:16.743+0200 [27:140393352945280] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.786+0200 [27:140393352945280] [executioncontext.cpp:739] [ERROR] Failed to download output blob ee8611a0d9f7b70272728fa0d1319389b3b276f975f89daa330bc498175accbc: 14: Socket closed
2026-09-14T04:41:16.743+0200 [24:140700487732864] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.791+0200 [24:140700487732864] [executioncontext.cpp:739] [ERROR] Failed to download output blob bcfa66e322b4c3bbc370c09488bc6203ebe8c91adfca109f0d213472e38dbd85: 14: Socket closed
2026-09-14T04:41:16.743+0200 [23:139777254358656] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.789+0200 [23:139777254358656] [executioncontext.cpp:739] [ERROR] Failed to download output blob 44f50307742d8d980b34e2ce303a624340b940253edff403e4f31fc52d436d08: 14: Socket closed
2026-09-14T04:41:16.743+0200 [29:139725047393920] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.789+0200 [29:139725047393920] [executioncontext.cpp:739] [ERROR] Failed to download output blob 31fe24c19371049c8cfdbf7bee10d06089eacc3c901ffd37f52b7c7df1d5a770: 14: Socket closed
2026-09-14T04:41:16.743+0200 [25:139936498761344] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.791+0200 [25:139936498761344] [executioncontext.cpp:739] [ERROR] Failed to download output blob 8c1facb3bff1b125a25a35179ce10e0b107bd1c05fb5170d50b9e593e0233da9: 14: Socket closed
2026-09-14T04:41:16.743+0200 [42:140609924746880] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.792+0200 [42:140609924746880] [executioncontext.cpp:739] [ERROR] Failed to download output blob f3e9c8e0f3172b430a8d6d01519cd4ff08ecad9c0f7945464866b88c84b31ae2: 14: Socket closed
2026-09-14T04:41:16.743+0200 [31:139950992227968] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.794+0200 [31:139950992227968] [executioncontext.cpp:739] [ERROR] Failed to download output blob 3d504117faff45184125d6da4dd0e7ca64b85edb61479d9a5ad6afb183319551: 14: Socket closed
2026-09-14T04:41:16.743+0200 [41:139857266200192] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ByteStream.Read()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.799+0200 [41:139857266200192] [executioncontext.cpp:739] [ERROR] Failed to download output blob e673518d760a1a9e2480895fb94a47584d5ce90153ba4a702be9ffd22adf1ea4: 14: Socket closed
2026-09-14T04:41:16.743+0200 [645:140316647575168] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.771+0200 [645:140316647575168] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: Socket closed
2026-09-14T04:41:22.466+0200 [645:140316647575168] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T04:41:16.742+0200 [711:140284033703552] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.771+0200 [711:140284033703552] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: Socket closed
2026-09-14T04:41:23.413+0200 [711:140284033703552] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T04:41:16.743+0200 [644:139717519740544] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.771+0200 [644:139717519740544] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: Socket closed
2026-09-14T04:41:16.744+0200 [532:140504336109184] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: Socket closed]
2026-09-14T04:41:16.771+0200 [532:140504336109184] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: Socket closed
ninja: build stopped: subcommand failed.

Full log here.

Introduce TPCVDriftManagerParam::useSideBasedCorrection (default off)
to gate the new TPC-side-flag-based correction behind a ConfigurableParam,
settable from any workflow via --configKeyValues without touching each
task that owns a TPCVDriftManager instance. Keeps existing analyses on
the legacy tgl-sign behaviour until explicitly opted in for testing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@matthias-kleiner

Copy link
Copy Markdown
Author

Hi @matthias-kleiner, thanks a lot! I have one question and a request, if I may:

* Do you know what effect this change has? I would presume this was making us miss valid candidates, so it might recover some efficiency for photon conversions?

* Could you please add a switch between old and new behaviour, with the default being old behaviour? This will allow for testing without silently changing the result of analysis code that hasn't been touched; then, at a later stage, we can switch the default to new behaviour and send out a notification.

Thanks again - and please only worry about this whenever convenient and don't let me disturb your weekend!

Hi @ddobrigk ,
yes, I added a switch that is off by default and the new mode can be activated with --configKeyValues "TPCVDriftManager.useSideBasedCorrection=true"

I think it could in principle recover some efficiency loss: when the sign of the tgl disagrees with the actual TPC side, the old code shifts the tracks Z the wrong way instead of correcting it, which would hurt topological cuts. How much depends on how large the vDrift correction is and how often the vertex position/track topology puts tgl and Z sign at different sign. The best would be to make a direct A/B comparison with the switch.

@ddobrigk
ddobrigk enabled auto-merge (squash) September 14, 2026 13:21
@ddobrigk
ddobrigk disabled auto-merge September 14, 2026 15:13
@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/o2 for ec64032 at 2026-09-14 20:46:

## sw/BUILD/O2Physics-latest/log
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Full log here.

@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/staging for ec64032 at 2026-09-14 21:21:

## sw/BUILD/O2-latest/log
2026-09-14T20:41:05.054+0200 [12977:140600946638464] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:05.267+0200 [13009:139799094967936] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:05.680+0200 [14209:139676759957120] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.203+0200 [14258:140323275574912] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.254+0200 [13860:139935192100480] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.455+0200 [13946:139718285192832] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:07.004+0200 [14231:140185064038016] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:05.427+0200 [14353:140685187571328] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:05.427+0200 [14353:140685187571328] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:07.322+0200 [14353:140685187571328] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv6:%5B::1%5D:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:07.711+0200 [14296:139984763260544] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:07.950+0200 [14318:140257726860928] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:08.061+0200 [13629:139742445203072] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:08.680+0200 [14000:140065189060224] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:08.717+0200 [14116:139965710360192] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.676+0200 [14426:139627675717248] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.677+0200 [14426:139627675717248] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:08.796+0200 [14426:139627675717248] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv6:%5B::1%5D:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.233+0200 [14403:139817020845696] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.234+0200 [14403:139817020845696] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:09.986+0200 [14403:139817020845696] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "FindMissingBlobs()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv6:%5B::1%5D:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.756+0200 [14457:139858708840064] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.756+0200 [14457:139858708840064] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:07.051+0200 [14480:140277197049472] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:07.051+0200 [14480:140277197049472] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:08.551+0200 [14605:140070003326592] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:08.551+0200 [14605:140070003326592] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:07.734+0200 [14542:140060338204288] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:07.734+0200 [14542:140060338204288] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:07.453+0200 [14514:140033991216768] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:07.454+0200 [14514:140033991216768] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:08.727+0200 [14626:139693054312064] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:08.727+0200 [14626:139693054312064] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused
2026-09-14T20:41:06.270+0200 [14374:139708890369664] [buildboxcommon_grpcretrier.cpp:177] [ERROR] Retry limit (0) exceeded for "ActionCache.GetActionResult()", last gRPC error was [14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused]
2026-09-14T20:41:06.270+0200 [14374:139708890369664] [executioncontext.cpp:544] [ERROR] Error while querying action cache at "http://localhost:8980": 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8980: Failed to connect to remote host: Connection refused


## sw/BUILD/O2Physics-latest/log
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Full log here.

@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/code-check for ec64032 at 2026-09-14 21:23:

## sw/BUILD/O2Physics-latest/log
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Full log here.

@romainschotter

Copy link
Copy Markdown
Collaborator

Hi @matthias-kleiner !

Thank you very much for the PR!

I have taken the liberty to try out your changes in order to test whether the configurable is available in the propagationService configuration and it turns out that it won't appear in the configuration. As far as I understand, it is because the configurable has been introduced here via O2ParamDef, which declares only a static member, that needs to be defined in a source file via O2ParamImpl (which does not exist in the PR). If the file would exist, the other issue is that the TPCDriftManager is declared as o2physics_add_header_only_library, which prevents to link the source file with O2ParamImpl and prevents the task calling the TPCDriftManager to compile (hence the compilation error).

The simplest alternative is maybe to add the variable mUseSideBasedCorrection as a private data member of the class, along side a setter function in order to set the value to true or false. In this way, we can later add a configurable in any task using the TPCVDriftManager (propagationService, photonconversionbuilder,...) in order to enable/disable the new side-based correction. If it helps, I have added comments with the changes to be made.

My 2 cents.

Comment on lines +17 to +18
#include <CommonUtils/ConfigurableParam.h>
#include <CommonUtils/ConfigurableParamHelper.h>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#include <CommonUtils/ConfigurableParam.h>
#include <CommonUtils/ConfigurableParamHelper.h>

Comment on lines +31 to +39
struct TPCVDriftManagerParam : public o2::conf::ConfigurableParamHelper<TPCVDriftManagerParam> {
// Use the TPC side flags (with legacy-data fallback) instead of the tgl-sign-based correction.
// Off by default so that existing analyses see no change in results until this is explicitly
// enabled for testing.
bool useSideBasedCorrection = false;

O2ParamDef(TPCVDriftManagerParam, "TPCVDriftManager");
};

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
struct TPCVDriftManagerParam : public o2::conf::ConfigurableParamHelper<TPCVDriftManagerParam> {
// Use the TPC side flags (with legacy-data fallback) instead of the tgl-sign-based correction.
// Off by default so that existing analyses see no change in results until this is explicitly
// enabled for testing.
bool useSideBasedCorrection = false;
O2ParamDef(TPCVDriftManagerParam, "TPCVDriftManager");
};

Comment on lines 43 to 49
class TPCVDriftManager
{
public:
void init(o2::ccdb::BasicCCDBManager* ccdb) noexcept
{
mCCDB = ccdb;
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
class TPCVDriftManager
{
public:
void init(o2::ccdb::BasicCCDBManager* ccdb) noexcept
{
mCCDB = ccdb;
}
void setUseSideBasedCorrection(bool value) noexcept
{
mUseSideBasedCorrection = value;
}

// impose new Z coordinate
track.setZ(track.getZ() + ((track.getTgl() < 0.) ? -dDrift : dDrift));
float zShift = 0.f;
if (!TPCVDriftManagerParam::Instance().useSideBasedCorrection) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (!TPCVDriftManagerParam::Instance().useSideBasedCorrection) {
if (!mUseSideBasedCorrection) {

@@ -156,6 +214,8 @@
o2::ccdb::BasicCCDBManager* mCCDB{}; // reference to initialized ccdb manager

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
bool mUseSideBasedCorrection{false};

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

Labels

Development

Successfully merging this pull request may close these issues.

5 participants