CbmRoot
|
Ring finder implementation based on Hough Transform method. More...
#include <CbmRichRingFinderHoughImpl.h>
Public Member Functions | |
CbmRichRingFinderHoughImpl () | |
Standard constructor. | |
virtual | ~CbmRichRingFinderHoughImpl () |
Distructor. | |
void | SetParameters () |
Set parameters of the algorithm. | |
void | CalculateRingParameters (float x[], float y[], float *xc, float *yc, float *r) |
Calculate circle center and radius. | |
virtual void | HoughTransformReconstruction () |
Run HT for each hit. | |
virtual void | DefineLocalAreaAndHits (float x0, float y0, int *indmin, int *indmax) |
Find hits in a local area. | |
virtual void | HoughTransform (unsigned int indmin, unsigned int indmax) |
Run HoughTransformGroup for each group of hits. | |
virtual void | HoughTransformGroup (unsigned int indmin, unsigned int indmax, int iPart) |
void | FindPeak (int indmin, int indmax) |
void | RingSelection () |
Ring selection procedure. | |
void | ReAssignSharedHits (int ringInd1, int ringInd2) |
Reassign shared hits from two rings to only one of the rings. | |
int | GetHitIndexById (unsigned int hitId) |
Return hit indez in the internal Array. | |
void | RemoveHitsAroundRing (int indmin, int indmax, CbmRichRingLight *ring) |
Set fIsUsed flag to true for hits attached to the ring. | |
void | Init () |
void | DoFind () |
Start point to run algorithm. | |
void | SetData (const vector< CbmRichHoughHit > &data) |
Set array of hits. | |
vector< CbmRichRingLight * > & | GetFoundRings () |
Return vector of found rings. | |
void | SetUseAnnSelect (bool use) |
Protected Attributes | |
unsigned short | fNofParts |
float | fMaxDistance |
float | fMinDistance |
float | fMinDistanceSq |
float | fMaxDistanceSq |
float | fMinRadius |
float | fMaxRadius |
float | fDx |
float | fDy |
float | fDr |
unsigned short | fNofBinsX |
unsigned short | fNofBinsY |
unsigned short | fNofBinsXY |
unsigned short | fHTCut |
unsigned short | fNofBinsR |
unsigned short | fHTCutR |
unsigned short | fMinNofHitsInArea |
float | fRmsCoeffEl |
float | fMaxCutEl |
float | fRmsCoeffCOP |
float | fMaxCutCOP |
float | fAnnCut |
float | fUsedHitsAllCut |
double | fTimeCut |
float | fCurMinX |
float | fCurMinY |
bool | fUseAnnSelect |
vector< CbmRichHoughHit > | fData |
vector< unsigned short > | fHist |
vector< unsigned short > | fHistR |
vector< vector< unsigned int > > | fHitInd |
vector< CbmRichRingLight * > | fFoundRings |
CbmRichRingFitterCOP * | fFitCOP |
CbmRichRingSelectAnn * | fANNSelect |
double | fCurTime |
Static Protected Attributes | |
static const unsigned short | MAX_NOF_HITS = 65000 |
Private Member Functions | |
CbmRichRingFinderHoughImpl (const CbmRichRingFinderHoughImpl &) | |
Copy constructor. | |
CbmRichRingFinderHoughImpl & | operator= (const CbmRichRingFinderHoughImpl &) |
Assignment operator. | |
Ring finder implementation based on Hough Transform method.
Definition at line 37 of file CbmRichRingFinderHoughImpl.h.
CbmRichRingFinderHoughImpl::CbmRichRingFinderHoughImpl | ( | ) |
Standard constructor.
Definition at line 31 of file CbmRichRingFinderHoughImpl.cxx.
|
virtual |
Distructor.
Definition at line 97 of file CbmRichRingFinderHoughImpl.cxx.
References fANNSelect, and fFitCOP.
|
private |
Copy constructor.
void CbmRichRingFinderHoughImpl::CalculateRingParameters | ( | float | x[], |
float | y[], | ||
float * | xc, | ||
float * | yc, | ||
float * | r ) |
Calculate circle center and radius.
[in] | x[] | Array of 3 X coordinates. |
[in] | y[] | Array of 3 Y coordinates. |
[out] | xc | X coordinate of the ring center. |
[out] | yc | Y coordinate of the ring center. |
[out] | r | Ring radius. |
Definition at line 525 of file CbmRichRingFinderHoughImpl.cxx.
|
virtual |
Find hits in a local area.
[in] | x0 | X coordinate of the local area center. |
[in] | y0 | Y coordinate of the local area center. |
[out] | indmin | Minimum index of the hit in local area. |
[out] | indmax | Maximum index of the hit in local area. |
Definition at line 188 of file CbmRichRingFinderHoughImpl.cxx.
References fCurTime, fData, fHist, fHistR, CbmRichHoughHit::fHit, fHitInd, fMaxDistance, fMaxDistanceSq, fMinNofHitsInArea, fNofBinsR, fNofBinsXY, fNofParts, fTimeCut, and CbmRichHitLight::fX.
Referenced by HoughTransformReconstruction(), and CbmRichRingFinderHoughSimd::HoughTransformReconstruction().
void CbmRichRingFinderHoughImpl::DoFind | ( | ) |
Start point to run algorithm.
Definition at line 118 of file CbmRichRingFinderHoughImpl.cxx.
References fData, fFoundRings, HoughTransformReconstruction(), and RingSelection().
Referenced by CbmRichRingFinderHough::DoFind().
void CbmRichRingFinderHoughImpl::FindPeak | ( | int | indmin, |
int | indmax ) |
\brief Find peak in the HT histograms.
[in] | indmin | Minimum index of the hit in local area. |
[in] | indmax | Maximum index of the hit in local area. |
Definition at line 325 of file CbmRichRingFinderHoughImpl.cxx.
References CbmRichRingLight::AddHit(), CbmRichRingFitterCOP::DoFit(), CbmRichRingSelectAnn::DoSelect(), fAnnCut, fANNSelect, fCurMinX, fCurMinY, fCurTime, fData, fDr, fDx, fDy, fFitCOP, fFoundRings, fHist, fHistR, fHTCut, fHTCutR, fMaxCutCOP, fNofBinsX, fRmsCoeffCOP, fTimeCut, fUseAnnSelect, CbmRichRingLight::GetCenterX(), CbmRichRingLight::GetCenterY(), CbmRichRingLight::GetChi2(), CbmRichRingLight::GetNofHits(), CbmRichRingLight::GetRadius(), CbmRichRingLight::GetSelectionNN(), RemoveHitsAroundRing(), size(), and sqrt().
Referenced by HoughTransformReconstruction(), and CbmRichRingFinderHoughSimd::HoughTransformReconstruction().
|
inline |
Return vector of found rings.
Definition at line 203 of file CbmRichRingFinderHoughImpl.h.
References fFoundRings.
Referenced by CbmRichRingFinderHough::DoFind().
int CbmRichRingFinderHoughImpl::GetHitIndexById | ( | unsigned int | hitId | ) |
Return hit indez in the internal Array.
[in] | hitInd | Index in TClonesArray. |
Definition at line 516 of file CbmRichRingFinderHoughImpl.cxx.
Referenced by ReAssignSharedHits().
|
virtual |
Run HoughTransformGroup for each group of hits.
[in] | indmin | Minimum index of the hit in local area. |
[in] | indmax | Maximum index of the hit in local area. |
Definition at line 236 of file CbmRichRingFinderHoughImpl.cxx.
References fNofParts, and HoughTransformGroup().
Referenced by HoughTransformReconstruction(), and CbmRichRingFinderHoughSimd::HoughTransformReconstruction().
|
virtual |
\brief Main procedure for Hough Transform. \param[in] indmin Minimum index of the hit in local area.
[in] | indmax | Maximum index of the hit in local area. |
[in] | iPart | Index of the hit group. |
Definition at line 243 of file CbmRichRingFinderHoughImpl.cxx.
References fCurMinX, fCurMinY, fData, fDr, fDx, fDy, fHist, fHistR, fHitInd, fMaxDistanceSq, fNofBinsR, fNofBinsX, fNofBinsY, fTimeCut, and sqrt().
Referenced by HoughTransform().
|
virtual |
Run HT for each hit.
Reimplemented in CbmRichRingFinderHoughSimd.
Definition at line 171 of file CbmRichRingFinderHoughImpl.cxx.
References DefineLocalAreaAndHits(), fCurMinX, fCurMinY, fCurTime, fData, FindPeak(), fMaxDistance, HoughTransform(), and size().
Referenced by DoFind().
void CbmRichRingFinderHoughImpl::Init | ( | ) |
Initialize algorithm parameters.
Definition at line 103 of file CbmRichRingFinderHoughImpl.cxx.
References fANNSelect, fFitCOP, fHist, fHistR, fHitInd, fNofBinsR, fNofBinsXY, fNofParts, fUseAnnSelect, CbmRichRingSelectAnn::Init(), and SetParameters().
Referenced by CbmRichRingFinderHough::Init().
|
private |
Assignment operator.
void CbmRichRingFinderHoughImpl::ReAssignSharedHits | ( | int | ringInd1, |
int | ringInd2 ) |
Reassign shared hits from two rings to only one of the rings.
[in,out] | ringInd1 | Index of the first ring. |
[in,out] | ringInd2 | Index of the second ring. |
Definition at line 483 of file CbmRichRingFinderHoughImpl.cxx.
References fData, fFoundRings, CbmRichRingLight::GetCenterX(), CbmRichRingLight::GetCenterY(), CbmRichRingLight::GetHitId(), GetHitIndexById(), CbmRichRingLight::GetNofHits(), CbmRichRingLight::GetRadius(), CbmRichRingLight::RemoveHit(), and sqrt().
Referenced by RingSelection().
void CbmRichRingFinderHoughImpl::RemoveHitsAroundRing | ( | int | indmin, |
int | indmax, | ||
CbmRichRingLight * | ring ) |
Set fIsUsed flag to true for hits attached to the ring.
[in] | indmin | Minimum index of the hit in local area. |
[in] | indmax | Maximum index of the hit in local area. |
[in] | ring | Found ring. |
Definition at line 421 of file CbmRichRingFinderHoughImpl.cxx.
References fCurTime, fData, fMaxCutEl, fRmsCoeffEl, fTimeCut, CbmRichRingLight::GetCenterX(), CbmRichRingLight::GetCenterY(), CbmRichRingLight::GetChi2(), CbmRichRingLight::GetNofHits(), CbmRichRingLight::GetRadius(), and sqrt().
Referenced by FindPeak().
void CbmRichRingFinderHoughImpl::RingSelection | ( | ) |
Ring selection procedure.
Definition at line 439 of file CbmRichRingFinderHoughImpl.cxx.
References fFoundRings, fUsedHitsAllCut, CbmRichRingLight::GetHitId(), CbmRichRingLight::GetNofHits(), ReAssignSharedHits(), and CbmRichRingLight::SetRecFlag().
Referenced by DoFind().
|
inline |
Set array of hits.
[in] | data | Array of hits. |
Definition at line 194 of file CbmRichRingFinderHoughImpl.h.
References fData.
Referenced by CbmRichRingFinderHough::DoFind().
void CbmRichRingFinderHoughImpl::SetParameters | ( | ) |
Set parameters of the algorithm.
Definition at line 136 of file CbmRichRingFinderHoughImpl.cxx.
References fAnnCut, fDr, fDx, fDy, fHTCut, fHTCutR, fMaxCutCOP, fMaxCutEl, fMaxDistance, fMaxDistanceSq, fMaxRadius, fMinDistance, fMinDistanceSq, fMinNofHitsInArea, fMinRadius, fNofBinsR, fNofBinsX, fNofBinsXY, fNofBinsY, fNofParts, fRmsCoeffCOP, fRmsCoeffEl, fTimeCut, and fUsedHitsAllCut.
Referenced by Init().
|
inline |
Definition at line 205 of file CbmRichRingFinderHoughImpl.h.
References fUseAnnSelect.
Referenced by CbmRichRingFinderHough::Init().
|
protected |
Definition at line 72 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 88 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), Init(), and ~CbmRichRingFinderHoughImpl().
|
protected |
Definition at line 77 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformReconstruction(), and CbmRichRingFinderHoughSimd::HoughTransformReconstruction().
|
protected |
Definition at line 78 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformReconstruction(), and CbmRichRingFinderHoughSimd::HoughTransformReconstruction().
|
protected |
Definition at line 90 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), HoughTransformReconstruction(), and RemoveHitsAroundRing().
|
protected |
Definition at line 82 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), DoFind(), FindPeak(), GetHitIndexById(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformReconstruction(), CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), ReAssignSharedHits(), RemoveHitsAroundRing(), and SetData().
|
protected |
Definition at line 55 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 53 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 54 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 87 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), Init(), and ~CbmRichRingFinderHoughImpl().
|
protected |
Definition at line 86 of file CbmRichRingFinderHoughImpl.h.
Referenced by DoFind(), FindPeak(), GetFoundRings(), ReAssignSharedHits(), and RingSelection().
|
protected |
Definition at line 83 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and Init().
|
protected |
Definition at line 84 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and Init().
|
protected |
Definition at line 85 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and Init().
|
protected |
Definition at line 60 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 63 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 70 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 68 of file CbmRichRingFinderHoughImpl.h.
Referenced by RemoveHitsAroundRing(), and SetParameters().
|
protected |
Definition at line 45 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), HoughTransformReconstruction(), CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), and SetParameters().
|
protected |
Definition at line 48 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 51 of file CbmRichRingFinderHoughImpl.h.
Referenced by SetParameters().
|
protected |
Definition at line 46 of file CbmRichRingFinderHoughImpl.h.
Referenced by SetParameters().
|
protected |
Definition at line 47 of file CbmRichRingFinderHoughImpl.h.
Referenced by CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 65 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 50 of file CbmRichRingFinderHoughImpl.h.
Referenced by SetParameters().
|
protected |
Definition at line 62 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), Init(), and SetParameters().
|
protected |
Definition at line 56 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 58 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), Init(), and SetParameters().
|
protected |
Definition at line 57 of file CbmRichRingFinderHoughImpl.h.
Referenced by HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 43 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), HoughTransform(), Init(), and SetParameters().
|
protected |
Definition at line 69 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 67 of file CbmRichRingFinderHoughImpl.h.
Referenced by RemoveHitsAroundRing(), and SetParameters().
|
protected |
Definition at line 75 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), HoughTransformGroup(), RemoveHitsAroundRing(), and SetParameters().
|
protected |
Definition at line 80 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), Init(), and SetUseAnnSelect().
|
protected |
Definition at line 73 of file CbmRichRingFinderHoughImpl.h.
Referenced by RingSelection(), and SetParameters().
|
staticprotected |
Definition at line 40 of file CbmRichRingFinderHoughImpl.h.