Hi guys,
I have a problem when trying to save a root file containing a TCanvas with a custom palette.
I’m using a custom macro that works properly. This means that if I load and execute it with:
root [0] .L my_macro.C
root [1] my_macro()
I get exactly what I want (i.e. a canvas with a histo + some tgraphs and the custom palette).
I also need to save this canvas in a root file, and here comes the problems. When I open this root file and draw the canvas, I get a seg fault and the canvas is drawn without the palette.
Below the lines of code that involve the canvas and palette creation and writing.
void my_macro()
{
... *lines of code*
TFile *fout = new TFile(foutname,"recreate");
TCanvas *c1 = new TCanvas("c1","c1", 1300,600);
TH2D* h2 = new TH2D("h2","h2",100,xmin,xmax,100,ymin,ymax);
c1->cd();
gPad->SetLogx();
gPad->SetLogy();
h2->Draw("COL");
... *lines of code*
TPaletteAxis *p1 = new TPaletteAxis(xmax-50,ymin,xmax,ymax,h2);
c1->cd();
p1->Draw("same");
p1->SetLabelFont(132);
gPad->Update();
fout->cd();
c1->Write();
return;
}
Another strange (at least to me) behaviour is that I get a seg fault also if I try to close the file (i.e. fout-> Close (); ) before the return line.
Can someone explain to me what’s happening?
Thanks for any help!
_ROOT Version: 6.08/00
_Platform: Ubuntu 16.04
_Compiler: g++ 5.5.0