]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetAODReader.cxx
fix memory leak when setting the reference tracks for AOD MC
[u/mrichter/AliRoot.git] / JETAN / AliJetAODReader.cxx
index 9dad22bed38904230941995c664f156229f87981..1c7ade22de981b9f2bebec8be627b7f153f1c1b1 100644 (file)
@@ -234,7 +234,10 @@ Bool_t AliJetAODReader::FillMomentumArrayMC(){
 
     
 
-    if (mcTrack == 0) new(fRef) TRefArray(TProcessID::GetProcessWithUID(track));
+    if (mcTrack == 0){
+      fRef->Delete(); // make sure to delete before placement new...
+      new(fRef) TRefArray(TProcessID::GetProcessWithUID(track));
+    }
     new ((*fMomentumArray)[mcTrack]) TLorentzVector(p3,p3.Mag());
     sflag[mcTrack] = 1;
     cflag[mcTrack] = ( pt > ptMin ) ? 1: 0;
@@ -261,16 +264,14 @@ Bool_t AliJetAODReader::FillMomentumArray()
   fRef->Clear();
   fDebug = fReaderHeader->GetDebug();
 
-  if(((AliJetAODReaderHeader*)fReaderHeader)->GetReadAODMC()){
-    return FillMomentumArrayMC();
-  }
-  
-
-  
   if (!fAOD) {
       return kFALSE;
   }
-  
+
+  if(((AliJetAODReaderHeader*)fReaderHeader)->GetReadAODMC()){
+    return FillMomentumArrayMC();
+  }
+   
   // get number of tracks in event (for the loop)
   Int_t nt = fAOD->GetNTracks();
   if(fDebug>0)printf("AOD tracks: %5d \t", nt);