Belle II Software  release-08-01-10
BoxDivisionHoughTree< AItemPtr, AHoughBox, divisions > Class Template Reference

A fast hough algorithm with rectangular boxes, which are split linearly by a fixed number of divisions in each coordinate up to a maximal level. More...

#include <BoxDivisionHoughTree.h>

Inheritance diagram for BoxDivisionHoughTree< AItemPtr, AHoughBox, divisions >:
Collaboration diagram for BoxDivisionHoughTree< AItemPtr, AHoughBox, divisions >:

Public Types

using HoughBox = AHoughBox
 Type of the box in the hough space.
 
using BoxDivision = SectoredLinearDivision< HoughBox, divisions... >
 Type of the box division strategy.
 
using HoughTree = WeightedFastHoughTree< AItemPtr, HoughBox, BoxDivision >
 Type of the fast hough tree structure.
 
template<size_t I>
using Type = typename HoughBox::template Type< I >
 Type of the coordinate I.
 
template<class T >
using HasType = typename HoughBox::template HasType< T >
 Predicate that the given type is indeed a coordinate of the hough space.
 
template<class T >
using TypeIndex = typename HoughBox::template TypeIndex< T >
 Function to get the coordinate index from its type.
 
template<size_t I>
using Width = typename HoughBox::template Width< I >
 Type of the width in coordinate I.
 
using Node = typename HoughTree::Node
 Type of the nodes used in the tree for the search.
 

Public Member Functions

 BoxDivisionHoughTree (int maxLevel, int sectorLevelSkip=0)
 Constructor using the given maximal level.
 
size_t getDivision (size_t i) const
 Getter the number of divisions at each level for coordinate index I.
 
template<size_t I>
void constructArray (double lowerBound, double upperBound, Width< I > nBinOverlap=0, Width< I > nBinWidth=0)
 Construct the discrete value array at coordinate index I. More...
 
template<size_t I>
void assignArray (Array< I > array, Width< I > overlap=0)
 Provide an externally constructed array by coordinate index.
 
template<class T >
std::enable_if_t< HasType< T >::value, void > assignArray (Array< TypeIndex< T >::value > array, Width< TypeIndex< T >::value > overlap=0)
 Provide an externally constructed array by coordinate type.
 
void initialize ()
 Initialise the algorithm by constructing the hough tree from the parameters.
 
template<class AItemPtrs >
void seed (const AItemPtrs &items)
 Prepare the leave finding by filling the top node with given hits.
 
void fell ()
 Terminates the processing by striping all hit information from the tree.
 
void raze ()
 Release all memory that the tree aquired during the runs.
 
HoughTreegetTree () const
 Getter for the tree used in the search in the hough plane.
 
int getMaxLevel () const
 Getter for the currently set maximal level.
 
void setMaxLevel (int maxLevel)
 Setter maximal level of the hough tree.
 
int getSectorLevelSkip () const
 Getter for number of levels to skip in first level to form a finer sectored hough space.
 
void setSectorLevelSkip (int sectorLevelSkip)
 Setter for number of levels to skip in first level to form a finer sectored hough space.
 
template<size_t I>
const Array< I > & getArray () const
 Getter for the array of discrete value for coordinate I.
 

Private Types

template<size_t I>
using Array = typename Type< I >::Array
 Type of the discrete value array to coordinate index I.
 
using Arrays = TupleGenerateN< Array, sizeof...(divisions)>
 Tuple type of the discrete value arrays.
 

Private Member Functions

template<size_t... Is>
HoughBox constructHoughPlaneImpl (const std::index_sequence< Is... > &is)
 Construct the box of the top node of the tree. Implementation unroling the indices.
 
HoughBox constructHoughPlane ()
 Construct the box of the top node of the tree.
 

Private Attributes

int m_maxLevel
 Number of the maximum tree level.
 
int m_sectorLevelSkip
 Number of levels to skip in first level to form a finer sectored hough space.
 
const std::array< size_t, sizeof ...(divisions)> m_divisions = {{divisions ...}}
 Array of the number of divisions at each level.
 
HoughBox::Delta m_overlaps
 An tuple of division overlaps in each coordinate.
 
Arrays m_arrays
 A tuple of value arrays providing the memory for the discrete bin bounds.
 
std::unique_ptr< HoughTreem_houghTree = nullptr
 Dynamic hough tree structure traversed in the leaf search.
 

Detailed Description

template<class AItemPtr, class AHoughBox, size_t ... divisions>
class Belle2::TrackFindingCDC::BoxDivisionHoughTree< AItemPtr, AHoughBox, divisions >

A fast hough algorithm with rectangular boxes, which are split linearly by a fixed number of divisions in each coordinate up to a maximal level.

Definition at line 34 of file BoxDivisionHoughTree.h.

Member Function Documentation

◆ constructArray()

void constructArray ( double  lowerBound,
double  upperBound,
Width< I >  nBinOverlap = 0,
Width< I >  nBinWidth = 0 
)
inline

Construct the discrete value array at coordinate index I.

This function is only applicable for discrete axes. For continuous axes assignArray should be call with an array containing only the lower and upper bound of the axes range and an optional overlap.

Parameters
lowerBoundLower bound of the value range
upperBoundUpper bound of the value range
nBinOverlapOverlap of neighboring bins. Default is no overlap. Usuallly this is counted in number of discrete values
nBinWidthWidth of the bins at lowest level. Default is width of 1. Usually this is counted in numbers of discrete values

Definition at line 104 of file BoxDivisionHoughTree.h.


The documentation for this class was generated from the following file: