00001 00011 #ifdef HAVE_CONFIG_H 00012 #include "config.h" 00013 #endif 00014 00015 // for truncation warning in debug mode 00016 #ifdef _MSC_VER 00017 #include "msdevstudio/MSconfig.h" 00018 #endif 00019 00020 #ifdef HAVE_CONFIG_H 00021 #include "config.h" 00022 #endif 00023 00024 #include "FitterFactory.h" 00025 00026 // List of default fitters 00027 #include "LMFitter.h" 00028 #include "BFGSFitter.h" 00029 00030 #ifdef HAVE_MINUIT 00031 #include "MinuitMigrad.h" 00032 #endif 00033 00034 // List of default objective functions 00035 #include "NTupleChiSqFCN.h" 00036 #include "NTupleLikeliHoodFCN.h" 00037 #include "NTuplePearsonFCN.h" 00038 00039 FitterFactory * FitterFactory::s_instance = 0; 00040 00041 FitterFactory::FitterFactory () 00042 { 00043 } 00044 00045 FitterFactory * FitterFactory::instance () 00046 { 00047 if ( s_instance == 0 ) { 00048 s_instance = new FitterFactory (); 00049 s_instance->initialize (); 00050 } 00051 00052 return s_instance; 00053 } 00054 00055 void FitterFactory::initialize () 00056 { 00057 Fitter * fitter = new LMFitter ( "ChiSq: Levenberg Marquart" ); 00058 StatedFCN * chifcn = new NTupleChiSqFCN (); 00059 fitter -> setFCN ( chifcn ); 00060 add ( fitter ); 00061 00062 fitter = new LMFitter ( "Pearson: BFGS" ); 00063 StatedFCN * pearsonfcn = new NTuplePearsonFCN (); 00064 fitter -> setFCN ( pearsonfcn ); 00065 add ( fitter ); 00066 00067 fitter = new BFGSFitter ( "MLEH: BFGS" ); 00068 StatedFCN * likfcn = new NTupleLikeliHoodFCN (); 00069 fitter -> setFCN ( likfcn ); 00070 add ( fitter ); 00071 00072 #ifdef HAVE_MINUIT 00073 fitter = new MinuitMigrad ( "ChiSq: Minuit(Migrad)" ); 00074 fitter -> setFCN ( chifcn ); 00075 add ( fitter ); 00076 00077 fitter = new MinuitMigrad ( "MLEH: Minuit(Migrad)" ); 00078 fitter -> setFCN ( likfcn ); 00079 add ( fitter ); 00080 #endif 00081 00082 }