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

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

+ Collaboration diagram for Acts::SeedFinder< external_spacepoint_t, platform_t >:

Classes

struct  SeedingState
 

Public Member Functions

 SeedFinder (const Acts::SeedFinderConfig< external_spacepoint_t > &config)
 
 ~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
 
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.
 
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
 

Private Member Functions

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 float uIP, const float uIP2, const float cosPhiM, const float sinPhiM) const
 
template<Acts::DetectorMeasurementInfo detailedMeasurement>
void filterCandidates (Acts::SpacePointData &spacePointData, const InternalSpacePoint< external_spacepoint_t > &SpM, const Acts::SeedFinderOptions &options, SeedFilterState &seedFilterState, SeedingState &state) const
 

Private Attributes

Acts::SeedFinderConfig
< external_spacepoint_t > 
m_config
 

Detailed Description

template<typename external_spacepoint_t, typename platform_t = void*>
class Acts::SeedFinder< external_spacepoint_t, platform_t >

Definition at line 40 of file SeedFinder.hpp.

View newest version in sPHENIX GitHub at line 40 of file SeedFinder.hpp

Constructor & Destructor Documentation

template<typename external_spacepoint_t, typename platform_t >
Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedFinder ( const Acts::SeedFinderConfig< external_spacepoint_t > &  config)
template<typename external_spacepoint_t, typename platform_t = void*>
Acts::SeedFinder< external_spacepoint_t, platform_t >::~SeedFinder ( )
default
template<typename external_spacepoint_t, typename platform_t = void*>
Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedFinder ( )
default
template<typename external_spacepoint_t, typename platform_t = void*>
Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedFinder ( const SeedFinder< external_spacepoint_t, platform_t > &  )
delete

Member Function Documentation

template<typename external_spacepoint_t, typename platform_t >
template<template< typename...> typename container_t, typename sp_range_t >
void Acts::SeedFinder< external_spacepoint_t, platform_t >::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

Parameters
optionsfrequently changing configuration (like beam position)
stateState object that holds memory used
gridThe grid with space points
outItOutput iterator for the seeds in the group
bottomSPsgroup of space points to be used as innermost SP in a seed.
middleSPsgroup of space points to be used as middle SP in a seed.
topSPsgroup of space points to be used as outermost SP in a seed.
rMiddleSPRangerange object containing the minimum and maximum r for middle SP for a certain z bin.
Note
Ranges must return pointers.
Ranges must be separate objects for each parallel call.

get zBin position of the middle SP

protects against zM at the limit of zBinEdges

Definition at line 40 of file SeedFinder.ipp.

View newest version in sPHENIX GitHub at line 40 of file SeedFinder.ipp

References Acts::detail::Grid< T, Axes >::at(), Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::bottomNeighbours, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::candidates_collector, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::compatBottomSP, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::compatTopSP, distance(), grid(), ambiguity_solver_full_chain::idx, Acts::if(), Acts::SeedFinderOptions::isInInternalUnits, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::linCircleBottom, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::linCircleTop, Acts::Range1D< Type >::max(), Acts::Range1D< Type >::min(), Acts::SeedConfirmationRangeConfig::nTopForLargeR, Acts::SeedConfirmationRangeConfig::nTopForSmallR, Acts::SeedFilterState::nTopSeedConf, Acts::SeedFilterState::numQualitySeeds, ckf::options, Acts::SeedConfirmationRangeConfig::rMaxSeedConf, Acts::SeedFilterState::rMaxSeedConf, Acts::CandidatesForMiddleSp< external_space_point_t >::setMaxElements(), Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::spacePointData, filter::state, and Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::topNeighbours.

Referenced by main(), and PHActsSiliconSeeding::runSeeder().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename external_spacepoint_t, typename platform_t >
template<typename sp_range_t>
std::vector< Seed< external_spacepoint_t > > Acts::SeedFinder< external_spacepoint_t, platform_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_tcontainer type for the seed point collections.
Parameters
optionsfrequently changing configuration (like beam position)
gridThe grid with space points
bottomSPsgroup of space points to be used as innermost SP in a seed.
middleSPsgroup of space points to be used as middle SP in a seed.
topSPsgroup of space points to be used as outermost SP in a seed.
Returns
a vector of seeds.

Definition at line 802 of file SeedFinder.ipp.

View newest version in sPHENIX GitHub at line 802 of file SeedFinder.ipp

