]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRecPoint.cxx
Warnings and Coverity fixes (Plamen)
[u/mrichter/AliRoot.git] / STEER / AliRecPoint.cxx
index ab820caac505ef4affde7c786d9bec7d01ead87a..7ab6b8a999f779d9f7e5426417466fea2a52d94b 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.2  2000/02/15 09:43:54  fca
-Corrections
-- a bug in the streamer (wrong size of the arrays)
-- replace Read/WriteArray by Read/WriteFastArray (suggestion R.Brun)
-
-Revision 1.1  1999/12/17 09:01:14  fca
-Y.Schutz new classes for reconstruction
-
-*/
+/* $Id$ */
 
 //-*-C++-*-
 //_________________________________________________________________________
-// Base Class of Cluster (empty cxx needed by Root)
+// Base Class for reconstructed space points 
+// usually coming from the clusterisation algorithms
+// run on the digits
+//
 //*-- Author : Yves Schutz  SUBATECH 
 //////////////////////////////////////////////////////////////////////////////
 
-// --- ROOT system ---
 
-#include "TObjArray.h"
+// --- ROOT system ---
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
 
 #include "AliRecPoint.h"
+#include "AliGeometry.h"
+#include "AliDigitNew.h"
 
 ClassImp(AliRecPoint)
 
 
-//____________________________________________________________________________
-AliRecPoint::AliRecPoint()
+//_______________________________________________________________________
+AliRecPoint::AliRecPoint():
+  fAmp(0),
+  fGeom(0),
+  fIndexInList(-1), // to be set when the point is already stored
+  fLocPos(0,0,0),
+  fLocPosM(0),
+  fMaxDigit(100),
+  fMulDigit(0),
+  fMaxTrack(5),
+  fMulTrack(0),
+  fDigitsList(0),
+  fTracksList(0)
 {
-  // ctor  
-  fAmp = 0.0 ; 
-  
-  fLocPos.SetXYZ(0., 0., 0.) ;
-  fLocPosM     = new TMatrix(3,3) ;
-  fMaxDigit    = 100 ; 
-  fMulDigit    = 0 ; 
-  fDigitsList  = new int[fMaxDigit]; ; 
-  fMaxTrack    = 5 ; 
-  fMulTrack    = 0 ; 
-  fTracksList  = new int[fMaxTrack]; ; 
-  fIndexInList = -1 ; // to be set when the point is already stored
+  //
+  // default ctor  
+  //
 }
 
-//____________________________________________________________________________
+//_______________________________________________________________________
+AliRecPoint::AliRecPoint(const char * ):
+  fAmp(0),
+  fGeom(0),
+  fIndexInList(-1), // to be set when the point is already stored
+  fLocPos(0,0,0),
+  fLocPosM(new TMatrixF(3,3)),
+  fMaxDigit(100),
+  fMulDigit(0),
+  fMaxTrack(5),
+  fMulTrack(0),
+  fDigitsList(new int[fMaxDigit]),
+  fTracksList(new int[fMaxTrack])
+{
+  //
+  // Standard ctor  
+  //
+}
+
+//_______________________________________________________________________
+AliRecPoint::AliRecPoint(const AliRecPoint& recp):
+  TObject(recp),
+  fAmp(0),
+  fGeom(0),
+  fIndexInList(-1), // to be set when the point is already stored
+  fLocPos(0,0,0),
+  fLocPosM(0),
+  fMaxDigit(100),
+  fMulDigit(0),
+  fMaxTrack(5),
+  fMulTrack(0),
+  fDigitsList(0),
+  fTracksList(0)
+{
+  //
+  // Copy constructor
+  //
+  recp.Copy(*this);
+}
+
+//_______________________________________________________________________
 AliRecPoint::~AliRecPoint()
 {
   // dtor
   
   delete fLocPosM ; 
-  if ( fDigitsList )    
-    delete fDigitsList ; 
-  if ( fTracksList )    
-    delete fTracksList ;  
+  delete [] fDigitsList ; 
+  delete [] fTracksList ;  
   
 }
   
-//____________________________________________________________________________
+//_______________________________________________________________________
 void AliRecPoint::AddDigit(AliDigitNew & digit)
 {
   // adds a digit to the digits list
@@ -82,14 +116,14 @@ void AliRecPoint::AddDigit(AliDigitNew & digit)
   
   
   if ( fMulDigit >= fMaxDigit ) { // increase the size of the list 
-    int * tempo = new ( int[fMaxDigit*=2] ) 
+    int * tempo = new int[fMaxDigit*2]
     
     Int_t index ; 
     
     for ( index = 0 ; index < fMulDigit ; index++ )
       tempo[index] = fDigitsList[index] ; 
     
-    delete fDigitsList ; 
+    delete [] fDigitsList ; 
     fDigitsList = tempo ; 
   }
   
@@ -98,7 +132,7 @@ void AliRecPoint::AddDigit(AliDigitNew & digit)
   fAmp += digit.GetAmp() ; 
 }
 
