Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MinimumBuilder.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_MinimumBuilder
11 #define ROOT_Minuit2_MinimumBuilder
12 
13 #include "Minuit2/MnTraceObject.h"
14 
15 namespace ROOT {
16 
17  namespace Minuit2 {
18 
19 
20 class FunctionMinimum;
21 class MnFcn;
22 class GradientCalculator;
23 class MinimumSeed;
24 class MinimumState;
25 class MnStrategy;
26 
27 class MinimumBuilder {
28 
29 public:
30 
31  MinimumBuilder();
32 
33  virtual ~MinimumBuilder() {}
34 
35  virtual FunctionMinimum Minimum(const MnFcn&, const GradientCalculator&, const MinimumSeed&, const MnStrategy&, unsigned int, double) const = 0;
36 
37  int StorageLevel() const { return fStorageLevel; }
38  int PrintLevel() const { return fPrintLevel; }
39 
40  bool TraceIter() const { return (fTracer); }
41  MnTraceObject * TraceObject() const { return (fTracer); }
42 
43  virtual void SetPrintLevel(int level) { fPrintLevel = level;}
44  virtual void SetStorageLevel(int level) { fStorageLevel = level;}
45 
46  // set trace object (user manages it)
47  virtual void SetTraceObject(MnTraceObject & obj) {
48  fTracer = &obj;
49  }
50 
51  void TraceIteration(int iter, const MinimumState & state) const {
52  if (fTracer) (*fTracer)(iter, state);
53  }
54 
55 private:
56 
57  int fPrintLevel;
58  int fStorageLevel;
59 
60  MnTraceObject * fTracer; //! tracer object (it is managed by user)
61 
62 };
63 
64  } // namespace Minuit2
65 
66 } // namespace ROOT
67 
68 #endif // ROOT_Minuit2_MinimumBuilder