Some init values and deletes
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 14 Aug 2008 18:50:01 +0000 (18:50 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 14 Aug 2008 18:50:01 +0000 (18:50 +0000)
STEER/AliAODCaloCells.cxx
STEER/AliAODCaloCluster.cxx
STEER/AliAODPid.cxx
STEER/AliAODRecoDecay.cxx
STEER/AliAODTracklets.cxx

index 67764e1..f8e2f25 100644 (file)
@@ -88,6 +88,10 @@ void AliAODCaloCells::CreateContainer(Short_t nCells)
 
   fCellNumber = new Short_t[fNCells];
   fAmplitude = new Double32_t[fNCells];
+  // set to zero
+  for(int i = 0;i<fNCells;++i){
+    fAmplitude[i] = fCellNumber[i] = 0;
+  }
 }
 
 void AliAODCaloCells::DeleteContainer()
index f9d6efa..908188a 100644 (file)
@@ -37,8 +37,8 @@ AliAODCaloCluster::AliAODCaloCluster() :
   fTOF(0.),
   fTracksMatched(),
   fNCells(0),
-  fCellsAbsId(),
-  fCellsAmpFraction()
+  fCellsAbsId(0x0),
+  fCellsAmpFraction(0x0)
 {
   // default constructor
 
@@ -63,8 +63,8 @@ AliAODCaloCluster::AliAODCaloCluster(Int_t id,
   fTOF(0.),
   fTracksMatched(),
   fNCells(0),
-  fCellsAbsId(),
-  fCellsAmpFraction()
+  fCellsAbsId(0x0),
+  fCellsAmpFraction(0x0)
 {
   // constructor
 
@@ -89,8 +89,8 @@ AliAODCaloCluster::AliAODCaloCluster(Int_t id,
   fTOF(0.),
   fTracksMatched(),
   fNCells(0),
-  fCellsAbsId(),
-  fCellsAmpFraction()
+  fCellsAbsId(0x0),
+  fCellsAmpFraction(0x0)
 {
   // constructor
 }
@@ -117,8 +117,8 @@ AliAODCaloCluster::AliAODCaloCluster(const AliAODCaloCluster& clus) :
   fTOF(clus.fTOF),
   fTracksMatched(clus.fTracksMatched),
   fNCells(clus.fNCells),
-  fCellsAbsId(),
-  fCellsAmpFraction()
+  fCellsAbsId(0x0),
+  fCellsAmpFraction(0x0)
 {
   // Copy constructor
 
@@ -158,6 +158,10 @@ AliAODCaloCluster& AliAODCaloCluster::operator=(const AliAODCaloCluster& clus)
     fTracksMatched = clus.fTracksMatched;
 
     fNCells= clus. fNCells;
+    // delete anyway 
+    if(fCellsAbsId)delete [] fCellsAbsId;
+    if(fCellsAmpFraction)delete [] fCellsAmpFraction;
+
     if (clus.fNCells > 0) {
       
       if(clus.fCellsAbsId){
@@ -221,8 +225,8 @@ void  AliAODCaloCluster::SetCellsAbsId(UShort_t *array)
 {
     //  Set the array of cell absId numbers 
     if (fNCells) {
-       fCellsAbsId = new  UShort_t[fNCells];
-       for (Int_t i = 0; i < fNCells; i++) fCellsAbsId[i] = array[i];
+      if(!fCellsAbsId)fCellsAbsId = new  UShort_t[fNCells];
+      for (Int_t i = 0; i < fNCells; i++) fCellsAbsId[i] = array[i];
     }
 }
 
@@ -230,7 +234,7 @@ void  AliAODCaloCluster::SetCellsAmplitudeFraction(Double32_t *array)
 {
     //  Set the array of cell amplitude fraction
     if (fNCells) {
-       fCellsAmpFraction = new  Double32_t[fNCells];
-       for (Int_t i = 0; i < fNCells; i++) fCellsAmpFraction[i] = array[i];
+      if(!fCellsAmpFraction)fCellsAmpFraction = new  Double32_t[fNCells];
+      for (Int_t i = 0; i < fNCells; i++) fCellsAmpFraction[i] = array[i];
     }
 }
index f3e817c..7179247 100644 (file)
@@ -44,6 +44,8 @@ AliAODPid::AliAODPid():
 //______________________________________________________________________________
 AliAODPid::~AliAODPid() 
 {
+  delete [] fTRDslices;
+  fTRDslices = 0;
   // destructor
 }
 
@@ -70,13 +72,21 @@ AliAODPid& AliAODPid::operator=(const AliAODPid& pid)
   // Assignment operator
   if(this!=&pid) {
     // copy stuff
-  fITSsignal=pid.fITSsignal; 
-  fTPCsignal=pid.fTPCsignal;
-  fTRDnSlices=pid.fTRDnSlices;
-  for(Int_t i=0; i< fTRDnSlices; i++) fTRDslices[i]=pid.fTRDslices[i];
-  fTOFesdsignal=pid.fTOFesdsignal;
-  fHMPIDsignal=pid.fHMPIDsignal;
-  for(Int_t i=0; i<kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
+    fITSsignal=pid.fITSsignal; 
+    fTPCsignal=pid.fTPCsignal;
+    
+    if(pid.fTRDnSlices<=0||(fTRDnSlices!=pid.fTRDnSlices)){
+      // only delete if number changed or is 0
+      delete [] fTRDslices;
+      fTRDslices = 0;
+      if(pid.fTRDnSlices>0) fTRDslices = new Double32_t[fTRDnSlices];
+    }
+    fTRDnSlices=pid.fTRDnSlices;
+    
+    for(Int_t i=0; i< fTRDnSlices; i++) fTRDslices[i]=pid.fTRDslices[i];
+    fTOFesdsignal=pid.fTOFesdsignal;
+    fHMPIDsignal=pid.fHMPIDsignal;
+    for(Int_t i=0; i<kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
   }
 
   return *this;
index 31d0792..51326f3 100644 (file)
@@ -150,21 +150,27 @@ AliAODRecoDecay &AliAODRecoDecay::operator=(const AliAODRecoDecay &source)
   fEventNumber = source.fEventNumber;
   fRunNumber = source.fRunNumber;
   if(source.GetNProngs()>0) {
+    if(fd0)delete [] fd0; 
     fd0 = new Double_t[GetNProngs()];
     memcpy(fd0,source.fd0,GetNProngs()*sizeof(Double_t));
     if(source.fPx) {
+      if(fPx) delete [] fPx; 
       fPx = new Double_t[GetNProngs()];
+      if(fPy) delete [] fPy; 
       fPy = new Double_t[GetNProngs()];
+      if(fPz) delete [] fPz; 
       fPz = new Double_t[GetNProngs()];
       memcpy(fPx,source.fPx,GetNProngs()*sizeof(Double_t));
       memcpy(fPy,source.fPy,GetNProngs()*sizeof(Double_t));
       memcpy(fPz,source.fPz,GetNProngs()*sizeof(Double_t));
     }
     if(source.fPID) {
+      if(fPID) delete [] fPID; 
       fPID = new Double_t[5*GetNProngs()];
       memcpy(fPID,source.fPID,GetNProngs()*sizeof(Double_t));
     }
     if(source.fDCA) {
+      if(fDCA) delete [] fDCA; 
       fDCA = new Double_t[GetNProngs()*(GetNProngs()-1)/2];
       memcpy(fDCA,source.fDCA,(GetNProngs()*(GetNProngs()-1)/2)*sizeof(Double32_t));
     }
index e9a89e4..c53b6fe 100644 (file)
@@ -64,7 +64,10 @@ AliAODTracklets& AliAODTracklets::operator=(const AliAODTracklets& tracklet)
 // Assignment operator
     if(&tracklet == this) return *this;
     TNamed::operator=(tracklet);
-    fNTracks = tracklet.fNTracks;
+    if(fNTracks!=tracklet.fNTracks){
+      fNTracks = tracklet.fNTracks;
+      CreateContainer(fNTracks);
+    }
     for (Int_t i = 0; i < fNTracks; i++) {
        fTheta[i]    = tracklet.fTheta[i];
        fPhi[i]      = tracklet.fPhi[i];