Hi Rene,
On Thu, 16 Aug 2001, Rene Brun wrote:
I don't care about seeing those histograms after the function is done. I
understand that they go out of scope. This is sample code designed to
illustrate a problem that I do not understand. My question has to do with
the continue statement. If I leave it in, CINT complains:
Error: non class,struct,union object $gPad used with . or ->
FILE:TestBug.C LINE:24
*** Interpreter error recovered ***
Commenting out the continue statement I see that the histograms are filled
1000 times and the screen updates once every 10 fills. Yes, at the end of
the function call everything disappears.
mike
> Mike,
> You have many scoping problems in your macro. You should create
> your objects in the heap if you want to still see them once
> the macro has finished.
> You will find below a simplification of your macro:
>
> Rene Brun
>
>
> void test_bug(){
> TH1F *h1 = new TH1F("h1", "h1", 100, 1, 100);
> TH1F *h2 = new TH1F("h2", "h2", 100, 100, 200);
> TCanvas *can = new TCanvas("can", "can", 600, 800);
> can->Divide(1,2);
> can->cd(1);
> TPad *pad1 = (TPad*)gPad;
> h1->Draw();
> can->cd(2);
> TPad *pad2 = (TPad*)gPad;
> h2->Draw();
> Double_t result = 0;
> Int_t i = 0;
> while(i<1000){
> result = gRandom->Gaus(50, 5);
> if(result < 50){
> i++;
> continue;
> }
> h1->Fill(result);
> h2->Fill(result*2);
> if(i%10 == 0){
> pad1->Modified();
> pad2->Modified();
> can->Update();
> }
> i++;
> }
> }
>
>
> On Thu, 16 Aug 2001, Mike Kordosky wrote:
>
> > Hi,
> >
> > I have the following macro. The macro works as expected if I comment out
> > the continue statement. When I leave continue in, CINT complains:
> >
> > root [1] test_bug();
> > Error: non class,struct,union object $gPad used with . or ->
> > FILE:TestBug.C LINE:24
> >
> > void test_bug(){
> > TH1F h1("h1", "h1", 100, 1, 100);
> > TH1F h2("h2", "h2", 100, 100, 200);
> > TCanvas can("can", "can", 1000, 1000);
> > can.Divide(1,2);
> > can.cd(1);
> > h1.Draw();
> > can.cd(2);
> > h2.Draw();
> > Double_t result = 0;
> > Int_t i = 0;
> > // for(Int_t i = 0; i<1000; i++){
> > while(i<1000){
> > result = gRandom->Gaus(50, 5);
> > if(result < 50){
> > i++;
> > continue;
> > }
> > h1.Fill(result);
> > h2.Fill(result*2);
> > if(i%10 == 0){
> > can.cd(1);
> > h1.Draw();
> > gPad->Update();
> > can.cd(2);
> > h2.Draw();
> > gPad->Update();
> > }
> > i++;
> > }
> > }
> >
> >
> > Is this a bug, or am I missing something?
> >
> > Mike Kordosky
> >
> > --
> > Graduate Research Assistant // High Energy Physics Lab
> > kordosky@hep.utexas.edu // University of Texas at Austin
> > kordosky@fnal.gov //
> > ph: (512) 471-8426 (RLM Lab, Office)
> > (512) 475-8673 (ENS Lab)
> >
> >
> >
> >
>
--
Graduate Research Assistant // High Energy Physics Lab
kordosky@hep.utexas.edu // University of Texas at Austin
kordosky@fnal.gov //
ph: (512) 471-8426 (RLM Lab, Office)
(512) 475-8673 (ENS Lab)
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:57 MET