See example of nested Fits in the macro DoubleFit.C in attachement Rene Brun On Thu, 19 Aug 2004, Dr. John Krane wrote: > Hi, > > I'm running a stand-alone program with ROOT libraries (v4.00/03) > compilied into it so I can use Minuit. Because I am doing complicated > fits, I can't just fit a histogram, I instead do: > > TVirtualFitter *minuit = TVirtualFitter::Fitter(0, 150); > minuit->SetFCN(dummy_func); // wrapper for my full-blown fit routine > > ...etc. and all is well. I have the command > > minuit->ExecuteCommand("MINI",arglist,0); > > inside a loop that adds a new data point each time through. Again, all > this is working just fine, but today I decided I would like to look at > the slope of the residuals of this fit. So I figured I would use TH1D > for the residuals and the method Fit("pol1"). (Actually, I made my own > TF1 so I can get the slope parameter.) So into the loop I put: > > TF1 p1("p1","[0]+x*[1]",0.0,100.0); > p1.SetParameters(0.0,0.0); > tempbvalshist.Fit("p1"); > slope1=p1.GetParameter(1); > > ...and this works as well...once. When I get back up to the > minuit->ExecuteCommand("MINI") part, I get a terrible crash: > > *** Break *** segmentation violation > Generating stack trace... > 0x40fbe949 in TMinuit::Eval(int, double*, double&, double*, int) + 0x2b > from /bin/root/lib/libMinuit.so > 0x40fc2dfc in TMinuit::mnderi() + 0x47c from /bin/root/lib/libMinuit.so > 0x40fcb8f7 in TMinuit::mnmigr() + 0x20b from /bin/root/lib/libMinuit.so > 0x40fc45d6 in TMinuit::mnexcm(char const*, double*, int, int&) + 0x686 > from /bin/root/lib/libMinuit.so > 0x40fba057 in TFitter::ExecuteCommand(char const*, double*, int) + 0x31 > from /bin/root/lib/libMinuit.so > 0x080598fc in main + 0x22fa from simulate_signals > 0x420156a4 in __libc_start_main + 0xe4 from /lib/tls/libc.so.6 > 0x0804ead9 in TFile::TFile[in-charge](char const*, char const*, char > const*, int) + 0x31 from simulate_signals > Aborted > > Now, it seems from reading through the roottalk archives that Greg > Landsberg had this problem back in March 2003, running in ROOT with a > macro. His solution was to save the pointer gMinuit before his second > fit and then restore the pointer afterward. Because I'm running > stand-alone, I don't have a gMinuit, I only have my pointer to the > TVirtualFitter. The roottalk archives indicate that Rene has fixed > things, but I'm still stuck. I'm using version 4.00/03, which dates > from 10 May 2004, so I'm not sure if this is the same problem Greg had > after all. > > Could somebody please advise me on how to get out of this little hole > I'm stuck in? > > - John > >
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET