]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliKMeansClustering.h
Update
[u/mrichter/AliRoot.git] / JETAN / AliKMeansClustering.h
index e00d12f4795de2948556f83db696a3820decbbed..7340e21650236aab876d639a30cc41a49685a7f5 100755 (executable)
@@ -20,15 +20,48 @@ class AliKMeansClustering : public TObject
   AliKMeansClustering()          {}
   virtual ~AliKMeansClustering() {}
   
-  static void SoftKMeans (Int_t k, Int_t n, Double_t* x, Double_t* y, Double_t* mx, Double_t* my , Double_t* rk );
-  static void SoftKMeans2(Int_t k, Int_t n, Double_t* x, Double_t* y, Double_t* mx, Double_t* my , Double_t* sigma2, 
+  static Int_t SoftKMeans (Int_t k, Int_t n, Double_t* x, Double_t* y, Double_t* mx, Double_t* my , Double_t* rk );
+  static Int_t SoftKMeans2(Int_t k, Int_t n, Double_t* x, Double_t* y, Double_t* mx, Double_t* my , Double_t* sigma2, 
                          Double_t* rk );
-  static void SetBeta(Double_t beta) {fBeta = beta;}
+  static Int_t SoftKMeans3(Int_t k, Int_t n, Double_t* x, Double_t* y, Double_t* mx, Double_t* my , 
+                          Double_t* sigmax2, Double_t* sigmay2, Double_t* rk );
+  static void  OptimalInit(Int_t k, Int_t n, Double_t* x, Double_t* y, Double_t* mx, Double_t* my);
+  static void  SetBeta(Double_t beta) {fBeta = beta;}
   static Double_t d(Double_t mx, Double_t my, Double_t x, Double_t y);
 protected:
   static Double_t fBeta;
   
   ClassDef(AliKMeansClustering, 1)
 };
+
+class AliKMeansResult : public TObject
+{
+ public:
+  AliKMeansResult(Int_t k);
+  AliKMeansResult(const AliKMeansResult &res);
+  AliKMeansResult& operator=(const AliKMeansResult& trclass);
+
+  virtual ~AliKMeansResult();
+  Int_t      GetK()      const  {return fK;}
+  Double_t*  GetMx()     const  {return fMx;}
+  Double_t*  GetMy()     const  {return fMy;}
+  Double_t*  GetSigma2() const  {return fSigma2;}
+  Double_t*  GetRk()     const  {return fRk;}
+  Int_t*     GetInd()    const  {return fInd;}
+  Double_t*  GetTarget() const  {return fTarget;}
+  void       CopyResults(AliKMeansResult* res);
+  void       Sort();
+  void       Sort(Int_t n, Double_t* x, Double_t* y);  
+protected:
+  Int_t        fK;        //! Number of clusters
+  Double_t*    fMx;       //! Position x
+  Double_t*    fMy;       //! Position y
+  Double_t*    fSigma2;   //! Sigma2
+  Double_t*    fRk;       //! Responsibility
+  Double_t*    fTarget;   //! Target for sorting
+  Int_t*       fInd;      //! Index for sorting
  
+  ClassDef(AliKMeansResult, 1)
+};
+
 #endif