16 #include "RConfigure.h"
30 #ifndef MATH_NO_PLUGIN_MANAGER
44 #ifdef R__HAS_MATHMORE
60 #ifndef MATH_NO_PLUGIN_MANAGER
63 ROOT::Math::Minimizer * ROOT::Math::Factory::CreateMinimizer(
const std::string & minimizerType,
const std::string & algoType)
68 const char * minim = minimizerType.c_str();
69 const char * algo = algoType.c_str();
73 if (minimizerType ==
"Fumili2" ) {
79 if (minimizerType ==
"TMinuit") {
84 if (minimizerType.empty() ) minim = ROOT::Math::MinimizerOptions::DefaultMinimizerType().c_str();
86 R__LOCKGUARD(gROOTMutex);
91 if ((h = gROOT->GetPluginManager()->FindHandler(
"ROOT::Math::Minimizer",minim ))) {
92 if (h->LoadPlugin() == -1) {
94 std::cout <<
"Error Loading ROOT::Math::Minimizer " << minim << std::endl;
100 ROOT::Math::Minimizer * min =
reinterpret_cast<ROOT::Math::Minimizer *
>( h->ExecPlugin(1,algo ) );
103 std::cout <<
"Loaded Minimizer " << minimizerType <<
" " << algoType << std::endl;
105 std::cout <<
"Error creating Minimizer " << minimizerType <<
" " << algoType << std::endl;
118 ROOT::Math::Minimizer * ROOT::Math::Factory::CreateMinimizer(
const std::string & minimizerType,
const std::string & algoType)
127 std::string algo = algoType;
131 if (minimizerType ==
"Minuit2")
132 min =
new ROOT::Minuit2::Minuit2Minimizer(algoType.c_str());
133 if (minimizerType ==
"Fumili2")
134 min =
new ROOT::Minuit2::Minuit2Minimizer(
"fumili");
139 if (minimizerType ==
"Minuit" || minimizerType ==
"TMinuit")
140 min =
new TMinuitMinimizer(algoType.c_str());
143 #ifdef R__HAS_MATHMORE
145 if (minimizerType ==
"GSL")
146 min =
new ROOT::Math::GSLMinimizer(algoType.c_str());
148 else if (minimizerType ==
"GSL_NLS")
149 min =
new ROOT::Math::GSLNLSMinimizer();
151 else if (minimizerType ==
"GSL_SIMAN")
152 min =
new ROOT::Math::GSLSimAnMinimizer();
159 min =
new ROOT::Minuit2::Minuit2Minimizer();
167 ROOT::Math::DistSampler * ROOT::Math::Factory::CreateDistSampler(
const std::string & type) {
168 #ifdef MATH_NO_PLUGIN_MANAGER
169 MATH_ERROR_MSG(
"Factory::CreateDistSampler",
"ROOT plug-in manager not available");
173 const char * typeName = type.c_str();
174 if (type.empty() ) typeName = ROOT::Math::DistSamplerOptions::DefaultSampler().c_str();
176 R__LOCKGUARD(gROOTMutex);
178 TPluginManager *pm = gROOT->GetPluginManager();
180 TPluginHandler *h = pm->FindHandler(
"ROOT::Math::DistSampler", typeName );
182 if (h->LoadPlugin() == -1) {
183 MATH_ERROR_MSG(
"Factory::CreateDistSampler",
"Error loading DistSampler plug-in");
187 ROOT::Math::DistSampler * smp =
reinterpret_cast<ROOT::Math::DistSampler *
>( h->ExecPlugin(0) );
191 MATH_ERROR_MSGVAL(
"Factory::CreateDistSampler",
"Error finding DistSampler plug-in",typeName);