Re: Problems with a simple example

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Oct 16 1997 - 17:11:54 MEST


Pablo P Yepes wrote:
> 
> I want to plot the temperature of the Universe as a function of age. I took the graph.c macro from the tutorials area and modified. The result is this:
> 

Force the minimum along y (see modified macro below).
The current algorithm to compute the graph range tries to optimize
the y range starting at 0 (OK for linear scale), but forget
about the log scale.
I will modify the algorithm.

Rene Brun


 {
>    //
>    // To see the output of this macro, click begin_h
> re</a>. end_html
>    //
>    gROOT->Reset();
>    c1 = new TCanvas("c1","Temperature of the Univers
> 
>    c1->SetFillColor(42);
>    c1->SetGridx();
>    c1->SetGridy();
>    c1->GetFrame()->SetFillColor(21);
>    c1->GetFrame()->SetBorderSize(12);
>    c1->SetLogx() ;
> // c1->SetLogy() ;
> 
>    Int_t n = 27;
>    Float_t x[n], y[n];
>    Float_t xx = 1.e-9 ;
>    Float_t yy ;
>    printf(" x = %f  \n",xx);
>    for (Int_t i=0;i<n;i++) {
>      xx   = xx * 10. ;
>      x[i] = xx ;
>      float xxx = log10(xx);
>      float yyy = exp(15 - (14./27.) * (xxx+9)) ;
>      y[i] = 15 - (14./27.) * (xxx+9) ;
>      printf(" i %i Time %6.2e Temp %6.2e \n",i, x[i],y[i]);
>    }
>    gr = new TGraph(n,x,y);
>    gr->SetFillColor(19);
>    gr->SetLineColor(2);
>    gr->SetLineWidth(4);
     gr->SetMinimum(0.1);  // force minimum along y
>    gr->Draw("ACP");
> 
>    //Add axis titles.
>    //A graph is drawn using the services of the TH1F histogram class.
>    //The histogram is created by TGraph::Paint.
>    //TGraph::Paint is called by TCanvas::Update. This function is called by defau
> t
>    //when typing <CR> at the keyboard. In a macro, one must force TCanvas::Update
> 
>    c1->Update();
>    gr->GetHistogram()->SetXTitle("Log Time after the Big Bang (seconds)");
>    gr->GetHistogram()->SetYTitle("Log Temperature (Degrees Kelvin)");
> }
> 
> I have two problems:
> 
>         1) if I use the c1->Setlogy(). I get an error because some of the values are negative or zero. I don't see why because all the y values are >0.
>         2) if I don't use the Setlogy() option, the plot only cover the x range ~10^16-10^18.
> 
>                                         Thank you,
>                                                                 Pablo Yepes
>                                                                 Rice U



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:21 MET