From: pchrist Date: Mon, 24 Oct 2011 10:13:35 +0000 (+0000) Subject: Fixing memory leak when running with a centrality train X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=6a3f819e6e875e24306a40eaf0f48590d60c4cac;p=u%2Fmrichter%2FAliRoot.git Fixing memory leak when running with a centrality train --- diff --git a/PWG2/EBYE/AliAnalysisTaskBF.cxx b/PWG2/EBYE/AliAnalysisTaskBF.cxx index 717aa3009f8..3703b61fecd 100755 --- a/PWG2/EBYE/AliAnalysisTaskBF.cxx +++ b/PWG2/EBYE/AliAnalysisTaskBF.cxx @@ -655,6 +655,8 @@ void AliAnalysisTaskBF::UserExec(Option_t *) { Printf("ERROR: mcEvent not available"); return; } + fHistEventStats->Fill(1); //total events + fHistEventStats->Fill(2); //offline trigger Double_t gReactionPlane = 0., gImpactParameter = 0.; if(fUseCentrality) { diff --git a/PWG2/EBYE/AliBalance.cxx b/PWG2/EBYE/AliBalance.cxx index 720151b62c0..2a527428494 100644 --- a/PWG2/EBYE/AliBalance.cxx +++ b/PWG2/EBYE/AliBalance.cxx @@ -44,7 +44,8 @@ AliBalance::AliBalance() : TObject(), bShuffle(kFALSE), fAnalysisLevel("ESD"), - fAnalyzedEvents(0) { + fAnalyzedEvents(0) , + fCentralityId(0) { // Default constructor for(Int_t i = 0; i < ANALYSIS_TYPES; i++){ @@ -89,8 +90,10 @@ AliBalance::AliBalance() : //____________________________________________________________________// AliBalance::AliBalance(const AliBalance& balance): - TObject(balance), bShuffle(balance.bShuffle), fAnalysisLevel(balance.fAnalysisLevel), - fAnalyzedEvents(balance.fAnalyzedEvents) { + TObject(balance), bShuffle(balance.bShuffle), + fAnalysisLevel(balance.fAnalysisLevel), + fAnalyzedEvents(balance.fAnalyzedEvents), + fCentralityId(balance.fCentralityId) { //copy constructor for(Int_t i = 0; i < ANALYSIS_TYPES; i++){ fNn[i] = balance.fNn[i]; @@ -138,25 +141,6 @@ AliBalance::~AliBalance() { } } - -//____________________________________________________________________// -/*void AliBalance::SetNumberOfBins(Int_t ibin, Int_t ibins) { - // Sets the number of bins for the analyzed interval - // Set the same Information for all analyses - if(ibin == -1){ - for(Int_t i = 0; i < ANALYSIS_TYPES; i++){ - fNumberOfBins[i] = ibins; - } - } - // Set the Information for one analysis - else if(ibin > -1 && ibin < ANALYSIS_TYPES){ - fNumberOfBins[ibin] = ibins; - } - else{ - AliError("Wrong ANALYSIS number!"); - } - }*/ - //____________________________________________________________________// void AliBalance::SetInterval(Int_t iAnalysisType, Double_t p1Start, Double_t p1Stop, @@ -186,29 +170,42 @@ void AliBalance::SetInterval(Int_t iAnalysisType, else { AliError("Wrong ANALYSIS number!"); } - - //InitHistograms(); } //____________________________________________________________________// void AliBalance::InitHistograms() { - // + //Initialize the histograms TString histName; for(Int_t iAnalysisType = 0; iAnalysisType < ANALYSIS_TYPES; iAnalysisType++) { - histName = "fHistP"; histName += gBFAnalysisType[iAnalysisType]; if(bShuffle) histName.Append("_shuffle"); + histName = "fHistP"; histName += gBFAnalysisType[iAnalysisType]; + if(bShuffle) histName.Append("_shuffle"); + if(fCentralityId) histName += fCentralityId.Data(); fHistP[iAnalysisType] = new TH1D(histName.Data(),"",100,fP1Start[iAnalysisType],fP1Stop[iAnalysisType]); - histName = "fHistN"; histName += gBFAnalysisType[iAnalysisType]; if(bShuffle) histName.Append("_shuffle"); + + histName = "fHistN"; histName += gBFAnalysisType[iAnalysisType]; + if(bShuffle) histName.Append("_shuffle"); + if(fCentralityId) histName += fCentralityId.Data(); fHistN[iAnalysisType] = new TH1D(histName.Data(),"",100,fP1Start[iAnalysisType],fP1Stop[iAnalysisType]); - histName = "fHistPN"; histName += gBFAnalysisType[iAnalysisType]; if(bShuffle) histName.Append("_shuffle"); + histName = "fHistPN"; histName += gBFAnalysisType[iAnalysisType]; + if(bShuffle) histName.Append("_shuffle"); + if(fCentralityId) histName += fCentralityId.Data(); fHistPN[iAnalysisType] = new TH1D(histName.Data(),"",fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]); - histName = "fHistNP"; histName += gBFAnalysisType[iAnalysisType]; if(bShuffle) histName.Append("_shuffle"); + + histName = "fHistNP"; histName += gBFAnalysisType[iAnalysisType]; + if(bShuffle) histName.Append("_shuffle"); + if(fCentralityId) histName += fCentralityId.Data(); fHistNP[iAnalysisType] = new TH1D(histName.Data(),"",fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]); - histName = "fHistPP"; histName += gBFAnalysisType[iAnalysisType]; if(bShuffle) histName.Append("_shuffle"); + + histName = "fHistPP"; histName += gBFAnalysisType[iAnalysisType]; + if(bShuffle) histName.Append("_shuffle"); + if(fCentralityId) histName += fCentralityId.Data(); fHistPP[iAnalysisType] = new TH1D(histName.Data(),"",fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]); - histName = "fHistNN"; histName += gBFAnalysisType[iAnalysisType]; if(bShuffle) histName.Append("_shuffle"); + + histName = "fHistNN"; histName += gBFAnalysisType[iAnalysisType]; + if(bShuffle) histName.Append("_shuffle"); + if(fCentralityId) histName += fCentralityId.Data(); fHistNN[iAnalysisType] = new TH1D(histName.Data(),"",fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]); - } } diff --git a/PWG2/EBYE/AliBalance.h b/PWG2/EBYE/AliBalance.h index 2eaf808d02c..ce7445e866a 100644 --- a/PWG2/EBYE/AliBalance.h +++ b/PWG2/EBYE/AliBalance.h @@ -39,8 +39,10 @@ class AliBalance : public TObject { AliBalance(); AliBalance(const AliBalance& balance); ~AliBalance(); + + void SetCentralityIdentifier(const char* centralityId) { + fCentralityId = centralityId;} - //void SetNumberOfBins(Int_t ibin, Int_t ibins); void SetAnalysisLevel(const char* analysisLevel) { fAnalysisLevel = analysisLevel;} void SetShuffle(Bool_t shuffle) {bShuffle = shuffle;} @@ -107,12 +109,13 @@ class AliBalance : public TObject { void PrintResults(Int_t iAnalysisType, TH1D *gHist); private: - Bool_t bShuffle; //shuffled balance function object TString fAnalysisLevel; //ESD, AOD or MC Int_t fAnalyzedEvents; //number of events that have been analyzed - Int_t fNumberOfBins[ANALYSIS_TYPES]; //number of bins of the analyzed interval + TString fCentralityId;//Centrality identifier to be used for the histo naming + + Int_t fNumberOfBins[ANALYSIS_TYPES];//number of bins of the analyzed interval Double_t fP1Start[ANALYSIS_TYPES]; Double_t fP1Stop[ANALYSIS_TYPES]; Double_t fP2Start[ANALYSIS_TYPES]; diff --git a/PWG2/EBYE/macros/AddTaskBalanceMCCentralityTrain.C b/PWG2/EBYE/macros/AddTaskBalanceMCCentralityTrain.C index efc5b6b8b24..bf60d1c2dfe 100644 --- a/PWG2/EBYE/macros/AddTaskBalanceMCCentralityTrain.C +++ b/PWG2/EBYE/macros/AddTaskBalanceMCCentralityTrain.C @@ -1,6 +1,6 @@ // now in options //=============================================// -const char* centralityEstimator = "V0M"; +//const char* centralityEstimator = "V0M"; //const char* centralityEstimator = "CL1"; //const char* centralityEstimator = "TRK"; //=============================================// @@ -52,16 +52,16 @@ AliAnalysisTaskBF *AddTaskBalanceMCCentralityTrain(Double_t centrMin=0., AliBalance *bfs = 0; // shuffled Balance function object if (analysisType=="ESD"){ - bf = GetBalanceFunctionObject("ESD"); - if(gRunShuffling) bfs = GetBalanceFunctionObject("ESD",kTRUE); + bf = GetBalanceFunctionObject("ESD",centralityName.Data()); + if(gRunShuffling) bfs = GetBalanceFunctionObject("ESD",centralityName.Data(),kTRUE); } else if (analysisType=="AOD"){ - bf = GetBalanceFunctionObject("AOD"); - if(gRunShuffling) bfs = GetBalanceFunctionObject("AOD",kTRUE); + bf = GetBalanceFunctionObject("AOD",centralityName.Data()); + if(gRunShuffling) bfs = GetBalanceFunctionObject("AOD",centralityName.Data(),kTRUE); } else if (analysisType=="MC"){ - bf = GetBalanceFunctionObject("MC"); - if(gRunShuffling) bfs = GetBalanceFunctionObject("MC",kTRUE); + bf = GetBalanceFunctionObject("MC",centralityName.Data()); + if(gRunShuffling) bfs = GetBalanceFunctionObject("MC",centralityName.Data(),kTRUE); } else{ ::Error("AddTaskBF", "analysis type NOT known."); diff --git a/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C b/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C index 14b51994d23..c51e2d6e3b8 100644 --- a/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C +++ b/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C @@ -1,10 +1,12 @@ //__________________________________________________// AliBalance *GetBalanceFunctionObject(const char* analysisLevel = "ESD", + const char* centralityName = 0x0, Bool_t bShuffle = kFALSE) { //Function to setup the AliBalance object and return it AliBalance *gBalance = new AliBalance(); gBalance->SetAnalysisLevel(analysisLevel); gBalance->SetShuffle(bShuffle); + if(centralityName) gBalance->SetCentralityIdentifier(centralityName); //Set all analyses separately //Rapidity