]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONCluster.cxx
Main changes:
[u/mrichter/AliRoot.git] / MUON / AliMUONCluster.cxx
index 1e251071e9d1ef60aa3c644dce9cf9496b000c80..a40d9fe005e2a2bec14e879359fced7c85bdbb0e 100644 (file)
@@ -144,6 +144,7 @@ AliMUONCluster::operator=(const AliMUONCluster& src)
 AliMUONCluster::~AliMUONCluster()
 {
   /// dtor : note that we're owner of our pads
+//   fPads.Delete();
 }
 
 //_____________________________________________________________________________
@@ -152,6 +153,7 @@ AliMUONCluster::Clear(Option_t*)
 {
   /// Clear our pad array
   fPads.Clear();
+//  fPads.Delete();
 }
 
 //_____________________________________________________________________________
@@ -276,8 +278,8 @@ AliMUONCluster::Area() const
   }
 
   // then construct the area from those limits
-  return AliMpArea((lowerLeft+upperRight)/2,
-                   (upperRight-lowerLeft)/2);
+  return AliMpArea((lowerLeft+upperRight).X()/2,(lowerLeft+upperRight).Y()/2, 
+                   (upperRight-lowerLeft).X()/2, (upperRight-lowerLeft).Y()/2);
 }
 
 //_____________________________________________________________________________
@@ -306,8 +308,16 @@ AliMUONCluster::Area(Int_t cathode) const
   }
   
   // then construct the area from those limits
-  return AliMpArea((lowerLeft+upperRight)/2,
-                   (upperRight-lowerLeft)/2);
+  return AliMpArea((lowerLeft+upperRight).X()/2,(lowerLeft+upperRight).Y()/2,
+                   (upperRight-lowerLeft).X()/2, (upperRight-lowerLeft).Y()/2);
+}
+
+//_____________________________________________________________________________
+Bool_t
+AliMUONCluster::IsMonoCathode() const
+{
+  /// Whether we have signals only in one of the two cathodes
+  return (Cathode()<2);
 }
 
 //_____________________________________________________________________________
@@ -345,8 +355,15 @@ AliMUONCluster::Copy(TObject& obj) const
   ///
   TObject::Copy(obj);
   AliMUONCluster& dest = static_cast<AliMUONCluster&>(obj);
-  dest.fPads.Delete();
-  dest.fPads = fPads;
+
+//  dest.fPads.Delete();
+  dest.fPads.Clear();
+  
+  for ( Int_t i = 0; i <= fPads.GetLast(); ++i ) 
+  {
+    AliMUONPad* p = static_cast<AliMUONPad*>(fPads.UncheckedAt(i));
+    dest.fPads.AddLast(new AliMUONPad(*p));
+  }
   dest.fHasPosition = fHasPosition;
   dest.fPosition = fPosition;
   dest.fPositionError = fPositionError;
@@ -648,7 +665,7 @@ AliMUONCluster::DumpMe() const
 //  cout << " " << Area() << endl;
   for (Int_t i = 0; i < fPads.GetSize(); ++i) 
   {
-    cout << Form("fPads[%d]=%x",i,fPads.At(i)) << endl;
+    cout << Form("fPads[%d]=%p",i,fPads.At(i)) << endl;
     if ( fPads.At(i) ) fPads.At(i)->Print();
   }
 }
@@ -702,21 +719,21 @@ AliMUONCluster::Compare(const TObject* obj) const
   AliMpArea carea(cluster->Area());
   AliMpArea area(Area());
 
-  if ( carea.Position().X() > area.Position().X() ) 
+  if ( carea.GetPositionX() > area.GetPositionX() ) 
   {
     return 1;
   }
-  else if ( carea.Position().X() < area.Position().X() ) 
+  else if ( carea.GetPositionX() < area.GetPositionX() ) 
   {
     return -1;
   }
   else 
   {
-    if ( carea.Position().Y() > area.Position().Y() ) 
+    if ( carea.GetPositionY() > area.GetPositionY() ) 
     {
       return 1;
     }
-    else if ( carea.Position().Y() < area.Position().Y() ) 
+    else if ( carea.GetPositionY() < area.GetPositionY() ) 
     {
       return -1;
     }
@@ -744,6 +761,7 @@ AliMUONCluster::RemovePad(AliMUONPad* pad)
   
   fPads.Remove(pad);
   fPads.Compress();
+  delete pad;
   // update cluster's data
   fIsSaturated[0]=fIsSaturated[1]=kFALSE;
   fMultiplicity[0]=fMultiplicity[1]=0;