New class replacing AliCluster
[u/mrichter/AliRoot.git] / TPC / AliClusters.cxx
index 9c3d830c7890184c0c8b05e13cf54dab14a346d1..563da8770c68bf537e43d17d790a7896224457f9 100644 (file)
 
 /*
 $Log$
 
 /*
 $Log$
+Revision 1.3  2000/06/30 12:07:49  kowal2
+Updated from the TPC-PreRelease branch
+
+Revision 1.2.4.2  2000/06/14 16:45:13  kowal2
+Improved algorithms. Compiler warnings removed.
+
+Revision 1.2.4.1  2000/06/09 07:09:29  kowal2
+
+Clustering and tracking classes are splitted from the simulation ones
+
+Revision 1.2  2000/04/17 09:37:33  kowal2
+removed obsolete AliTPCDigitsDisplay.C
+
 Revision 1.1.4.2  2000/04/10 11:34:02  kowal2
 
 Clusters handling in a new data structure
 Revision 1.1.4.2  2000/04/10 11:34:02  kowal2
 
 Clusters handling in a new data structure
@@ -33,9 +46,8 @@ Clusters handling in a new data structure
 #include "TError.h"
 #include "TClass.h"
 #include  <TROOT.h>
 #include "TError.h"
 #include "TClass.h"
 #include  <TROOT.h>
-#include "AliCluster.h"
+#include "AliComplexCluster.h"
 #include "AliClusters.h"
 #include "AliClusters.h"
-#include "TClonesArray.h"
 #include "TMarker.h"
 
 
 #include "TMarker.h"
 
 
@@ -51,11 +63,24 @@ AliClusters::AliClusters()
 {  
   //
   //default constructor
 {  
   //
   //default constructor
+  //
   fNclusters=0;
   fClusters =0;
   fClass =0;
 }
 
   fNclusters=0;
   fClusters =0;
   fClass =0;
 }
 
+//________________________________________________________________________
+AliClusters::~AliClusters()
+{
+   //
+   //default destructor
+  //
+   if (fClusters !=0) fClusters->Clear();
+   delete fClusters;
+}
+
+//_________________________________________________________________________
+
 Bool_t AliClusters::SetClass(const Text_t *classname)
 {
   //
 Bool_t AliClusters::SetClass(const Text_t *classname)
 {
   //
@@ -73,10 +98,10 @@ Bool_t AliClusters::SetClass(const Text_t *classname)
       Error("AliClusters", "%s is not a valid class name", classname);
       return kFALSE;
    }
       Error("AliClusters", "%s is not a valid class name", classname);
       return kFALSE;
    }
-   if (!fClass->InheritsFrom(AliCluster::Class())) {
-      Error("AliClusters", "%s does not inherit from AliCluster", classname);
-      return kFALSE;
-   }  
+   if (!fClass->InheritsFrom(TObject::Class())) {
+      Error("AliClusters", "%s does not inherit from TObject", classname);
+      return kFALSE; 
+   } 
    return kTRUE;
 }
 
    return kTRUE;
 }
 
@@ -97,15 +122,13 @@ void AliClusters::SetArray(Int_t length)
 
 
 //_____________________________________________________________________________
 
 
 //_____________________________________________________________________________
-const  AliCluster* AliClusters::operator[](Int_t i)
+const  TObject* AliClusters::operator[](Int_t i)
 {
   //
   // return cluster at internal position i
   //
   if (fClusters==0) return 0;
 {
   //
   // return cluster at internal position i
   //
   if (fClusters==0) return 0;
-  void * cl = fClusters->UncheckedAt(i);
-  if (cl==0) return 0;
-  return  (AliCluster*)cl;
+  return fClusters->UncheckedAt(i);
 }
 //_____________________________________________________________________________
 void  AliClusters::Sort()
 }
 //_____________________________________________________________________________
 void  AliClusters::Sort()
@@ -115,7 +138,7 @@ void  AliClusters::Sort()
 }
 
 //_____________________________________________________________________________
 }
 
 //_____________________________________________________________________________
-AliCluster * AliClusters::InsertCluster( const AliCluster * c) 
+TObject * AliClusters::InsertCluster( const TObject * c) 
 { 
   //
   // Add a simulated cluster copy to the list
 { 
   //
   // Add a simulated cluster copy to the list
@@ -126,7 +149,7 @@ AliCluster * AliClusters::InsertCluster( const AliCluster * c)
   }
   if(!fClusters) fClusters=new TClonesArray(fClass->GetName(),1000);
   TClonesArray &lclusters = *fClusters;
   }
   if(!fClusters) fClusters=new TClonesArray(fClass->GetName(),1000);
   TClonesArray &lclusters = *fClusters;
-  return new(lclusters[fNclusters++]) AliCluster(*c);
+  return new(lclusters[fNclusters++]) AliComplexCluster(*((AliComplexCluster*)c));
 }
 
 //_____________________________________________________________________________
 }
 
 //_____________________________________________________________________________
@@ -135,14 +158,14 @@ Int_t AliClusters::Find(Double_t y) const
   //
   // return index of cluster nearest to given y position
   //
   //
   // return index of cluster nearest to given y position
   //
-  AliCluster* cl;
-  cl=(AliCluster*)fClusters->UncheckedAt(0);
+  AliComplexCluster* cl;
+  cl=(AliComplexCluster*)fClusters->UncheckedAt(0);
   if (y <= cl->fY) return 0;  
   if (y <= cl->fY) return 0;  
-  cl=(AliCluster*)fClusters->UncheckedAt(fNclusters-1);
+  cl=(AliComplexCluster*)fClusters->UncheckedAt(fNclusters-1);
   if (y > cl->fY) return fNclusters; 
   Int_t b=0, e=fNclusters-1, m=(b+e)/2;
   for (; b<e; m=(b+e)/2) {
   if (y > cl->fY) return fNclusters; 
   Int_t b=0, e=fNclusters-1, m=(b+e)/2;
   for (; b<e; m=(b+e)/2) {
-    cl = (AliCluster*)fClusters->UncheckedAt(m);
+    cl = (AliComplexCluster*)fClusters->UncheckedAt(m);
     if (y > cl->fY) b=m+1;
     else e=m; 
   }
     if (y > cl->fY) b=m+1;
     else e=m; 
   }
@@ -152,7 +175,7 @@ Int_t AliClusters::Find(Double_t y) const
 
 //_____________________________________________________________________________
 
 
 //_____________________________________________________________________________
 
-void AliClusters::Draw(Float_t shiftx, Float_t shifty, 
+void AliClusters::DrawClusters(Float_t shiftx, Float_t shifty, 
                                  Int_t color, Int_t size, Int_t style)
 {
 
                                  Int_t color, Int_t size, Int_t style)
 {
 
@@ -160,7 +183,7 @@ void AliClusters::Draw(Float_t shiftx, Float_t shifty,
   //draw marker for each of cluster
   Int_t ncl=fClusters->GetEntriesFast();
   for (Int_t i=0;i<ncl;i++){
   //draw marker for each of cluster
   Int_t ncl=fClusters->GetEntriesFast();
   for (Int_t i=0;i<ncl;i++){
-    AliCluster *cl = (AliCluster*)fClusters->UncheckedAt(i);
+    AliComplexCluster *cl = (AliComplexCluster*)fClusters->UncheckedAt(i);
     TMarker * marker = new TMarker;
     marker->SetX(cl->fX+shiftx);
     marker->SetY(cl->fY+shifty);
     TMarker * marker = new TMarker;
     marker->SetX(cl->fX+shiftx);
     marker->SetY(cl->fY+shifty);