Belle II Software  release-08-01-10
QuadTreeNode< AX, AY, AItem > Class Template Reference

Class which holds quadtree structure. More...

#include <QuadTreeNode.h>

Collaboration diagram for QuadTreeNode< AX, AY, AItem >:

Public Types

using This = QuadTreeNode< AX, AY, AItem >
 Type of this class.
 
using XSpan = std::array< AX, 2 >
 Type for a span in the X direction that is covered by the tree.
 
using YSpan = std::array< AY, 2 >
 Type for a span in the Y direction that is covered by the tree.
 
using XBinBounds = std::array< AX, 4 >
 Type to store the minimum and maximum of the two bins in X direction.
 
using YBinBounds = std::array< AY, 4 >
 Type to store the minimum and maximum of the two bins in Y direction.
 
using Children = std::vector< This >
 Type of the child node structure for this node.
 

Public Member Functions

 QuadTreeNode (XSpan xSpan, YSpan ySpan, int level, This *parent)
 Constructor setting up the potential division points. More...
 
void insertItem (AItem *item)
 Insert item into node.
 
void reserveItems (int nItems)
 Reserve memory for holding items.
 
std::vector< AItem * > & getItems ()
 Get items from node.
 
int getNItems () const
 Check if the node passes threshold on number of hits.
 
void clearItems ()
 Clear items which the node holds.
 
ChildrengetChildren ()
 Returns the children structure of this node.
 
void clearChildren ()
 Clear items which the node holds and destroy all children below this node. More...
 
int getLevel () const
 Returns level of the node in tree (i.e., how much ancestors the node has)
 
bool checkFilled () const
 Check whether node has been processed, i.e. More...
 
void setFilled ()
 Set status of node to "filled" (children nodes has been filled)
 
ThisgetParent () const
 Return pointer to the parent of the node.
 
constexpr int getXNbins () const
 Get number of bins in "Theta" direction.
 
AX getXMin () const
 Get minimal "Theta" value of the node.
 
AX getXMax () const
 Get maximal "Theta" value of the node.
 
AX getXBinWidth (int iBin)
 Getter for the width of the iBin bin in "Theta" direction.
 
AX getXLowerBound (int iBin) const
 Get lower "Theta" value of given bin.
 
AX getXUpperBound (int iBin) const
 Get upper "Theta" value of given bin.
 
constexpr int getYNbins () const
 Get number of bins in "r" direction.
 
AY getYMin () const
 Get minimal "r" value of the node.
 
AY getYMax () const
 Get maximal "r" value of the node.
 
AY getYBinWidth (int iBin)
 Getter for the width of the iBin bin in "r" direction.
 
AY getYLowerBound (int iBin) const
 Get lower "r" value of given bin.
 
AY getYUpperBound (int iBin) const
 Get upper "r" value of given bin.
 

Private Attributes

XBinBounds m_xBinBounds
 bins range on theta
 
YBinBounds m_yBinBounds
 bins range on r
 
int m_level
 Level of node in the tree.
 
Thism_parent
 Pointer to the parent node.
 
std::vector< AItem * > m_items
 Vector of items which belongs to the node.
 
std::vector< Thism_children
 Pointers to the children nodes.
 
bool m_filled
 Is the node has been filled with items.
 

Detailed Description

template<typename AX, typename AY, class AItem>
class Belle2::TrackFindingCDC::QuadTreeNode< AX, AY, AItem >

Class which holds quadtree structure.

Template Parameters
AXtype of the X-axis variable
AYtype of the Y-axis variable
AItemtype of the objects which are filled into QuadTree

Definition at line 29 of file QuadTreeNode.h.

Constructor & Destructor Documentation

◆ QuadTreeNode()

QuadTreeNode ( XSpan  xSpan,
YSpan  ySpan,
int  level,
This parent 
)
inline

Constructor setting up the potential division points.

Cppcheck may warn to pass the spans by reference here, however this would come at performance penalty.

Definition at line 57 of file QuadTreeNode.h.

58  : m_xBinBounds {
59  xSpan[0],
60  xSpan[0] + (xSpan[1] - xSpan[0]) / 2,
61  xSpan[1] - (xSpan[1] - xSpan[0]) / 2,
62  xSpan[1]
63  }
64  , m_yBinBounds(
65  {
66  ySpan[0],
67  ySpan[0] + (ySpan[1] - ySpan[0]) / 2,
68  ySpan[1] - (ySpan[1] - ySpan[0]) / 2,
69  ySpan[1]
70  })
71  , m_level(level)
72  , m_parent(level > 0 ? parent : nullptr)
73  , m_filled(false)
74  {
75  B2ASSERT("QuadTree datastructure only supports levels < 255", level < 255);
76  }
bool m_filled
Is the node has been filled with items.
Definition: QuadTreeNode.h:240
YBinBounds m_yBinBounds
bins range on r
Definition: QuadTreeNode.h:225
int m_level
Level of node in the tree.
Definition: QuadTreeNode.h:228
XBinBounds m_xBinBounds
bins range on theta
Definition: QuadTreeNode.h:222
This * m_parent
Pointer to the parent node.
Definition: QuadTreeNode.h:231

Member Function Documentation

◆ checkFilled()

bool checkFilled ( ) const
inline

Check whether node has been processed, i.e.

children nodes has been filled

Definition at line 132 of file QuadTreeNode.h.

◆ clearChildren()

void clearChildren ( )
inline

Clear items which the node holds and destroy all children below this node.

This method must only be called on the root node, for fast QuadTree reusage

Definition at line 118 of file QuadTreeNode.h.


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