Belle II Software development
|
Factory object that constructs sub boxes from a given box with optional overlaps. More...
#include <SectoredLinearDivision.h>
Public Member Functions | |
SectoredLinearDivision (const typename ABox::Delta &overlaps=typename ABox::Delta(), int sectorLevelSkip=0) | |
Initialise the sub box factory with specific overlaps. | |
template<class ANode > | |
std::vector< ABox > | operator() (const ANode &node) |
Factory method to construct the subboxes with overlap from the given box. | |
template<std::size_t... Is> | |
std::vector< ABox > | makeSubBoxes (const ABox &box, std::index_sequence< Is... >) |
Make all subboxs with overlap of the given box. | |
template<std::size_t... Is> | |
ABox | makeSubBox (const ABox &box, std::size_t globalISubBox, std::index_sequence< Is... >) |
Make the subbox with overlaps of the given box at global index. | |
Static Public Attributes | |
static const std::size_t | s_nSubBoxes = Product<divisions...>::value |
Number of sub boxes produced by this factory facility. | |
Private Attributes | |
ABox::Delta | m_overlaps |
Custom overlaps of the bounds at each division for each dimension. | |
int | m_sectorLevelSkip |
Number of levels to be skipped to form the finer binning at level 1. | |
Static Private Attributes | |
static constexpr std::size_t | s_divisions [sizeof...(divisions)] = {divisions...} |
Array of the number of divisions for each dimension. | |
Factory object that constructs sub boxes from a given box with optional overlaps.
In contrast to the bare LinearDivsion this division strategy may introduce a finer division on the first level leading to finer 'sectors' to be searched from the start. It effectively skips a number of levels a yields the binning further down the usual division level as level 1.
In this way some repeated computations in the first levels are abolished and a better overview which part of the hough space is more densely populated is acquired. The latter means that a better search space prioritisation can be expected compared to deciding the priority from coarse first level nodes.
Note since the tree using this division strategy is generally unaware of the fast forward the division granularity and the level number have a different relation. Essentially the sectorLevelSkip parameter set here has to be added to the level number to know at which granularity one currently is in the tree. Alternatively the search depth can be reduced by sectorLevelSkip, which is what we do in the application.
Definition at line 46 of file SectoredLinearDivision.h.
|
inlineexplicit |
Initialise the sub box factory with specific overlaps.
Definition at line 58 of file SectoredLinearDivision.h.
|
inline |
Make the subbox with overlaps of the given box at global index.
Definition at line 100 of file SectoredLinearDivision.h.
|
inline |
Make all subboxs with overlap of the given box.
Definition at line 93 of file SectoredLinearDivision.h.
|
inline |
Factory method to construct the subboxes with overlap from the given box.
Definition at line 68 of file SectoredLinearDivision.h.
|
private |
Custom overlaps of the bounds at each division for each dimension.
Definition at line 115 of file SectoredLinearDivision.h.
|
private |
Number of levels to be skipped to form the finer binning at level 1.
Definition at line 118 of file SectoredLinearDivision.h.
|
staticconstexprprivate |
Array of the number of divisions for each dimension.
Definition at line 54 of file SectoredLinearDivision.h.
|
static |
Number of sub boxes produced by this factory facility.
Definition at line 50 of file SectoredLinearDivision.h.