Hello! When I try to save a canvas as a macro (SaveAs --> *.C or the SaveSource() function) then the interpreter can not read the file due to several "problems". Let's look at an example: //------------------------------------------------------------------- void Bug() { float x, y; TH2D* Hist = new TH2D("A 2D Histogram", "A 2D Histogram", 3, -5, 5, 3, -5, 5); int c = 0; const int MaxCounter = 10000; for (c = 0; c < MaxCounter; ++c) { gRandom->Rannor(x, y); Hist->Fill(x, y); } TCanvas* Canvas = new TCanvas("My Canvas"); Hist->Draw("CONT4"); Canvas->Update(); Canvas->SaveSource("Bug_saved.C"); } //------------------------------------------------------------------ This macro generates another macro out of a canvas: The resulting macro Bug_saved.C looks like this: { //=========Macro generated from canvas: My Canvas/ //========= (Mon Jul 28 11:14:14 2003) by ROOT version3.05/07 TCanvas *My Canvas = new TCanvas("My Canvas", "",8,8,699,499); My->Range(-0.721689,-0.721815,0.721689,0.721815); TView *view = new TView(1); view->SetRange(-5,-5,0,5,5,9073.63); My->SetBorderSize(2); My->SetFrameFillColor(0); TH1 *A 2D Histogram = new TH2D("A 2D Histogram","A 2D Histogram",3,-5,5,3,-5,5); A 2D Histogram->SetEntries(10000); A 2D Histogram->SetBinContent(6,20); A 2D Histogram->SetBinContent(7,466); // .... Obviously it has several problems: 1. The histogram name and the canvas contains spaces: TCanvas *My Canvas = new TCanvas("My Canvas", "",8,8,699,499); TH1 *A 2D Histogram = ... That's obviouly a bug! During the name generation, they should be replaced by e.g. underscores. 2. Not covered by the above example is another problem: It is not checked whether or not the canvas and histogram have the same name! Andreas
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET