// @(#)root/minuit2:$Id$
// Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005

/**********************************************************************
 *                                                                    *
 * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
 *                                                                    *
 **********************************************************************/

#ifndef ROOT_Minuit2_VariableMetricMinimizer
#define ROOT_Minuit2_VariableMetricMinimizer

#include "Minuit2/MnConfig.h"
#include "Minuit2/ModularFunctionMinimizer.h"
#include "Minuit2/MnSeedGenerator.h"
#include "Minuit2/VariableMetricBuilder.h"

namespace ROOT {

   namespace Minuit2 {

//______________________________________________________________________________
/**
    Instantiates the SeedGenerator and MinimumBuilder for
    Variable Metric Minimization method.
    API is provided in the upper ROOT::Minuit2::ModularFunctionMinimizer class

 */

class VariableMetricMinimizer : public ModularFunctionMinimizer {

public:

   VariableMetricMinimizer() : fMinSeedGen(MnSeedGenerator()),
                               fMinBuilder(VariableMetricBuilder()) {}

   ~VariableMetricMinimizer() {}

   const MinimumSeedGenerator& SeedGenerator() const {return fMinSeedGen;}
   const MinimumBuilder& Builder() const {return fMinBuilder;}
   MinimumBuilder& Builder()  {return fMinBuilder;}

private:

   MnSeedGenerator fMinSeedGen;
   VariableMetricBuilder fMinBuilder;
};

  }  // namespace Minuit2

}  // namespace ROOT

#endif  // ROOT_Minuit2_VariableMetricMinimizer
 VariableMetricMinimizer.h:1
 VariableMetricMinimizer.h:2
 VariableMetricMinimizer.h:3
 VariableMetricMinimizer.h:4
 VariableMetricMinimizer.h:5
 VariableMetricMinimizer.h:6
 VariableMetricMinimizer.h:7
 VariableMetricMinimizer.h:8
 VariableMetricMinimizer.h:9
 VariableMetricMinimizer.h:10
 VariableMetricMinimizer.h:11
 VariableMetricMinimizer.h:12
 VariableMetricMinimizer.h:13
 VariableMetricMinimizer.h:14
 VariableMetricMinimizer.h:15
 VariableMetricMinimizer.h:16
 VariableMetricMinimizer.h:17
 VariableMetricMinimizer.h:18
 VariableMetricMinimizer.h:19
 VariableMetricMinimizer.h:20
 VariableMetricMinimizer.h:21
 VariableMetricMinimizer.h:22
 VariableMetricMinimizer.h:23
 VariableMetricMinimizer.h:24
 VariableMetricMinimizer.h:25
 VariableMetricMinimizer.h:26
 VariableMetricMinimizer.h:27
 VariableMetricMinimizer.h:28
 VariableMetricMinimizer.h:29
 VariableMetricMinimizer.h:30
 VariableMetricMinimizer.h:31
 VariableMetricMinimizer.h:32
 VariableMetricMinimizer.h:33
 VariableMetricMinimizer.h:34
 VariableMetricMinimizer.h:35
 VariableMetricMinimizer.h:36
 VariableMetricMinimizer.h:37
 VariableMetricMinimizer.h:38
 VariableMetricMinimizer.h:39
 VariableMetricMinimizer.h:40
 VariableMetricMinimizer.h:41
 VariableMetricMinimizer.h:42
 VariableMetricMinimizer.h:43
 VariableMetricMinimizer.h:44
 VariableMetricMinimizer.h:45
 VariableMetricMinimizer.h:46
 VariableMetricMinimizer.h:47
 VariableMetricMinimizer.h:48
 VariableMetricMinimizer.h:49
 VariableMetricMinimizer.h:50
 VariableMetricMinimizer.h:51
 VariableMetricMinimizer.h:52
 VariableMetricMinimizer.h:53