Fixes for memory leaks (Chiara)
authorhristov <Peter.Hristov@cern.ch>
Thu, 21 Aug 2014 07:08:42 +0000 (09:08 +0200)
committerhristov <Peter.Hristov@cern.ch>
Thu, 21 Aug 2014 07:08:42 +0000 (09:08 +0200)
T0/AliT0CalibTimeEq.cxx
TOF/AliTOFAnalysisTaskCalibPass0.cxx
TPC/Base/AliTPCcalibDButil.cxx
TPC/Calib/AliTPCPreprocessorOffline.cxx
TPC/Calib/AliTPCcalibGainMult.cxx
TRD/AliTRDPreprocessorOffline.cxx
TRD/AliTRDdEdxCalibUtils.cxx

index 03ea8ab..dbfb086 100644 (file)
@@ -328,6 +328,7 @@ Int_t AliT0CalibTimeEq::ComputeOfflineParams(const char* filePhys, Float_t *time
              }
              else {
                AliError(Form("no  histograms collected by pass0 for time %i channels ", okcfd));
+               if (tzeroObj) delete tzeroObj;
                return 20; 
              }
            }
@@ -348,6 +349,7 @@ Int_t AliT0CalibTimeEq::ComputeOfflineParams(const char* filePhys, Float_t *time
                    printf("!!!!fatal data:: pmt %i nent%i RMS %f mean %f cdbtime %f \n",
                           i, nent, cfdtime->GetRMS(), cfdtime->GetMean(), cfdvalue[i]);
                      AliError(Form(" histograms collected by pass0 for time %i channels are empty", okcfd));
+                     if (tzeroObj) delete tzeroObj;
                      return 20; 
                    }
                }
@@ -363,6 +365,7 @@ Int_t AliT0CalibTimeEq::ComputeOfflineParams(const char* filePhys, Float_t *time
                         i, nent, cfdtime->GetRMS(), cfdtime->GetMean(),  cfdvalue[i]);
                  if (okcfd>2) {
                  ok = -11;
+                 if (tzeroObj) delete tzeroObj;
                  return ok;
                  }
                }
@@ -391,8 +394,9 @@ Int_t AliT0CalibTimeEq::ComputeOfflineParams(const char* filePhys, Float_t *time
       gFile->Close();
       delete gFile;
     }
