Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::SeedFinderOrthogonal< external_spacepoint_t > Class Template Reference

#include <acts/blob/sPHENIX/Core/include/Acts/Seeding/SeedFinderOrthogonal.hpp>

+ Collaboration diagram for Acts::SeedFinderOrthogonal< external_spacepoint_t >:

Public Types

using seed_t = Seed< external_spacepoint_t >
 The seed type used by this seeder internally.
 
using internal_sp_t = InternalSpacePoint< external_spacepoint_t >
 The spacepoint 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 Member Functions

 SeedFinderOrthogonal (const Acts::SeedFinderOrthogonalConfig< external_spacepoint_t > &config)
 Construct a new orthogonal seed finder.
 
 ~SeedFinderOrthogonal ()=default
 Destroy the orthogonal seed finder object.
 
 SeedFinderOrthogonal ()=default
 
 SeedFinderOrthogonal (const SeedFinderOrthogonal< external_spacepoint_t > &)=delete
 
SeedFinderOrthogonal
< external_spacepoint_t > & 
operator= (const SeedFinderOrthogonal< external_spacepoint_t > &)=default
 
template<typename input_container_t , typename output_container_t , typename callable_t >
void createSeeds (const Acts::SeedFinderOptions &options, const input_container_t &spacePoints, output_container_t &out_cont, callable_t &&extract_coordinates) const
 Perform seed finding, appending seeds to a container.
 
template<typename input_container_t , typename callable_t >
std::vector< seed_tcreateSeeds (const Acts::SeedFinderOptions &options, const input_container_t &spacePoints, callable_t &&extract_coordinates) const
 Perform seed finding, returning a new container of seeds.
 

Static Public 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.
 

Private Types

enum  Dim { DimPhi = 0, DimR = 1, DimZ = 2 }
 Enumeration of the different dimensions in which we can apply cuts. More...
 

Private Member Functions

tree_t::range_t validTupleOrthoRangeLH (const internal_sp_t &low) const
 Return the AABB rearch range for a given spacepoint, searching upwards.
 
tree_t::range_t validTupleOrthoRangeHL (const internal_sp_t &high) const
 Return the AABB rearch range for a given spacepoint, searching downward.
 
bool validTuple (const SeedFinderOptions &options, const internal_sp_t &low, const internal_sp_t &high, bool isMiddleInverted) const
 Check whether two spacepoints form a valid tuple.
 
tree_t createTree (const std::vector< internal_sp_t * > &spacePoints) const
 Create a k-d tree from a set of spacepoints.
 
void filterCandidates (const SeedFinderOptions &options, internal_sp_t &middle, std::vector< internal_sp_t * > &bottom, std::vector< internal_sp_t * > &top, SeedFilterState seedFilterState, CandidatesForMiddleSp< const InternalSpacePoint< external_spacepoint_t >> &candidates_collector, Acts::SpacePointData &spacePointData) const
 Filter potential candidate pairs, and output seeds into an iterator.
 
template<typename output_container_t >
void processFromMiddleSP (const SeedFinderOptions &options, const tree_t &tree, output_container_t &out_cont, const typename tree_t::pair_t &middle_p, Acts::SpacePointData &spacePointData) const
 Search for seeds starting from a given middle space point.
 

Private Attributes

Acts::SeedFinderOrthogonalConfig
< external_spacepoint_t > 
m_config
 The configuration for the seeding algorithm.
 

Detailed Description

template<typename external_spacepoint_t>
class Acts::SeedFinderOrthogonal< external_spacepoint_t >

Definition at line 31 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 31 of file SeedFinderOrthogonal.hpp

Member Typedef Documentation

template<typename external_spacepoint_t>
using Acts::SeedFinderOrthogonal< external_spacepoint_t >::internal_sp_t = InternalSpacePoint<external_spacepoint_t>

The spacepoint type used by this seeder internally.

Definition at line 48 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 48 of file SeedFinderOrthogonal.hpp

template<typename external_spacepoint_t>
using Acts::SeedFinderOrthogonal< external_spacepoint_t >::seed_t = Seed<external_spacepoint_t>

