Skip to content

background, edm and algorithm description

Andreas Salzburger edited this page Feb 18, 2021 · 6 revisions

Introduction

The traccc repository is part of the ACTS project, R&D line for accelerators. It is meant to build up a chain of algorithms that run in track reconstruction.

Sequence description

Connected Component Labelling

The readout of segmented silicon detectors is usually a channel identification and an activation value, this value can be digital or - if analog readout is supported - of some given readout accuracy. In the following, we address pixel detectors and will call the input a cell, it could look something like this:

    /// A cell definition: 
    ///
    /// maximum two channel identifiers
    /// and one activiation value, such as a time stamp
    struct cell {
        channel_id channel0 = 0;
        channel_id channel1 = 0;
        scalar activation = 0.;
        scalar time = 0.;
    };

The first algorithm to be run is to find connected cells per module, also called connected component labelling, for this purpose the SparseCCL algorithm has been implemented following [DOI: 10.1109/DASIP48288.2019.9049184]. It is a two pass algorithm that groups connected cells together into clusters. 8-cell connectivity is assumed, i.e. cells that only share a common corner are connected (whereas 4-cell connectivity would require a common edge at least).

The following figure from the SparseCCL paper shows four clusters on a module, it is the exact same example as the component_connection unit test:

measurement creation

The output of the connected component labelling is groups of cells that are connected.

Measurement creation

From connected cells, measurements are created, which describe the local measurement and variance information on a measurement module, the measurement errors can be regarded as uncorrelated, which is why a variance definition is sufficient.

  /// A measurement definition, fix to two-dimensional here
    struct measurement {
        point2 local = {0., 0.};
        variance2 variance = { 0., 0.};
    };

The following sketch (courtesy of Paul Gessinger-Befurt ) shows the individual cells and potential below-threshold cells that are used for reconstructing the local position:

measurement creation

Spacepoint creation

A spacepoint is a 3D representation of a measurement that does not need additional geometric information for further processing

    /// A cell definition: maximum two channel identifiers
    /// and one activiation value;
    struct spacepoint {
        point3 global = { 0., 0., 0.};
        variance3 variance = { 0., 0., 0.};
    }

For 2D measurements, the space point formation is nothing more than a transformation of the 2D local measurement position into the global 3D space for the global pattern recogntion.

The following sketch (courtesy of Paul Gessinger-Befurt ) shows the transformation of local clusters to 3D space points:

measurement creation

Seeding

Seeding is not yet implemented, but is shown here, again the sketch is courtesy of Paul Gessinger-Befurt.

track seeding