New macro to keep track of timing performances of the segmentation methods (Laurent)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpPad.cxx
index 00c86d1..38bc60b 100755 (executable)
@@ -16,7 +16,8 @@
 // $Id$
 // $MpId: AliMpPad.cxx,v 1.9 2006/05/24 13:58:29 ivana Exp $
 // Category: basic
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMpPad
 // ---------------
 // Class which encapsuate all informations about a pad
@@ -24,6 +25,7 @@
 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
 // root [0] .x testSectorAreaIterator.C
 // Real time 0:00:56, CP time 36.270
+//-----------------------------------------------------------------------------
 
 #include "AliMpPad.h"
 #include "AliLog.h"
@@ -44,7 +46,7 @@ const Int_t  AliMpPad::fgkMaxNofLocations = 6;
 //_____________________________________________________________________________
 Bool_t operator==(const TVector2& v1,const TVector2& v2)
 {
-return v1.X()==v2.X() && v1.Y()==v2.Y();
+  return v1.X()==v2.X() && v1.Y()==v2.Y();
 }
 
 
@@ -62,6 +64,9 @@ AliMpPad::AliMpPad(const AliMpIntPair& location,const AliMpIntPair& indices,
                    Bool_t validity)
  : TObject(),
    fLocations(0),
+#ifdef WITH_ROOT
+   fNofLocations(0),
+#endif
    fLocation(location),
    fIndices(indices),
    fPosition(position),
@@ -80,6 +85,9 @@ AliMpPad::AliMpPad(const AliMpIntPair& location,const AliMpIntPair& indices,
 AliMpPad::AliMpPad()
   : TObject(),
     fLocations(0),
+#ifdef WITH_ROOT
+    fNofLocations(0),
+#endif
     fLocation(AliMpIntPair::Invalid()),
     fIndices(AliMpIntPair::Invalid()),
     fPosition(-1.,-1.),
@@ -92,7 +100,16 @@ AliMpPad::AliMpPad()
 
 //_____________________________________________________________________________
 AliMpPad::AliMpPad(const AliMpPad& rhs)
-  : TObject(rhs)
+  : TObject(rhs),
+    fLocations(0),
+#ifdef WITH_ROOT
+    fNofLocations(0),
+#endif
+    fLocation(AliMpIntPair::Invalid()),
+    fIndices(AliMpIntPair::Invalid()),
+    fPosition(-1.,-1.),
+    fDimensions(0.,0.),
+    fValidity(false) 
 {
 /// Copy constructor
 
@@ -104,11 +121,13 @@ AliMpPad::~AliMpPad()
 {
 /// Destructor
 
-#ifdef WITH_ROOT
-  if (fLocations) fLocations->Delete();
+#ifdef WITH_STL
+  delete fLocations;
 #endif
 
-  delete fLocations;
+#ifdef WITH_ROOT
+  delete [] fLocations;
+#endif
 }
 
 //_____________________________________________________________________________
@@ -141,11 +160,11 @@ AliMpPad& AliMpPad::operator = (const AliMpPad& rhs)
 #endif
 
 #ifdef WITH_ROOT
+  fNofLocations = rhs.fNofLocations;
   if ( rhs.GetNofLocations() ) {
-    fLocations = new TClonesArray("AliMpIntPair", rhs.GetNofLocations());
-    
-    for (Int_t i=0; i<rhs.GetNofLocations(); i++)
-      new((*fLocations)[i]) AliMpIntPair(rhs.GetLocation(i));
+    fLocations = new AliMpIntPair[fgkMaxNofLocations];
+    for ( UInt_t i=0; i<rhs.fNofLocations; i++ )
+      fLocations[i] = rhs.fLocations[i];
   }                    
 #endif
 
@@ -235,10 +254,10 @@ Bool_t AliMpPad::AddLocation(const AliMpIntPair& location, Bool_t warn)
 #endif
 
 #ifdef WITH_ROOT
-  if (! fLocations)
-    fLocations = new TClonesArray("AliMpIntPair", fgkMaxNofLocations);
-    
-  new ((*fLocations)[GetNofLocations()]) AliMpIntPair(location);
+  if ( ! fLocations)
+    fLocations = new AliMpIntPair[fgkMaxNofLocations];
+  
+  fLocations[fNofLocations++] = location;
   return true;
 #endif
 }
@@ -288,7 +307,7 @@ Int_t  AliMpPad::GetNofLocations() const
 #endif
 
 #ifdef WITH_ROOT
-  return fLocations->GetEntriesFast();
+  return fNofLocations;
 #endif
 }  
   
@@ -306,7 +325,7 @@ AliMpIntPair AliMpPad::GetLocation(Int_t i) const
 #endif
   
 #ifdef WITH_ROOT
-  return *(AliMpIntPair*)fLocations->At(i);
+  return fLocations[i];
 #endif
 }  
 
@@ -318,7 +337,7 @@ Bool_t AliMpPad::HasLocation(const AliMpIntPair& location) const
 
   if (fLocation == location) return true;
 
-  for (Int_t i=0; i<GetNofLocations(); i++) {
+  for ( Int_t i=0; i<GetNofLocations(); i++ ) {
     if ( GetLocation(i) == location ) return true;
   }