[NGT] Extension of CA Pixel Tracking to Phase-2 Outer Tracker Disks (TID)
PR description:
This PR was co-developed by: @Parsifal-2045, @JanGerritSchulz, @rovere, and @mmusich
This work builds upon the Phase-2 CA Extension (#48921) for PixelTracks, which enabled the Cellular Automaton (CA) algorithm to use recHits from the first three layers of the Outer Tracker barrel (TOB) in addition to the pixel recHits in the Inner Tracker (IT).
With this PR, we further extend the CA to include recHits from the pixel side of the modules in the first ten layers of the Outer Tracker disks (TID).
As part of this work:
- 18 more connections have been added, bringing the total number of layer pairs to 91
- Compatibility cuts have been added and re-tuned.
Main Developments:
To support the extension, we modified the following modules:
-
Extension of geometry and configuration To increase the number of modules, layers, layer-pairs and to define the corresponding compatibility cuts:
- ClusteringConstants.h
- SimplePixelTopology.h. In addition to the definitions of the compatibility cuts for the new layers and layer pairs, the
dcaCutsand thethetaCutsparameters for the TOB modules have been loosened to enhance the production of tracks passing through the TOB and TID regions. - hltPhase2PixelTracksSoA_cfi.py
-
Inclusion of TID P-module hits To load the
recHitsbelonging to the P-side modules of the TID:- Phase2OTRecHitsSoAConverter.cc which converts the
recHitson the P modules of the TOB and TID layers into SoA format.
- Phase2OTRecHitsSoAConverter.cc which converts the
-
CA algorithm extension and SoA conversion:
To extend the CA algorithm and handle the newPixelTracks:- CAHitNtuplet.cc implementation of the CA algorithm
- PixelTrackProducerFromSoAAlpaka.cc conversion of
PixelTracksfrom SoA format to legacy.
In the last three modules, the main updates include:
- Introduction of the
isPinPSinOTDiskfunction to identify P-siderecHitsin the TID; - Implementation of a two-for-loops logic to ensure correct layer ordering, since the CA algorithm requires the TOB layers to have smaller IDs than the TID ones.
Furthermore, in PixelTrackProducerFromSoAAlpaka.cc the logic used to count the number of skipped layers has been adjusted to retain all the tracks containing at least one TID hit.
Physics performance
Performance has been evaluated on a TTbar sample with 200 PU (D110 geometry). The TID extension maintains the same level of tracking efficiency, with only a modest increase in fake rate, remaining below 0.1 across the entire η range. Thanks to the additional hits at |η| ~ 2, the increased sagitta leads to an improvement in pT resolution of up to 25%.
| Tracking Efficiency | Fake Rate |
| Number of Hits vs η | pT Resolution vs η (σ) |
Timing
Measurements run on 2x AMD EPYC 9534 with 4x L40 GPUs. Configuration: 16 jobs with 16 threads/16 streams each, sample of 1000 TTbar 200PU events.
| TOB CA Extension | TOB + TID CA Extension |
Measurements run only on 2x AMD EPYC 9534.
| TOB CA Extension CPU only | TOB + TID CA Extension CPU only |
Memory usage
The TID extension comes practically for free in terms of memory usage, as it does not require any increase in container sizes.
cms-bot internal usage
type ngt
-code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-49346/46720
- There are other open Pull requests which might conflict with changes you have proposed:
- File Geometry/CommonTopologies/interface/SimplePixelTopology.h modified in PR(s): #49293
- File RecoTracker/PixelSeeding/plugins/alpaka/CAHitNtuplet.cc modified in PR(s): #46852, #49286
- File RecoTracker/PixelSeeding/plugins/alpaka/CAPixelDoubletsAlgos.h modified in PR(s): #49286
Code check has found code style and quality issues which could be resolved by applying following patch(s)
- code-format:
https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-49346/46720/code-format.patch
e.g.
curl -k https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-49346/46720/code-format.patch | patch -p1You can also runscram build code-formatto apply code format directly
test parameters:
- enable = gpu, hlt_p2_integration, hlt_p2_timing
- workflows = ph2_hlt
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-49346/46721
- There are other open Pull requests which might conflict with changes you have proposed:
- File Geometry/CommonTopologies/interface/SimplePixelTopology.h modified in PR(s): #49293
- File RecoTracker/PixelSeeding/plugins/alpaka/CAHitNtuplet.cc modified in PR(s): #46852, #49286
- File RecoTracker/PixelSeeding/plugins/alpaka/CAPixelDoubletsAlgos.h modified in PR(s): #49286
@cmsbuild, please test
A new Pull Request was created by @EmanueleCoradin for master.
It involves the following packages:
- Configuration/Generator (generators)
- DataFormats/SiPixelClusterSoA (heterogeneous, reconstruction)
- Geometry/CommonTopologies (geometry)
- HLTrigger/Configuration (hlt)
- RecoLocalTracker/Phase2TrackerRecHits (reconstruction)
- RecoTracker/PixelSeeding (reconstruction)
- RecoTracker/PixelTrackFitting (reconstruction)
@Dr15Jones, @Martin-Grunewald, @bsunanda, @civanch, @fwyzard, @jfernan2, @kpedro88, @lviliani, @makortel, @mandrenguyen, @mdhildreth, @mkirsano, @mmusich, @sensrcn, @srimanob, @theofil can you please review it and eventually sign? Thanks. @GiacomoSguazzoni, @Martin-Grunewald, @SohamBhattacharya, @VinInn, @VourMa, @bsunanda, @dgulhan, @dkotlins, @elusian, @fabiocos, @felicepantaleo, @ferencek, @gpetruc, @martinamalberti, @missirol, @mmasciov, @mmusich, @mroguljic, @mtosi, @rovere, @threus, @tsusa this is something you requested to watch as well. @ftenchini, @mandrenguyen, @sextonkennedy you are the release manager for this.
cms-bot commands are listed here
recall the bots and add the configurations generators to it
@smuzaffar Seems like we have another spam account (posted also in https://github.com/cms-sw/cmssw/pull/49341#issuecomment-3504642693)
+1
Size: This PR adds an extra 444KB to repository
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-8ba581/49344/summary.html
COMMIT: d0f07fa743ac536781b8c0f8d46291d5944d5df2
CMSSW: CMSSW_16_0_X_2025-11-06-2300/el8_amd64_gcc13
Additional Tests: GPU,HLT_P2_INTEGRATION,HLT_P2_TIMING,AMD_MI300X,AMD_W7900,NVIDIA_H100,NVIDIA_L40S,NVIDIA_T4
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week0/cms-sw/cmssw/49346/49344/install.sh to create a dev area with all the needed externals and cmssw changes.
HLT P2 Timing: chart
Comparison Summary
Summary:
- You potentially removed 1 lines from the logs
- ROOTFileChecks: Some differences in event products or their sizes found
- Reco comparison results: 0 differences found in the comparisons
- Reco comparison had 2 failed jobs
- DQMHistoTests: Total files compared: 70
- DQMHistoTests: Total histograms compared: 4644635
- DQMHistoTests: Total failures: 6874
- DQMHistoTests: Total nulls: 6
- DQMHistoTests: Total successes: 4637735
- DQMHistoTests: Total skipped: 20
- DQMHistoTests: Total Missing objects: 0
- DQMHistoSizes: Histogram memory added: 0.0 KiB( 69 files compared)
- Checked 283 log files, 241 edm output root files, 70 DQM output files
- TriggerResults: found differences in 1 / 68 workflows
AMD_MI300X Comparison Summary
Summary:
- You potentially added 6 lines to the logs
- Reco comparison results: 232 differences found in the comparisons
- Reco comparison had 6 failed jobs
- DQMHistoTests: Total files compared: 11
- DQMHistoTests: Total histograms compared: 147869
- DQMHistoTests: Total failures: 27769
- DQMHistoTests: Total nulls: 11
- DQMHistoTests: Total successes: 120089
- DQMHistoTests: Total skipped: 0
- DQMHistoTests: Total Missing objects: 0
- DQMHistoSizes: Histogram memory added: 0.0 KiB( 10 files compared)
- Checked 42 log files, 45 edm output root files, 11 DQM output files
- TriggerResults: found differences in 1 / 10 workflows
AMD_W7900 Comparison Summary
Summary:
- You potentially added 1 lines to the logs
- Reco comparison results: 251 differences found in the comparisons
- Reco comparison had 6 failed jobs
- DQMHistoTests: Total files compared: 11
- DQMHistoTests: Total histograms compared: 147869
- DQMHistoTests: Total failures: 26024
- DQMHistoTests: Total nulls: 8
- DQMHistoTests: Total successes: 121837
- DQMHistoTests: Total skipped: 0
- DQMHistoTests: Total Missing objects: 0
- DQMHistoSizes: Histogram memory added: 0.0 KiB( 10 files compared)
- Checked 42 log files, 45 edm output root files, 11 DQM output files
- TriggerResults: no differences found
NVIDIA_H100 Comparison Summary
Summary:
- You potentially added 4 lines to the logs
- Reco comparison results: 248 differences found in the comparisons
- Reco comparison had 6 failed jobs
- DQMHistoTests: Total files compared: 11
- DQMHistoTests: Total histograms compared: 147869
- DQMHistoTests: Total failures: 24868
- DQMHistoTests: Total nulls: 14
- DQMHistoTests: Total successes: 122987
- DQMHistoTests: Total skipped: 0
- DQMHistoTests: Total Missing objects: 0
- DQMHistoSizes: Histogram memory added: 0.0 KiB( 10 files compared)
- Checked 42 log files, 45 edm output root files, 11 DQM output files
- TriggerResults: no differences found
NVIDIA_L40S Comparison Summary
Summary:
- You potentially removed 9 lines from the logs
- Reco comparison results: 224 differences found in the comparisons
- Reco comparison had 6 failed jobs
- DQMHistoTests: Total files compared: 11
- DQMHistoTests: Total histograms compared: 147869
- DQMHistoTests: Total failures: 32115
- DQMHistoTests: Total nulls: 12
- DQMHistoTests: Total successes: 115742
- DQMHistoTests: Total skipped: 0
- DQMHistoTests: Total Missing objects: 0
- DQMHistoSizes: Histogram memory added: 0.0 KiB( 10 files compared)
- Checked 42 log files, 45 edm output root files, 11 DQM output files
- TriggerResults: found differences in 1 / 10 workflows
NVIDIA_T4 Comparison Summary
Summary:
- You potentially removed 7 lines from the logs
- Reco comparison results: 220 differences found in the comparisons
- Reco comparison had 6 failed jobs
- DQMHistoTests: Total files compared: 11
- DQMHistoTests: Total histograms compared: 147869
- DQMHistoTests: Total failures: 31195
- DQMHistoTests: Total nulls: 9
- DQMHistoTests: Total successes: 116665
- DQMHistoTests: Total skipped: 0
- DQMHistoTests: Total Missing objects: 0
- DQMHistoSizes: Histogram memory added: 0.0 KiB( 10 files compared)
- Checked 42 log files, 45 edm output root files, 11 DQM output files
- TriggerResults: found differences in 2 / 10 workflows
Can you clean up the commit history ?
Timing
?
+1
Timing
?
I added the timing plot. In addition to that, you can see the timing difference here:
| |
Can you add CPU-only timing results ?
I added the timing plot. In addition to that, you can see the timing difference here:
these plots were flawed by a technical mistake, the reference is not running the TOB-only extension, but it's purely legacy. They will be updated later.
assign tracking-pog
New categories assigned: tracking-pog
@elusian,@mmasciov you have been requested to review this Pull request/Issue and eventually sign? Thanks
@EmanueleCoradin, @Parsifal-2045, @JanGerritSchulz, @rovere, and @mmusich: would you like to present this at the next Tracking POG? @elusian In the meantime, if there were already presentations on the performance that we may have missed, could you please point us to those? Thanks!
Can you add CPU-only timing results ?
The PR description has been updated with the CPU only results. In addition, you can find the diff view below:
| |
@EmanueleCoradin, @Parsifal-2045, @JanGerritSchulz, @rovere, and @mmusich: would you like to present this at the next Tracking POG? @elusian In the meantime, if there were already presentations on the performance that we may have missed, could you please point us to those? Thanks!
Dear @mmasciov, thanks for your comment. We would like to present at the next Tracking POG. In the meantime, you can find here the presentation of the results we had at the NGT HLT meeting on October 28th.
@EmanueleCoradin, @Parsifal-2045, @JanGerritSchulz, @rovere, and @mmusich: would you like to present this at the next Tracking POG? @elusian In the meantime, if there were already presentations on the performance that we may have missed, could you please point us to those? Thanks!
Dear @mmasciov, thanks for your comment. We would like to present at the next Tracking POG. In the meantime, you can find here the presentation of the results we had at the NGT HLT meeting on October 28th.
Hi @EmanueleCoradin, would Monday, November 17 work? If so, we can schedule you then (on-week Tracking POG meeting).
@EmanueleCoradin, @Parsifal-2045, @JanGerritSchulz, @rovere, and @mmusich: would you like to present this at the next Tracking POG? @elusian In the meantime, if there were already presentations on the performance that we may have missed, could you please point us to those? Thanks!
Dear @mmasciov, thanks for your comment. We would like to present at the next Tracking POG. In the meantime, you can find here the presentation of the results we had at the NGT HLT meeting on October 28th.
Hi @EmanueleCoradin, would Monday, November 17 work? If so, we can schedule you then (on-week Tracking POG meeting).
Hi @mmasciov, it works for me, thanks!
@EmanueleCoradin, @Parsifal-2045, @JanGerritSchulz, @rovere, and @mmusich: would you like to present this at the next Tracking POG? @elusian In the meantime, if there were already presentations on the performance that we may have missed, could you please point us to those? Thanks!
Dear @mmasciov, thanks for your comment. We would like to present at the next Tracking POG. In the meantime, you can find here the presentation of the results we had at the NGT HLT meeting on October 28th.
Hi @EmanueleCoradin, would Monday, November 17 work? If so, we can schedule you then (on-week Tracking POG meeting).
Hi @mmasciov, it works for me, thanks!
Thanks! https://indico.cern.ch/event/1612906/#81-extension-of-ca-pixel-track
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-49346/46858
- There are other open Pull requests which might conflict with changes you have proposed:
- File Geometry/CommonTopologies/interface/SimplePixelTopology.h modified in PR(s): #49293
- File RecoTracker/PixelSeeding/plugins/alpaka/CAHitNtuplet.cc modified in PR(s): #46852, #49286
- File RecoTracker/PixelSeeding/plugins/alpaka/CAPixelDoubletsAlgos.h modified in PR(s): #49286
Pull request #49346 was updated. @Dr15Jones, @Martin-Grunewald, @bsunanda, @civanch, @cmsbuild, @elusian, @fwyzard, @jfernan2, @kpedro88, @lviliani, @makortel, @mandrenguyen, @mdhildreth, @mkirsano, @mmasciov, @mmusich, @sensrcn, @srimanob, @theofil can you please check and sign again.
@cmsbuild, please test
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-49346/46862
- There are other open Pull requests which might conflict with changes you have proposed:
- File Geometry/CommonTopologies/interface/SimplePixelTopology.h modified in PR(s): #49293
- File RecoTracker/PixelSeeding/plugins/alpaka/CAHitNtuplet.cc modified in PR(s): #46852, #49286
- File RecoTracker/PixelSeeding/plugins/alpaka/CAPixelDoubletsAlgos.h modified in PR(s): #49286
Pull request #49346 was updated. @Dr15Jones, @Martin-Grunewald, @bsunanda, @civanch, @cmsbuild, @elusian, @fwyzard, @jfernan2, @kpedro88, @lviliani, @makortel, @mandrenguyen, @mdhildreth, @mkirsano, @mmasciov, @mmusich, @sensrcn, @srimanob, @theofil can you please check and sign again.