Belle II Software
release-08-01-10
|
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 densly populared is aquired. 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 setted 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.