RE: TF3::GetHistogram() seg violation

From: Serhiy Senyukov <Serhiy.Senyukov_at_cern.ch>
Date: Wed, 30 Mar 2011 12:58:19 +0000


Thank you for your suggestion Oliver. However it is not the thing I would like to do. What I really need is to translate 3D function into reasonable histogram. Final goal is to visualize the original 3D function.

> -----Original Message-----
> From: Olivier Couet
> Sent: Wednesday, March 30, 2011 2:44 PM
> To: Serhiy Senyukov
> Cc: Olivier Couet; roottalk (Mailing list discussing all aspects of the
> ROOT system.)
> Subject: RE: [ROOT] TF3::GetHistogram() seg violation
>
>
>
> I think the TH3 ib that case is only used to draw the frame and remains
> empty. You should try to do something like that:
>
> {
> TH3D *earth = new TH3D("earth", "earth", 100, -1., 1., 100, -1.,
> 1.,100, -1., 1.);
> double phi=0., cos_theta=0., theta=0.;
> for(int i=0; i<100; i++){
> phi=gRandom->Uniform(0., 6.28);
> cos_theta=gRandom->Uniform(0., 1.);
> theta=acos(cos_theta);
> earth->Fill(cos(phi)*sin(theta), sin(phi)*sin(theta),
> cos_theta);
> }
> TCanvas *c1 = new TCanvas("c1", "c1",1);
> earth->SetMarkerStyle(4);
>
> earth->Draw("box");
> }
>
>
>
> Org: CERN - European Laboratory for Particle Physics.
> Mail: 1211 Geneve 23 - Switzerland Mailbox:
> J25910
> E-Mail: Olivier.Couet_at_cern.ch Phone: +41
> 22 7676522
> WWW: http://cern.ch/Olivier.Couet/ Fax: +41
> 22 7670300
>
> On Wed, 30 Mar 2011, Serhiy Senyukov wrote:
>
> >> As you see I get 100 .
> >> I am using the trunk
> > [Serhiy Senyukov] As far as I can see from your code you are getting
> 100 evaluating the function itself. Contrary I get zero by asking the
> bin content of the histogram derived from the function.
> >
> >>>> I do not see what you describe here.
> >>> [Serhiy Senyukov] Ok. I have found the reason for the first issue.
> >> There
> >>> were parameters missing in the declaration of the 3D function.
> However
> >>> the bin content of the produced histogram is always zero.
> >>>
> >>> Regards,
> >>> Serhiy.
> >>>
> >>>> root [0] .x ser.C
> >>>> Processing ser.C...
> >>>> Test function3 test = 100
> >>>> Info in <TCanvas::MakeDefCanvas>: created default TCanvas with
> name
> >> c1
> >>>>
> >>>> The macro is:
> >>>>
> >>>> Double_t test(Double_t *x, Double_t *par)
> >>>> {
> >>>> return 100;
> >>>> }
> >>>>
> >>>> void ser(Int_t nPoints=5){
> >>>> TF3* test_f3=new TF3("test_f3",test,0,10,0,10,0,10,2);
> >>>> test_f3->SetParameters(1,2);
> >>>> test_f3->SetNpx(nPoints);
> >>>> test_f3->SetNpy(nPoints);
> >>>> test_f3->SetNpz(nPoints);
> >>>>
> >>>> cout<<"Test function3 test = "<<test_f3->Eval(5,5,5)<<endl;
> >>>>
> >>>> test_f3->Draw();
> >>>> TH3F* test3_hist=(TH3F*)test_f3->GetHistogram();
> >>>> }
> >
> >
Received on Wed Mar 30 2011 - 14:58:24 CEST

This archive was generated by hypermail 2.2.0 : Wed Mar 30 2011 - 17:50:01 CEST