emcRawDataAccessor.h

Go to the documentation of this file.
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