00001 //==================================================================== 00002 // EFEventLoopMgr.h 00003 //==================================================================== 00004 #ifndef STOREGATE_EFEVENTLOOPMGR_H 00005 #define STOREGATE_EFEVENTLOOPMGR_H 00006 00007 #define ONLINE_DATA_HEAD 36 00008 #define ONLINE_DATA_TAIL 4 00009 // Framework include files 00010 #ifndef GAUDIKERNEL_IEVTSELECTOR_H 00011 #include "GaudiKernel/IEvtSelector.h" 00012 #endif 00013 #include "GaudiKernel/SvcFactory.h" 00014 #ifndef GAUDISVC_MINIMALEVENTLOOPMGR_H 00015 //#include "ApplicationMgr/MinimalEventLoopMgr.h" 00016 #include "GaudiKernel/MinimalEventLoopMgr.h" 00017 #endif 00018 00019 #include "HltDataTypes/EventID.h" /* number_type */ 00020 #include "HltDataTypes/EFResult.h" 00021 #include "HltStore/HltStoreSvc.h" 00022 #include "EFServices/IEFEventLoopMgr.h" 00023 00024 #include "RawDataCnv/IRawDataInputSvc.h" 00025 #include "RawDataCnv/RawDataCnv.h" 00026 #include <vector> 00027 #include <stdint.h> 00028 00029 // Forward declarations 00030 class IIncidentSvc; 00031 class IDataManagerSvc; 00032 class IConversionSvc; 00033 class IDataProviderSvc; 00034 class RAWEVENT; 00035 00058 class EFEventLoopMgr : public MinimalEventLoopMgr, 00059 virtual public IEFEventLoopMgr { 00060 public: 00062 friend class SvcFactory<EFEventLoopMgr>; 00063 00064 protected: 00066 IIncidentSvc* m_incidentSvc; 00068 HltStoreSvc* m_HltStoreSvc; 00070 IEvtSelector* m_evtSelector; 00072 IEvtSelector::Context* m_evtContext; 00074 std::string m_evtsel; 00075 00077 IDataManagerSvc* m_evtDataMgrSvc; 00079 IDataProviderSvc* m_evtDataSvc; 00080 00082 IDataManagerSvc* m_histoDataMgrSvc; 00084 IConversionSvc* m_histoPersSvc; 00086 std::string m_histPersName; 00087 00089 EventID::number_type m_currentRun; 00090 bool m_firstRun; 00091 00092 protected: 00094 EFEventLoopMgr(const std::string& nam, ISvcLocator* svcLoc); 00096 virtual ~EFEventLoopMgr(); 00097 00098 public: 00100 virtual StatusCode initialize(); 00102 virtual StatusCode finalize(); 00103 00105 virtual StatusCode executeEvent(void* par); 00107 StatusCode getEventRoot(IOpaqueAddress*& refpAddr); 00109 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface); 00111 virtual StatusCode prepareForRun(int ef_run_number); 00112 00114 virtual bool getTrigChn(uint32_t* data, uint32_t ndata); 00116 virtual std::string EF_Decision(); 00118 virtual uint32_t EF_Version(); 00120 virtual uint32_t EF_Algorithm_Tag(); 00122 virtual uint32_t EF_Total_Energy(); 00124 virtual uint32_t* EF_Fragment_Address(); 00125 00126 private: 00127 int m_total_nevt ; 00128 IRawDataInputSvc* m_inputSvc; 00129 bool m_disableEFResult ; 00130 bool m_okexecuteEvent ; 00131 int m_timeTest; 00132 EFResult* m_efResult; 00133 EFResult* m_evtType; 00134 //hxt IByteStreamEventAccess* m_ByteStreamEventAccess; 00135 char* m_serializedEFAddress; 00136 uint32_t m_trgType; 00137 bool m_firstEvent; 00138 RAWEVENT* m_re; 00139 //hxt typedef OFFLINE_FRAGMENTS_NAMESPACE::SubDetectorFragment DETF; 00140 //hxt typedef std::vector<DETF*, Hlt_ALLOC> VDETF; 00141 }; 00142 #endif // STOREGATE_EFEVENTLOOPMGR_H