00001 #ifndef MDCRAWDATAPROVIDER_H 00002 #define MDCRAWDATAPROVIDER_H 00003 00004 #include "GaudiKernel/ISvcLocator.h" 00005 #include "GaudiKernel/IMessageSvc.h" 00006 #include "RawDataProviderSvc/RawDataProviderBase.h" 00007 #include "MdcCalibFunSvc/IMdcCalibFunSvc.h" 00008 #include "MdcRawEvent/MdcDigi.h" 00009 #include <vector> 00010 00011 typedef std::vector<MdcDigi*> MdcDigiVec; 00012 00013 // RawDataProvider for MDC 00014 class MdcRawDataProvider : public RawDataProviderBase{ 00015 public: 00016 MdcRawDataProvider(); 00017 MdcRawDataProvider( const char* name ); 00018 ~MdcRawDataProvider(); 00019 00020 // initialize service point 00021 StatusCode initialize( ISvcLocator* svcLoc=0, IMessageSvc* pMsg=0 ); 00022 00023 // Incident handler 00024 void handle(const Incident&); 00025 00026 void setSkipLayers(const std::vector<int>& skipLayers){m_skipLayers=skipLayers;} 00027 void setEffThreshold(float effThreshold){m_effThreshold=effThreshold;} 00028 00029 MdcDigiVec& getMdcDigiVec(uint32_t control = 0); 00030 00031 // Mdc Provider's control mode 00032 enum MdcControlMode{ 00033 i_maxMdcDigi = 0x1FFF, 00034 b_keepUnmatch = 0x2000, 00035 b_dropHot = 0x4000, 00036 b_keepSkipped = 0x8000, 00037 b_keepBadTdc = 0x10000, 00038 b_unRedo = 0x20000, 00039 b_keepAllChannel = 0x40000 00040 }; 00041 00042 private: 00043 MdcDigiVec digiRef; 00044 std::vector<int> m_skipLayers; 00045 float m_effThreshold; 00046 IMdcCalibFunSvc* m_mdcCalibFunSvc; 00047 00048 }; 00049 #endif