00001 #ifndef RAWDATAPROVIDERSVC_H 00002 #define RAWDATAPROVIDERSVC_H 00003 00004 #include "GaudiKernel/IInterface.h" 00005 #include "GaudiKernel/IIncidentListener.h" 00006 #include "GaudiKernel/Kernel.h" 00007 #include "GaudiKernel/Service.h" 00008 #include "GaudiKernel/SmartDataPtr.h" 00009 #include "GaudiKernel/DataSvc.h" 00010 #include "MdcRawEvent/MdcDigi.h" 00011 #include "EventModel/Event.h" 00012 #include <vector> 00013 #include "RawDataProviderSvc/IRawDataProviderSvc.h" 00014 #include "RawDataProviderSvc/TofData.h" 00015 00016 class RawDataProviderSvc: public Service, virtual public IRawDataProviderSvc, 00017 virtual public IIncidentListener{ 00018 00019 public: 00020 RawDataProviderSvc( const std::string& name, ISvcLocator* svcloc ); 00021 ~RawDataProviderSvc(); 00022 virtual StatusCode initialize(); 00023 virtual StatusCode finalize(); 00024 virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface ); 00025 00026 // Incident handler 00027 void handle(const Incident&); 00028 00029 MdcDigiVec& getMdcDigiVec(uint32_t control = 0) { return m_mdcProvider->getMdcDigiVec(control); } 00030 00031 TofDataMap& tofDataMapOnlineMode(uint32_t control = 1) { return m_tofProvider->tofDataMapOnlineMode(control); } 00032 TofDataVector& tofDataVectorOnlineMode(uint32_t control = 1) { return m_tofProvider->tofDataVectorOnlineMode(control); } 00033 TofDataMap& tofDataMapEstime() { return m_tofProvider->tofDataMapEstime(); } 00034 TofDataVector& tofDataVectorEstime() { return m_tofProvider->tofDataVectorEstime(); } 00035 TofDataMap& tofDataMapTof(double estime = 0.0) { return m_tofProvider->tofDataMapTof(estime); } 00036 TofDataVector& tofDataVectorTof(double estime = 0.0) { return m_tofProvider->tofDataVectorTof(estime); } 00037 TofDataMap& tofDataMapEmc(double estime = 0.0) { return m_tofProvider->tofDataMapEmc(estime); } 00038 TofDataVector& tofDataVectorEmc(double estime = 0.0) { return m_tofProvider->tofDataVectorEmc(estime); } 00039 00040 EmcDigiCol& getEmcDigiVec(uint32_t control) {return m_emcProvider->getEmcDigiVec(control); } 00041 00042 MdcRawDataProvider* getMdcProvider() { return m_mdcProvider; } 00043 TofRawDataProvider* getTofProvider() { return m_tofProvider; } 00044 EmcRawDataProvider* getEmcProvider() { return m_emcProvider; } 00045 bool isOnlineMode() { return m_onlineMode; } 00046 00047 private: 00048 00049 MdcRawDataProvider* m_mdcProvider; 00050 TofRawDataProvider* m_tofProvider; 00051 EmcRawDataProvider* m_emcProvider; 00052 00053 std::vector<int> m_skipLayers; // Mdc skip layer flag 00054 float m_effThreshold; // Mdc wire efficiency threshold 00055 float m_elow; // Emc low threshold of energy for single crystal (MeV) 00056 uint32_t m_tlow; // Emc low threshold of time 00057 uint32_t m_thigh; // Emc high threshold of time 00058 std::vector<uint32_t> m_hotVec; // Emc hot channels' id 00059 std::vector<uint32_t> m_deadVec; // Emc dead channels' id 00060 bool m_onlineMode; // if online mode, true 00061 }; 00062 00063 #endif