File SeedFinder.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

Enums

enum SpacePointCandidateType

Values:

enumerator BOTTOM
enumerator TOP
template<typename external_spacepoint_t, typename platform_t = void*>
class SeedFinder
#include <Acts/Seeding/SeedFinder.hpp>

Disallow default instantiation, copy, assignment

SeedFinder() = default
SeedFinder(const SeedFinder<external_spacepoint_t, platform_t>&) = delete
SeedFinder<external_spacepoint_t, platform_t> &operator=(const SeedFinder<external_spacepoint_t, platform_t>&) = default

Public Functions

SeedFinder(const Acts::SeedFinderConfig<external_spacepoint_t> &config)

The only constructor.

Requires a config object.

Parameters

config – the configuration for the SeedFinder

~SeedFinder() = default
template<template<typename...> typename container_t, typename sp_range_t>
void createSeedsForGroup(const Acts::SeedFinderOptions &options, SeedingState &state, const Acts::SpacePointGrid<external_spacepoint_t> &grid, std::back_insert_iterator<container_t<Seed<external_spacepoint_t>>> outIt, const sp_range_t &bottomSPs, const std::size_t middleSPs, const sp_range_t &topSPs, const Acts::Range1D<float> &rMiddleSPRange) const

Create all seeds from the space points in the three iterators.

Can be used to parallelize the seed creation

Note

Ranges must return pointers.

Note

Ranges must be separate objects for each parallel call.

Parameters
  • options – frequently changing configuration (like beam position)

  • state – State object that holds memory used

  • grid – The grid with space points

  • outIt – Output iterator for the seeds in the group

  • bottomSPs – group of space points to be used as innermost SP in a seed.

  • middleSPs – group of space points to be used as middle SP in a seed.

  • topSPs – group of space points to be used as outermost SP in a seed.

  • rMiddleSPRange – range object containing the minimum and maximum r for middle SP for a certain z bin.

template<typename sp_range_t>
std::vector<Seed<external_spacepoint_t>> createSeedsForGroup(const Acts::SeedFinderOptions &options, const Acts::SpacePointGrid<external_spacepoint_t> &grid, const sp_range_t &bottomSPs, const std::size_t middleSPs, const sp_range_t &topSPs) const

Compatibility method for the new-style seed finding API.

This method models the old-style seeding API where we only need a container for the bottom, middle, and top space points. Also, the results are returned by value instead of inserted into an inserter.

Note

This method is a very simply wrapper around the more modern API.

Warning

The performance of the seeding code is far greater if the new API is used, and this is recommended for all new uses which do not require backwards-compatibility.

Template Parameters

sp_range_t – container type for the seed point collections.

Parameters
  • options – frequently changing configuration (like beam position)

  • grid – The grid with space points

  • bottomSPs – group of space points to be used as innermost SP in a seed.

  • middleSPs – group of space points to be used as middle SP in a seed.

  • topSPs – group of space points to be used as outermost SP in a seed.

Returns

a vector of seeds.

Private Functions

void filterCandidates(Acts::SpacePointData &spacePointData, const InternalSpacePoint<external_spacepoint_t> &SpM, const Acts::SeedFinderOptions &options, SeedFilterState &seedFilterState, SeedingState &state) const

Iterates over the seed candidates tests the compatibility between three SPs and calls for the seed confirmation.

Parameters
  • spacePointData – object contaning the spacepoint data

  • SpM – space point candidate to be used as middle SP in a seed

  • options – frequently changing configuration (like beam position)

  • seedFilterState – State object that holds memory used in SeedFilter

  • state – State object that holds memory used

template<Acts::SpacePointCandidateType candidateType, typename out_range_t>
void getCompatibleDoublets(Acts::SpacePointData &spacePointData, const Acts::SeedFinderOptions &options, const Acts::SpacePointGrid<external_spacepoint_t> &grid, boost::container::small_vector<Neighbour<external_spacepoint_t>, 9> &otherSPsNeighbours, const InternalSpacePoint<external_spacepoint_t> &mediumSP, std::vector<LinCircle> &linCircleVec, out_range_t &outVec, const float &deltaRMinSP, const float &deltaRMaxSP) const

Iterates over dublets and tests the compatibility between them by applying a series of cuts that can be tested with only two SPs.

Parameters
  • spacePointData – object contaning the spacepoint data

  • options – frequently changing configuration (like beam position)

  • grid – spacepoint grid

  • otherSPsNeighbours – inner or outer space points to be used in the dublet

  • mediumSP – space point candidate to be used as middle SP in a seed

  • linCircleVec – vector contining inner or outer SP parameters after reference frame transformation to the u-v space

  • outVec – Output object containing top or bottom SPs that are compatible with a certain middle SPs

  • deltaRMinSP – minimum allowed r-distance between dublet components

  • deltaRMaxSP – maximum allowed r-distance between dublet components

Private Members

Acts::SeedFinderConfig<external_spacepoint_t> m_config
struct SeedingState
#include <Acts/Seeding/SeedFinder.hpp>

Public Members

boost::container::small_vector<Acts::Neighbour<external_spacepoint_t>, 9> bottomNeighbours
CandidatesForMiddleSp<const InternalSpacePoint<external_spacepoint_t>> candidates_collector
std::vector<InternalSpacePoint<external_spacepoint_t>*> compatBottomSP
std::vector<InternalSpacePoint<external_spacepoint_t>*> compatTopSP
std::vector<float> curvatures
std::vector<float> impactParameters
std::vector<LinCircle> linCircleBottom
std::vector<LinCircle> linCircleTop
Acts::SpacePointData spacePointData
boost::container::small_vector<Acts::Neighbour<external_spacepoint_t>, 9> topNeighbours
std::vector<const InternalSpacePoint<external_spacepoint_t>*> topSpVec