Belle II Software development
|
Findlet for finding intersections of sinusoidal curves in the 2D Hough space by iteratively calling FastInterceptFinder2d. More...
#include <MultiHoughSpaceFastInterceptFinder.h>
Classes | |
struct | paircompare |
this sorting makes sure the clusters can be searched from bottom left of the HS to top right normally, a C++ array looks like a matrix: (0, 0 ) ... (maxX, 0 ) ... ... (0, maxY) ... (maxX, maxY) but for sorting we want it to be like regular coordinates (0, maxY) ... (maxX, maxY) ... ... (0, 0 ) ... (maxX, 0 ) By setting the offset to the maximum allowed number of cells (2^14) and simplifying (16384 - lhs.second) * 16384 + lhs.first < (16384 - rhs.second) * 16384 + rhs.first to (rhs.second - lhs.second) * 16384 < rhs.first - lhs.first we get the formula below More... | |
Public Types | |
using | IOTypes = std::tuple< AIOTypes... > |
Types that should be served to apply on invocation. | |
using | IOVectors = std::tuple< std::vector< AIOTypes >... > |
Vector types that should be served to apply on invocation. | |
Public Member Functions | |
MultiHoughSpaceFastInterceptFinder () | |
Find intercepts in the 2D Hough space. | |
void | exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) override |
Expose the parameters of the sub findlets. | |
void | initialize () override |
Create the store arrays. | |
void | apply (std::vector< VXDHoughState > &hits, std::vector< std::vector< VXDHoughState * > > &rawTrackCandidates) override |
Load in the prepared hits and create track candidates for further processing like hit filtering and fitting. | |
virtual std::string | getDescription () |
Brief description of the purpose of the concrete findlet. | |
virtual void | apply (ToVector< AIOTypes > &... ioVectors)=0 |
Main function executing the algorithm. | |
void | beginRun () override |
Receive and dispatch signal for the beginning of a new run. | |
void | beginEvent () override |
Receive and dispatch signal for the start of a new event. | |
void | endRun () override |
Receive and dispatch signal for the end of the run. | |
void | terminate () override |
Receive and dispatch Signal for termination of the event processing. | |
Protected Types | |
using | ToVector = typename ToVectorImpl< T >::Type |
Short hand for ToRangeImpl. | |
Protected Member Functions | |
void | addProcessingSignalListener (ProcessingSignalListener *psl) |
Register a processing signal listener to be notified. | |
int | getNProcessingSignalListener () |
Get the number of currently registered listeners. | |
Private Types | |
using | Super = TrackFindingCDC::Findlet< VXDHoughState, std::vector< VXDHoughState * > > |
Parent class. | |
typedef std::map< VxdID, std::vector< VxdID > > | friendSensorMap |
Map that contains the "friend" sensors for each SVD L6 sensor. | |
Private Member Functions | |
void | initializeSectorFriendMap () |
fill the map of friend sensors for each L6 sensor to | |
unsigned short | layerFilter (const std::bitset< 8 > &layer) |
layer filter, checks if at least hits from 3 layers are in a set of hits | |
void | fastInterceptFinder2d (const std::vector< VXDHoughState * > &hits, uint xmin, uint xmax, uint ymin, uint ymax, uint currentRecursion) |
find intercepts in the 2D Hough Space by recursively calling itself until no hits are assigned to a given Hough Space cell, or until the maximum number of recursions (m_maxRecursionLevel) is reached | |
void | FindHoughSpaceCluster () |
Find Hough Space clusters. | |
void | DepthFirstSearch (uint lastIndexX, uint lastIndexY) |
Perform depth first search recursive algorithm to find clusters in the Hough Space. | |
Private Attributes | |
HitSelector | m_HitSelector |
Use the friend map to just fill the hits in the acceptance region of the current L6 sensor into the m_currentSensorsHitList which is then used the Hough trafo track finding. | |
uint | m_maxRecursionLevel = 7 |
maximum number of recursive calls of fastInterceptFinder2d | |
uint | m_nAngleSectors = 256 |
number of sectors of the Hough Space on the horizontal axis | |
uint | m_nVerticalSectors = 256 |
number of sectors of the Hough Space on the vertical axis | |
double | m_verticalHoughSpaceSize = 0.25 |
vertical size of the Hough Space, defaults to the value for u-side | |
double | m_minimumX = -3.168 |
minimum x value of the Hough Space, defaults to the value for u-side | |
double | m_maximumX = 3.168 |
maximum x value of the Hough Space, defaults to the value for u-side | |
uint | m_MinimumHSClusterSize = 6 |
minimum cluster size of sectors belonging to intercepts in the Hough Space | |
uint | m_MaximumHSClusterSize = 100 |
maximum cluster size of sectors belonging to intercepts in the Hough Space | |
uint | m_MaximumHSClusterSizeX = 100 |
maximum cluster size in x of sectors belonging to intercepts in the Hough Space | |
uint | m_MaximumHSClusterSizeY = 100 |
maximum cluster size in y of sectors belonging to intercepts in the Hough Space | |
double | m_unitX = 0 |
HS unit size in x. | |
double | m_unitY = 0 |
HS unit size in y. | |
friendSensorMap | m_fullFriendMap |
friendMap for all the SVD L6 sensors | |
std::vector< VXDHoughState * > | m_currentSensorsHitList |
hits that are in the acceptance region (= on friend sensors) for the current L6 senosr | |
std::array< double, 16385 > | m_HSSinValuesLUT = {0} |
Look-Up-Tables for values as cache to speed up calculation sine values of the Hough Space sector boarder coordinates. | |
std::array< double, 16385 > | m_HSCosValuesLUT = {0} |
cosine values of the Hough Space sector boarder coordinates | |
std::array< double, 16384 > | m_HSCenterSinValuesLUT = {0} |
sine values of the Hough Space sector center coordinates | |
std::array< double, 16384 > | m_HSCenterCosValuesLUT = {0} |
cosine values of the Hough Space sector center coordinates | |
std::array< double, 16385 > | m_HSYLUT = {0} |
y values of the Hough Space sector boarders | |
std::array< double, 16384 > | m_HSYCenterLUT = {0} |
y values of the Hough Space sector centers | |
std::array< double, 16385 > | m_HSXLUT = {0} |
x values of the Hough Space sector boarders | |
std::array< double, 16384 > | m_HSXCenterLUT = {0} |
x values of the Hough Space sector centers | |
std::map< std::pair< uint, uint >, std::pair< int, std::vector< VXDHoughState * > >, paircompare > | m_activeSectors |
Map containing only active HS sectors, i.e. | |
uint | m_clusterCount = 0 |
count the clusters | |
uint | m_clusterSize = 0 |
size of the current cluster | |
std::pair< uint, uint > | m_clusterInitialPosition = std::make_pair(0, 0) |
start cell of the recursive cluster finding in the Hough Space | |
std::pair< int, int > | m_clusterCoG = std::make_pair(0, 0) |
center of gravity containing describing the current best track parameters in the Hough Space | |
std::vector< VXDHoughState * > | m_currentTrackCandidate |
the current track candidate | |
std::vector< std::vector< VXDHoughState * > > | m_trackCandidates |
vector containing track candidates, consisting of the found intersection values in the Hough Space | |
std::vector< ProcessingSignalListener * > | m_subordinaryProcessingSignalListeners |
References to subordinary signal processing listener contained in this findlet. | |
bool | m_initialized = false |
Flag to keep track whether initialization happened before. | |
bool | m_terminated = false |
Flag to keep track whether termination happened before. | |
std::string | m_initializedAs |
Name of the type during initialisation. | |
Findlet for finding intersections of sinusoidal curves in the 2D Hough space by iteratively calling FastInterceptFinder2d.
This is done 80 times for a subset of SVD sensors, one subset for each layer 6 sensor to reduce combinatorics in the Hough Space and to improve the purity of the found track candidates. The found track candidates are then clustered via a recursive search. Afterwards track candidates are formed and stored in the output vector.
Definition at line 35 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
Map that contains the "friend" sensors for each SVD L6 sensor.
Definition at line 40 of file MultiHoughSpaceFastInterceptFinder.h.
|
inherited |
|
inherited |
|
private |
Parent class.
Definition at line 37 of file MultiHoughSpaceFastInterceptFinder.h.
|
protectedinherited |
Find intercepts in the 2D Hough space.
Definition at line 22 of file MultiHoughSpaceFastInterceptFinder.cc.
|
protectedinherited |
Register a processing signal listener to be notified.
Definition at line 55 of file CompositeProcessingSignalListener.cc.
|
override |
Load in the prepared hits and create track candidates for further processing like hit filtering and fitting.
Definition at line 102 of file MultiHoughSpaceFastInterceptFinder.cc.
|
overridevirtualinherited |
Receive and dispatch signal for the start of a new event.
Reimplemented from ProcessingSignalListener.
Reimplemented in SpacePointTagger< Belle2::CKFToPXDResult, Belle2::PXDCluster >, SpacePointTagger< Belle2::CKFToSVDResult, Belle2::SVDCluster >, BaseEventTimeExtractor< RecoTrack * >, BaseEventTimeExtractor< TrackFindingCDC::CDCWireHit & >, SharingHitsMatcher< Belle2::TrackFindingCDC::CDCTrack, Belle2::TrackFindingCDC::CDCSegment2D >, MCSymmetric< BaseAxialSegmentPairFilter >, MCSymmetric< BaseFacetFilter >, MCSymmetric< BaseFacetRelationFilter >, MCSymmetric< BaseSegmentPairFilter >, MCSymmetric< BaseSegmentPairRelationFilter >, MCSymmetric< BaseSegmentRelationFilter >, MCSymmetric< BaseSegmentTripleFilter >, MCSymmetric< BaseSegmentTripleRelationFilter >, MCSymmetric< BaseTrackRelationFilter >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCFacet >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCWireHit, true >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegment2D >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCTrack >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentPair >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentTriple >, RecoTrackStorer, ROIFinder, and SVDHoughTracking.
Definition at line 31 of file CompositeProcessingSignalListener.cc.
|
overridevirtualinherited |
Receive and dispatch signal for the beginning of a new run.
Reimplemented from ProcessingSignalListener.
Reimplemented in LayerRelationFilter< AFilter >, FourHitFilter, QualityIndicatorFilter, ThreeHitFilter, TwoHitVirtualIPFilter, TwoHitVirtualIPQIFilter, RecoTrackStorer, ROIFinder, SpacePointLoaderAndPreparer, and TrackCandidateResultRefiner.
Definition at line 23 of file CompositeProcessingSignalListener.cc.
|
private |
Perform depth first search recursive algorithm to find clusters in the Hough Space.
lastIndexX | x-index of the last cell checked |
lastIndexY | y-index of the last cell checked |
Definition at line 331 of file MultiHoughSpaceFastInterceptFinder.cc.
|
overridevirtualinherited |
Receive and dispatch signal for the end of the run.
Reimplemented from ProcessingSignalListener.
Definition at line 39 of file CompositeProcessingSignalListener.cc.
|
overridevirtual |
Expose the parameters of the sub findlets.
Reimplemented from Findlet< VXDHoughState, std::vector< VXDHoughState * > >.
Definition at line 27 of file MultiHoughSpaceFastInterceptFinder.cc.
|
private |
find intercepts in the 2D Hough Space by recursively calling itself until no hits are assigned to a given Hough Space cell, or until the maximum number of recursions (m_maxRecursionLevel) is reached
hits | vector containing the hits that are used for track finding |
xmin | minimum x-index of the sub-Hough Space in the current recursion step |
xmax | maximum x-index of the sub-Hough Space in the current recursion step |
ymin | minimum y-index of the sub-Hough Space in the current recursion step |
ymax | maximum y-index of the sub-Hough Space in the current recursion step |
currentRecursion | current recursion step, has to be < m_maxRecursionLevel |
Definition at line 212 of file MultiHoughSpaceFastInterceptFinder.cc.
|
private |
Find Hough Space clusters.
Loop over all found sectors in m_SectorArray and then calls the DepthFirstSearch function to recursively find the clusters
Definition at line 298 of file MultiHoughSpaceFastInterceptFinder.cc.
|
inlinevirtualinherited |
|
protectedinherited |
Get the number of currently registered listeners.
Definition at line 60 of file CompositeProcessingSignalListener.cc.
|
overridevirtual |
Create the store arrays.
Reimplemented from CompositeProcessingSignalListener.
Definition at line 63 of file MultiHoughSpaceFastInterceptFinder.cc.
|
private |
fill the map of friend sensors for each L6 sensor to
Definition at line 136 of file MultiHoughSpaceFastInterceptFinder.cc.
|
inlineprivate |
layer filter, checks if at least hits from 3 layers are in a set of hits
layer | bitset containing information whether there as a hit in a layer |
Definition at line 66 of file MultiHoughSpaceFastInterceptFinder.h.
|
overridevirtualinherited |
Receive and dispatch Signal for termination of the event processing.
Reimplemented from ProcessingSignalListener.
Reimplemented in StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::HyperHough >, StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::QuadraticLegendre >, and StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::Z0TanLambdaLegendre >.
Definition at line 47 of file CompositeProcessingSignalListener.cc.
|
private |
Map containing only active HS sectors, i.e.
those with hits from enough layers contained in them. The keys are the indices of the HS cell, and the custom sort function above is used to sort the content. The value is a pair consisting of the (negative) number of layers hit in a given cell, and a vector containing the hit information of all hits that are contained in this cell. During cluster finding the first value of the value-pair will be assigned the current cluster number.
Definition at line 173 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
center of gravity containing describing the current best track parameters in the Hough Space
Definition at line 183 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
count the clusters
Definition at line 176 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
start cell of the recursive cluster finding in the Hough Space
Definition at line 181 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
size of the current cluster
Definition at line 178 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
hits that are in the acceptance region (= on friend sensors) for the current L6 senosr
Definition at line 129 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
the current track candidate
Definition at line 186 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
friendMap for all the SVD L6 sensors
Definition at line 126 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
Use the friend map to just fill the hits in the acceptance region of the current L6 sensor into the m_currentSensorsHitList which is then used the Hough trafo track finding.
Definition at line 59 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
cosine values of the Hough Space sector center coordinates
Definition at line 139 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
sine values of the Hough Space sector center coordinates
Definition at line 137 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
cosine values of the Hough Space sector boarder coordinates
Definition at line 135 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
Look-Up-Tables for values as cache to speed up calculation sine values of the Hough Space sector boarder coordinates.
Definition at line 133 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
x values of the Hough Space sector centers
Definition at line 147 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
x values of the Hough Space sector boarders
Definition at line 145 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
y values of the Hough Space sector centers
Definition at line 143 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
y values of the Hough Space sector boarders
Definition at line 141 of file MultiHoughSpaceFastInterceptFinder.h.
|
privateinherited |
Flag to keep track whether initialization happened before.
Definition at line 52 of file ProcessingSignalListener.h.
|
privateinherited |
Name of the type during initialisation.
Definition at line 58 of file ProcessingSignalListener.h.
|
private |
maximum cluster size of sectors belonging to intercepts in the Hough Space
Definition at line 113 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
maximum cluster size in x of sectors belonging to intercepts in the Hough Space
Definition at line 115 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
maximum cluster size in y of sectors belonging to intercepts in the Hough Space
Definition at line 117 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
maximum x value of the Hough Space, defaults to the value for u-side
Definition at line 108 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
maximum number of recursive calls of fastInterceptFinder2d
Definition at line 94 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
minimum cluster size of sectors belonging to intercepts in the Hough Space
Definition at line 111 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
minimum x value of the Hough Space, defaults to the value for u-side
Definition at line 106 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
number of sectors of the Hough Space on the horizontal axis
Definition at line 97 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
number of sectors of the Hough Space on the vertical axis
Definition at line 100 of file MultiHoughSpaceFastInterceptFinder.h.
|
privateinherited |
References to subordinary signal processing listener contained in this findlet.
Definition at line 52 of file CompositeProcessingSignalListener.h.
|
privateinherited |
Flag to keep track whether termination happened before.
Definition at line 55 of file ProcessingSignalListener.h.
|
private |
vector containing track candidates, consisting of the found intersection values in the Hough Space
Definition at line 189 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
HS unit size in x.
Definition at line 121 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
HS unit size in y.
Definition at line 123 of file MultiHoughSpaceFastInterceptFinder.h.
|
private |
vertical size of the Hough Space, defaults to the value for u-side
Definition at line 103 of file MultiHoughSpaceFastInterceptFinder.h.