]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliKMeansClustering.cxx
Changed number of LTM words. Minor change
[u/mrichter/AliRoot.git] / JETAN / AliKMeansClustering.cxx
index 078a86af94b5918bba34ded176a602218a2c59d1..8941025c18328bb0511696777ac1bca9770f1532 100755 (executable)
@@ -163,7 +163,6 @@ Int_t AliKMeansClustering::SoftKMeans2(Int_t k, Int_t n, Double_t* x, Double_t*
     } // data point j
     // (3) Iterations
     Int_t nit = 0;
-    Bool_t rmovalStep = kFALSE;
 
     while(1) {
        nit++;
@@ -222,7 +221,7 @@ Int_t AliKMeansClustering::SoftKMeans2(Int_t k, Int_t n, Double_t* x, Double_t*
       // Sigma
       for (i = 0; i < k; i++) {
        sigma2[i] = 0.;
-       for (j = 1; j < n; j++) {
+       for (j = 0; j < n; j++) {
          sigma2[i] += r[j][i] * d(mx[i], my[i], x[j], y[j]);
        } // Data
        sigma2[i] /= rk[i];
@@ -291,7 +290,6 @@ Int_t AliKMeansClustering::SoftKMeans3(Int_t k, Int_t n, Double_t* x, Double_t*
     } // data point j
     // (3) Iterations
     Int_t nit = 0;
-    Bool_t rmovalStep = kFALSE;
 
     while(1) {
        nit++;
@@ -356,7 +354,7 @@ Int_t AliKMeansClustering::SoftKMeans3(Int_t k, Int_t n, Double_t* x, Double_t*
        sigmax2[i] = 0.;
        sigmay2[i] = 0.;
 
-       for (j = 1; j < n; j++) {
+       for (j = 0; j < n; j++) {
          Double_t dx = TMath::Abs(mx[i]-x[j]);
          if (dx > TMath::Pi()) dx = 2. * TMath::Pi() - dx;
          Double_t dy = TMath::Abs(my[i]-y[j]);
@@ -492,8 +490,8 @@ AliKMeansResult& AliKMeansResult::operator=(const AliKMeansResult& res)
       fTarget[i] = (res.GetTarget())[i];
       fInd[i]    = (res.GetInd())   [i];
     }
-    return *this;
   }
+  return *this;
 }
 
 
@@ -510,14 +508,16 @@ AliKMeansResult::~AliKMeansResult()
 
 void AliKMeansResult::Sort()
 {
-// Sort clusters
-    for (Int_t i = 0; i < fK; i++) {
-       if (fRk[i] > 1.) fRk[i] /= fSigma2[i];
-       else fRk[i] = 0.;
+  // Build target array and sort
+  // Sort clusters
+  for (Int_t i = 0; i < fK; i++) {
+    if (fRk[i] > 2.9) {
+      fTarget[i] = fRk[i] / fSigma2[i];
     }
+    else fTarget[i] = 0.;
+  }
     
-    TMath::Sort(fK, fRk, fInd);
-    
+  TMath::Sort(fK, fTarget, fInd);
 }
 
 void AliKMeansResult::Sort(Int_t n, Double_t* x, Double_t* y)
@@ -528,10 +528,11 @@ void AliKMeansResult::Sort(Int_t n, Double_t* x, Double_t* y)
       Int_t nc = 0;
       for (Int_t j = 0; j < n; j++)
        {
-         if (2. * AliKMeansClustering::d(fMx[i], fMy[i], x[j], y[j])  <  fSigma2[i]) nc++;
+         if (2. * AliKMeansClustering::d(fMx[i], fMy[i], x[j], y[j])  <  2.28 * fSigma2[i]) nc++;
        }
-      if (nc > 1) {
-       fTarget[i] = Double_t(nc) / fSigma2[i];
+
+      if (nc > 2) {
+       fTarget[i] = Double_t(nc) / (2.28 * fSigma2[i]);
       } else {
        fTarget[i] = 0.;
       }