Rivet
1.8.0
|
00001 // -*- C++ -*- 00002 #ifndef RIVET_AnalysisLoader_HH 00003 #define RIVET_AnalysisLoader_HH 00004 00005 #include "Rivet/Rivet.hh" 00006 #include "Rivet/Tools/Logging.fhh" 00007 #include <map> 00008 #include <string> 00009 00010 namespace Rivet { 00011 00012 00013 // Forward declarations 00014 class Analysis; 00015 class AnalysisBuilderBase; 00016 00017 00019 class AnalysisLoader { 00020 public: 00021 00023 static vector<string> analysisNames(); 00024 static set<string> getAllAnalysisNames(); 00025 00029 static Analysis* getAnalysis(const string& analysisname); 00030 00032 static vector<Analysis*> getAllAnalyses(); 00033 00034 00035 private: 00036 00038 friend class AnalysisBuilderBase; 00039 00041 static void _registerBuilder(const AnalysisBuilderBase* a); 00042 00044 static void _loadAnalysisPlugins(); 00045 00046 typedef map<string, const AnalysisBuilderBase*> AnalysisBuilderMap; 00047 static AnalysisBuilderMap _ptrs; 00048 00049 }; 00050 00051 00052 } 00053 00054 #endif