Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
CombinedMinimumBuilder.h
Go to the documentation of this file.
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_CombinedMinimumBuilder
11 #define ROOT_Minuit2_CombinedMinimumBuilder
12 
13 #include "Minuit2/MinimumBuilder.h"
16 
17 namespace ROOT {
18 
19  namespace Minuit2 {
20 
21 
22 class CombinedMinimumBuilder : public MinimumBuilder {
23 
24 public:
25 
26  CombinedMinimumBuilder() : fVMMinimizer(VariableMetricMinimizer()),
27  fSimplexMinimizer(SimplexMinimizer()) {}
28 
29  ~CombinedMinimumBuilder() {}
30 
31  virtual FunctionMinimum Minimum(const MnFcn&, const GradientCalculator&, const MinimumSeed&, const MnStrategy&, unsigned int, double) const;
32 
33  //re-implement setter of base class. Need also to store in the base class for consistency
34  virtual void SetPrintLevel(int level) {
35  MinimumBuilder::SetPrintLevel(level);
36  fVMMinimizer.Builder().SetPrintLevel(level);
37  fSimplexMinimizer.Builder().SetPrintLevel(level);
38  }
39  virtual void SetStorageLevel(int level) {
40  MinimumBuilder::SetStorageLevel(level);
41  fVMMinimizer.Builder().SetStorageLevel(level);
42  fSimplexMinimizer.Builder().SetStorageLevel(level);
43  }
44 
45  // set trace object (user manages it)
46  virtual void SetTraceObject(MnTraceObject & obj) {
47  MinimumBuilder::SetTraceObject(obj);
48  fVMMinimizer.Builder().SetTraceObject(obj);
49  fSimplexMinimizer.Builder().SetTraceObject(obj);
50  }
51 
52 
53 private:
54 
55  VariableMetricMinimizer fVMMinimizer;
56  SimplexMinimizer fSimplexMinimizer;
57 };
58 
59  } // namespace Minuit2
60 
61 } // namespace ROOT
62 
63 #endif // ROOT_Minuit2_CombinedMinimumBuilder