]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/STEER/AliTrackResiduals.cxx
Updates for new TOF data structure: Setters (F. Noferini)
[u/mrichter/AliRoot.git] / STEER / STEER / AliTrackResiduals.cxx
index d3f06c497854bf57e78b915fc836a371b794ab75..fed8afb127f16d7aec3c5724dfe8be61af334d31 100644 (file)
@@ -93,13 +93,15 @@ AliTrackResiduals::AliTrackResiduals(const AliTrackResiduals &res):
   memset(fVolArray,0,sizeof(AliTrackPointArray*)*fN);
   memset(fTrackArray,0,sizeof(AliTrackPointArray*)*fN);
 
-  for (Int_t itrack = 0; itrack < fN; itrack++)
-      {
-       if (res.fVolArray[itrack])
-         fVolArray[itrack] = new AliTrackPointArray(*res.fVolArray[itrack]);
-       if (res.fTrackArray[itrack])
-         fTrackArray[itrack] = new AliTrackPointArray(*res.fTrackArray[itrack]);
-      }
+  for (Int_t itrack = 0; itrack < fN; itrack++) {
+    if (res.fVolArray[itrack])
+      fVolArray[itrack] = new AliTrackPointArray(*res.fVolArray[itrack]);
+    if (res.fTrackArray[itrack])
+      fTrackArray[itrack] = new AliTrackPointArray(*res.fTrackArray[itrack]);
+  }
+
+  memcpy(fBFixed,res.fBFixed,sizeof(Bool_t)*6);
+  memcpy(fFixed,res.fFixed,sizeof(Float_t)*6);
 
 }
 
@@ -111,17 +113,50 @@ AliTrackResiduals &AliTrackResiduals::operator =(const AliTrackResiduals& res)
   if(this!=&res) {
     TObject::operator=(res);
     
-    fN = res.fN;
     fLast = res.fLast;
-    fAlignObj = res.fAlignObj;
-    fVolArray = res.fVolArray;
-    fTrackArray = res.fTrackArray;
+    delete fAlignObj;
+    if(res.fAlignObj) 
+      fAlignObj = (AliAlignObj *)res.fAlignObj->Clone();
+    else
+      fAlignObj = 0;
+      
+    if (fIsOwner) {
+      if (fVolArray) {
+       for (Int_t itrack = 0; itrack < fN; itrack++) 
+         delete fVolArray[itrack];
+       delete [] fVolArray;
+       fVolArray=0;
+      }
+      if(res.fN) {
+       fVolArray = new AliTrackPointArray*[res.fN];
+       memset(fVolArray,0,sizeof(AliTrackPointArray*)*res.fN);
+       for (Int_t itrack = 0; itrack < res.fN; itrack++) 
+         if (res.fVolArray[itrack])
+           fVolArray[itrack] = new AliTrackPointArray(*res.fVolArray[itrack]);
+      }
+      if (fTrackArray) {
+       for (Int_t itrack = 0; itrack < fN; itrack++) 
+         delete fTrackArray[itrack];
+       delete [] fTrackArray;
+      }
+      if(res.fN) {
+       fTrackArray = new AliTrackPointArray*[res.fN];
+       memset(fTrackArray,0,sizeof(AliTrackPointArray*)*res.fN);
+       for (Int_t itrack = 0; itrack < res.fN; itrack++) 
+         if (res.fTrackArray[itrack])
+           fTrackArray[itrack] = new AliTrackPointArray(*res.fTrackArray[itrack]);
+      }
+    } else {
+      fVolArray = res.fVolArray;
+      fTrackArray = res.fTrackArray;
+    }
+    fN = res.fN;
     fChi2 = res.fChi2;
     fNdf  = res.fNdf;
     fMinNPoints = res.fMinNPoints;
     fIsOwner = kFALSE;
-    
-    memcpy(fBFixed,res.fBFixed,sizeof(Float_t)*6);
+
+    memcpy(fBFixed,res.fBFixed,sizeof(Bool_t)*6);
     memcpy(fFixed,res.fFixed,sizeof(Float_t)*6);
   }
   return *this;
@@ -131,7 +166,7 @@ AliTrackResiduals &AliTrackResiduals::operator =(const AliTrackResiduals& res)
 AliTrackResiduals::~AliTrackResiduals()
 {
   // Destructor
-  if (fAlignObj) delete fAlignObj;
+  delete fAlignObj;
   DeleteTrackPointArrays();
 }
 
@@ -185,7 +220,7 @@ void AliTrackResiduals::InitAlignObj()
 {
   // Create the alignment object 
   // to be updated
-  if (fAlignObj) delete fAlignObj;
+  delete fAlignObj;
   fAlignObj = new AliAlignObjParams;
 }
 
@@ -214,15 +249,13 @@ void AliTrackResiduals::DeleteTrackPointArrays()
   // Called by the destructor and SetNTracks methods.
   if (fIsOwner) {
     if (fVolArray) {
-      for (Int_t itrack = 0; itrack < fN; itrack++) {
-       if (fVolArray[itrack]) delete fVolArray[itrack];
-      }
+      for (Int_t itrack = 0; itrack < fN; itrack++) 
+       delete fVolArray[itrack];
       delete [] fVolArray;
     }
     if (fTrackArray) {
-      for (Int_t itrack = 0; itrack < fN; itrack++) {
-       if (fTrackArray[itrack]) delete fTrackArray[itrack];
-      }
+      for (Int_t itrack = 0; itrack < fN; itrack++) 
+       delete fTrackArray[itrack];
       delete [] fTrackArray;
     }
   }