From: gconesab Date: Thu, 11 Mar 2010 14:20:41 +0000 (+0000) Subject: Correct memory leaks. X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=4a7457971fcb483d732fc04b6eebcddc45f58787;hp=32cd3fdc67e9435ad44e1bc6b992d9ce0a6b9ffd;p=u%2Fmrichter%2FAliRoot.git Correct memory leaks. Correct wagon. --- diff --git a/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.cxx b/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.cxx index b248b03cb30..24f9cd8d460 100755 --- a/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.cxx +++ b/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.cxx @@ -50,6 +50,7 @@ ClassImp(AliAnaPartCorrBaseClass) fAODObjArrayName(""), fAddToHistogramsName(""), fAODCaloCells(0x0),//fAODCaloClusters(0x0), fCaloPID(0x0), fFidCut(0x0), fIC(0x0),fMCUtils(0x0), fNMS(0x0), + //fAnaOutContainer(0x0), fHistoPtBins(0), fHistoPtMax(0.), fHistoPtMin(0.), fHistoPhiBins(0), fHistoPhiMax(0.), fHistoPhiMin(0.), fHistoEtaBins(0), fHistoEtaMax(0.), fHistoEtaMin(0.), @@ -57,13 +58,7 @@ ClassImp(AliAnaPartCorrBaseClass) fHistoAsymBins(0), fHistoAsymMax(0.), fHistoAsymMin(0.) { //Default Ctor - - fReader = new AliCaloTrackReader(); - fCaloPID = new AliCaloPID(); - fFidCut = new AliFiducialCut(); - fIC = new AliIsolationCut(); - fMCUtils = new AliMCAnalysisUtils(); - + //Initialize parameters InitParameters(); } @@ -82,6 +77,7 @@ AliAnaPartCorrBaseClass::AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & //fAODCaloClusters(new TClonesArray(*abc.fAODCaloClusters)), fAODCaloCells(new AliAODCaloCells(*abc.fAODCaloCells)), fCaloPID(abc.fCaloPID), fFidCut(abc.fFidCut), fIC(abc.fIC),fMCUtils(abc.fMCUtils), fNMS(abc.fNMS), + //fAnaOutContainer(abc.fAnaOutContainer), fHistoPtBins(abc.fHistoPtBins), fHistoPtMax(abc.fHistoPtMax), fHistoPtMin(abc.fHistoPtMin), fHistoPhiBins(abc.fHistoPhiBins), fHistoPhiMax(abc.fHistoPhiMax), fHistoPhiMin(abc.fHistoPhiMin), fHistoEtaBins(abc.fHistoEtaBins), fHistoEtaMax(abc.fHistoEtaMax), fHistoEtaMin(abc.fHistoEtaMin), @@ -117,7 +113,9 @@ AliAnaPartCorrBaseClass & AliAnaPartCorrBaseClass::operator = (const AliAnaPartC fIC = abc.fIC; fMCUtils = abc.fMCUtils; fNMS = abc.fNMS; - + + //fAnaOutContainer = abc.fAnaOutContainer; + fInputAODBranch = new TClonesArray(*abc.fInputAODBranch) ; fInputAODName = abc.fInputAODName; fOutputAODBranch = new TClonesArray(*abc.fOutputAODBranch) ; @@ -160,6 +158,11 @@ AliAnaPartCorrBaseClass::~AliAnaPartCorrBaseClass() delete fAODCaloCells ; } +// if(fAnaOutContainer){ +// fAnaOutContainer->Clear() ; +// delete fAnaOutContainer ; +// } + if(fReader) delete fReader ; if(fCaloPID) delete fCaloPID ; if(fFidCut) delete fFidCut ; @@ -471,16 +474,21 @@ void AliAnaPartCorrBaseClass::InitParameters() fMinPt = 0.1 ; //Min pt in particle analysis fMaxPt = 300. ; //Max pt in particle analysis - fCaloPID = new AliCaloPID ; - fFidCut = new AliFiducialCut; - fIC = new AliIsolationCut; - fNMS = new AliNeutralMesonSelection; - fNewAOD = kFALSE ; - fOutputAODName = "PartCorr"; - fOutputAODClassName = "AliAODPWG4Particle"; - fInputAODName = "PartCorr"; + fReader = new AliCaloTrackReader(); + fCaloPID = new AliCaloPID(); + fFidCut = new AliFiducialCut(); + fIC = new AliIsolationCut(); + fMCUtils = new AliMCAnalysisUtils(); + fNMS = new AliNeutralMesonSelection; + + //fAnaOutContainer = new TList(); + + fNewAOD = kFALSE ; + fOutputAODName = "PartCorr"; + fOutputAODClassName = "AliAODPWG4Particle"; + fInputAODName = "PartCorr"; fAddToHistogramsName = ""; - fAODObjArrayName="Ref"; + fAODObjArrayName = "Ref"; //Histogram settings fHistoPtBins = 240 ; diff --git a/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h b/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h index ce88f8103af..8c4322104c1 100755 --- a/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h +++ b/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h @@ -47,8 +47,9 @@ public: virtual void ConnectAODEMCALCells(); virtual void ConnectInputOutputAODBranches(); - virtual TList * GetCreateOutputObjects() { return (new TList) ;} - + virtual TList * GetCreateOutputObjects() { return (new TList) ;} + //virtual TList * GetAnalysisOutputContainer() { return fAnaOutContainer ;} + virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; } virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;} @@ -232,6 +233,8 @@ public: AliMCAnalysisUtils * fMCUtils; // MonteCarlo Analysis utils AliNeutralMesonSelection * fNMS; // Neutral Meson Selection + //TList * fAnaOutContainer; // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame + //Histograms binning and range Int_t fHistoPtBins ; // Number of bins in pt axis Float_t fHistoPtMax ; // Maximum value of pt histogram range diff --git a/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx b/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx index 010afe001ae..57913712b2e 100755 --- a/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx +++ b/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx @@ -237,8 +237,11 @@ void AliAnaPartCorrMaker::ProcessEvent(const Int_t iEntry, const char * currentF } //Each event needs an empty branch Int_t nAODBranches = fAODBranchList->GetEntries(); - for(Int_t iaod = 0; iaod < nAODBranches; iaod++) - fAODBranchList->At(iaod)->Clear(); + for(Int_t iaod = 0; iaod < nAODBranches; iaod++){ + //fAODBranchList->At(iaod)->Clear(); + TClonesArray *tca = dynamic_cast (fAODBranchList->At(iaod)); + if(tca) tca->Delete(); + } //Tell the reader to fill the data in the 3 detector lists Bool_t ok = fReader->FillInputEvent(iEntry, currentFileName); diff --git a/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx b/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx index 76afbdfdc02..3ac473f035d 100755 --- a/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx +++ b/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx @@ -92,7 +92,7 @@ void AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects() //Histograms container OpenFile(1); fOutputContainer = fAna->GetOutputContainer(); - fOutputContainer->SetOwner(); + fOutputContainer->SetOwner(kTRUE); if (DebugLevel() > 1) printf("AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects() - End\n"); PostData(1,fOutputContainer); diff --git a/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx b/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx index d40994134c5..97dfffa18f8 100755 --- a/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx +++ b/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx @@ -1862,6 +1862,7 @@ void AliAnaCalorimeterQA::MakeAnalysisFillHistograms() printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - module %d calo %s clusters %d\n", imod, fCalorimeter.Data(), nClustersInModule[imod]); fhNClustersMod[imod]->Fill(nClustersInModule[imod]); } + delete [] nClustersInModule; //---------------------------------------------------------- // CALOCELLS @@ -2038,7 +2039,8 @@ void AliAnaCalorimeterQA::MakeAnalysisFillHistograms() printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - module %d calo %s cells %d\n", imod, fCalorimeter.Data(), nCellsInModule[imod]); fhNCellsMod[imod]->Fill(nCellsInModule[imod]) ; } - + delete [] nCellsInModule; + if(GetDebug() > 0) printf("AliAnaCalorimeterQA::MakeAnalysisFillHistograms() - End \n"); } @@ -2521,11 +2523,11 @@ void AliAnaCalorimeterQA::CorrelateCalorimeters(TRefArray* refArray){ if(GetReader()->GetDataType()==AliCaloTrackReader::kESD) { if(fCalorimeter == "EMCAL"){ ((AliESDEvent*)GetReader()->GetInputEvent())->GetPHOSClusters(caloClustersPHOS); - caloClustersEMCAL = refArray; + caloClustersEMCAL = new TRefArray(*refArray); } else if(fCalorimeter == "PHOS") { ((AliESDEvent*)GetReader()->GetInputEvent())->GetEMCALClusters (caloClustersEMCAL); - caloClustersEMCAL = refArray; + caloClustersPHOS = new TRefArray(*refArray); } //Fill histograms with clusters @@ -2607,6 +2609,9 @@ void AliAnaCalorimeterQA::CorrelateCalorimeters(TRefArray* refArray){ } }//AOD + delete caloClustersEMCAL; + delete caloClustersPHOS; + } //______________________________________________________________________________ diff --git a/PWG4/PartCorrDep/AliAnaElectron.cxx b/PWG4/PartCorrDep/AliAnaElectron.cxx index 86aea75fe78..fa42e5f85b0 100755 --- a/PWG4/PartCorrDep/AliAnaElectron.cxx +++ b/PWG4/PartCorrDep/AliAnaElectron.cxx @@ -92,7 +92,7 @@ AliAnaElectron::AliAnaElectron() //reco electrons from various sources fhPhiConversion(0),fhEtaConversion(0), //for comparisons with tracking detectors - fhPtTrack(0), + fhPtTrack(0), fhPtNPEBHadron(0), //for computing efficiency of B-jet tags fhBJetPt1x4(0),fhBJetPt2x3(0),fhBJetPt3x2(0), @@ -662,8 +662,6 @@ void AliAnaElectron::MakeAnalysisFillAOD() // Also fill some QA histograms // - TObjArray *cl = new TObjArray(); - Double_t bfield = 0.; if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField(); @@ -672,7 +670,8 @@ void AliAnaElectron::MakeAnalysisFillAOD() printf("This class not yet implemented for PHOS\n"); abort(); } - cl = GetAODEMCAL(); + + TObjArray *cl = GetAODEMCAL(); //////////////////////////////////////////////// //Start from tracks and get associated clusters diff --git a/PWG4/PartCorrDep/AliAnaExample.cxx b/PWG4/PartCorrDep/AliAnaExample.cxx index 56f4f4b2060..f25e5f24707 100755 --- a/PWG4/PartCorrDep/AliAnaExample.cxx +++ b/PWG4/PartCorrDep/AliAnaExample.cxx @@ -206,7 +206,7 @@ void AliAnaExample::MakeAnalysisFillAOD() } //Get List with tracks or clusters - TObjArray * partList = new TObjArray(); + TObjArray * partList = 0x0; if(fDetector == "CTS") partList = GetAODCTS(); else if(fDetector == "EMCAL") partList = GetAODEMCAL(); else if(fDetector == "PHOS") partList = GetAODPHOS(); diff --git a/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.cxx b/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.cxx index 771502b9945..f72b5433447 100644 --- a/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.cxx +++ b/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.cxx @@ -44,10 +44,9 @@ ClassImp(AliAnaOmegaToPi0Gamma) AliAnaOmegaToPi0Gamma::AliAnaOmegaToPi0Gamma() : AliAnaPartCorrBaseClass(), fInputAODGamma(0),fInputAODPi0(0), fInputAODGammaName(""), fEventsList(0), -fVtxZCut(0), fCent(0), fRp(0), fBadChDist(0), fNVtxZBin(0), fNCentBin(0), fNRpBin(0), fNBadChDistBin(0), fNpid(0), -fNmaxMixEv(0), fPi0Mass(0), -fPi0MassWindow(0),fPi0OverOmegaPtCut(0),fGammaOverOmegaPtCut(0), +fNmaxMixEv(0),fVtxZCut(0), fCent(0), fRp(0), fBadChDist(0), +fPi0Mass(0), fPi0MassWindow(0),fPi0OverOmegaPtCut(0),fGammaOverOmegaPtCut(0), fhEtalon(0), fRealOmega(0), fMixAOmega(0), fMixBOmega(0), fMixCOmega(0), @@ -67,11 +66,10 @@ fInputAODGamma(new TClonesArray (*ex.fInputAODGamma)), fInputAODPi0(new TClonesArray (*ex.fInputAODPi0)), fInputAODGammaName(ex.fInputAODGammaName), fEventsList(ex.fEventsList), -fVtxZCut(ex.fVtxZCut), fCent(ex.fCent), fRp(ex.fRp), fBadChDist(ex.fBadChDist), fNVtxZBin(ex.fNVtxZBin), fNCentBin(ex.fNCentBin), fNRpBin(ex.fNRpBin), -fNBadChDistBin(ex.fNBadChDistBin),fNpid(ex.fNpid), -fNmaxMixEv(ex.fNmaxMixEv), fPi0Mass(ex.fPi0Mass), -fPi0MassWindow(ex.fPi0MassWindow), +fNBadChDistBin(ex.fNBadChDistBin),fNpid(ex.fNpid),fNmaxMixEv(ex.fNmaxMixEv), +fVtxZCut(ex.fVtxZCut), fCent(ex.fCent), fRp(ex.fRp), fBadChDist(ex.fBadChDist), +fPi0Mass(ex.fPi0Mass),fPi0MassWindow(ex.fPi0MassWindow), fPi0OverOmegaPtCut(ex.fPi0OverOmegaPtCut),fGammaOverOmegaPtCut(ex.fGammaOverOmegaPtCut), fhEtalon(ex.fhEtalon), fRealOmega(ex.fRealOmega), fMixAOmega(ex.fMixAOmega), diff --git a/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.h b/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.h index 6c88adfdfe9..2194718a3b0 100644 --- a/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.h +++ b/PWG4/PartCorrDep/AliAnaOmegaToPi0Gamma.h @@ -54,19 +54,18 @@ class AliAnaOmegaToPi0Gamma : public AliAnaPartCorrBaseClass { TString fInputAODGammaName; //Input AOD gamma name TList ** fEventsList; //event list for mixing - Double_t *fVtxZCut; //[fNVtxZBin] vtertx z cut - Double_t *fCent; //[fNCentBin] centrality cut - Double_t *fRp; //[fNRpBin] reaction plane cut - Int_t *fBadChDist; //[fNBadChDistBin] bad channel dist - Int_t fNVtxZBin; //Number of vertex z cut Int_t fNCentBin; //Number of centrality cut Int_t fNRpBin; //Number of reaction plane cut - Int_t fNBadChDistBin; //Number of bad channel dist cut Int_t fNpid; //Number of PID cut - Int_t fNmaxMixEv; //buffer size events to be mixed + + Double_t *fVtxZCut; //[fNVtxZBin] vtertx z cut + Double_t *fCent; //[fNCentBin] centrality cut + Double_t *fRp; //[fNRpBin] reaction plane cut + Int_t *fBadChDist; //[fNBadChDistBin] bad channel dist + Double_t fPi0Mass; //nominal pi0 mass Double_t fPi0MassWindow; //pi0 mass windows Double_t fPi0OverOmegaPtCut; //pi0 Pt over omega pt cut diff --git a/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx b/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx index 11ad48c52ec..f736bc9605a 100755 --- a/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx +++ b/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx @@ -695,7 +695,7 @@ void AliAnaParticleIsolation::MakeAnalysisFillAOD() Int_t n = 0, nfrac = 0; Bool_t isolated = kFALSE ; Float_t coneptsum = 0 ; - TObjArray * pl = new TObjArray(); + TObjArray * pl = 0x0; ; //Select the calorimeter for candidate isolation with neutral particles if(fCalorimeter == "PHOS") diff --git a/PWG4/PartCorrDep/AliAnaPhoton.cxx b/PWG4/PartCorrDep/AliAnaPhoton.cxx index 5707597c8cc..53c72d3556c 100755 --- a/PWG4/PartCorrDep/AliAnaPhoton.cxx +++ b/PWG4/PartCorrDep/AliAnaPhoton.cxx @@ -165,7 +165,8 @@ TList * AliAnaPhoton::GetCreateOutputObjects() // store them in outputContainer TList * outputContainer = new TList() ; outputContainer->SetName("PhotonHistos") ; - + outputContainer->SetOwner(kFALSE); + Int_t nptbins = GetHistoPtBins(); Int_t nphibins = GetHistoPhiBins(); Int_t netabins = GetHistoEtaBins(); @@ -434,7 +435,7 @@ void AliAnaPhoton::MakeAnalysisFillAOD() { //Do analysis and fill aods //Search for photons in fCalorimeter - TObjArray * pl = new TObjArray(); + TObjArray * pl = 0x0; //Get vertex for photon momentum calculation Double_t vertex[] = {0,0,0} ; //vertex @@ -617,6 +618,8 @@ void AliAnaPhoton::MakeAnalysisFillAOD() }//loop + delete [] indexConverted; + if(GetDebug() > 1) printf("AliAnaPhoton::MakeAnalysisFillAOD() End fill AODs \n"); } diff --git a/PWG4/PartCorrDep/AliAnaPi0EbE.cxx b/PWG4/PartCorrDep/AliAnaPi0EbE.cxx index 99b4ef84cd0..58de7863351 100755 --- a/PWG4/PartCorrDep/AliAnaPi0EbE.cxx +++ b/PWG4/PartCorrDep/AliAnaPi0EbE.cxx @@ -446,7 +446,7 @@ void AliAnaPi0EbE::MakeShowerShapeIdentification() { //Search for pi0 in fCalorimeter with shower shape analysis - TObjArray * pl = new TObjArray; + TObjArray * pl = 0x0; //Get vertex for photon momentum calculation Double_t vertex[] = {0,0,0} ; //vertex diff --git a/PWG4/macros/AddTaskPartCorr.C b/PWG4/macros/AddTaskPartCorr.C index cd9193e0393..c1e6d89938b 100644 --- a/PWG4/macros/AddTaskPartCorr.C +++ b/PWG4/macros/AddTaskPartCorr.C @@ -38,7 +38,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori AliCaloTrackReader * reader = 0x0; if(data.Contains("AOD")) reader = new AliCaloTrackAODReader(); else if(data=="ESD") reader = new AliCaloTrackESDReader(); - else if(data=="MC" && dataType == "ESD") reader = new AliCaloTrackMCReader(); + else if(data=="MC" && inputDataType == "ESD") reader = new AliCaloTrackMCReader(); reader->SetDebug(-1);//10 for lots of messages reader->SwitchOnCTS(); //reader->SetDeltaAODFileName(""); @@ -157,7 +157,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori anaphoton1->SwitchOnFiducialCut(); anaphoton1->SetFiducialCut(fidCut1stYear); } - + anaphoton1->SwitchOnTrackMatchRejection(); if(!data.Contains("delta")) anaphoton1->SetOutputAODName(Form("PhotonsForIM%s",calorimeter.Data())); else anaphoton1->SetInputAODName (Form("PhotonsForIM%s",calorimeter.Data())); //Set Histograms bins and ranges @@ -463,9 +463,9 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori anaomegaToPi0Gamma->SetNVtxZ(2); anaomegaToPi0Gamma->SetNBadChDist(3); anaomegaToPi0Gamma->SetNEventsMixed(4); - if(calorimeter.Data()=="PHOS") + if(calorimeter=="PHOS") anaomegaToPi0Gamma->SetPi0MassPeakWidthCut(0.008); // PHOS - else if(calorimeter.Data()=="EMCAL") + else if(calorimeter=="EMCAL") anaomegaToPi0Gamma->SetPi0MassPeakWidthCut(0.012); // EMCAL anaomegaToPi0Gamma->SetHistoPtRangeAndNBins(0, 20, 200) ; anaomegaToPi0Gamma->SetHistoMassRangeAndNBins(0, 1, 200) ; @@ -481,17 +481,17 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori maker->SetReader(reader);//pointer to reader //if(!data.Contains("delta")) maker->AddAnalysis(qa,0); maker->AddAnalysis(anaphoton1,0); - maker->AddAnalysis(anapi0,1); - maker->AddAnalysis(anaphoton2,2); - maker->AddAnalysis(anaisol,3); - maker->AddAnalysis(anacorrjet,4); - maker->AddAnalysis(anacorrhadron,5); - maker->AddAnalysis(anacorrisohadron,6); - maker->AddAnalysis(anapi0ebe,7); - maker->AddAnalysis(anaisolpi0,8); - maker->AddAnalysis(anacorrhadronpi0,9); - maker->AddAnalysis(anacorrhadronisopi0,10); - maker->AddAnalysis(anaomegaToPi0Gamma,11); +// maker->AddAnalysis(anapi0,1); +// maker->AddAnalysis(anaphoton2,2); +// maker->AddAnalysis(anaisol,3); +// maker->AddAnalysis(anacorrjet,4); +// maker->AddAnalysis(anacorrhadron,5); +// maker->AddAnalysis(anacorrisohadron,6); +// maker->AddAnalysis(anapi0ebe,7); +// maker->AddAnalysis(anaisolpi0,8); +// maker->AddAnalysis(anacorrhadronpi0,9); +// maker->AddAnalysis(anacorrhadronisopi0,10); +// maker->AddAnalysis(anaomegaToPi0Gamma,11); maker->SetAnaDebug(-1) ; maker->SwitchOnHistogramsMaker() ; if(data.Contains("delta")) maker->SwitchOffAODsMaker() ;