26 #ifndef ROOT_TMVA_ClassifierFactory
27 #define ROOT_TMVA_ClassifierFactory
55 class ClassifierFactory {
60 typedef IMethod* (*Creator)(
const TString& job,
const TString& title,
61 DataSetInfo& dsi,
const TString& option );
65 static ClassifierFactory& Instance();
66 static void DestroyInstance();
68 Bool_t Register (
const std::string &name, Creator creator );
69 Bool_t Unregister(
const std::string &name );
71 IMethod* Create (
const std::string &name,
75 const TString& option );
76 IMethod* Create (
const std::string &name,
78 const TString& weightfile =
"" );
80 const std::vector<std::string> List()
const;
87 ClassifierFactory() {}
88 ~ClassifierFactory() {}
92 ClassifierFactory(
const ClassifierFactory& );
93 const ClassifierFactory& operator =(
const ClassifierFactory& );
97 static ClassifierFactory *fgInstance;
98 typedef std::map<std::string, Creator> CallMap;
124 #define REGISTER_METHOD(CLASS) \
127 struct RegisterTMVAMethod { \
128 static TMVA::IMethod* CreateMethod##CLASS(const TString& job, const TString& title, TMVA::DataSetInfo& dsi, const TString& option) \
130 if(job=="" && title=="") { \
131 return (TMVA::IMethod*) new TMVA::Method##CLASS(dsi, option); \
133 return (TMVA::IMethod*) new TMVA::Method##CLASS(job, title, dsi, option); \
136 RegisterTMVAMethod() { \
137 TMVA::ClassifierFactory::Instance(). Register(#CLASS, CreateMethod##CLASS); \
138 TMVA::Types::Instance().AddTypeMapping(TMVA::Types::k##CLASS, #CLASS); \
141 static RegisterTMVAMethod RegisterTMVAMethod_instance; \