00001 #ifndef TMEGENERATORFACTORY__HH_ 00002 #define TMEGENERATORFACTORY__HH_ 00003 #include "TemplateFactory.h" 00004 00005 class TVMuonEventGenerator; 00006 class TMEGeneratorOptions; 00007 00008 class TMEGeneratorFactory:public TemplateFactory<TVMuonEventGenerator,TMEGeneratorOptions>{ 00009 private: 00010 TMEGeneratorFactory(): 00011 TemplateFactory<TVMuonEventGenerator,TMEGeneratorOptions>("TMEGeneratorFactory"){}; 00012 ~TMEGeneratorFactory(){}; 00013 public: 00014 // Get the single instance of this class 00015 static TMEGeneratorFactory* Instance(); 00016 }; 00017 00018 inline TMEGeneratorFactory* TMEGeneratorFactory::Instance(){ 00019 static TMEGeneratorFactory* instance=NULL; 00020 if(!instance) { 00021 instance=new TMEGeneratorFactory(); 00022 } 00023 return instance; 00024 } 00025 00026 #define ALCAP_TME_GENERATOR( NAME , ... ) \ 00027 RegistryProxy<NAME##MEGenerator,TVMuonEventGenerator,TMEGeneratorOptions,TMEGeneratorFactory> p_ME##NAME(#NAME, #__VA_ARGS__); 00028 00029 00030 #endif // TMEGENERATORFACTORY__HH_