/** CbmRichFuzzyKE.h * @author Semen Lebedev * @since 2007 * @version 1.0 **/ #ifndef CBM_RICH_FUZZY_KE #define CBM_RICH_FUZZY_KE 1 #include "CbmRichHit.h" #include "CbmRichRing.h" #include "TObject.h" #include #include using std::vector; class Hit{ public: Double_t fX; Double_t fY; Int_t fHitId; }; class Ellipse { public: Double_t fR; // 2*a Double_t fV11; // xf1 Double_t fV12; //yf1 Double_t fV21; // xf2 Double_t fV22; //yf2 }; class CbmRichFuzzyKE { public: CbmRichFuzzyKE(); void Minimize(); void GenerateEllipses(); void Draw( Int_t color); void SetHits( const std::vector& hit) {fHits = hit;} void SetEllipses( const std::vector& ellipse) {fEllipses = ellipse;} const std::vector& GetHits() {return fHits;} const std::vector& GetEllipses() {return fEllipses;} const std::vector >& GetU() {return fU;} static Ellipse ParTransform( CbmRichRing* ellipse); private: Double_t u( Int_t i, Int_t j); Double_t r( Int_t i); Double_t v11( Int_t i); Double_t v12( Int_t i); Double_t v21( Int_t i); Double_t v22( Int_t i); Double_t D( Int_t i, Int_t j); Double_t d1( Int_t i, Int_t j); Double_t d2( Int_t i, Int_t j); Double_t teta( Int_t i, Int_t j, Int_t focus); std::vector GetXYABP( Ellipse el); std::vector fHits; std::vector fEllipses; std::vector > fU; std::vector fRNew; std::vector > fUNew; Double_t fQ; ClassDef(CbmRichFuzzyKE,1); }; #endif