Re: Cannot force desired divisions using SetNdivisions

From: Olivier Couet <Olivier.Couet_at_cern.ch>
Date: Mon, 12 Sep 2011 11:25:38 +0000

>>> Do you mean saving a histogram as Energy rather than log Energy, then setting the canvas to log scale?
Yes something like that….
But that's not what you need.

---
Org:    CERN - European Laboratory for Particle Physics.
Mail:   1211 Geneve 23 - Switzerland                     Mailbox: J25910
E-Mail: Olivier.Couet_at_cern.ch<mailto:Olivier.Couet_at_cern.ch>                            Phone:   +41 22 7676522
WWW:    http://cern.ch/Olivier.Couet/                    Fax:     +41 22 7670300


On Sep 12, 2011, at 12:16 PM, Paul Miyagawa wrote:

Hi Olivier,

Thanks for your reply. What exactly do you mean by a real log Axis? Do you mean saving a histogram as Energy rather than log Energy, then setting the canvas to log scale? That wouldn't do what I need because that would give me even bins in Energy, when I need even bins in log Energy. The only other option I could try is to calculate and set the bin limits manually.

Paul

________________________________
From: Olivier Couet
Sent: 12 September 2011 10:46
To: Paul Miyagawa
Cc: Eduard Avetisyan; roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch>
Subject: Re: [ROOT] Cannot force desired divisions using SetNdivisions

Hi,

You are using alphanumeric labels. SetNdivisions does not act on them.
There are examples showing how to use alphameric labels in $ROOTSYS/tutorials/hist
Have you tried to use real log Axis ? I suppose you did and you do not like the result.

Olivier

On Sep 11, 2011, at 2:55 PM, Paul Miyagawa wrote:

Hi Eduard,

Thanks for your suggestion. I had tried it before (and again just now), but it still plots incorrectly.

Cheers,
Paul

-----Original Message-----
From: Eduard Avetisyan [mailto:Eduard.Avetisyan_at_desy.de]
Sent: 10 September 2011 21:35
To: Paul Miyagawa
Cc: roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch>
Subject: Re: [ROOT] Cannot force desired divisions using SetNdivisions


Hi Paul,

Try to plug it like in the modified example:

On Sat, 10 Sep 2011, Paul Miyagawa wrote:

Hello,

I am trying to draw a histogram with the x-axis as log Energy ranging from 1e-15 MeV to 1e6 MeV (i.e., -15 to +6). I would like to have primary tick marks every 3 decades and secondary tick marks every decade. If I have calculated properly, I should SetNdivisions(307). However, no matter what I try I cannot force this; Root plots as if SetNdivisions(210). The following macro is a distillation of what I do:

{
 TH1F *mhereg = new TH1F( "loge", "log Energy [MeV]", 210, -15, 6 );
 mhereg->SetNdivisions( -307 );
 TAxis *xhereg = mhereg->GetXaxis();
 for (int i=-15; i<6; i+=3) {
   char blabel[100];
   sprintf( blabel, "10^{%d}", i );
   xhereg->SetBinLabel( 1+10*(i+15), blabel );
   mhereg->Fill(i);
 }
 mhereg->Draw();
   xhereg = mhereg->GetXaxis();
   xhereg->SetNdivisions( -307 );
   mhereg->Draw();
}

The idea is to make the Ndivisions call AFTER having the histogram drawn.
Just an idea...

Cheers
Eduard


I have tried many variations of SetNdivisions, including:

xhereg->SetNdivisions( -307 );
xhereg->SetNdivisions( 307, kFALSE );
xhereg->SetNdivisions( 7, 3, 0, kFALSE );

How can I force Root to give what I want? Thanks for any help.

Cheers,
Paul
Received on Mon Sep 12 2011 - 13:25:46 CEST

This archive was generated by hypermail 2.2.0 : Tue Sep 13 2011 - 05:50:01 CEST