00001 #ifndef __EMCRAWDATAACCESSOR_H__ 00002 #define __EMCRAWDATAACCESSOR_H__ 00003 00024 #ifndef __EMCFEM_H__ 00025 #include "EmcFEM.h" 00026 #endif 00027 #include <string> 00028 00029 // the EMCalFEE object would be better named 'emcDataExtractor' 00030 typedef EMCalFEE emcDataExtractor; 00031 00032 class EmcDynamicData; 00033 class emcRawDataAccessor; 00034 class emcRawDataObject; 00035 class Event; 00036 class PHTimeStamp; 00037 class emcConfigurationFile; 00038 00039 class emcRawDataAccessor 00040 { 00041 public: 00042 00043 ~emcRawDataAccessor(); 00044 00054 emcDataExtractor* GetDataExtractor(void) 00055 { 00056 return fDataExtractor; 00057 } 00059 EmcDynamicData* GetDynamicData(void) 00060 { 00061 return fDynamicData; 00062 } 00064 00067 00069 static emcRawDataAccessor* GetInstance(int& status, 00070 const char* configfilename); 00071 00076 static emcRawDataAccessor* GetInstance(const PHTimeStamp& ts); 00077 00080 static emcRawDataAccessor* GetInstance(void); 00081 00083 00084 static void RemoveInstance(void); 00085 00087 static void ReleaseInstance(void); 00088 00090 int GetNextEvent(void); 00091 00093 emcRawDataObject* GetRawDataObject(void); 00094 00096 static int processEvent(Event* evt) 00097 { 00098 return fDataExtractor->processEvent(evt); 00099 } 00100 00102 void SetDataSource(Eventiterator* it); 00103 00104 public: 00105 00106 FEMlimits lim; 00107 00108 private: 00109 00110 emcRawDataAccessor(int& status, 00111 const char* configfilename); 00112 emcRawDataAccessor(int& status, emcConfigurationFile& configFile); 00113 00114 private: 00115 00116 static std::string fConfigFileName; 00117 static int fCount; 00118 static EmcDynamicData* fDynamicData; 00119 static EMCalFEE* fDataExtractor; 00120 static Eventiterator* fEventiterator; 00121 static emcRawDataAccessor* fInstance; 00122 static emcRawDataObject* fRDO; 00123 }; 00124 00125 #endif