Skip to content

Commit

Permalink
refactor: configurable variables in seed confirmation (#1639)
Browse files Browse the repository at this point in the history
This PR moves some variables related to seed confirmation from `seedFilterConfig` to `seedConfirmationRangeConfig` and makes them configurable in python
  • Loading branch information
LuisFelipeCoelho committed Oct 31, 2022
1 parent 5b802fc commit dad2af9
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 12 deletions.
8 changes: 8 additions & 0 deletions Core/include/Acts/Seeding/SeedConfirmationRangeConfig.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,19 @@ struct SeedConfirmationRangeConfig {
// compatible top required
float rMaxSeedConf =
std::numeric_limits<float>::max(); // Acts::UnitConstants::mm

// number of compatible top SPs of seed if bottom radius is larger than
// rMaxSeedConf
size_t nTopForLargeR = 0;
// number of compatible top SPs of seed if bottom radius is smaller than
// rMaxSeedConf
size_t nTopForSmallR = 0;

// minimum radius for bottom SP in seed confirmation
float seedConfMinBottomRadius = 60. * Acts::UnitConstants::mm;
// maximum zOrigin in seed confirmation
float seedConfMaxZOrigin = 150. * Acts::UnitConstants::mm;
// minimum impact parameter for seed confirmation
float minImpactSeedConf = 1. * Acts::UnitConstants::mm;
};
} // namespace Acts
24 changes: 21 additions & 3 deletions Core/include/Acts/Seeding/SeedFilter.ipp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,23 @@ void SeedFilter<external_spacepoint_t>::filterSeeds_2SpFixed(
std::vector<std::pair<
float, std::unique_ptr<const InternalSeed<external_spacepoint_t>>>>&
outCont) const {
// seed confirmation
SeedConfirmationRangeConfig seedConfRange;
if (m_cfg.seedConfirmation) {
// check if bottom SP is in the central or forward region
seedConfRange =
(bottomSP.z() > m_cfg.centralSeedConfirmationRange.zMaxSeedConf ||
bottomSP.z() < m_cfg.centralSeedConfirmationRange.zMinSeedConf)
? m_cfg.forwardSeedConfirmationRange
: m_cfg.centralSeedConfirmationRange;
// set the minimum number of top SP depending on whether the bottom SP is
// in the central or forward region
seedFilterState.nTopSeedConf =
bottomSP.radius() > seedConfRange.rMaxSeedConf
? seedConfRange.nTopForLargeR
: seedConfRange.nTopForSmallR;
}

size_t maxWeightSeedIndex = 0;
bool maxWeightSeed = false;
float weightMax = -std::numeric_limits<float>::max();
Expand Down Expand Up @@ -133,10 +150,11 @@ void SeedFilter<external_spacepoint_t>::filterSeeds_2SpFixed(
(seedFilterState.numQualitySeeds and deltaSeedConf == 0)) {
continue;
}
bool seedRangeCuts = bottomSP.radius() < m_cfg.seedConfMinBottomRadius ||
std::abs(zOrigin) > m_cfg.seedConfMaxZOrigin;
bool seedRangeCuts =
bottomSP.radius() < seedConfRange.seedConfMinBottomRadius ||
std::abs(zOrigin) > seedConfRange.seedConfMaxZOrigin;
if (seedRangeCuts and deltaSeedConf == 0 and
impact > m_cfg.minImpactSeedConf) {
impact > seedConfRange.minImpactSeedConf) {
continue;
}

Expand Down
9 changes: 0 additions & 9 deletions Core/include/Acts/Seeding/SeedFilterConfig.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,6 @@ struct SeedFilterConfig {
SeedConfirmationRangeConfig centralSeedConfirmationRange;
// contains parameters for forward seed confirmation
SeedConfirmationRangeConfig forwardSeedConfirmationRange;
// minimum radius for bottom SP in seed confirmation
float seedConfMinBottomRadius = 60. * Acts::UnitConstants::mm;
// maximum zOrigin in seed confirmation
float seedConfMaxZOrigin = 150. * Acts::UnitConstants::mm;
// minimum impact parameter for seed confirmation
float minImpactSeedConf = 1. * Acts::UnitConstants::mm;

// maximum number of lower quality seeds in seed confirmation
int maxSeedsPerSpMConf = std::numeric_limits<int>::max();
Expand All @@ -76,9 +70,6 @@ struct SeedFilterConfig {
SeedFilterConfig config = *this;
config.deltaRMin /= 1_mm;
config.deltaInvHelixDiameter /= 1. / 1_mm;
config.seedConfMinBottomRadius /= 1_mm;
config.seedConfMaxZOrigin /= 1_mm;
config.minImpactSeedConf /= 1_mm;

return config;
}
Expand Down
6 changes: 6 additions & 0 deletions Examples/Python/python/acts/examples/itk.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,13 +314,19 @@ def itkSeedingAlgConfig(inputSpacePointsType):
rMaxSeedConf=140 * u.mm,
nTopForLargeR=1,
nTopForSmallR=2,
seedConfMinBottomRadius=60.0 * u.mm,
seedConfMaxZOrigin=150.0 * u.mm,
minImpactSeedConf=1.0 * u.mm,
) # contains parameters for seed confirmation
forwardSeedConfirmationRange = acts.SeedConfirmationRangeConfig(
zMinSeedConf=-3000 * u.mm,
zMaxSeedConf=3000 * u.mm,
rMaxSeedConf=140 * u.mm,
nTopForLargeR=1,
nTopForSmallR=2,
seedConfMinBottomRadius=60.0 * u.mm,
seedConfMaxZOrigin=150.0 * u.mm,
minImpactSeedConf=1.0 * u.mm,
)
compatSeedWeight = 100
curvatureSortingInFilter = True
Expand Down
3 changes: 3 additions & 0 deletions Examples/Python/src/TrackFinding.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ void addTrackFinding(Context& ctx) {
ACTS_PYTHON_MEMBER(rMaxSeedConf);
ACTS_PYTHON_MEMBER(nTopForLargeR);
ACTS_PYTHON_MEMBER(nTopForSmallR);
ACTS_PYTHON_MEMBER(seedConfMinBottomRadius);
ACTS_PYTHON_MEMBER(seedConfMaxZOrigin);
ACTS_PYTHON_MEMBER(minImpactSeedConf);
ACTS_PYTHON_STRUCT_END();
patchKwargsConstructor(c);
}
Expand Down

0 comments on commit dad2af9

Please sign in to comment.