#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