Belle II Software  release-08-01-10
SimpleBoxDivisionHoughTree3D< AHitPtr, AInBoxAlgorithm, divisionX, divisionY, divisionZ > Class Template Reference

Convenience class for the typical usage-case: A box divisioned hough tree with maximum and minimum values in both directions. More...

#include <SimpleBoxDivisionHoughTree3D.h>

Inheritance diagram for SimpleBoxDivisionHoughTree3D< AHitPtr, AInBoxAlgorithm, divisionX, divisionY, divisionZ >:
Collaboration diagram for SimpleBoxDivisionHoughTree3D< AHitPtr, AInBoxAlgorithm, divisionX, divisionY, divisionZ >:

Public Types

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

Public Member Functions

 SimpleBoxDivisionHoughTree3D (float maximumX, float maximumY, float maximumZ, Width< 0 > overlapX=0, Width< 1 > overlapY=0, Width< 2 > overlapZ=0)
 Constructor using the given maximal level.
 
void initialize ()
 Initialize the tree with the given values.
 
std::vector< std::pair< HoughBox, std::vector< AHitPtr > > > findSingleBest (const Weight &minWeight)
 Find only the leaf with the highest weight (~= number of items)
 
void writeDebugInfoToFile (const std::string &filename)
 Write debug information into a ROOT file; not implemented.
 
void drawDebugPlot (const std::vector< CDCRecoHit3D > &allHits, const std::vector< CDCRecoHit3D > &foundHits, const typename AInBoxAlgorithm::HoughBox &node)
 Draws found hits and node boundaries FIXME this is a copy-paste from DebugableSimpleBoxDivisionHoughTree It should be possible to unify it with this tree, but not sure of does worth it.
 
float getMaximumX () const
 Return the maximum value in x direction.
 
float getMaximumY () const
 Return the maximum value in y direction.
 
float getMaximumZ () const
 Return the maximum value in Z direction.
 
Width< 0 > getOverlapX () const
 Return the overlap in x direction.
 
Width< 1 > getOverlapY () const
 Return the overlap in y direction.
 
Width< 2 > getOverlapZ () const
 Return the overlap in y direction.
 
size_t getDivision (size_t i) const
 Getter the number of divisions at each level for coordinate index 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...
 
void assignArray (Array< I > array, Width< I > overlap=0)
 Provide an externally constructed array by coordinate index.
 
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 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.
 
const Array< I > & getArray () const
 Getter for the array of discrete value for coordinate I.
 

Private Types

using Super = BoxDivisionHoughTree< AHitPtr, typename AInBoxAlgorithm::HoughBox, divisionX, divisionY, divisionZ >
 The Super class.
 
using HoughBox = typename AInBoxAlgorithm::HoughBox
 The HoughBox we use.
 
template<size_t I>
using Width = typename HoughBox::template Width< I >
 Type of the width in coordinate 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

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

float m_maximumX = 0
 The maximum value in X direction.
 
float m_maximumY = 0
 The maximum value in y direction.
 
float m_maximumZ = 0
 The maximum value in z direction.
 
Width< 0 > m_overlapX = 0
 The overlap in X direction.
 
Width< 1 > m_overlapY = 0
 The overlap in Y direction.
 
Width< 2 > m_overlapZ = 0
 The overlap in Y direction.
 
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
 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
 Dynamic hough tree structure traversed in the leaf search.
 

Detailed Description

template<class AHitPtr, class AInBoxAlgorithm, size_t divisionX, size_t divisionY, size_t divisionZ>
class Belle2::TrackFindingCDC::SimpleBoxDivisionHoughTree3D< AHitPtr, AInBoxAlgorithm, divisionX, divisionY, divisionZ >

Convenience class for the typical usage-case: A box divisioned hough tree with maximum and minimum values in both directions.

This time in 3D

Definition at line 27 of file SimpleBoxDivisionHoughTree3D.h.

Member Function Documentation

◆ constructArray()

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

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: