]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRecPoint.cxx
Corrected protection.
[u/mrichter/AliRoot.git] / STEER / AliRecPoint.cxx
index d6dd12df86bfc318e1390bc4d17c9cbcaa14c82f..7ab6b8a999f779d9f7e5426417466fea2a52d94b 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.9  2001/12/05 14:36:47  hristov
-The default constructor now creates no objects; destructor corrected (thanks to R.Brun).
-
-Revision 1.8  2001/10/21 18:38:43  hristov
-Several pointers were set to zero in the default constructors to avoid memory management problems
-
-Revision 1.7  2000/11/30 07:12:49  alibrary
-Introducing new Rndm and QA classes
-
-Revision 1.6  2000/10/02 21:28:14  fca
-Removal of useless dependecies via forward declarations
-
-Revision 1.5  2000/07/11 18:24:59  fca
-Coding convention corrections + few minor bug fixes
-
-Revision 1.4  2000/05/16 08:30:02  fca
-Using automatic streamer for c arrays
-
-Revision 1.3  2000/03/20 14:22:25  fca
-New version to support new PHOS code
-
-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++-*-
 //_________________________________________________________________________
@@ -94,7 +63,7 @@ AliRecPoint::AliRecPoint(const char * ):
   fGeom(0),
   fIndexInList(-1), // to be set when the point is already stored
   fLocPos(0,0,0),
-  fLocPosM(new TMatrix(3,3)),
+  fLocPosM(new TMatrixF(3,3)),
   fMaxDigit(100),
   fMulDigit(0),
   fMaxTrack(5),
@@ -147,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 ; 
   }
   
@@ -183,34 +152,34 @@ void AliRecPoint::AddDigit(AliDigitNew & digit)
 // }
 
 //_______________________________________________________________________
-void AliRecPoint::Copy(AliRecPoint& recp) const
+void AliRecPoint::Copy(TObject& recp) const
 {
   //
   // Copy *this onto pts
   //
   // Copy all first
-  if(this != &recp) {
-    ((TObject*) this)->Copy(dynamic_cast<TObject&>(recp));
-    recp.fAmp = fAmp;
-    recp.fGeom = fGeom;
-    recp.fIndexInList = fIndexInList;
-    recp.fLocPos = fLocPos;
-    recp.fLocPosM = new TMatrix(*fLocPosM);
-    recp.fMaxDigit = fMaxDigit;
-    recp.fMulDigit = fMulDigit;
-    recp.fMaxTrack = fMaxTrack;
-    recp.fMulTrack = fMulTrack;
+  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
-    recp.fDigitsList = new Int_t[fMulDigit];
-    memcpy(recp.fDigitsList,fDigitsList,fMulDigit*sizeof(Int_t));
-    recp.fTracksList = new Int_t[fMulTrack];
-    memcpy(recp.fTracksList,fTracksList,fMulTrack*sizeof(Int_t));
+    (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(TMatrix & mat) const
+void AliRecPoint::GetCovarianceMatrix(TMatrixF & mat) const
 {
   // returns the covariant matrix for the local position
   
@@ -229,7 +198,7 @@ void AliRecPoint::GetLocalPosition(TVector3 & pos) const
 }
 
 //____________________________________________________________________________
-void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat) const
+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