Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
# Vertex Portable Data Formats

`DataFormat`s meant to be used on Host (CPU) or Device (GPUs) for storing
information about reconstructed pixel vertices in Structure of Array (SoA)
format.

The host collection is an instantiation of `PortableHostMultiCollection`, while
the device collection is an instantiation of `PortableDeviceMultiCollection`.

Both collections use two SoA layouts (`ZVertexLayout` and `ZVertexTracksLayout`)
with different number of elements, defined at run-time.
The layouts are defined by the `GENERATE_SOA_LAYOUT` macro in
`DataFormats/VertexSoA/interface/ZVertexSoA.h`.


## `ZVertexHost`

The version of the data format to be used for storing vertex data on the CPU. 
Instances of this class are to be used for:
  - having a place to copy data to host from device, which is usually taken care
    of automatically by the framework;
  - running host-side algorithms using data stored in an SoA manner.


## `ZVertexDevice`

The version of the data format to be used for storing vertex data on the GPU.
Instances of `ZVertexDevice` are created on the host, and can only be used only
on the device. To do so, the instance's `view()` or `const_view()` methods are
called, and the resulting `View` or `ConstView` are passed to a kernel launch.
The data from the instance, `view()` or `const_view()` is not accessible on the
host side.