Skip to content

ITS GPU seeding vertexer: add clamps to adaptive low mult threshold, and propate cells towards beamline - #15918

Open
cima22 wants to merge 1 commit into
AliceO2Group:devfrom
cima22:parallel-vertexer
Open

cima22 wants to merge 1 commit into
AliceO2Group:devfrom
cima22:parallel-vertexer

Conversation

@cima22

@cima22 cima22 commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

This PR touches only the new seeding vertexer:

  1. Clamp on the adaptive low-multiplicity debris threshold. Previously the threshold was free to move. It is now clamped to [2, suppressLowMultDebris] (suppressLowMultDebris = 16 by default).

  2. Overpopulated-ROF pruning. The new vertexer is more sensitive to low-multiplicity vertices, so a noisy ROF can produce more fake vertices. If a ROF has more vertices than mean + nSigma · sqrt(mean + 1), where mean is the per-ROF vertex count of the TF, the adaptive debris threshold is replaced by the standard suppressLowMultDebris = 16 for that ROF only.
    Motivation: in real data (run 568600), 7 ROFs in 4 of 1351 TFs had a burst of noisy hits (Claude says that most likely is beam-induced background). This caused an explosion of fake vertices, 33 to 81 in a single ROF, which the old vertexer suppressed with its hard threshold. In the worst TF, tracking time rose from 15 s to 226 s. With the pruning it is back to 17 s.

  3. Cells propagated to the beamline DCA. Following Ruben's advice, cells are now propagated to their DCA to the beamline, instead of being linearised to the beamline from the innermost cluster. This improves the z residuals: on 50 Pb-Pb TFs at 50 kHz, the RMS drops from 16.6 µm to 14.7 µm. Also slightly restricted some cuts, which for the same 50-TF comparison gives fakes 150 → 125 and splits 109 → 85, at efficiency 98.91% → 98.84%.

image

Updated settings for running the new vertexer on Pb-Pb TFs:

ITSCATrackerParam.diamondTrackletingCellDeltaPhiMinPt=0.12;ITSCATrackerParam.diamondCellTanLambdaNSigma=2.5;ITSCATrackerParam.seedingVertexIteration=1;ITSCATrackerParam.doUPCIteration=1;ITSCATrackerParam.cellLineSharedClusterCut=1;ITSCATrackerParam.diamondTrackletingPVres=1.5102214480735774;ITSCATrackerParam.diamondTrackletingNSigmaCut=2.976946815605669;ITSCATrackerParam.diamondTrackletingCellDeltaTanLambdaSigma=0.005566295924057422;ITSVertexerParam.useTruthSeeding=0;ITSVertexerParam.suppressLowMultDebris=16;ITSVertexerParam.goodLineChi2Cut=9.814679066181695;ITSVertexerParam.goodLinePtCut=0.12;ITSVertexerParam.clusterContributorsCut=3;ITSVertexerParam.clusterCut=0.07;ITSVertexerParam.duplicateZCut=0.1388966993405415;ITSVertexerParam.pairCut=0.0225;ITSVertexerParam.nSigmaCut=0.05;ITSVertexerParam.phiCut=0.008875191490279988;ITSVertexerParam.goodContributorsSignificance=0.070;ITSVertexerParam.fineZWindow=0.010;ITSVertexerParam.fineMinDensity=8;ITSVertexerParam.fineMaxDrift=0.005;ITSVertexerParam.lineMinPt=0.10;ITSVertexerParam.duplicateZScale=0.7;ITSVertexerParam.overpopulatedRofNSigma=15;ITSVertexerParam.lineCurvatureScale=0.5;

@cima22
cima22 force-pushed the parallel-vertexer branch from 2ca6451 to 4c28bdc Compare October 9, 2026 09:39
@alibuild

alibuild commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

Error while checking build/O2/fullCI_slc9 for 2ca6451 at 2026-10-09 12:31:

## sw/BUILD/o2codechecker-latest/log
100% tests passed, 0 tests failed out of 1


## sw/BUILD/ThePEG-latest/log
collect2: error: ld returned 1 exit status


## sw/BUILD/O2-latest/log
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(127): error: calling a __device__ function("o2::track::TrackParametrization<float> ::getXYZGlo(    ::std::array<float, (unsigned long)3ul>  &) const") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(128): error: calling a __device__ function("_ZNK2o25track20TrackParametrizationI1?E12getPxPyPzGloE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(132): error: calling a __device__ function("_ZN2o25track20TrackParametrizationI1?E7setQ2PtE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(134): error: calling a __device__ function("_ZN2o25track20TrackParametrizationI1?E19propagateParamToDCAE1?1?1?1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(135): error: calling a __device__ function("_ZNK2o25track20TrackParametrizationI1?E9getXYZGloE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(136): error: calling a __device__ function("_ZNK2o25track20TrackParametrizationI1?E12getPxPyPzGloE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(127): error: calling a __device__ function("o2::track::TrackParametrization<float> ::getXYZGlo(    ::std::array<float, (unsigned long)3ul>  &) const") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(128): error: calling a __device__ function("_ZNK2o25track20TrackParametrizationI1?E12getPxPyPzGloE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(132): error: calling a __device__ function("_ZN2o25track20TrackParametrizationI1?E7setQ2PtE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(134): error: calling a __device__ function("_ZN2o25track20TrackParametrizationI1?E19propagateParamToDCAE1?1?1?1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(135): error: calling a __device__ function("_ZNK2o25track20TrackParametrizationI1?E9getXYZGloE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
/sw/SOURCES/O2/slc9_x86-64-slc9_x86-64/0/Detectors/ITSMFT/ITS/tracking/include/ITStracking/ClusterLines.h(136): error: calling a __device__ function("_ZNK2o25track20TrackParametrizationI1?E12getPxPyPzGloE1?") from a __host__ __device__ function("getCellLineAtBeam") is not allowed
ninja: build stopped: subcommand failed.

Full log here.

This branch has not been deployed

No deployments
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