Hi rooters, i'm drawing some histograms into the same canvas. If i delete the drawn histograms and replace them with new ones (with the same names) it always ends up with a segementation violation. If i try to draw the canvas without the legend everything works fine. ... this is my code. void TMcBReco::drawHistoLeptonSpectra() { gStyle->SetOptStat(10); TCanvas* canvas = new TCanvas("LeptonSpectra","LeptonSpectra"); canvas->cd(); canvas->Divide(2,0); // like sign canvas->cd(1); _histLeptonMomLikeSign_All_Reco->SetXTitle("p / GeV"); _histLeptonMomLikeSign_TruthMatch_Reco->SetFillColor(18); _histLeptonMomLikeSign_TruthMatch_Reco->SetFillStyle(1001); _histLeptonMomLikeSign_FromB_Reco->SetFillColor(1); _histLeptonMomLikeSign_FromB_Reco->SetFillStyle(3004); _histLeptonMomLikeSign_All_Reco->Draw(); _histLeptonMomLikeSign_TruthMatch_Reco->Draw("SAME"); _histLeptonMomLikeSign_FromB_Reco->Draw("SAME"); TLegend* leg1 = new TLegend(0.5, 0.5, 0.85, 0.75); leg1->SetHeader("lepton momentum (like-sign)"); leg1->AddEntry(_histLeptonMomLikeSign_All_Reco, "all", "f"); leg1->AddEntry(_histLeptonMomLikeSign_TruthMatch_Reco, "with truth match", "f"); leg1->AddEntry(_histLeptonMomLikeSign_FromB_Reco, "with truth match from b", "f"); leg1->Draw(); ( ... ) } ----> Calling TMcBReco::histosLeptonSpectra a second time (after calling TMcBReco::drawHistoLeptonSpectra) allways causes a segmentation violation void TMcBReco::histosLeptonSpectra(bool CM = false) { removeObject("histLeptonMomLikeSign_All_Reco"); _histLeptonMomLikeSign_All_Reco = new TH1D("histLeptonMomLikeSign_All_Reco","histLeptonMomLikeSign_All_Reco", _nbBins_mom,_left_mom,_right_mom); ( ... filling histograms ) } void TMcBReco::removeObject(const char* const name) { TObject* obj = gDirectory->Get(name); if (obj != 0) { cout << "removing object " << name << endl; obj->Delete(); } } What am i doing wrong. Best regards, Jan Erik Sundermann.
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:46 MET