[ROOT] Re: Suggestion about TH1

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Apr 19 2002 - 18:42:09 MEST


Hi Sebastien,

The lin/log scale is not a property of the histogram. I know that
we had this feature in PAW and it was a mistake.
Lin/Log scale is a property of the pad.
You can toggle between lin/log scale after having drawn your histogram.
In the same way, you can change the object attributes after having drawn the
object Unlike in PAW where you had to repeat the complete set
of commands).

Note that when drawing ntuples in a pad with a log x scale, TTree::Draw
will conveniently create a histogram with bins "linear in a log scale"

Rene Brun




Sebastien Greder wrote:
> 
> Hello Rooters,
> 
> I was just wondering about TH1 objects ; usually when I want to plot
> an/several histo(s) and/or save it(them),the different steps look like:
> 
> - create my histo
> - fill it
> - give some attributes settings (color, marker style and so on)
> - draw or histo->Write()
> 
> If I want my histo(s) to have a log scale (x or y), I have to act on the
> corresponding pad through the SetLogX method. So this operation can only
> be done once the histo has been drawn or saved.
> 
> Since I'm a lazy guy, I usually write some macros to plot/save several
> histos like :
> 
> void Plot_ps(TH1* hist1, Char_t* title = "", Char_t* option = "",
>           Bool_t logy = 0, Bool_t logx = 0, Bool_t fit = 0,
>           Int_t stati = 111111, Bool_t wait = 0, etc .....)
> {
>   TCanvas *c1 = (TCanvas*)gROOT->FindObject("c1");
>   if (c1) {c1->Clear();}
>   else {
>     style();
>     c1 = (TCanvas*)gROOT->FindObject("c1");
>   }
> 
>   TPad* pad1 = new TPad("pad1","pad",0.03,0.03,0.98,0.98);
>   pad1->Draw();
>   if (logy) pad1->SetLogy(); if (logx) pad1->SetLogx();
> 
>   pad1->cd();
>   hist1->SetFillColor(5);
>   hist1->SetEverythingIwantToDoToHaveANiceHisto();
> 
>   if (fit) hist1->Fit("gaus");
>   hist1->GetXaxis()->SetTitleSize(0.05);
>   hist1->Draw(option);
> 
> // l'histo est memorise
>   c1->Update();
> }
> 
> but it's not always a convenient situation.
> In fact there are a lot of things that can be set in before "validating"
> a histo (about ~40 "Set..." methods dealing with content,axis
> range,colors, etc ...) so why not SetLogX/Y ?
> It should be nice to have this possibility in TH1 or in TAxis (so that a
> histo->GetXAxis()->SetLogX() could be done).
> 
> Or did I miss something and this operation  is already available ??
> 
> Cheers,
> 
> sebastien.



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