00001 // @(#)root/mathcore:$Id: Factory.h 37448 2010-12-09 20:20:56Z moneta $ 00002 // Author: L. Moneta Fri Dec 22 14:43:33 2006 00003 00004 /********************************************************************** 00005 * * 00006 * Copyright (c) 2006 LCG ROOT Math Team, CERN/PH-SFT * 00007 * * 00008 * * 00009 **********************************************************************/ 00010 00011 // Header file for class Factory 00012 00013 #ifndef ROOT_Math_Factory 00014 #define ROOT_Math_Factory 00015 00016 #include <string> 00017 00018 00019 namespace ROOT { 00020 00021 namespace Math { 00022 00023 class Minimizer; 00024 class DistSampler; 00025 00026 //___________________________________________________________________________ 00027 /** 00028 Factory class holding static functions to create the interfaces like ROOT::Math::Minimizer 00029 via the Plugin Manager 00030 */ 00031 class Factory { 00032 public: 00033 00034 /** 00035 static method to create the corrisponding Minimizer given the string 00036 Supported Minimizers types are: 00037 Minuit (TMinuit), Minuit2, GSLMultiMin, GSLMultiFit, GSLSimAn, Linear, Fumili, Genetic 00038 If no name is given use default values defined in MinimizerOptions 00039 */ 00040 static ROOT::Math::Minimizer * CreateMinimizer(const std::string & minimizerType = "", const std::string & algoType = ""); 00041 00042 /** 00043 static method to create the distribution sampler class given a string specifying the type 00044 Supported sampler types are: 00045 Unuran, Foam 00046 If no name is given use default values defined in DistSamplerOptions 00047 */ 00048 static ROOT::Math::DistSampler * CreateDistSampler(const std::string & samplerType =""); 00049 00050 00051 }; 00052 00053 } // end namespace Fit 00054 00055 } // end namespace ROOT 00056 00057 00058 #endif /* ROOT_Fit_MinimizerFactory */