-//____________________________________________________________________________
+//_______________________________________________________________________
 // void AliRecPoint::AddTrack(AliTrack & track)
 // {
 //   // adds a digit to the digits list
@@ -117,8 +151,35 @@ void AliRecPoint::AddDigit(AliDigitNew & digit)
 //   fTracksList[fMulTrack++]=  (int) &Track  ; 
 // }
 
-//____________________________________________________________________________
-void AliRecPoint::GetCovarianceMatrix(TMatrix & mat)
+//_______________________________________________________________________
+void AliRecPoint::Copy(TObject& recp) const
+{
+  //
+  // Copy *this onto pts
+  //
+  // Copy all first
+  if((TObject*)this != &recp) {
+    ((TObject*) this)->Copy(recp);
+    (dynamic_cast<AliRecPoint&>(recp)).fAmp = fAmp;
+    (dynamic_cast<AliRecPoint&>(recp)).fGeom = fGeom;
+    (dynamic_cast<AliRecPoint&>(recp)).fIndexInList = fIndexInList;
+    (dynamic_cast<AliRecPoint&>(recp)).fLocPos = fLocPos;
+    (dynamic_cast<AliRecPoint&>(recp)).fLocPosM = new TMatrixF(*fLocPosM);
+    (dynamic_cast<AliRecPoint&>(recp)).fMaxDigit = fMaxDigit;
+    (dynamic_cast<AliRecPoint&>(recp)).fMulDigit = fMulDigit;
+    (dynamic_cast<AliRecPoint&>(recp)).fMaxTrack = fMaxTrack;
+    (dynamic_cast<AliRecPoint&>(recp)).fMulTrack = fMulTrack;
+    
+    // Duplicate pointed objects
+    (dynamic_cast<AliRecPoint&>(recp)).fDigitsList = new Int_t[fMulDigit];
+    memcpy((dynamic_cast<AliRecPoint&>(recp)).fDigitsList,fDigitsList,fMulDigit*sizeof(Int_t));
+    (dynamic_cast<AliRecPoint&>(recp)).fTracksList = new Int_t[fMulTrack];
+    memcpy((dynamic_cast<AliRecPoint&>(recp)).fTracksList,fTracksList,fMulTrack*sizeof(Int_t));
+  }
+}
+
+//_______________________________________________________________________
+void AliRecPoint::GetCovarianceMatrix(TMatrixF & mat) const
 {
   // returns the covariant matrix for the local position
   
@@ -127,7 +188,7 @@ void AliRecPoint::GetCovarianceMatrix(TMatrix & mat)
 }
 
 //____________________________________________________________________________
-void AliRecPoint::GetLocalPosition(TVector3 & pos)
+void AliRecPoint::GetLocalPosition(TVector3 & pos) const
 {
   // returns the position of the cluster in the local reference system of the sub-detector
 
@@ -137,7 +198,7 @@ void AliRecPoint::GetLocalPosition(TVector3 & pos)
 }
 
 //____________________________________________________________________________
-void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat)
+void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrixF & gmat) const
 {
   // returns the position of the cluster in the global reference system of ALICE
   // and the uncertainty on this position
@@ -147,36 +208,4 @@ void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat)
  
 }
 
-//______________________________________________________________________________
-void AliRecPoint::Streamer(TBuffer &R__b)
-{
-  //  Stream an object of class AliRecPoint.
- if (R__b.IsReading()) {
-      Version_t R__v = R__b.ReadVersion(); if (R__v) { }
-      TObject::Streamer(R__b);
-      R__b >> fAmp;
-      R__b >> fIndexInList;
-      R__b >> fMulDigit;
-      fDigitsList = new Int_t[fMulDigit] ; 
-      R__b.ReadFastArray(fDigitsList, fMulDigit);
-      R__b >> fGeom;
-      fLocPos.Streamer(R__b);
-      R__b >> fLocPosM;
-      R__b >> fMulTrack;
-      fTracksList = new Int_t[fMulTrack] ; 
-      R__b.ReadFastArray(fTracksList, fMulTrack);
-   } else {
-      R__b.WriteVersion(AliRecPoint::IsA());
-      TObject::Streamer(R__b);
-      R__b << fAmp;
-      R__b << fIndexInList;
-      R__b << fMulDigit;
-      R__b.WriteFastArray(fDigitsList, fMulDigit);
-      R__b << fGeom;
-      fLocPos.Streamer(R__b);
-      R__b << fLocPosM;
-      R__b << fMulTrack;
-      R__b.WriteFastArray(fTracksList, fMulTrack);
-   }
-}