38 FunctionMinimum FumiliMinimizer::Minimize(
const FCNBase& fcn, 
const MnUserParameterState& st, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
   42    MnUserFcn mfcn(fcn, st.Trafo());
 
   43    Numerical2PGradientCalculator gc(mfcn, st.Trafo(), strategy);
 
   45    unsigned int npar = st.VariableParameters();
 
   46    if(maxfcn == 0) maxfcn = 200 + 100*npar + 5*npar*npar;
 
   48    maxfcn = int(0.1*maxfcn);
 
   50    MinimumSeed mnseeds = SeedGenerator()(mfcn, gc, st, strategy);
 
   56    FumiliFCNBase * fumiliFcn = 
dynamic_cast< FumiliFCNBase *
>( 
const_cast<FCNBase *
>(&fcn) );
 
   58       MN_ERROR_MSG(
"FumiliMinimizer: Error : wrong FCN type. Try to use default minimizer");
 
   59       return  FunctionMinimum(mnseeds, fcn.Up() );
 
   63    FumiliGradientCalculator fgc(*fumiliFcn, st.Trafo(), npar);
 
   65    std::cout << 
"Minuit::Minimize using FumiliMinimizer" << std::endl;
 
   67    return ModularFunctionMinimizer::Minimize(mfcn, fgc, mnseeds, strategy, maxfcn, toler);
 
   72 FunctionMinimum FumiliMinimizer::Minimize(
const FCNGradientBase& fcn, 
const MnUserParameterState& st, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
   77    MnUserFcn mfcn(fcn, st.Trafo() );
 
   78    AnalyticalGradientCalculator gc(fcn, st.Trafo());
 
   80    unsigned int npar = st.VariableParameters();
 
   81    if(maxfcn == 0) maxfcn = 200 + 100*npar + 5*npar*npar;
 
   83    MinimumSeed mnseeds = SeedGenerator()(mfcn, gc, st, strategy);
 
   87    FumiliFCNBase * fumiliFcn = 
dynamic_cast< FumiliFCNBase *
>( 
const_cast<FCNGradientBase *
>(&fcn) );
 
   89       MN_ERROR_MSG(
"FumiliMinimizer: Error : wrong FCN type. Try to use default minimizer");
 
   90       return  FunctionMinimum(mnseeds, fcn.Up() );
 
   94    FumiliGradientCalculator fgc(*fumiliFcn, st.Trafo(), npar);
 
   96    std::cout << 
"Minuit::Minimize using FumiliMinimizer" << std::endl;
 
   98    return ModularFunctionMinimizer::Minimize(mfcn, fgc, mnseeds, strategy, maxfcn, toler);