Re: Minuit2

From: Rene Brun <Rene.Brun_at_cern.ch>
Date: Wed, 17 Sep 2008 21:54:48 +0200


Patrick,

Lorenzo answered your mail immediately after your post. It is the second time that this happens with you. Please check carefully the behavior of your mail system and fix it once and for all ::)

Rene Brun

Patrick Dupre wrote:
> Hello,
>
> Could somebody reply to my emaik ?
> Thank.
>>
>> I know the example and my comment is, the function is a
> Gaussian,, ie is ready
>> to go, how do I build my own function ? Previously, I
>> overload the () operator.
>>
>> Thank.
>>
>> Regards.
>>
>>> Hello Patrick,
>>>
>>> the ModularFunctionMinimizer is an abstract class, you need to
>>> instantiate a derived class, depending on the algorithm you want to
>>> use.
>>> FOr example for Migrad (a variable metric minimizer) you need to
>>> instantiate the VarableMetricMinimizer class.
>>> You can do as following:
>>>
>>> VaraibleMetricMinimizer minimizer;
>>> FunctionMinimum min = minimizer.Minimize(*fFCN, par, stra, 0, 0.1);
>>>
>>> One examples is in SVN in
>>> $ROOTSYS/math/minuit2/test/MnSim/DemoGaussSim.cxx
>>> available also online at
>>>
>>> http://root.cern.ch/viewvc/trunk/math/minuit2/test/MnSim/DemoGaussSim.cxx?view=markup
>>>
>>>
>>> Best Regards
>>> Lorenzo
>>>
>>> On Sep 14, 2008, at 8:16 PM, Patrick Dupre wrote:
>>>
>>>> Hello,
>>>>
>>>> I used the Minuit2 package by derivating a class from FCNBase and
>>>> by overloading the operator () as it is suggested in the manual:
>>>> mnusersguide.pdf
>>>> I works, but to improve the control on the fit I wanted to use:
>>>> ModularFunctionMinimizer
>>>> So I tried to instantiate the class by:
>>>> ModularFunctionMinimizer minimizer (*fFCN, par, stra, 0, 0.1) ;
>>>> where:
>>>> RR_Chi2 *fFCN ;
>>>> and where RR_Chi2 is a class derivated from FCNBase (the one that I
>>>> used before) previously instanciated (fFCN = new RR_Chi2 (x, y))
>>>>
>>>>
>>>> I get the following compilation error:
>>>>
>>>> Fitter.cpp: In member function 'std::vector<std::vector<double,
>>>> std::allocator<double> >, std::allocator<std::vector<double,
>>>> std::allocator<double> > > > ROOT::Minuit2::Fit_RR::Fit()':
>>>> Fitter.cpp:418: error: no matching function for call to
>>>> 'ROOT::Minuit2::ModularFunctionMinimizer::ModularFunctionMinimizer(ROOT::Minuit2::RR_Chi2&,
>>>> ROOT::Minuit2::MnUserParameters&, ROOT::Minuit2::MnStrategy&, int,
>>>> double)'
>>>> /usr/local/include/Minuit2/ModularFunctionMinimizer.h:47: note:
>>>> candidates are:
>>>> ROOT::Minuit2::ModularFunctionMinimizer::ModularFunctionMinimizer()
>>>> /usr/local/include/Minuit2/ModularFunctionMinimizer.h:47: note:
>>>> ROOT::Minuit2::ModularFunctionMinimizer::ModularFunctionMinimizer(const
>>>> ROOT::Minuit2::ModularFunctionMinimizer&)
>>>> Fitter.cpp:418: error: cannot declare variable 'minimizer' to be of
>>>> abstract type 'ROOT::Minuit2::ModularFunctionMinimizer'
>>>> /usr/local/include/Minuit2/ModularFunctionMinimizer.h:47: note:
>>>> because the following virtual functions are pure within
>>>> 'ROOT::Minuit2::ModularFunctionMinimizer':
>>>> /usr/local/include/Minuit2/ModularFunctionMinimizer.h:86: note:
>>>> virtual const ROOT::Minuit2::MinimumSeedGenerator&
>>>> ROOT::Minuit2::ModularFunctionMinimizer::SeedGenerator() const
>>>> /usr/local/include/Minuit2/ModularFunctionMinimizer.h:87: note:
>>>> virtual const ROOT::Minuit2::MinimumBuilder&
>>>> ROOT::Minuit2::ModularFunctionMinimizer::Builder() const
>>>>
>>>> So, it looks like that I cannot instanciate a class
>>>> ModularFunctionMinimizer that way.
>>>> Question 1) how can I do it by keeping my previous code
>>>> 2) If I have to rewrite my previous code, can I get an example ?
>>>>
>>>> Thank.
>>>>
>>>>
>>>> --
>>>> ---
>>>> ==========================================================================
>>>>
>>>> Patrick DUPR� | |
>>>> Department of Chemistry | | Phone:
>>>> (44)-(0)-1904-434384
>>>> The University of York | | Fax:
>>>> (44)-(0)-1904-432516
>>>> Heslington | |
>>>> York YO10 5DD United Kingdom | | email: pd520_at_york.ac.uk
>>>> ==========================================================================
>>>>
>>>
>>>
>>
>>
>
Received on Wed Sep 17 2008 - 21:54:56 CEST

This archive was generated by hypermail 2.2.0 : Thu Sep 18 2008 - 05:50:04 CEST