Re: [ROOT] Updating and saving a canvas

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Sep 18 2002 - 14:31:35 MEST


It would be so much simpler if you could send  a test program
that I can use to see what you are doing wrong.

Rene Brun

On Wed, 18 Sep 2002, Alberto Garcia Raboso wrote:

> Hi Rene,
> 
> The problem remains... :-(
> 
> Rene Brun wrote:
> > 
> > Hi Alberto,
> > 
> > When you call pCanv->Update(), pCanv looks for all subpads
> > that have been modified and redraw only these pads.
> > In your case with a pad inside the canvas, you have to
> > set the "Modified" bit in the current pad.
> > Add the line
> >   pPad->Modified();
> > before calling pCanv->Update();
> > 
> > Rene Brun
> > 
> > On Wed, 18 Sep 2002, Alberto Garcia Raboso wrote:
> > 
> > > Hi ROOTers,
> > >
> > > The following piece of code tries to:
> > >    * Create one canvas, and a pad inside.
> > >    * Draw a graph, update the canvas and save it.
> > >    * Clear the pad.
> > >    * Draw another graph, update the canvas and save it.
> > >    * etc.
> > >    * clear the screen and free memory
> > > The problem is that when I call pCanv->Update() for the first time, ROOT
> > > begins to do it while the script goes on running, so calling several
> > > times pCanv->SaveAs(...) before finishing the first update of the
> > > Canvas. Thus some of the files contain an empty canvas, while others
> > > have a semi-drawn one.
> > >
> > > It seems like updating the canvas uses a thread independent from the one
> > > that runs the script... is it right? Does anybody know how to make ROOT
> > > update completely the Canvas before executing the next line of code?
> > >
> > > Thanks in advance,
> > >
> > > Alberto
> > >
> > > THE CODE:
> > >
> > > //
> > > // Create Canvas and Pad
> > > //
> > > TCanvas *pCanv = new TCanvas("pCanv", "" ,200, 100, 1100, 800);
> > > TPad *pPad = new TPad("pPad", "", 0.03, 0.03, 0.97, 0.97);
> > > pCanv->SetFillColor(10);
> > > pCanv->SetGrid();
> > >
> > > //
> > > // Draw fpScatter
> > > //
> > > TH1F *GraphFrame = pPad->DrawFrame(fpCentral->GetPlotLimXMin(),
> > >       fpCentral->GetPlotLimYMin(), fpCentral->GetPlotLimXMax(),
> > >       fpCentral->GetPlotLimYMax(), fHistTitle.Data());
> > > GraphFrame->GetXaxis()->SetTitle("#phi_{b} (rad/512)");
> > > GraphFrame->GetXaxis()->CenterTitle();
> > > GraphFrame->GetYaxis()->SetTitle("#Delta#phi (rad/4096)");
> > > GraphFrame->GetYaxis()->CenterTitle();
> > > fpScatter->SetMarkerStyle(1);
> > > fpScatter->SetMarkerSize(0.35);
> > > fpScatter->SetMarkerColor(4);
> > > fpScatter->Draw("P");
> > > pCanv->Update();
> > > pCanv->SaveAs( (const Char_t*) ( TString("Sc") + fFileName +
> > >       TString(".ps") ) );
> > > pPad->Clear();
> > >
> > > //
> > > // Draw fpHist
> > > //
> > > fpHistPt->SetStats(kFALSE);
> > > fpHistPt->GetXaxis()->SetTitle("p_{t} (GeV/c)");
> > > fpHistPt->GetXaxis()->CenterTitle();
> > > fpHistPt->GetYaxis()->SetTitle("Number of hits");
> > > fpHistPt->GetYaxis()->CenterTitle();
> > > fpHistPt->Draw();
> > > pCanv->Update();
> > > pCanv->SaveAs( (const Char_t*) ( TString("hPt") + fFileName +
> > >       TString(".ps") ) );
> > > pPad->Clear();
> > >
> > > ... more like this ...
> > >
> > > //
> > > // Clear screen
> > > //
> > > delete pPad;
> > > delete pCanv;
> > >
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > Alberto Garcia Raboso
> > > CERN / EP
> > > CH-1211 Geneva 23, Switzerland
> > > Office 40-2B-19 (+41 22 76 71626)
> > > E-Mail: Alberto.Garcia.Raboso@cern.ch
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > Well, farewell, my hobbits! You should come safe to your own
> > > homes now, and I shall not be kept awake for fear of your
> > > peril. We will send word when we may, and some of us may yet
> > > meet at times; but I fear that we shall not all be gathered
> > > together ever again.
> > >
> > >                       The return of the King. J.R.R. Tolkien
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >
> 
> -- 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Alberto Garcia Raboso
> CERN / EP
> CH-1211 Geneva 23, Switzerland
> Office 40-2B-19 (+41 22 76 71626)
> E-Mail: Alberto.Garcia.Raboso@cern.ch
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Well, farewell, my hobbits! You should come safe to your own
> homes now, and I shall not be kept awake for fear of your
> peril. We will send word when we may, and some of us may yet
> meet at times; but I fear that we shall not all be gathered
> together ever again.
> 
>                       The return of the King. J.R.R. Tolkien
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:10 MET