Rivet  1.8.0
AnalysisLoader.hh
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