File GaussianGridTrackDensity.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

template<int mainGridSize = 2000, int trkGridSize = 15>
class GaussianGridTrackDensity
#include <Acts/Vertexing/GaussianGridTrackDensity.hpp>

Implements a 1-dim density grid to be filled with track Gaussian distributions.

Each single track is modelled as a 2(!)-dim Gaussian distribution grid in the d0-z0 plane, but only the overlap with the z-axis (i.e. a 1-dim density vector) needs to be calculated. The position of the highest track density (of either a single bin or the sum of a certain region) can be determined. Single tracks can be cached and removed from the overall density.

Template Parameters
  • mainGridSize – The size of the z-axis 1-dim main density grid

  • trkGridSize – The 2(!)-dim grid size of a single track, i.e. a single track is modelled as a (trkGridSize x trkGridSize) grid in the d0-z0 plane. Note: trkGridSize has to be an odd value.

Public Types

using MainGridVector = Eigen::Matrix<float, mainGridSize, 1>
using TrackGridVector = Eigen::Matrix<float, trkGridSize, 1>

Public Functions

inline GaussianGridTrackDensity(const Config &cfg)
std::pair<int, TrackGridVector> addTrack(const BoundTrackParameters &trk, MainGridVector &mainGrid) const

Adds a single track to the overall grid density.

Parameters
  • trk – The track to be added

  • mainGrid – The main 1-dim density grid along the z-axis

Returns

A pair storing information about the z-bin position the track was added (int) and the 1-dim density contribution of the track itself

Result<float> getMaxZPosition(MainGridVector &mainGrid) const

Returns the z position of maximum track density.

Parameters

mainGrid – The main 1-dim density grid along the z-axis

Returns

The z position of maximum track density

Result<std::pair<float, float>> getMaxZPositionAndWidth(MainGridVector &mainGrid) const

Returns the z position of maximum track density and the estimated width.

Parameters

mainGrid – The main 1-dim density grid along the z-axis

Returns

The z position of maximum track density and width

void removeTrackGridFromMainGrid(int zBin, const TrackGridVector &trkGrid, MainGridVector &mainGrid) const

Removes a track from the overall grid density.

Parameters
  • zBin – The center z-bin position the track needs to be removed from

  • trkGrid – The 1-dim density contribution of the track

  • mainGrid – The main 1-dim density grid along the z-axis

Private Functions

void addTrackGridToMainGrid(int zBin, const TrackGridVector &trkGrid, MainGridVector &mainGrid) const

Helper function that acutally adds the track to the main density grid.

Parameters
  • zBin – The center z-bin position the track

  • trkGrid – The 1-dim density contribution of the track

  • mainGrid – The main 1-dim density grid along the z-axis

TrackGridVector createTrackGrid(int offset, const SymMatrix2 &cov, float distCtrD, float distCtrZ) const

Function that creates a 1-dim track grid (i.e.

a vector) with the correct density contribution of a track along the z-axis

Parameters
  • offset – Offset in d0 direction, to account for the 2-dim part of the Gaussian track distribution

  • cov – The track covariance matrix

  • distCtrD – The distance in d0 from the track position to its bin center in the 2-dim grid

  • distCtrZ – The distance in z0 from the track position to its bin center in the 2-dim grid

Result<float> estimateSeedWidth(MainGridVector &mainGrid, float maxZ) const

Function that estimates the seed width based on the FWHM of the maximum density peak.

Parameters
  • mainGrid – The main 1-dim density grid along the z-axis

  • maxZ – z-position of the maximum density value

Returns

The width

double getDensitySum(const MainGridVector &mainGrid, int pos) const

Calculates the density sum of a z-bin and its two neighboring bins as needed for ‘getHighestSumZPosition’.

Parameters
  • mainGrid – The main 1-dim density grid along the z-axis

  • pos – The center z-bin positon

Returns

The sum

int getHighestSumZPosition(MainGridVector &mainGrid) const

Checks the (up to) first three density maxima (only those that have a maximum relative deviation of ‘relativeDensityDev’ from the main maximum) and take the z-bin of the maximum with the highest surrounding density.

Parameters

mainGrid – The main 1-dim density grid along the z-axis

Returns

The z-bin position

void modifyMainGridWithTrackGrid(int zBin, const TrackGridVector &trkGrid, MainGridVector &mainGrid, int modifyModeSign) const

Helper function that modifies the main density grid (either adds or removes a track)

Parameters
  • zBin – The center z-bin position the track

  • trkGrid – The 1-dim density contribution of the track

  • mainGrid – The main 1-dim density grid along the z-axis

  • modifyModeSign – Sign that determines the mode of modification, +1 for adding a track, -1 for removing a track

float normal2D(float d, float z, const SymMatrix2 &cov) const

Helper to retrieve values according to a 2-dim normal distribution.

Private Members

Config m_cfg
struct Config
#include <Acts/Vertexing/GaussianGridTrackDensity.hpp>

The configuration struct.

Public Functions

inline Config(float zMinMax_ = 100)

Note

The value of zMinMax_ together with mainGridSize determines the overall bin size to be used as seen below

Parameters

zMinMax_ – The minimum and maximum z-values (in mm) that should be covered by the main 1-dim density grid along the z-axis

Public Members

float binSize
float maxRelativeDensityDev = 0.01
bool useHighestSumZPosition = false
float zMinMax