News from GPU ITS seeding vertexer (Gabriele)
What I am doing: looking for a new seeding vertexing algorithm
Why:
- Current one is serial (cannot be ported to GPUs)
- Quality of the seeds needs to be improved in order to use the per-vertex tracking which reduces memory usage
What I want to do:
- Compute tracks of the first three ITS layers
- Linearize the track on the innermost cluster, to work with lines in the beam line
- Define a vertex function, which returns a score for each point in the 3D space.
If we want to calculate the score in a point in space, we have to:
For each track, compute a score based on the distance of the track to the point
Sum the contribution of each track on that point (second term to suppress contributions from single tracks)

- Points with highest score will indicate the possible position of a vertex
- Ideal for GPU: each thread takes a point and computes the score. No branches and same number of iteration for each thread (number of tracks)
- ATLAS did more or less this but on CPU
What I did so far:
- CPU version of the vertex function
Transverse plane of 10 random tracks + linear prolongation from a ReadOutFrame (subset of a TimeFrame):

zy plane of the same tracks. Beamline highlighted in red. Tracks "stacks" on some values of zs, indicating vertex candidates

Vertex functon at z=3.151 cm in the beam line (maximum around (0,0)):

ToDo:
- Check the quality of the vertex function with MC data
- If quality of vertex reco is ok, understand how to select the maximum values of the function
Felix:
improved after clearing, but still small-ish discrepancy remains... (not clear to me why yet)
In any case, ITS tracking ran for the 25 apass1 on GPU :)