References filter::state.

template<typename external_spacepoint_t, typename platform_t >
template<Acts::DetectorMeasurementInfo detailedMeasurement>
void Acts::SeedFinder< external_spacepoint_t, platform_t >::filterCandidates ( Acts::SpacePointData spacePointData,
const InternalSpacePoint< external_spacepoint_t > &  SpM,
const Acts::SeedFinderOptions options,
SeedFilterState seedFilterState,
SeedingState state 
) const
inlineprivate

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

Parameters
spacePointDataobject containing the spacepoint data
SpMspace point candidate to be used as middle SP in a seed
optionsfrequently changing configuration (like beam position)
seedFilterStateState object that holds memory used in SeedFilter
stateState object that holds memory used

Definition at line 440 of file SeedFinder.ipp.

View newest version in sPHENIX GitHub at line 440 of file SeedFinder.ipp

References KFPMath::a, A, KFPMath::b, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::candidates_collector, Acts::CandidatesForMiddleSp< external_space_point_t >::clear(), Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::compatBottomSP, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::compatTopSP, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::curvatures, i, Acts::if(), Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::impactParameters, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::linCircleBottom, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::linCircleTop, Acts::SeedFinderOptions::minHelixDiameter2, Acts::SeedFinderOptions::multipleScattering2, Acts::SeedFilterState::numQualitySeeds, Acts::SeedFinderOptions::pTPerHelixRadius, Acts::InternalSpacePoint< SpacePoint >::radius(), Acts::SeedFilterState::rMaxSeedConf, Acts::SeedFinderOptions::sigmapT2perRadius, Acts::Experimental::detail::BlueprintHelper::sort(), Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::spacePointData, filter::state, t, Acts::SeedFinder< external_spacepoint_t, platform_t >::SeedingState::topSpVec, Acts::InternalSpacePoint< SpacePoint >::varianceR(), Acts::InternalSpacePoint< SpacePoint >::varianceZ(), Acts::InternalSpacePoint< SpacePoint >::x(), Acts::xyzCoordinateCheck(), Acts::InternalSpacePoint< SpacePoint >::y(), Acts::InternalSpacePoint< SpacePoint >::z(), and Acts::SeedFilterState::zOrigin.

+ Here is the call graph for this function:

template<typename external_spacepoint_t, typename platform_t >
template<Acts::SpacePointCandidateType candidateType, typename out_range_t >
void Acts::SeedFinder< external_spacepoint_t, platform_t >::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 float  uIP,
const float  uIP2,
const float  cosPhiM,
const float  sinPhiM 
) const
inlineprivate

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

Parameters
spacePointDataobject containing the spacepoint data
optionsfrequently changing configuration (like beam position)
gridspacepoint grid
otherSPsNeighboursinner or outer space points to be used in the dublet
mediumSPspace point candidate to be used as middle SP in a seed
linCircleVecvector containing inner or outer SP parameters after reference frame transformation to the u-v space
outVecOutput object containing top or bottom SPs that are compatible with a certain middle SPs
deltaRMinSPminimum allowed r-distance between dublet components
deltaRMaxSPmaximum allowed r-distance between dublet components
uIPminus one over radius of middle SP
uIP2square of uIP
cosPhiMratio between middle SP x position and radius
sinPhiMratio between middle SP y position and radius

Definition at line 198 of file SeedFinder.ipp.

View newest version in sPHENIX GitHub at line 198 of file SeedFinder.ipp

References Acts::detail::Grid< T, Axes >::at(), physmon_track_finding_ttbar::deltaR, physmon_track_finding_ttbar::impactMax, Acts::SeedFinderOptions::minHelixDiameter2, Acts::InternalSpacePoint< SpacePoint >::radius(), Acts::SpacePointData::setDeltaR(), Acts::InternalSpacePoint< SpacePoint >::varianceR(), Acts::InternalSpacePoint< SpacePoint >::varianceZ(), 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, typename platform_t = void*>
SeedFinder<external_spacepoint_t, platform_t>& Acts::SeedFinder< external_spacepoint_t, platform_t >::operator= ( const SeedFinder< external_spacepoint_t, platform_t > &  )
default

Member Data Documentation

template<typename external_spacepoint_t, typename platform_t = void*>
Acts::SeedFinderConfig<external_spacepoint_t> Acts::SeedFinder< external_spacepoint_t, platform_t >::m_config
private

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