[ROOT] Bug in Macros generated by SaveAs *.C

From: Andreas Zoglauer (zog@mpe.mpg.de)
Date: Mon Jul 28 2003 - 11:24:39 MEST


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