1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005
3 
4 /**********************************************************************
5  *                                                                    *
6  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
7  *                                                                    *
8  **********************************************************************/
9 
10 #ifndef ROOT_Minuit2_MinimumSeedGenerator
11 #define ROOT_Minuit2_MinimumSeedGenerator
12 
13 namespace ROOT {
14 
15 namespace Minuit2 {
16 
17 class MinimumSeed;
18 class MnFcn;
19 class GradientCalculator;
20 class MnUserParameterState;
21 class MnStrategy;
22 class AnalyticalGradientCalculator;
23 
24 /** base class for seed generators (starting values); the seed generator
25     prepares initial starting values from the input (MnUserParameterState)
26     for the minimization;
27  */
28 
29 class MinimumSeedGenerator {
30 
31 public:
~MinimumSeedGenerator()32    virtual ~MinimumSeedGenerator() {}
33 
34    virtual MinimumSeed
35    operator()(const MnFcn &, const GradientCalculator &, const MnUserParameterState &, const MnStrategy &) const = 0;
36 
37    virtual MinimumSeed operator()(const MnFcn &, const AnalyticalGradientCalculator &, const MnUserParameterState &,
38                                   const MnStrategy &) const = 0;
39 };
40 
41 } // namespace Minuit2
42 
43 } // namespace ROOT
44 
45 #endif // ROOT_Minuit2_MinimumSeedGenerator
46