Belle II Software  release-08-01-10
Z0TanLambdaLegendre< AHitPointerType, AHitDecisionAlgorithm, z0Divisions, tanLambdaDivisions > Class Template Reference

Hough Tree for finding StereoHits using a templated class as the item type. More...

#include <Z0TanLambdaLegendre.h>

Inheritance diagram for Z0TanLambdaLegendre< AHitPointerType, AHitDecisionAlgorithm, z0Divisions, tanLambdaDivisions >:
Collaboration diagram for Z0TanLambdaLegendre< AHitPointerType, AHitDecisionAlgorithm, z0Divisions, tanLambdaDivisions >:

Public Types

using DecisionAlgorithm = AHitDecisionAlgorithm
 typedef of the templated AHitDecisionAlgorithm; used to reach methods defined in the algorithm e.g. debugLine, centerX, centerY etc.
 
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

 Z0TanLambdaLegendre ()
 Constructor using the given maximal level setting the maximal values.
 
void writeDebugInfoToFile (const std::string &filename)
 Write out some debug information to a ROOT file with the given name. More...
 
void drawDebugPlot (const std::vector< CDCRecoHit3D > &allHits, const std::vector< CDCRecoHit3D > &foundHits, const typename AInBoxAlgorithm::HoughBox &node)
 Draw the results to a ROOT TCanvas.
 
void initialize ()
 Initialize the tree with the given values.
 
std::vector< std::pair< HoughBox, std::vector< AHitPtr > > > findSingleBest (const Weight &minWeight)
 Find only the leave with the highest weight = number of items.
 
float getMaximumX () const
 Return the maximum value in x direction.
 
float getMaximumY () const
 Return the maximum value in y direction.
 
Width< 0 > getOverlapX () const
 Return the overlap in x direction.
 
Width< 1 > getOverlapY () 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 = DebugableSimpleBoxDivisionHoughTree< AHitPointerType, AHitDecisionAlgorithm, z0Divisions, tanLambdaDivisions >
 Super type.
 
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

void fillAll ()
 Fill the tree till all nodes are touched once. More...
 
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.
 
Width< 0 > m_overlapX = 0
 The overlap in X direction.
 
Width< 1 > m_overlapY = 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 AHitPointerType, class AHitDecisionAlgorithm, size_t z0Divisions = 2, size_t tanLambdaDivisions = 2>
class Belle2::TrackFindingCDC::Z0TanLambdaLegendre< AHitPointerType, AHitDecisionAlgorithm, z0Divisions, tanLambdaDivisions >

Hough Tree for finding StereoHits using a templated class as the item type.

This implementation uses a templated decision algorithm and typical maximum values for z0 (+- 120) and s-z-slope (+- 75°) with (as default) 2 divisions for each step. This class is more or less only alias. The real algorithm can be found in SimpeBoxDivisionHoughTree.

Definition at line 28 of file Z0TanLambdaLegendre.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.

◆ fillAll()

void fillAll ( )
inlineprivateinherited

Fill the tree till all nodes are touched once.

This is not for finding results, but for debug reasons.

Definition at line 171 of file DebugableSimpleBoxDivisionHoughTree.h.

◆ writeDebugInfoToFile()

void writeDebugInfoToFile ( const std::string &  filename)
inlineinherited

Write out some debug information to a ROOT file with the given name.

This must be done before felling the tree. Attention: This will delete a ROOT file with the same name if already present.

Parameters
filenameThe ROOT filename.

Definition at line 42 of file DebugableSimpleBoxDivisionHoughTree.h.


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