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