The seed type used by this seeder internally.

Definition at line 43 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 43 of file SeedFinderOrthogonal.hpp

template<typename external_spacepoint_t>
using Acts::SeedFinderOrthogonal< external_spacepoint_t >::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.

Definition at line 56 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 56 of file SeedFinderOrthogonal.hpp

Member Enumeration Documentation

template<typename external_spacepoint_t>
enum Acts::SeedFinderOrthogonal::Dim
private

Enumeration of the different dimensions in which we can apply cuts.

Enumerator:
DimPhi 
DimR 
DimZ 

Definition at line 138 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 138 of file SeedFinderOrthogonal.hpp

Constructor & Destructor Documentation

template<typename external_spacepoint_t>
Acts::SeedFinderOrthogonal< external_spacepoint_t >::SeedFinderOrthogonal ( const Acts::SeedFinderOrthogonalConfig< external_spacepoint_t > &  config)

Construct a new orthogonal seed finder.

Parameters
configThe configuration parameters for this seed finder.

Definition at line 233 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 233 of file SeedFinderOrthogonal.ipp

References Acts::SeedFinderOrthogonalConfig< SpacePoint >::isInInternalUnits.

template<typename external_spacepoint_t>
Acts::SeedFinderOrthogonal< external_spacepoint_t >::~SeedFinderOrthogonal ( )
default

Destroy the orthogonal seed finder object.

template<typename external_spacepoint_t>
Acts::SeedFinderOrthogonal< external_spacepoint_t >::SeedFinderOrthogonal ( )
default
template<typename external_spacepoint_t>
Acts::SeedFinderOrthogonal< external_spacepoint_t >::SeedFinderOrthogonal ( const SeedFinderOrthogonal< external_spacepoint_t > &  )
delete

Member Function Documentation

template<typename external_spacepoint_t >
template<typename input_container_t , typename output_container_t , typename callable_t >
void Acts::SeedFinderOrthogonal< external_spacepoint_t >::createSeeds ( const Acts::SeedFinderOptions options,
const input_container_t &  spacePoints,
output_container_t &  out_cont,
callable_t &&  extract_coordinates 
) 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_tThe type of the input spacepoint container.
output_container_tThe type of the output seed container.
Parameters
optionsfrequently changing configuration (like beam position)
spacePointsThe input spacepoints from which to create seeds.
out_contThe output container to write seeds to.
extract_coordinatesUser-defined function for extracting global position and covariance of the external space point

Definition at line 699 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 699 of file SeedFinderOrthogonal.ipp

References Acts::SeedFinderOptions::beamPos, Acts::binR, Acts::Extent::extend(), Acts::SeedFinderOptions::isInInternalUnits, Acts::Extent::max(), Acts::Range1D< Type >::max(), Acts::Extent::min(), Acts::Range1D< Type >::min(), merge_hashes::p, Acts::InternalSpacePoint< SpacePoint >::phi(), position, Acts::InternalSpacePoint< SpacePoint >::radius(), Acts::SpacePointData::resize(), tree, and Acts::InternalSpacePoint< SpacePoint >::z().

Referenced by ActsExamples::SeedingOrthogonalAlgorithm::execute(), and PHActsKDTreeSeeding::runSeeder().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename external_spacepoint_t >
template<typename input_container_t , typename callable_t >
std::vector< Seed< external_spacepoint_t > > Acts::SeedFinderOrthogonal< external_spacepoint_t >::createSeeds ( const Acts::SeedFinderOptions options,
const input_container_t &  spacePoints,
callable_t &&  extract_coordinates 
) 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_tThe type of the input spacepoint container.
Parameters
optionsfrequently changing configuration (like beam position)
spacePointsThe input spacepoints from which to create seeds.
extract_coordinatesUser-defined function for extracting global position and covariance of the external space point
Returns
A vector of seeds.

Definition at line 797 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 797 of file SeedFinderOrthogonal.ipp

References physmon_track_finding_ttbar::r.

