Additional fixes for memory leaks
authorhristov <Peter.Hristov@cern.ch>
Thu, 21 Aug 2014 10:15:49 +0000 (12:15 +0200)
committerhristov <Peter.Hristov@cern.ch>
Thu, 21 Aug 2014 10:15:49 +0000 (12:15 +0200)
TOF/AliTOFAnalysisTaskCalibPass0.cxx
TRD/AliTRDPreprocessorOffline.cxx

index 436bd1d..7ec22dd 100644 (file)
@@ -481,7 +481,9 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
   if (!histoVertexTimestamp) {
     AliError(Form("cannot get \"hHistoVertexTimestamp\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else {
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -489,14 +491,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   if (!histoDeltatTimestamp) {
     AliError(Form("cannot get \"hHistoDeltatTimestamp\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -504,14 +507,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   if (!histoDeltazEta) {
     AliError(Form("cannot get \"hHistoDeltazEta\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -519,14 +523,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   if (!histoDeltatEta) {
     AliError(Form("cannot get \"hHistoDeltatEta\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -534,14 +539,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   if (!histoDeltazCosTheta) {
     AliError(Form("cannot get \"hHistoDeltazCosTheta\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -549,14 +555,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   if (!histoAcceptedTracksEtaPt) {
     AliError(Form("cannot get \"hHistoAccptedTracksEtaPt\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -564,14 +571,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   if (!histoMatchedTracksEtaPt) {
     AliError(Form("cannot get \"hHistoMatchedTracksEtaPt\" object from file %s", filename));
     fStatus = kInputError;
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -579,7 +587,6 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
@@ -587,7 +594,9 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
   /* check matching performance */
   if (!CheckMatchingPerformance(histoDeltazEta, histoAcceptedTracksEtaPt, histoMatchedTracksEtaPt)) {
     AliError("error while checking matching efficiency");
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -595,14 +604,15 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
   /* calibrate and store */
   if (!CalibrateAndStore(histoVertexTimestamp, histoDeltatTimestamp, db)) {
     AliError("error while calibrating and storing");
-    if (list){
+    if (list)
+      delete list;
+    else{
       if (histoVertexTimestamp) delete histoVertexTimestamp;
       if (histoDeltatTimestamp )delete histoDeltatTimestamp;
       if (histoDeltazEta) delete histoDeltazEta;
@@ -610,12 +620,13 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
       if (histoDeltazCosTheta) delete histoDeltazCosTheta;
       if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
       if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-      delete list;
     }
     return kFALSE;
   }
 
-  if (list){
+  if (list)
+    delete list;
+  else{
     if (histoVertexTimestamp) delete histoVertexTimestamp;
     if (histoDeltatTimestamp )delete histoDeltatTimestamp;
     if (histoDeltazEta) delete histoDeltazEta;
@@ -623,7 +634,6 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
     if (histoDeltazCosTheta) delete histoDeltazCosTheta;
     if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
     if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
-    delete list;
   }
 
   /* success */
index 583c970..50de15f 100644 (file)
@@ -535,11 +535,14 @@ Bool_t AliTRDPreprocessorOffline::ReadGainGlobal(const Char_t* fileName){
   TObjArray * array = (TObjArray*)fcalib.Get(fNameList);
   if (array){
     TH2I *ch2d = (TH2I *) array->FindObject("CH2d");
-    if(!ch2d) return kFALSE;
+    if(!ch2d) {
+      delete array;
+      return kFALSE;
+    }
     fCH2d = (TH2I*)ch2d->Clone();
+    delete array;
     //fNEvents = (TH1I *) array->FindObject("NEvents");
     //fAbsoluteGain = (TH2F *) array->FindObject("AbsoluteGain");
-    delete array;
   }else{
     TH2I *ch2d = (TH2I *) fcalib.Get("CH2d");
     if(!ch2d) return kFALSE;
@@ -564,7 +567,10 @@ Bool_t AliTRDPreprocessorOffline::ReadVdriftT0Global(const Char_t* fileName){
   TObjArray * array = (TObjArray*)fcalib.Get(fNameList);
   if (array){
     TProfile2D *ph2d = (TProfile2D *) array->FindObject("PH2d");
-    if(!ph2d) return kFALSE;
+    if(!ph2d) {
+      delete array;
+      return kFALSE;
+    }
     fPH2d = (TProfile2D*)ph2d->Clone();
     //fNEvents = (TH1I *) array->FindObject("NEvents");
     delete array;
@@ -590,7 +596,8 @@ Bool_t AliTRDPreprocessorOffline::ReadVdriftLinearFitGlobal(const Char_t* fileNa
   TFile fcalib(fileName);
   TObjArray * array = (TObjArray*)fcalib.Get(fNameList);
   if (array){
-    fAliTRDCalibraVdriftLinearFit = (AliTRDCalibraVdriftLinearFit *) array->FindObject("AliTRDCalibraVdriftLinearFit");
+    AliTRDCalibraVdriftLinearFit * dummy = (AliTRDCalibraVdriftLinearFit *) array->FindObject("AliTRDCalibraVdriftLinearFit");
+    fAliTRDCalibraVdriftLinearFit = dummy ? (AliTRDCalibraVdriftLinearFit *) dummy->Clone() : 0x0;
     //fNEvents = (TH1I *) array->FindObject("NEvents");
     delete array;
   }else{
@@ -613,7 +620,8 @@ Bool_t AliTRDPreprocessorOffline::ReadExbAltFitGlobal(const Char_t* fileName){
   TFile fcalib(fileName);
   TObjArray * array = (TObjArray*)fcalib.Get(fNameList);
   if (array){
-    fAliTRDCalibraExbAltFit = (AliTRDCalibraExbAltFit *) array->FindObject("AliTRDCalibraExbAltFit");
+     AliTRDCalibraExbAltFit * dummy = (AliTRDCalibraExbAltFit *) array->FindObject("AliTRDCalibraExbAltFit");
+     fAliTRDCalibraExbAltFit = dummy ? (AliTRDCalibraExbAltFit *)dummy->Clone() : 0x0;
     //fNEvents = (TH1I *) array->FindObject("NEvents");
     delete array;
   }else{
@@ -638,8 +646,12 @@ Bool_t AliTRDPreprocessorOffline::ReadPRFGlobal(const Char_t* fileName){
   TObjArray * array = (TObjArray*)fcalib.Get(fNameList);
   if (array){
     TProfile2D *prf2d = (TProfile2D *) array->FindObject("PRF2d");
-    if(!prf2d) return kFALSE;
+    if(!prf2d) {
+      delete array;
+      return kFALSE;
+    }
     fPRF2d = (TProfile2D*)prf2d->Clone();
+    delete array;
     //fNEvents = (TH1I *) array->FindObject("NEvents");
   }else{
     TProfile2D *prf2d = (TProfile2D *) fcalib.Get("PRF2d");