[ROOT] Closing canvas and resuming execution in compiled Root application

From: Tohru Ohnuki (ohnuki@physics.ucla.edu)
Date: Mon Mar 17 2003 - 11:13:23 MET


This used to work with earlier versions, but now it doesn't (got 
bugfixed?). In a compiled application one would get a canvas drawn and be 
able to hold it open by a wait loop until a key was pressed, resuming 
program execution, say for scanning event fitting. I looked in the usual 
places, found out about the TApplication class and tried again with a 
program like:

//15 march 2003 testing tapp hold canvas open functions

#include <iostream>
#include "TROOT.h"
#include "TH1F.h"
#include "TF1.h"
#include "TCanvas.h"
#include "TApplication.h"

int main()
{
   TApplication app("appKey",0,0);
   TCanvas canvas("canvasKey");
   TH1F foo("fooKey", "test histo",1000,-10,10);
   foo.FillRandom("gaus",10000);
   TF1 func("fitme","gaus");
   foo.Draw();
   foo.Fit("fitme");
   cerr << "ChiSquare: " << func.GetChisquare()<<'\t';
   cerr << "NDF: " << func.GetNDF()<<endl;
   app.Run(kTRUE);
   canvas.WaitPrimitive();
   //gPad->WaitPrimitive();
   Float_t mean = func.GetParameter(1);
   Float_t sigma = func.GetParameter(2);
   foo.Fit("fitme","","",mean - 3 * sigma, mean + 3 * sigma);
   cerr << "ChiSquare: " << func.GetChisquare()<<'\t';
   cerr << "NDF: " << func.GetNDF()<<endl;
   app.Run(kTRUE);
   canvas.WaitPrimitive();


   return(0);
}

Unfortunately, this crashes with a segfault and lots of stack traces when 
i try to close the root canvas. Clicking and ctrl-c on the pad doesn't do 
anything. I'm sure i'm doing something dumb, do i really need to 
capturemouseevent or something like that? I'm using root-3.05.03 on RH-7.3 
(pentium III) with gcc-2.96rh. Thanks...

Regards,

Tohru O.
-- 
  UCLA Physics & Astronomy Dept.
  GSR-IV Data Monkey
  ohnuki@physics.ucla.edu



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET