CbmRoot
|
Ring finder implementation based on Hough Transform method. More...
#include <CbmRichRingFinderHoughImpl.h>
Public Member Functions | |
CbmRichRingFinderHoughImpl () | |
Standard constructor. More... | |
virtual | ~CbmRichRingFinderHoughImpl () |
Distructor. More... | |
void | SetParameters () |
Set parameters of the algorithm. More... | |
void | CalculateRingParameters (float x[], float y[], float *xc, float *yc, float *r) |
Calculate circle center and radius. More... | |
virtual void | HoughTransformReconstruction () |
Run HT for each hit. More... | |
virtual void | DefineLocalAreaAndHits (float x0, float y0, int *indmin, int *indmax) |
Find hits in a local area. More... | |
virtual void | HoughTransform (unsigned int indmin, unsigned int indmax) |
Run HoughTransformGroup for each group of hits. More... | |
virtual void | HoughTransformGroup (unsigned int indmin, unsigned int indmax, int iPart) |
void | FindPeak (int indmin, int indmax) |
void | RingSelection () |
Ring selection procedure. More... | |
void | ReAssignSharedHits (int ringInd1, int ringInd2) |
Reassign shared hits from two rings to only one of the rings. More... | |
int | GetHitIndexById (unsigned int hitId) |
Return hit indez in the internal Array. More... | |
void | RemoveHitsAroundRing (int indmin, int indmax, CbmRichRingLight *ring) |
Set fIsUsed flag to true for hits attached to the ring. More... | |
void | Init () |
void | DoFind () |
Start point to run algorithm. More... | |
void | SetData (const vector< CbmRichHoughHit > &data) |
Set array of hits. More... | |
vector< CbmRichRingLight * > & | GetFoundRings () |
Return vector of found rings. More... | |
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 |
Private Member Functions | |
CbmRichRingFinderHoughImpl (const CbmRichRingFinderHoughImpl &) | |
Copy constructor. More... | |
CbmRichRingFinderHoughImpl & | operator= (const CbmRichRingFinderHoughImpl &) |
Assignment operator. More... | |
Ring finder implementation based on Hough Transform method.
Definition at line 33 of file CbmRichRingFinderHoughImpl.h.
CbmRichRingFinderHoughImpl::CbmRichRingFinderHoughImpl | ( | ) |
Standard constructor.
Definition at line 28 of file CbmRichRingFinderHoughImpl.cxx.
|
virtual |
Distructor.
Definition at line 93 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 507 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 179 of file CbmRichRingFinderHoughImpl.cxx.
References d, fabs(), fCurTime, fData, fHist, fHistR, CbmRichHoughHit::fHit, fHitInd, fMaxDistance, fMaxDistanceSq, fMinNofHitsInArea, fNofBinsR, fNofBinsXY, fNofParts, fTimeCut, CbmRichHitLight::fX, and i.
Referenced by CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), and HoughTransformReconstruction().
void CbmRichRingFinderHoughImpl::DoFind | ( | ) |
Start point to run algorithm.
Definition at line 112 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 318 of file CbmRichRingFinderHoughImpl.cxx.
References CbmRichRingLight::AddHit(), CbmRichRingFitterCOP::DoFit(), CbmRichRingSelectAnn::DoSelect(), f, fabs(), 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(), and sqrt().
Referenced by CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), and HoughTransformReconstruction().
|
inline |
Return vector of found rings.
Definition at line 205 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 499 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 228 of file CbmRichRingFinderHoughImpl.cxx.
References fNofParts, and HoughTransformGroup().
Referenced by CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), and 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 235 of file CbmRichRingFinderHoughImpl.cxx.
References f, fabs(), fCurMinX, fCurMinY, fData, fDr, fDx, fDy, fHist, fHistR, fHitInd, fMaxDistanceSq, fNofBinsR, fNofBinsX, fNofBinsY, fTimeCut, i, and sqrt().
Referenced by HoughTransform().
|
virtual |
Run HT for each hit.
Reimplemented in CbmRichRingFinderHoughSimd.
Definition at line 162 of file CbmRichRingFinderHoughImpl.cxx.
References DefineLocalAreaAndHits(), fCurMinX, fCurMinY, fCurTime, fData, FindPeak(), fMaxDistance, and HoughTransform().
Referenced by DoFind().
void CbmRichRingFinderHoughImpl::Init | ( | ) |
Initialize algorithm parameters.
Definition at line 98 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 467 of file CbmRichRingFinderHoughImpl.cxx.
References fabs(), 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 411 of file CbmRichRingFinderHoughImpl.cxx.
References fabs(), 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 428 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 197 of file CbmRichRingFinderHoughImpl.h.
References fData.
Referenced by CbmRichRingFinderHough::DoFind().
void CbmRichRingFinderHoughImpl::SetParameters | ( | ) |
Set parameters of the algorithm.
Definition at line 128 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 207 of file CbmRichRingFinderHoughImpl.h.
References fUseAnnSelect.
Referenced by CbmRichRingFinderHough::Init().
|
protected |
Definition at line 71 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 76 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), and HoughTransformReconstruction().
|
protected |
Definition at line 77 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), and HoughTransformReconstruction().
|
protected |
Definition at line 90 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), HoughTransformReconstruction(), and RemoveHitsAroundRing().
|
protected |
Definition at line 81 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), DoFind(), FindPeak(), GetHitIndexById(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), HoughTransformReconstruction(), ReAssignSharedHits(), RemoveHitsAroundRing(), and SetData().
|
protected |
Definition at line 52 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 50 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 51 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), 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 82 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and Init().
|
protected |
Definition at line 83 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and Init().
|
protected |
Definition at line 85 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and Init().
|
protected |
Definition at line 58 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 62 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), 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 42 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformReconstruction(), HoughTransformReconstruction(), and SetParameters().
|
protected |
Definition at line 45 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 48 of file CbmRichRingFinderHoughImpl.h.
Referenced by SetParameters().
|
protected |
Definition at line 43 of file CbmRichRingFinderHoughImpl.h.
Referenced by SetParameters().
|
protected |
Definition at line 44 of file CbmRichRingFinderHoughImpl.h.
Referenced by CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 64 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 47 of file CbmRichRingFinderHoughImpl.h.
Referenced by SetParameters().
|
protected |
Definition at line 60 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), Init(), and SetParameters().
|
protected |
Definition at line 53 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 55 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), CbmRichRingFinderHoughSimd::HoughTransformGroup(), Init(), and SetParameters().
|
protected |
Definition at line 54 of file CbmRichRingFinderHoughImpl.h.
Referenced by HoughTransformGroup(), and SetParameters().
|
protected |
Definition at line 40 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), HoughTransform(), Init(), and SetParameters().
|
protected |
Definition at line 68 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), and SetParameters().
|
protected |
Definition at line 66 of file CbmRichRingFinderHoughImpl.h.
Referenced by RemoveHitsAroundRing(), and SetParameters().
|
protected |
Definition at line 74 of file CbmRichRingFinderHoughImpl.h.
Referenced by DefineLocalAreaAndHits(), FindPeak(), HoughTransformGroup(), RemoveHitsAroundRing(), and SetParameters().
|
protected |
Definition at line 79 of file CbmRichRingFinderHoughImpl.h.
Referenced by FindPeak(), Init(), and SetUseAnnSelect().
|
protected |
Definition at line 72 of file CbmRichRingFinderHoughImpl.h.
Referenced by RingSelection(), and SetParameters().
|
staticprotected |
Definition at line 36 of file CbmRichRingFinderHoughImpl.h.