[ROOT] About fit with my function

From: babintsev@mx.ihep.su
Date: Sun Feb 18 2001 - 06:50:14 MET


      babintsev@mx.ihep.su, 18-FEB-2001

Hello rooters.

>What does it mean: I take script from tutorials (below):
>and have the following result (Root  Version   2.25/03)
>
>root [1] .x fitexample.C
>
> *** Break *** floating point exception
>Root > Function fitf() busy flag cleared
>Function fitexample() busy flag cleared
>     
>....
>>Probably you didnt run the tutorial script that was creating
>>"hsimple.root" (I think it's hsimple.C), so hpx is not defined.
>>
>>Btw, the script could easily check this, with something like
>>if (!hpx) {puts("hpx doesnt exist ! Run hsimple.C first.");delete
>>f;return;}
>>
>>        Yannick

 Yes, "hsimple.root" is present. Another version of the run:

root [0] .L fitexample.C
root [1] .b fitexample
Break point set to line 10 /scratch/babintsev/tmp/./fitexample.C
root [2] fitexample()
# /scratch/babintsev/tmp/./fitexample.C
10   fitexample()
11   {
12         TFile *f = new TFile("hsimple.root");
!!!Calling constructor 0x0.TFile for new TFile
!!!Calling compiled function TFile()
  arg1 = (char* 0x14092a6a0)"hsimple.root"

FILE:fitexample.C LINE:12 cint>

13
14         TH1F *hpx = (TH1F*)f->Get("hpx");
!!!Calling compiled function Get()
  arg1 = (char* 0x14095a100)"hpx"

FILE:fitexample.C LINE:14 cint>

15
16         TF1 *func = new TF1("fit",fitf,-3,3,3);
!!!Calling constructor 0x0.TF1 for new TF1
!!!Calling compiled function TF1()
  arg1 = (char* 0x14095a900)"fit"
  arg2 = (char* 0x140911fc4)"fitf"
  arg3 = (int)(-3)
  arg4 = (int)3
  arg5 = (int)3

FILE:fitexample.C LINE:16 cint>

17         func->SetParameters(500,hpx->GetMean(),hpx->GetRMS());
FILE:fitexample.C LINE:17 cint>

 *** Break *** floating point exception
Root > Function fitf() busy flag cleared
Function fitexample() busy flag cleared
--------------

   //_____________________macro fitexample.C______
   Double_t fitf(Double_t *x, Double_t *par)
   {
      Double_t arg = 0;
      if (par[2]) arg = (x[0] - par[1])/par[2];

      Double_t fitval = par[0]*TMath::Exp(-0.5*arg*arg);
      return fitval;
   }
   void fitexample()
   {
      TFile *f = new TFile("hsimple.root");

      TH1F *hpx = (TH1F*)f->Get("hpx");

      TF1 *func = new TF1("fit",fitf,-3,3,3);
      func->SetParameters(500,hpx->GetMean(),hpx->GetRMS());
      func->SetParNames("Constant","Mean_value","Sigma");
      hpx->Fit("fit");
   }

--------------
Thanks a lot.
                                   Volodja Babintsev



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:36 MET