Fixed some memory leaks, deletes before returning from eventloop, properly reset...
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Mar 2010 13:05:17 +0000 (13:05 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Mar 2010 13:05:17 +0000 (13:05 +0000)
JETAN/AliAnalysisTaskJets.h
JETAN/AliCdfJetFinder.cxx
JETAN/AliDAJetFinder.cxx
JETAN/AliSISConeJetFinder.cxx

index 607cb21..d8f2e11 100644 (file)
@@ -5,13 +5,17 @@
  * See cxx source for full Copyright notice                               */
  
 #include "AliAnalysisTaskSE.h"
+
+
 class AliJetFinder;
 class AliESDEvent;
-class TTree;
-class TChain;
 class AliAODEvent;
 class AliJetHistos;
 class AliAODExtension;
+class TTree;
+class TChain;
+class TString;
+
 
 
 class AliAnalysisTaskJets : public AliAnalysisTaskSE
index 93eb6c9..3da21c5 100644 (file)
@@ -78,6 +78,7 @@ AliCdfJetFinder::AliCdfJetFinder():
 //______________________________________________________________________________
 AliCdfJetFinder::~AliCdfJetFinder()
   {
+    Clean();
   // destructor
   }
 
@@ -357,20 +358,27 @@ if (fAODwrite)
 
 InitData();
 
-if (!fNPart) { if (fDebug) {cout << "entries = 0 ; Event empty !!!" << endl ;} return; } // if event empty then exit
-
-FindCones();
-
-ComputeConesWeight();
-
-if (fAODwrite) { 
-  if(fDebug)cout << "Writing AOD" << endl ; 
-  WriteJets();
+ if (!fNPart) { 
+  if (fDebug) {
+    cout << "entries = 0 ; Event empty !!!" << endl ;
+  }
+  // no need to call clean, InitData does not 
+  // create pointers if npart == 0
+  return; 
+ } // if event empty then exit
+
+ FindCones();
+ ComputeConesWeight();
+ if (fAODwrite) { 
+   if(fDebug)cout << "Writing AOD" << endl ; 
+   WriteJets();
  }
-
-if (fAnalyseJets) AnalizeJets();
-
-Clean();
+ if (fAnalyseJets) AnalizeJets();
+ Clean();
 
 }
 
@@ -594,6 +602,7 @@ for(  Int_t jetnr = 0 ; jetnr < fNJets ; jetnr++ )
     }
   // tracks REFs written in AOD
   AddJet(jet);
+
   }
 //jets vector parsed and written to AOD
 }
@@ -889,10 +898,20 @@ for(  Int_t part = 0 ; part < fNPart ; part++ )
 void AliCdfJetFinder::Clean()
 {
 // CLEANING SECTION
-  delete [] fVectParticle;
-  delete [] fVectJet;
-  delete [] fPtArray;
-  delete [] fIdxArray;
+  for (  Int_t i = 0 ; i < fNPart ; i++ ){
+    delete fVectParticle[i];
+    fVectParticle[i] = 0;
+  }
+  delete [] fVectParticle;fVectParticle = 0;
+
+  for (  Int_t i = 0 ; i < fNJets ; i++ ){
+    delete fVectJet[i];
+    fVectJet[i] = 0;
+  } 
+  delete [] fVectJet;fVectJet = 0;
+
+  delete [] fPtArray;fPtArray = 0;
+  delete [] fIdxArray;fIdxArray = 0;
 
   Reset();
 }
index c60b1b9..d1581d9 100644 (file)
@@ -70,8 +70,14 @@ void AliDAJetFinder::FindJets()
        TMatrixD *mPyx= new TMatrixD();
        TMatrixD *mY  = new TMatrixD();
        InitDetAnn(dEtSum,xData,vPx,vPy,mPyx,mY);
-       if (fNin < fNclustMax) return;
-
+       if (fNin < fNclustMax){
+         delete [] xData[0], delete [] xData[1];
+         delete vPx;
+         delete vPy;
+         delete mPyx;
+         delete mY;
+         return;
+       }
        Int_t nc=1, nk;
        DoubleClusters(nc,nk,vPy,mY);
        do{                                     //loop over beta
index 73e493d..75fdc29 100644 (file)
@@ -122,12 +122,14 @@ void AliSISConeJetFinder::FindJets()
        if(lvArray == 0)
          {
            cout << "Could not get the momentum array" << endl;
+           delete plugin;
            return;
          }
        
        if(nIn == 0)// nIn = Number of particles in the event
          {
            if (debug) cout << "entries = 0 ; Event empty !!!" << endl ;
+           delete plugin;
            return;
          }
        
@@ -150,9 +152,9 @@ void AliSISConeJetFinder::FindJets()
       }
     else {
       TClonesArray* fUnit = fReader->GetUnitArray();
-      if(fUnit == 0) { cout << "Could not get the momentum array" << endl; return; }
+      if(fUnit == 0) { cout << "Could not get the momentum array" << endl;         delete plugin; return; }
       Int_t         nIn = fUnit->GetEntries();
-      if(nIn == 0) { if (debug) cout << "entries = 0 ; Event empty !!!" << endl ; return; }
+      if(nIn == 0) { if (debug) cout << "entries = 0 ; Event empty !!!" << endl ;          delete plugin; return; }
         // Information extracted from fUnitArray
       // load input vectors and calculate total energy in array
       Float_t pt,eta,phi,theta,px,py,pz,en;
@@ -319,6 +321,9 @@ void AliSISConeJetFinder::FindJets()
       AddJet(aodjet);
     }
   }
+
+  delete plugin;
+
 }
  
 //____________________________________________________________________________