hi Maurik, your histogram, defined as a local variable inside the function,
gets deleted when the execution leaves this function. You can do
TH2F* Grid = new TH2F ...
instead... -best, Pasha
Maurik Holtrop wrote:
>
> Dear Root,
>
> I am slightly puzzled by a little macro. When I execute the lines one by one
> from the command line, all is well, when I wrap them in a macro, load it,
> and execute them as a function, I don't get the axes of the (empty) 2D
> histogram. See code below. What is wrong here?
>
> It seems that when the histogram is defined as TH2F Grid(...) it does not
> work, while TH2F *Grid=new TH2F(...) does.
> While you may argue the second is better, the first should work. It does
> when typed into the commandline one by one.
>
> Cheers,
>
> Maurik
>
> --------------- Do_It.C -----------------------
> void Do_It(void){
>
> TCanvas *c1 = new TCanvas("c1","E2 Target Momentum Loss",10,10,700,750);
> c1->SetFillColor(42);
> c1->SetGridx();
> c1->SetGridy();
> c1->GetFrame()->SetFillColor(21);
> c1->GetFrame()->SetBorderSize(12);
>
> TPad *pad = new TPad("pad","E2CellsGraph",0.03,0.03,0.97,0.97,21);
>
> pad->Draw();
> pad->cd();
>
> // OK: TH2F *Grid=new TH2F("Grid","Comparison of Momentum Loss Curves for
> E2 Targets",100,0.,4.,100,0.0,12.);
>
> TH2F Grid("Grid","Comparison of Momentum Loss Curves for E2
> Targets",100,0.,4.,100,0.0,12.);
>
> gStyle->SetOptStat(0);
>
> pad->SetGridx();
> pad->SetGridy();
> // OK: Grid->Draw();
> Grid.Draw();
> pad->Modified();
>
> Int_t n1 = 10;
> Float_t x1[] = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95};
> Float_t y1[] = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1};
> Float_t ex1[] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05};
> Float_t ey1[] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8};
> gr1 = new TGraphErrors(n1,x1,y1,ex1,ey1);
> gr1->SetMarkerColor(kBlue);
> gr1->SetMarkerStyle(21);
> gr1->Draw("LP");
> pad->Modified();
> }
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:41 MET