00001 #ifndef processManager_h 00002 #define processManager_h 00003 00004 #include "Event/eventProcess.h" 00005 #include "Event/algorithmTask.h" 00006 #include "Event/serviceI.h" 00007 #include "Event/serverVI.h" 00008 #include "Event/cutSelection.h" 00009 00010 //----------------------------------------------- 00012 00052 //---------------------------------------------- 00053 // J.A Hernando, Santa Cruz 02/29/00 00054 //---------------------------------------------- 00055 00056 //###################################### 00057 class processManager : public serviceI 00058 //###################################### 00059 { 00060 friend class eventProcess; 00061 friend class algorithmTask; 00062 00063 public: 00064 00066 processManager(); 00068 ~processManager(); 00069 00071 static processManager* instance() {return m_instance;} 00072 00074 void runApplication() const {run(m_applicationName);} 00076 void run(std::string name) const {getAlgorithm(name)->run();} 00077 00079 algorithmVI* getAlgorithm(std::string name) const; 00081 void addAlgorithm(std::string name, algorithmVI* alg); 00082 00084 virtual void writeOut() const; 00085 00086 protected: 00087 00089 eventProcess* getEventProcess(std::string name) const; 00091 algorithmTask* getAlgorithmTask(std::string name) const; 00092 00094 virtual void defineOption(); 00096 virtual void setOption(std::string type, std::string name); //overwriten 00097 00098 private: 00099 00101 static processManager* m_instance; 00102 00104 serverVI<algorithmVI>* m_algorithms; 00106 serverVI<eventProcess>* m_eventProcesses; 00108 serverVI<algorithmTask>* m_algorithmTasks; 00109 00111 algorithmTask* m_iniRun; 00113 algorithmTask* m_endRun; 00115 eventProcess* m_runEvent; 00116 00118 std::string m_applicationName; 00120 std::string m_eventProcessName; 00122 std::string m_algorithmTaskName; 00123 }; 00124 00125 #endif