FitterFactory.cxx
Go to the documentation of this file.
1 
12 // for have minuit
13 #ifdef HAVE_CONFIG_H
14 #include "config.h"
15 #endif
16 
17 // for truncation warning in debug mode
18 #ifdef _MSC_VER
19 #include "msdevstudio/MSconfig.h"
20 #endif
21 
22 #include "FitterFactory.h"
23 
24 // List of default fitters
25 #include "LMFitter.h"
26 #include "BFGSFitter.h"
27 
28 #if HAVE_MINUIT || HAVE_MINUIT2
29 #include "MinuitMigrad.h"
30 #endif
31 
32 // List of default objective functions
33 #include "NTupleChiSqFCN.h"
34 #include "NTupleLikeliHoodFCN.h"
35 #include "NTuplePearsonFCN.h"
36 
37 #include <stdexcept>
38 
39 using std::string;
40 using std::vector;
41 
42 using namespace hippodraw;
43 
45 
47 {
48 }
49 
51 {
52  if ( s_instance == 0 ) {
53  s_instance = new FitterFactory ();
55  }
56 
57  return s_instance;
58 }
59 
61 {
62  Fitter * fitter = new LMFitter ( "ChiSq: Levenberg Marquart" );
63  StatedFCN * chifcn = new NTupleChiSqFCN ();
64  fitter -> setFCN ( chifcn );
65  add ( fitter );
66 
67  fitter = new LMFitter ( "Pearson: BFGS" );
68  StatedFCN * pearsonfcn = new NTuplePearsonFCN ();
69  fitter -> setFCN ( pearsonfcn );
70  add ( fitter );
71 
72  fitter = new BFGSFitter ( "MLEH: BFGS" );
73  StatedFCN * likfcn = new NTupleLikeliHoodFCN ();
74  fitter -> setFCN ( likfcn );
75  add ( fitter );
76 
77 #if HAVE_MINUIT || HAVE_MINUIT2
78  fitter = new MinuitMigrad ( "ChiSq: Minuit(Migrad)" );
79  chifcn = new NTupleChiSqFCN ();
80  fitter -> setFCN ( chifcn );
81  add ( fitter );
82 
83  fitter = new MinuitMigrad ( "MLEH: Minuit(Migrad)" );
84  likfcn = new NTupleLikeliHoodFCN ();
85  fitter -> setFCN ( likfcn );
86  add ( fitter );
87 #endif
88 
89 }
90 
91 void
93 setDefault ( const std::string & name )
94 {
95  bool yes = exists ( name );
96 
97  if ( yes == false ) {
98  string what ( "FitterFactory: Fitter with name `" );
99  what += name;
100  what += "' does not exist.";
101  throw std::runtime_error ( what );
102  }
103 
104  m_default = name;
105 }
106 
107 const string &
109 getDefault () const
110 {
111  if ( m_default.empty () ) {
112  const vector < string > & fitters = names ();
113  return fitters.front ();
114  }
115  //else
116  return m_default;
117 }

Generated for HippoDraw Class Library by doxygen