Hi Thomas, I cannot test your program without the definition of your arrays x,y. However, your problem is the classical problem of accessing the histogram produced when painting a graph. The histogram is only generated when the graph is effectively paint on the screen. see http://root.cern.ch/root/HowtoDraw.html You should add the c->Update() statement before doing GetHistogram(). See your code modified below. Rene Brun Thomas Bretz wrote: > > Hello, > > I'm using this peace of code to display two graphes and fit them and it > works quiete well. If I put the Print statment behind the Draw-Command I > get a segfault. (The same thing happens if I try to print it as PS from > the manu). Printing as root-file or root-macro works fine. > > Does somebody have an explanation? > > Thomas. > > PS: I'm using 2.25 on Alpha. The code is running in a compiled program. > ------------------------------------------------------------------------- > const char *t = "Title"; > TCanvas *c = new TCanvas(t, t); > > c->SetLogx(); > c->SetLogy(); > > TF1 *f1 = new TF1("powerlaw", "[0]*x^[1]*exp(-x/[2])", x[0][0], > x[0][17]); > f1->SetLineWidth(1); > f1->SetParameter(0, 9.7e-11); > f1->SetParameter(1, -2); > f1->SetParameter(2, 1); > f1->SetParName(0, "A"); > f1->SetParName(1, "alpha"); > f1->SetParName(2, "E0"); > > TF1 *f2 = new TF1("powerlaw2", "[0]*x^[1]", x[0][0], x[0][17]); > f2->SetLineWidth(1); > f2->SetParameter(0, 9.7e-11); > f2->SetParameter(1, -2); > f2->SetParName(0, "A"); > f2->SetParName(1, "alpha"); > > TGraphAsymmErrors *th1f = new TGraphAsymmErrors(18-1, x[0], y[0], > x[2], x[1], y[2], y[1]); > th1f->SetTitle(NULL); > th1f->SetMarkerStyle(3); > th1f->SetMinimum(1e-15); > th1f->SetMaximum(1e-9); > th1f->Draw("A*"); > > TGraphAsymmErrors *th2f = new TGraphAsymmErrors(18-1, x[0], y1[0], > x[2], x[1], y1[2], y1[1]); > th2f->SetMarkerStyle(3); > th2f->SetMinimum(1e-15); > th2f->SetMaximum(1e-9); > th2f->Draw("*"); c->Update(); //<==========new line > > TH1F *hist=th1f->GetHistogram(); > hist->SetXTitle("X Title"); > hist->SetYTitle("Y Title"); > > th1f->Fit("powerlaw2"); > th2f->Fit("powerlaw"); > > c->Print("testfile.ps","psLandscape"); > c->Update();
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:31 MET