template<typename external_spacepoint_t >
auto Acts::SeedFinderOrthogonal< external_spacepoint_t >::createTree ( const std::vector< internal_sp_t * > &  spacePoints) const
private

Create a k-d tree from a set of spacepoints.

Parameters
spacePointsThe spacepoints to create a tree from.
Returns
A k-d tree containing the given spacepoints.

Definition at line 674 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 674 of file SeedFinderOrthogonal.ipp

References testing::internal::move().

+ Here is the call graph for this function:

template<typename external_spacepoint_t>
void Acts::SeedFinderOrthogonal< external_spacepoint_t >::filterCandidates ( const SeedFinderOptions options,
internal_sp_t middle,
std::vector< internal_sp_t * > &  bottom,
std::vector< internal_sp_t * > &  top,
SeedFilterState  seedFilterState,
CandidatesForMiddleSp< const InternalSpacePoint< external_spacepoint_t >> &  candidates_collector,
Acts::SpacePointData spacePointData 
) const
private

Filter potential candidate pairs, and output seeds into an iterator.

Parameters
optionsfrequently changing configuration (like beam position)
middleThe (singular) middle spacepoint.
bottomThe (vector of) candidate bottom spacepoints.
topThe (vector of) candidate top spacepoints.
seedFilterStateholds quantities used in seed filter
candidates_collectorThe container to write the resulting seed candidates to.
spacePointDataAuxiliary variables used by the seeding

Definition at line 244 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 244 of file SeedFinderOrthogonal.ipp

References KFPMath::a, A, KFPMath::b, i, Acts::if(), Acts::SeedFinderOptions::minHelixDiameter2, Acts::SeedFinderOptions::multipleScattering2, Acts::SeedConfirmationRangeConfig::nTopForLargeR, Acts::SeedConfirmationRangeConfig::nTopForSmallR, Acts::SeedFilterState::nTopSeedConf, Acts::SeedFilterState::numQualitySeeds, Acts::SeedFinderOptions::pTPerHelixRadius, Acts::InternalSpacePoint< SpacePoint >::radius(), Acts::SeedConfirmationRangeConfig::rMaxSeedConf, Acts::SeedFilterState::rMaxSeedConf, Acts::SeedFinderOptions::sigmapT2perRadius, Acts::Experimental::detail::BlueprintHelper::sort(), t, Acts::transformCoordinates(), Acts::InternalSpacePoint< SpacePoint >::varianceR(), Acts::InternalSpacePoint< SpacePoint >::varianceZ(), Acts::InternalSpacePoint< SpacePoint >::z(), physmon_track_finding_ttbar::z, and Acts::SeedFilterState::zOrigin.

+ Here is the call graph for this function:

template<typename external_spacepoint_t>
SeedFinderOrthogonal<external_spacepoint_t>& Acts::SeedFinderOrthogonal< external_spacepoint_t >::operator= ( const SeedFinderOrthogonal< external_spacepoint_t > &  )
default
template<typename external_spacepoint_t >
template<typename output_container_t >
void Acts::SeedFinderOrthogonal< external_spacepoint_t >::processFromMiddleSP ( const SeedFinderOptions options,
const tree_t tree,
output_container_t &  out_cont,
const typename tree_t::pair_t middle_p,
Acts::SpacePointData spacePointData 
) const
private

Search for seeds starting from a given middle space point.

Parameters
optionsfrequently changing configuration (like beam position)
Template Parameters
NDimsNumber of dimensions for our spatial embedding (probably 3).
output_container_tType of the output container.
Parameters
treeThe k-d tree to use for searching.
out_contThe container write output seeds to.
middle_pThe middle spacepoint to find seeds for.
spacePointDataAux data for the spacepoints

Definition at line 471 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 471 of file SeedFinderOrthogonal.ipp