-    return ok; 
-   }
+  if (tzeroObj) delete tzeroObj;
+  return ok; 
+}
 
 //________________________________________________________________________
 void AliT0CalibTimeEq::GetMeanAndSigma(TH1F* hist,  Float_t &mean, Float_t &sigma) {
index e9c9f10..436bd1d 100644 (file)
@@ -481,50 +481,151 @@ AliTOFAnalysisTaskCalibPass0::DoProcessOutput(const Char_t *filename, AliCDBStor
   if (!histoVertexTimestamp) {
     AliError(Form("cannot get \"hHistoVertexTimestamp\" object from file %s", filename));
     fStatus = kInputError;
+    if (list){
+      if (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      if (histoDeltazCosTheta) delete histoDeltazCosTheta;
+      if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
+      if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
+      delete list;
+    }
     return kFALSE;
   }
 
   /* check matching performance */
   if (!CheckMatchingPerformance(histoDeltazEta, histoAcceptedTracksEtaPt, histoMatchedTracksEtaPt)) {
     AliError("error while checking matching efficiency");
+    if (list){
+      if (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      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 (histoVertexTimestamp) delete histoVertexTimestamp;
+      if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+      if (histoDeltazEta) delete histoDeltazEta;
+      if (histoDeltatEta) delete histoDeltatEta;
+      if (histoDeltazCosTheta) delete histoDeltazCosTheta;
+      if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
+      if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
+      delete list;
+    }
     return kFALSE;
   }
 
+  if (list){
+    if (histoVertexTimestamp) delete histoVertexTimestamp;
+    if (histoDeltatTimestamp )delete histoDeltatTimestamp;
+    if (histoDeltazEta) delete histoDeltazEta;
+    if (histoDeltatEta) delete histoDeltatEta;
+    if (histoDeltazCosTheta) delete histoDeltazCosTheta;
+    if (histoAcceptedTracksEtaPt) delete histoAcceptedTracksEtaPt;
+    if (histoMatchedTracksEtaPt) delete histoMatchedTracksEtaPt;
+    delete list;
+  }
+
   /* success */
   return kTRUE;
 }
index ce381fc..c20e1a2 100644 (file)
@@ -3036,6 +3036,9 @@ TMatrixD* AliTPCcalibDButil::MakeStatRelKalman(TObjArray * const array, Float_t
     stat(ipar,1)=TMath::Median(naccept, valArray[ipar]->GetMatrixArray());
     stat(ipar,2)=TMath::RMS(naccept, valArray[ipar]->GetMatrixArray());
   }
+  for (Int_t i=0; i<9; i++){
+    delete valArray[i];
+  }
   return pstat;
 }
 
index 9813fd2..1cd3cd7 100644 (file)
@@ -519,6 +519,7 @@ void AliTPCPreprocessorOffline::AddHistoGraphs(  TObjArray * vdriftArray, AliTPC
       THnSparse* newHist=hist->Projection(4,dim);
       newHist->SetName(name);
       TGraphErrors* graph=AliTPCcalibBase::FitSlices(newHist,2,0,400,100,0.05,0.95, kTRUE);
+      delete newHist;
       if (!graph) {
        printf("Graph =%s filtered out\n", name.Data());
        continue;
@@ -626,6 +627,7 @@ void AliTPCPreprocessorOffline::AddAlignmentGraphs(  TObjArray * vdriftArray, Al
       graph->SetName(grName.Data());
       vdriftArray->AddLast(graph);
     }
+    delete arrays[iarray];
   }  
 }
 
@@ -715,7 +717,7 @@ TGraphErrors * AliTPCPreprocessorOffline::MakeGraphFilter0(THnSparse *hisN, Int_
       if(minBin <= 0) minBin = 1;
       if(maxBin >= hisN->GetAxis(itime)->GetNbins()) maxBin = hisN->GetAxis(itime)->GetNbins()-1;
       hisN->GetAxis(itime)->SetRange(minBin,maxBin);
-      
+
       Double_t time = hisT->GetBinCenter(ibin);
       TH1 * his = hisN->Projection(ival);
       Double_t nentries0= his->GetBinContent(his->FindBin(0));
@@ -733,6 +735,7 @@ TGraphErrors * AliTPCPreprocessorOffline::MakeGraphFilter0(THnSparse *hisN, Int_
   delete hisT;
   delete hisV;
   TGraphErrors * graph =  new TGraphErrors(entries,vecTime.GetMatrixArray(), vecMean0.GetMatrixArray(),                                           0, vecMean1.GetMatrixArray());
+
   return graph;
 }
 
@@ -1206,6 +1209,9 @@ Bool_t AliTPCPreprocessorOffline::AnalyzeGainDipAngle(Int_t padRegion)  {
 
   TGraphErrors * graphMax = TStatToolkit::MakeStat1D( histQmax,0,0.8,4,kMarkers[padRegion],kColors[padRegion]);
   TGraphErrors * graphTot = TStatToolkit::MakeStat1D( histQtot,0,0.8,4,kMarkers[padRegion],kColors[padRegion]);
+  delete histQmax;
+  delete histQtot;
+
   //
   const char* names[4]={"SHORT","MEDIUM","LONG","ABSOLUTE"};
   //
@@ -1269,6 +1275,8 @@ Bool_t AliTPCPreprocessorOffline::AnalyzeGainMultiplicity() {
   TH1D * meanMax = (TH1D*)arrMax.At(1);
   TH1D * meanTot = (TH1D*)arrTot.At(1);
   Float_t meanMult = histMultMax->GetMean();
+  delete histMultMax;
+  delete histMultTot;
   if(meanMax->GetBinContent(meanMax->FindBin(meanMult))) {
     meanMax->Scale(1./meanMax->GetBinContent(meanMax->FindBin(meanMult)));
   }
@@ -1415,7 +1423,8 @@ void AliTPCPreprocessorOffline::MakeQAPlot(Float_t  FPtoMIPratio) {
     grfFitMIP->Draw("lu");    
     fGainArray->AddLast(gainHistoMIP);
     //fGainArray->AddLast(canvasMIP->Clone());
-    delete canvasMIP;    
+    delete canvasMIP;  
+    delete grfFitMIP;
   }  
 }
 
@@ -1468,6 +1477,8 @@ void AliTPCPreprocessorOffline::MakeFitTime(){
   tokArr->Print();
   delete tokArr;
   fAlignTree->SetAlias("fitYFast",strDeltaITS->Data());
+  delete strDeltaITS;
+
   // 
   TVectorD paramC= param;
   TMatrixD covarC= covar;
@@ -1479,7 +1490,6 @@ void AliTPCPreprocessorOffline::MakeFitTime(){
   fAlignTree->SetAlias("fitYFastC",strFitConst.Data());
   CreateAlignTime(fstringFast,paramC);
 
-
 }
 
 
@@ -1577,6 +1587,9 @@ void AliTPCPreprocessorOffline::MakeChainTime(){
     AliTPCCorrection::MakeDistortionMap(his,pcstream, Form("TRD%s",hname[ihis]),run,0.,ihis,3);
 
   }
+  if (dir || (!dir && !array)) { // the object is taken from a directory or a file
+    delete calibTime;
+  }
   delete pcstream;
 }
 
index 4f54f1c..f7f5906 100644 (file)
@@ -2003,6 +2003,7 @@ TGraphErrors* AliTPCcalibGainMult::GetGainPerChamberRobust(Int_t padRegion/*=1*/
   //
   TH2D * histGainSec = fHistGainSector->Projection(0,1);
   TGraphErrors * gr = TStatToolkit::MakeStat1D(histGainSec, 0, 0.6,2,markers[padRegion],colors[padRegion]);
+  delete histGainSec;
   Double_t median = TMath::Median(gr->GetN(),gr->GetY());
   if (median>0){
     for (Int_t i=0; i<gr->GetN();i++) {
index c1bca68..583c970 100644 (file)
@@ -539,6 +539,7 @@ Bool_t AliTRDPreprocessorOffline::ReadGainGlobal(const Char_t* fileName){
     fCH2d = (TH2I*)ch2d->Clone();
     //fNEvents = (TH1I *) array->FindObject("NEvents");
     //fAbsoluteGain = (TH2F *) array->FindObject("AbsoluteGain");
+    delete array;
   }else{
     TH2I *ch2d = (TH2I *) fcalib.Get("CH2d");
     if(!ch2d) return kFALSE;
@@ -566,6 +567,7 @@ Bool_t AliTRDPreprocessorOffline::ReadVdriftT0Global(const Char_t* fileName){
     if(!ph2d) return kFALSE;
     fPH2d = (TProfile2D*)ph2d->Clone();
     //fNEvents = (TH1I *) array->FindObject("NEvents");
+    delete array;
   }else{
     TProfile2D *ph2d = (TProfile2D *) fcalib.Get("PH2d");
     if(!ph2d) return kFALSE;
@@ -590,6 +592,7 @@ Bool_t AliTRDPreprocessorOffline::ReadVdriftLinearFitGlobal(const Char_t* fileNa
   if (array){
     fAliTRDCalibraVdriftLinearFit = (AliTRDCalibraVdriftLinearFit *) array->FindObject("AliTRDCalibraVdriftLinearFit");
     //fNEvents = (TH1I *) array->FindObject("NEvents");
+    delete array;
   }else{
     fAliTRDCalibraVdriftLinearFit = (AliTRDCalibraVdriftLinearFit *) fcalib.Get("AliTRDCalibraVdriftLinearFit");
     //fNEvents = (TH1I *) fcalib.Get("NEvents");
@@ -612,6 +615,7 @@ Bool_t AliTRDPreprocessorOffline::ReadExbAltFitGlobal(const Char_t* fileName){
   if (array){
     fAliTRDCalibraExbAltFit = (AliTRDCalibraExbAltFit *) array->FindObject("AliTRDCalibraExbAltFit");
     //fNEvents = (TH1I *) array->FindObject("NEvents");
+    delete array;
   }else{
     fAliTRDCalibraExbAltFit = (AliTRDCalibraExbAltFit *) fcalib.Get("AliTRDCalibraExbAltFit");
     //fNEvents = (TH1I *) fcalib.Get("NEvents");
index de5eda2..631f6f6 100644 (file)
@@ -208,6 +208,7 @@ Bool_t AliTRDdEdxCalibUtils::ReadHistArray(const TString filename, const TString
     fcalib.ls();
     if(array){
       array->ls();
+      delete array;
     }
     return kFALSE;
   }