-
Notifications
You must be signed in to change notification settings - Fork 50
background, edm and algorithm description
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.
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:
The output of the connected component labelling is groups of cells that are connected.
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:
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:
Seeding is not yet implemented, but is shown here, again the sketch is courtesy of Paul Gessinger-Befurt.