References Acts::SeedConfirmationRangeConfig::nTopForLargeR, Acts::SeedConfirmationRangeConfig::nTopForSmallR, Acts::SeedFilterState::nTopSeedConf, Acts::SeedFilterState::numQualitySeeds, Acts::InternalSpacePoint< SpacePoint >::radius(), Acts::KDTree< Dims, Type, Scalar, Vector, LeafSize >::rangeSearchMapDiscard(), Acts::SeedConfirmationRangeConfig::rMaxSeedConf, Acts::SeedFilterState::rMaxSeedConf, Acts::CandidatesForMiddleSp< external_space_point_t >::setMaxElements(), and Acts::InternalSpacePoint< SpacePoint >::z().

+ Here is the call graph for this function:

template<typename external_spacepoint_t >
bool Acts::SeedFinderOrthogonal< external_spacepoint_t >::validTuple ( const SeedFinderOptions options,
const internal_sp_t low,
const internal_sp_t high,
bool  isMiddleInverted 
) const
private

Check whether two spacepoints form a valid tuple.

This method checks whether the cuts that we have for pairs of space points hold.

Warning
This method checks ONLY those constraints that cannot be exactly represented as bounding boxes. Thus, this method should not be used on pairs of points that were not generated using a constrained spatial search strategy.
Parameters
optionsfrequently changing configuration (like beam position)
lowThe lower spacepoint.
highThe upper spacepoint.
isMiddleInvertedIf middle spacepoint is in the negative z region
Returns
True if the two points form a valid pair, false otherwise.

Definition at line 150 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 150 of file SeedFinderOrthogonal.ipp

References physmon_track_finding_ttbar::deltaR, Acts::SeedFinderOptions::minHelixDiameter2, Acts::InternalSpacePoint< SpacePoint >::radius(), sign(), Acts::InternalSpacePoint< SpacePoint >::x(), Acts::InternalSpacePoint< SpacePoint >::y(), and Acts::InternalSpacePoint< SpacePoint >::z().

+ Here is the call graph for this function:

template<typename external_spacepoint_t >
auto Acts::SeedFinderOrthogonal< external_spacepoint_t >::validTupleOrthoRangeHL ( const internal_sp_t high) const
private

Return the AABB rearch range for a given spacepoint, searching downward.

This function calculates an axis-aligned bounding box around the volume of validity for the next spacepoint in a pair, given that the upper spacepoint is given. Thus, this method either takes a middle spacepoint and returns a range for the bottom spacepoint, or it takes a top spacepoint and returns the range for the middle spacepoint.

Parameters
highThe upper spacepoint to find a partner for.
Returns
An N-dimensional axis-aligned search range.

Definition at line 92 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 92 of file SeedFinderOrthogonal.ipp

References Acts::UnitConstants::min.

template<typename external_spacepoint_t >
auto Acts::SeedFinderOrthogonal< external_spacepoint_t >::validTupleOrthoRangeLH ( const internal_sp_t low) const
private

Return the AABB rearch range for a given spacepoint, searching upwards.

This function calculates an axis-aligned bounding box around the volume of validity for the next spacepoint in a pair, given that the lower spacepoint is given. Thus, this method either takes a bottom spacepoint and returns a range for the middle spacepoint, or it takes a middle spacepoint and returns the range for the top spacepoint.

Parameters
lowThe lower spacepoint to find a partner for.
Returns
An N-dimensional axis-aligned search range.

Definition at line 23 of file SeedFinderOrthogonal.ipp.

View newest version in sPHENIX GitHub at line 23 of file SeedFinderOrthogonal.ipp

Member Data Documentation

template<typename external_spacepoint_t>
Acts::SeedFinderOrthogonalConfig<external_spacepoint_t> Acts::SeedFinderOrthogonal< external_spacepoint_t >::m_config
private

The configuration for the seeding algorithm.

Definition at line 246 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 246 of file SeedFinderOrthogonal.hpp

template<typename external_spacepoint_t>
constexpr std::size_t Acts::SeedFinderOrthogonal< external_spacepoint_t >::NDims = 3
static

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.

Definition at line 38 of file SeedFinderOrthogonal.hpp.

View newest version in sPHENIX GitHub at line 38 of file SeedFinderOrthogonal.hpp


The documentation for this class was generated from the following files: