Mike R <roedelbr@students.uiuc.edu> writes:
> Hello,
>
> I'm am having trouble accessing fit parameters. I'm fairly new to
> ROOT and C++ so the answer may be simple. I'm running on Red Hat
> 7.0 or 7.1 and am using ROOT 3.01. I can fit my histograms to a
> Gaussian with no problems from the command prompt or with
> a ROOT macro using the predefined function 'gaus' However, for the
> application I'm working on now, I need to do it from compiled C++ code.
>
> I do get this warning when compiling, but it does compile:
>
> "`TF1 *gaus' might be used uninitialized in this function"
>
> I don't know what to do to get rid of this. I don't know if it is related
> to the problem I'll explain below...
>
> I am able to Draw the histogram. I am able to fit the histogram to a
> Gaussian (hadcGCs[k]->Fit("gaus","","",lowGCs[k],highGCs[k])), and the
> numbers are reasonable:
>
> "FCN=301.889 FROM MIGRAD STATUS=CONVERGED 88 CALLS 89 TOTAL
> EDM=4.31488e-09 STRATEGY= 1 ERROR MATRIX ACCURATE
> EXT PARAMETER STEP FIRST
> NO. NAME VALUE ERROR SIZE DERIVATIVE
> 1 Constant 2.89594e+02 9.22416e+00 5.06654e-02 -1.18601e-05
> 2 Mean 1.30441e+02 6.90035e-01 5.85323e-03 -5.57058e-05
> 3 Sigma 3.27019e+01 8.30520e-01 3.43433e-05 -5.39811e-03 "
>
> I update the canvas and see a good Gaussian fit, so I know the fit
> is being done correctly. ...BUT... when I try the following lines,
> which work fine in my macro, I get a segmentation violation (core
> dumped) error:
>
> "Double_t peakGCs = gaus->GetParameter(1);
> Double_t sigmaGCs = gaus->GetParameter(2);"
>
> I need to use these numbers for further plots and calculations. I
> searched your archived roottalk correspondence and found a couple
> somewhat similar problems, but none of the suggested fixes corrected my
> problem. (e.g. adding the option 'N' in the Fit did not change anything.)
> I tried using the GetParameters(par) approach from the FittingDemo example
> in the ROOT manual but it gave a segmentation violation as well.
>
>
> Thanks,
> Mike
Hello Mike,
what are you assigning to the pointer TF1 *gaus? It's difficult to
diagnose the problem without seeing your code. Something along
h1 = new TH1F("h1","",100,-1.,1.); h1->FillRandom("gaus",10000);
h1->Fit("gaus");
gaus
(class TF1*)0x10678f98
could give you a valid pointer in the interpreter but fail due to an
uninitialized pointer gaus when compiled. gaus= (TF1
*)gROOT->FindObject("gaus") would help to obtain the pointer to the
gaus object.
--
Jiri
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:10 MET