// -------------------------------------------------------------------------------------- // ----- CbmRichRingFinderHough source file ----- // ----- Algorithm idea: G.A. Ososkov (ososkov@jinr.ru) and Simeon Lebedev (salebedev@jinr.ru) ----- // ----- Implementation: Simeon Lebedev (salebedev@jinr.ru)----- #ifndef CBM_RICH_RING_FINDER_HOUGH_H #define CBM_RICH_RING_FINDER_HOUGH_H #include "CbmRichRing.h" #include "CbmRichRingFinder.h" #include "CbmRichRingFitterCOP.h" #include "TClonesArray.h" #include "TString.h" #include #include class CbmRichMyPoint { public: Double_t fX; Double_t fY; Double_t fX2plusY2; Int_t fId; Int_t fRefIndex; Bool_t fIsUsed; static Bool_t CmpUp(const CbmRichMyPoint &m1, const CbmRichMyPoint &m2){ return m1.fX < m2.fX; }; //CbmRichMyPoint{fX=fY=fId=0;} //~CbmRichMyPoint{;} }; class CbmRichRingFinderHough : public CbmRichRingFinder { Double_t fMaxDistance; Double_t fMinDistance; Double_t fMinDistance2; ///= fMinDistance*fMinDistance Double_t fMaxDistance2; Double_t fMinRadius; Double_t fMaxRadius; Int_t fNofBinsX; Int_t fNofBinsY; Int_t fHTCut; Int_t fHitCut; std::vector fData; ///Rich hits std::vector< std::vector > fHist; std::vector< std::vector< std::vector > > fRingHits; std::vector fFoundRings;///collect found rings Int_t fNEvent; /// event number CbmRichRingFitterCOP* fFitCOP; Int_t fVerbose; /// Verbosity level public: /** Default constructor **/ CbmRichRingFinderHough(); /** Standard constructor **/ CbmRichRingFinderHough ( Int_t verbose); ~CbmRichRingFinderHough(); void SetParameters(); void SetParameters(TString geometry); ///Calculate circle center and radius void CalculateRingParameters(Double_t x2y2[], Double_t rx[], Double_t ry[], Double_t x0, Double_t y0, Double_t *xc, Double_t *yc, Double_t *r); void CalculateRingParametersOld(Double_t x[], Double_t y[], Double_t *xc, Double_t *yc, Double_t *r); void HoughTransformReconstruction(); void FindPeak(Int_t indmin, Int_t indmax); void FindMaxBinsXandY(Int_t *maxBinX, Int_t *maxBinY); virtual void Init(); virtual void Finish(); virtual Int_t DoFind(TClonesArray* rHitArray, TClonesArray* rProjArray, TClonesArray* rRingArray); ClassDef(CbmRichRingFinderHough,1) }; #endif // CBM_RICH_RING_FINDER_HOUGH_H