Hi Andreas, Here is what you want: void ticks() { gROOT->Reset(); TCanvas* c1 = new TCanvas("c1","Modulation"); int NPoints = 360; TGraph* gr = new TGraph(NPoints); for (int i = 0; i < NPoints; ++i) { double x = i*360.0/NPoints; double y = 100 + 50*cos(2*x*TMath::Pi()/180); gr->SetPoint(i, x, y); } TH1F *h1 = new TH1F("a","a",1000,0,360); gr->SetHistogram(h1); gr->Draw("AC"); c1->Update(); gr->GetHistogram()->SetXTitle("Azimuthal scatter angle"); gr->GetHistogram()->SetYTitle("Counts"); gr->GetHistogram()->SetAxisRange(0, 200, "Y"); gr->GetXaxis()->SetNdivisions(-504); c1->Modified(); } Explanation: TGraph creates internally an histogram to draw the graph. That is the one you get when you do gr->GetHistogram(). That histogram has by default 100 bins. In your case a 100 precision is not enough and you see that "bin size effect". In this modified version of your macro I book an histogram with 1000 bins and give it to the TGraph using gr->SetHistogram. Having done that you do not need to set the X range of the TGraph. Cheers, Olivier On Wed, 17 Mar 2004, Andreas Zoglauer wrote: > > Hi Olivier, > > With your method I get 360.89 as upper limit - but I need exactly 360 > > Thanks for your help, > Andreas > > > > Olivier Couet wrote: > > Hello, > > > > The way to do it would be: > > > > gr->GetHistogram()->SetAxisRange(0, 360, "X"); > > gr->GetHistogram()->SetAxisRange(0, 200, "Y"); > > gr->GetXaxis()->SetNdivisions(-504); > > > > a negative number of divisions meaning that the divisions should not be > > optimize. But doing that I do not get exactly 360 as upper limit... > > That's weird ... I'll investigate. > > > > > > -- Org: CERN - European Laboratory for Particle Physics. Mail: 1211 Geneve 23 - Switzerland Mailbox: J25910 E-Mail: Olivier.Couet@cern.ch Phone: +41 22 7676522 WWW: http://cern.ch/Olivier.Couet/ Fax: +41 22 7677155
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET