Class Acts::SeedFinderOrthogonal

template<typename external_spacepoint_t>
class SeedFinderOrthogonal

Public Types

using internal_sp_t = InternalSpacePoint<external_spacepoint_t>

The spacepoint type used by this seeder internally.

using seed_t = Seed<external_spacepoint_t>

The seed type used by this seeder internally.

using tree_t = KDTree<NDims, internal_sp_t*, ActsScalar, std::array, 4>

The k-d tree type used by this seeder internally, which is three-dimensional, contains internal spacepoint pointers, uses the Acts scalar type for coordinates, stores its coordinates in std::arrays, and has leaf size 4.

Public Functions

SeedFinderOrthogonal(Acts::SeedFinderOrthogonalConfig<external_spacepoint_t> config)

Construct a new orthogonal seed finder.


config – The configuration parameters for this seed finder.

SeedFinderOrthogonal() = delete
SeedFinderOrthogonal(const SeedFinderOrthogonal<external_spacepoint_t>&) = delete
~SeedFinderOrthogonal() = default

Destroy the orthogonal seed finder object.

template<typename input_container_t, typename output_container_t>
void createSeeds(const input_container_t &spacePoints, output_container_t &out_cont) const

Perform seed finding, appending seeds to a container.

This method performs seed finding through an orthogonal range search strategy. This strategy differs from binning approaches because it selects seeds constructively rather than destructively; instead of trying a large number of possible space point combinations and then rejecting many of them, this algorithm tries to only consider valid seed candidates to reduce combinatorics.

In addition, this algorithm replaces the binning step used in other seed finding algorithms with the construction of a k-d tree, which allows us to efficiently search for space points within a given range.

The core idea behind this algorithm is to create axis-aligned bounding boxes around the region of validity for a seed candidate (be it a bottom spacepoint for a given middle, a top for a given middle, a middle for a given bottom, or any other combination), and then searching the detector volume for points that lie inside that AABB.

Template Parameters
  • input_container_t – The type of the input spacepoint container.

  • output_container_t – The type of the output seed container.

  • spacePoints – The input spacepoints from which to create seeds.

  • out_cont – The output container to write seeds to.

template<typename input_container_t>
std::vector<seed_t> createSeeds(const input_container_t &spacePoints) const

Perform seed finding, returning a new container of seeds.

This is a filterCandidates method for scenarios where a non-inserter API is more ergonomic. In general, the inserter-based method should be preferred as it is more flexible and usually more performant. For more information about the seeding algorithm, please see that function.

Template Parameters

input_container_t – The type of the input spacepoint container.


spacePoints – The input spacepoints from which to create seeds.


A vector of seeds.

SeedFinderOrthogonal<external_spacepoint_t> &operator=(const SeedFinderOrthogonal<external_spacepoint_t>&) = delete

Public Static Attributes

static constexpr std::size_t NDims = 3

Set the number of dimensions in which to embed points.

This is just 3 for now (phi, r, and z), but we might want to increase or decrease this number in the future.