Analysis Software
Documentation for sPHENIX simulation software
|
#include <acts/blob/sPHENIX/Core/include/Acts/Seeding/SeedFinderOrthogonal.hpp>
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_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. | |
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. | |
Definition at line 31 of file SeedFinderOrthogonal.hpp.
View newest version in sPHENIX GitHub at line 31 of file SeedFinderOrthogonal.hpp
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
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
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
|
private |
Enumeration of the different dimensions in which we can apply cuts.
Definition at line 138 of file SeedFinderOrthogonal.hpp.
View newest version in sPHENIX GitHub at line 138 of file SeedFinderOrthogonal.hpp
Acts::SeedFinderOrthogonal< external_spacepoint_t >::SeedFinderOrthogonal | ( | const Acts::SeedFinderOrthogonalConfig< external_spacepoint_t > & | config | ) |
Construct a new orthogonal seed finder.
config | The 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.
|
default |
Destroy the orthogonal seed finder object.
|
default |
|
delete |
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.
input_container_t | The type of the input spacepoint container. |
output_container_t | The type of the output seed container. |
options | frequently changing configuration (like beam position) |
spacePoints | The input spacepoints from which to create seeds. |
out_cont | The output container to write seeds to. |
extract_coordinates | User-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().
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.
input_container_t | The type of the input spacepoint container. |
options | frequently changing configuration (like beam position) |
spacePoints | The input spacepoints from which to create seeds. |
extract_coordinates | User-defined function for extracting global position and covariance of the external space point |
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.
|
private |
Create a k-d tree from a set of spacepoints.
spacePoints | The spacepoints to create a tree from. |
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().
|
private |
Filter potential candidate pairs, and output seeds into an iterator.
options | frequently changing configuration (like beam position) |
middle | The (singular) middle spacepoint. |
bottom | The (vector of) candidate bottom spacepoints. |
top | The (vector of) candidate top spacepoints. |
seedFilterState | holds quantities used in seed filter |
candidates_collector | The container to write the resulting seed candidates to. |
spacePointData | Auxiliary 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.
|
default |
|
private |
Search for seeds starting from a given middle space point.
options | frequently changing configuration (like beam position) |
NDims | Number of dimensions for our spatial embedding (probably 3). |
output_container_t | Type of the output container. |
tree | The k-d tree to use for searching. |
out_cont | The container write output seeds to. |
middle_p | The middle spacepoint to find seeds for. |
spacePointData | Aux 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().
|
private |
Check whether two spacepoints form a valid tuple.
This method checks whether the cuts that we have for pairs of space points hold.
options | frequently changing configuration (like beam position) |
low | The lower spacepoint. |
high | The upper spacepoint. |
isMiddleInverted | If middle spacepoint is in the negative z region |
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().
|
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.
high | The upper spacepoint to find a partner for. |
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.
|
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.
low | The lower spacepoint to find a partner for. |
Definition at line 23 of file SeedFinderOrthogonal.ipp.
View newest version in sPHENIX GitHub at line 23 of file SeedFinderOrthogonal.ipp
|
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
|
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