00001 // ===================================================================== 00028 // ===================================================================== 00029 #ifndef CLDAQ__TANALYSISMANAGER_HH 00030 #define CLDAQ__TANALYSISMANAGER_HH 00031 00032 #include "Tglobals.h" 00033 #include "TAnalyser.hh" 00034 #include "TAnalysisStatusTable.hh" 00035 #include "TAnalysisAction.hh" 00036 00037 class TExtractor; 00038 00039 00059 class TAnalysisManager 00060 { 00061 00062 protected: 00063 static TAnalysisManager* theAnalysisManager; 00064 00065 protected: 00066 TAnalysisStatusTable theStatusTable; 00067 TAnalyser* theAnalyser; 00068 TAnalysisAction* theAnalysisAction; 00069 00070 public: 00071 TAnalysisManager( TAnalyser* analyser = 0 ); 00072 virtual ~TAnalysisManager(); 00073 00074 public: 00075 virtual Tvoid StartAnalysis( const Tstring& id ); 00076 virtual Tvoid StopAnalysis( const Tstring& id ); 00077 virtual Tvoid UpdateAnalysis( const Tstring& id ); 00078 virtual Tvoid SuspendAnalysis( const Tstring& id ); 00079 virtual Tvoid ResumeAnalysis( const Tstring& id ); 00080 virtual Tvoid StartAnalysis(); 00081 virtual Tvoid StopAnalysis(); 00082 virtual Tvoid UpdateAnalysis(); 00083 virtual Tvoid SuspendAnalysis(); 00084 virtual Tvoid ResumeAnalysis(); 00085 00086 public: 00087 virtual Tvoid ShowStatus() const; 00088 00089 public: 00090 TAnalyser* GetAnalyser() const; 00091 Tvoid SetAnalyser( TAnalyser* analyser ); 00092 Tvoid SetExtractor( TExtractor* extractor ); 00093 const TAnalysisStatusTable& GetStatusTable() const; 00094 TAnalysisStatusTable& GetStatusTable(); 00095 Tvoid SetStatusTable( const TAnalysisStatusTable& table ); 00096 TAnalysisAction* GetAnalysisAction() const; 00097 Tvoid SetAnalysisAction( TAnalysisAction* action ); 00098 00099 public: 00100 virtual Tvoid GoAnalysisLoop( const Tstring& id ); 00101 virtual Tvoid WaitReturnFromAnalysisLoop( const Tstring& id ); 00102 00103 protected: 00104 static Tvoid* doAnalysisLoop( Tvoid* arguments ); 00105 00106 public: 00107 static TAnalysisManager* GetAnalysisManager(); 00108 00109 #ifdef __CLDAQ_ROOT_DLL 00110 ClassDef(TAnalysisManager,0) 00111 #endif 00112 00113 }; 00114 00115 inline TAnalysisManager* TAnalysisManager::GetAnalysisManager() 00116 { 00117 if ( theAnalysisManager == 0 ) 00118 return 0; 00119 return theAnalysisManager; 00120 } 00121 00122 inline TAnalyser* TAnalysisManager::GetAnalyser() const 00123 { 00124 return theAnalyser; 00125 } 00126 00127 inline const TAnalysisStatusTable& TAnalysisManager::GetStatusTable() const 00128 { 00129 return theStatusTable; 00130 } 00131 00132 inline TAnalysisStatusTable& TAnalysisManager::GetStatusTable() 00133 { 00134 return theStatusTable; 00135 } 00136 00137 inline Tvoid TAnalysisManager::SetStatusTable( const TAnalysisStatusTable& table ) 00138 { 00139 theStatusTable = table; 00140 return; 00141 } 00142 00143 inline Tvoid TAnalysisManager::SetExtractor( TExtractor* extractor ) 00144 { 00145 if ( theAnalyser != 0 ) 00146 theAnalyser -> AddExtractor( extractor ); 00147 return; 00148 } 00149 00150 inline TAnalysisAction* TAnalysisManager::GetAnalysisAction() const 00151 { 00152 return theAnalysisAction; 00153 } 00154 00155 #endif