EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
|
Classes | |
struct | SpacePoint |
Helper struct describing a spacepoint on the device. More... | |
struct | DubletCounts |
Helper struct summarising the results of the dublet search. More... | |
struct | LinCircle |
Helper struct holding the linearly transformed coordinates of spacepoints. More... | |
struct | Triplet |
Structure used in the CUDA-based triplet finding. More... | |
class | DeviceArrayDeleter |
Class performing the deletion of a CUDA device memory array. More... | |
class | HostArrayDeleter |
Class performing the deletion of pinned host memory. More... | |
Functions | |
DubletCounts | countDublets (std::size_t maxBlockSize, std::size_t nMiddleSP, const device_array< unsigned int > &middleBottomCounts, const device_array< unsigned int > &middleTopCounts) |
void | findDublets (std::size_t maxBlockSize, std::size_t nBottomSPs, const device_array< SpacePoint > &bottomSPs, std::size_t nMiddleSPs, const device_array< SpacePoint > &middleSPs, std::size_t nTopSPs, const device_array< SpacePoint > &topSPs, float deltaRMin, float deltaRMax, float cotThetaMax, float collisionRegionMin, float collisionRegionMax, device_array< unsigned int > &middleBottomCounts, device_array< std::size_t > &middleBottomDublets, device_array< unsigned int > &middleTopCounts, device_array< std::size_t > &middleTopDublets) |
std::vector< std::vector < Triplet > > | findTriplets (std::size_t maxBlockSize, const DubletCounts &dubletCounts, const SeedFilterConfig &seedConfig, const TripletFilterConfig &filterConfig, std::size_t nBottomSPs, const device_array< SpacePoint > &bottomSPs, std::size_t nMiddleSPs, const device_array< SpacePoint > &middleSPs, std::size_t nTopSPs, const device_array< SpacePoint > &topSPs, const device_array< unsigned int > &middleBottomCounts, const device_array< std::size_t > &middleBottomDublets, const device_array< unsigned int > &middleTopCounts, const device_array< std::size_t > &middleTopDublets, float maxScatteringAngle2, float sigmaScattering, float minHelixDiameter2, float pT2perRadius, float impactMax) |
Namespace holding some implementation detail types that should not be used directly in client code.
DubletCounts Acts::Cuda::Details::countDublets | ( | std::size_t | maxBlockSize, |
std::size_t | nMiddleSP, | ||
const device_array< unsigned int > & | middleBottomCounts, | ||
const device_array< unsigned int > & | middleTopCounts | ||
) |
Calculate summary values for the dublet search
After the dublet search is done, we need to know some information about how many duplets were found exactly. As this information is necessary for the scheduing of the subsequent steps of the execution on the GPU. This function is used to collect this information
maxBlockSize | The maximum block size to use on the GPU |
nMiddleSP | The number of middle spacepoints for which the dublet reconstruction was run |
middleBottomCounts | The output from the Acts::Cuda::Details::findDublets (...) function with the same name |
middleTopCounts | The output from the Acts::Cuda::Details::findDublets (...) function with the same name |
Referenced by Acts::Cuda::SeedFinder< external_spacepoint_t >::createSeedsForGroup().
void Acts::Cuda::Details::findDublets | ( | std::size_t | maxBlockSize, |
std::size_t | nBottomSPs, | ||
const device_array< SpacePoint > & | bottomSPs, | ||
std::size_t | nMiddleSPs, | ||
const device_array< SpacePoint > & | middleSPs, | ||
std::size_t | nTopSPs, | ||
const device_array< SpacePoint > & | topSPs, | ||
float | deltaRMin, | ||
float | deltaRMax, | ||
float | cotThetaMax, | ||
float | collisionRegionMin, | ||
float | collisionRegionMax, | ||
device_array< unsigned int > & | middleBottomCounts, | ||
device_array< std::size_t > & | middleBottomDublets, | ||
device_array< unsigned int > & | middleTopCounts, | ||
device_array< std::size_t > & | middleTopDublets | ||
) |
Find all viable middle-bottom and middle-top dublets
This function is run as the first step in the seed finding, looking for viable middle-bottom and middle-top spacepoint pairs for the subsequent steps of the code.
Note that middleBottomCounts
and middleTopCounts
have type "unsigned int" instead of "std::size_t", because the GPU code needs to execute atomic operations on these arrays. And CUDA does not define such operations on std::size_t (i.e. unsigned long).
[in] | maxBlockSize | The maximum block size to use on the GPU |
[in] | nBottomSPs | The number of bottom spacepoints in bottomSPs |
[in] | bottomSPs | Properties of all of the bottom spacepoints |
[in] | nMiddleSPs | The number of middle spacepoints in middleSPs |
[in] | middleSPs | Properties of all of the middle spacepoints |
[in] | nTopSPs | The number of top spacepoints in topSPs |
[in] | topSPs | Properties of all of the top spacepoints |
[in] | deltaRMin | Configuration parameter from Acts::SeedfinderConfig |
[in] | deltaRMax | Configuration parameter from Acts::SeedfinderConfig |
[in] | cotThetaMax | Configuration parameter from Acts::SeedfinderConfig |
[in] | collisionRegionMin | Configuration parameter from Acts::SeedfinderConfig |
[in] | collisionRegionMax | Configuration parameter from Acts::SeedfinderConfig |
[out] | middleBottomCounts | 1-D array of the number of middle-bottom dublets found for each middle spacepoint |
[out] | middleBottomDublets | 2-D matrix of size nMiddleSPs x nBottomSPs , holding the bottom spacepoint indices for the identified middle-bottom dublets |
[out] | middleTopCounts | 1-D array of the number of middle-top dublets found for each middle spacepoint |
[out] | middleTopDublets | 2-D matrix of size nMiddleSPs x nTopSPs , holding the top spacepoint indices for the identified middle-top dublets |
Referenced by Acts::Cuda::SeedFinder< external_spacepoint_t >::createSeedsForGroup().
std::vector<std::vector<Triplet> > Acts::Cuda::Details::findTriplets | ( | std::size_t | maxBlockSize, |
const DubletCounts & | dubletCounts, | ||
const SeedFilterConfig & | seedConfig, | ||
const TripletFilterConfig & | filterConfig, | ||
std::size_t | nBottomSPs, | ||
const device_array< SpacePoint > & | bottomSPs, | ||
std::size_t | nMiddleSPs, | ||
const device_array< SpacePoint > & | middleSPs, | ||
std::size_t | nTopSPs, | ||
const device_array< SpacePoint > & | topSPs, | ||
const device_array< unsigned int > & | middleBottomCounts, | ||
const device_array< std::size_t > & | middleBottomDublets, | ||
const device_array< unsigned int > & | middleTopCounts, | ||
const device_array< std::size_t > & | middleTopDublets, | ||
float | maxScatteringAngle2, | ||
float | sigmaScattering, | ||
float | minHelixDiameter2, | ||
float | pT2perRadius, | ||
float | impactMax | ||
) |
Find all viable triplets from the provided spacepoint dublets
This function is used to find a "loosely selected" set of seed candidates that still need to be filtered through Acts::SeedFilter::filterSeeds_1SpFixed
before returning it to the user.
[in] | maxBlockSize | The maximum block size to use on the GPU |
[in] | dubletCounts | The output object from Acts::Cuda::Details::countDublets |
[in] | seedConfig | Configuration parameters for the triplet finding/filtering |
[in] | filterConfig | User provided settings (code...) for the triplet filtering |
[in] | nBottomSPs | The number of bottom spacepoints in bottomSPs |
[in] | bottomSPs | Properties of all of the bottom spacepoints |
[in] | nMiddleSPs | The number of middle spacepoints in middleSPs |
[in] | middleSPs | Properties of all of the middle spacepoints |
[in] | nTopSPs | The number of top spacepoints in topSPs |
[in] | topSPs | Properties of all of the top spacepoints |
[in] | middleBottomCounts | 1-D array of the number of middle-bottom dublets found for each middle spacepoint |
[in] | middleBottomDublets | 2-D matrix of size nMiddleSPs x nBottomSPs , holding the bottom spacepoint indices for the identified middle-bottom dublets |
[in] | middleTopCounts | 1-D array of the number of middle-top dublets found for each middle spacepoint |
[in] | middleTopDublets | 2-D matrix of size nMiddleSPs x nTopSPs , holding the top spacepoint indices for the identified middle-top dublets |
[in] | maxScatteringAngle2 | Configuration parameter from Acts::SeedfinderConfig |
[in] | sigmaScattering | Configuration parameter from Acts::SeedfinderConfig |
[in] | minHelixDiameter2 | Configuration parameter from Acts::SeedfinderConfig |
[in] | pT2perRadius | Configuration parameter from Acts::SeedfinderConfig |
[in] | impactMax | Configuration parameter from Acts::SeedfinderConfig |
Referenced by Acts::Cuda::SeedFinder< external_spacepoint_t >::createSeedsForGroup().