/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RawDataProviderSvc/RawDataProviderSvc-00-03-46/src/RawDataProviderSvc.cxx

Go to the documentation of this file.
00001 #include "RawDataProviderSvc/RawDataProviderSvc.h"
00002 #include "GaudiKernel/Kernel.h"
00003 #include "GaudiKernel/IInterface.h"
00004 #include "GaudiKernel/IIncidentSvc.h"
00005 #include "GaudiKernel/Incident.h"
00006 #include "GaudiKernel/IIncidentListener.h"
00007 #include "GaudiKernel/StatusCode.h"
00008 #include "GaudiKernel/SvcFactory.h"
00009 #include "GaudiKernel/MsgStream.h"
00010 #include "GaudiKernel/IDataProviderSvc.h"
00011 #include "GaudiKernel/SmartDataPtr.h"
00012 #include "GaudiKernel/DataSvc.h"
00013 #include "RawEvent/RawDataUtil.h"
00014 
00015 // tianhl for mt
00016 #include "GaudiKernel/ThreadGaudi.h"
00017 // tianhl for mt
00018 #include <stdint.h>
00019 #include <vector>
00020 
00021 using namespace std;
00022 
00023 RawDataProviderSvc::RawDataProviderSvc( const string& name, ISvcLocator* svcloc) :
00024     Service (name, svcloc) {
00025   declareProperty("OutputLevel", m_outputLevel=MSG::WARNING);
00026   declareProperty("skipLayers",  m_skipLayers);
00027   declareProperty("MdcWireEffThreshold", m_effThreshold=0.9);
00028   declareProperty("EmcELow", m_elow=0);  
00029   declareProperty("EmcTLow", m_tlow=0);
00030   declareProperty("EmcTHigh", m_thigh=60);
00031   declareProperty("EmcHotCrystals", m_hotVec);
00032   declareProperty("EmcDeadCrystals", m_deadVec);
00033   declareProperty("EmcDeadCrystals", m_deadVec);
00034   declareProperty("OnlineMode",  m_onlineMode=0);
00035   // tianhl for mt
00036   m_mdcProvider = new MdcRawDataProvider(name.c_str()); 
00037   m_tofProvider = new TofRawDataProvider(name.c_str()); 
00038   m_emcProvider = new EmcRawDataProvider(name.c_str()); 
00039   // tianhl for mt
00040 }
00041 
00042 
00043 RawDataProviderSvc::~RawDataProviderSvc() {
00044   if(m_mdcProvider) delete m_mdcProvider;
00045   if(m_tofProvider) delete m_tofProvider;
00046   if(m_emcProvider) delete m_emcProvider;
00047 }
00048 
00049 
00050 StatusCode RawDataProviderSvc::initialize(){
00051      MsgStream log(messageService(), name());
00052      log << MSG::INFO << "RawDataProviderSvc::initialize()" << endreq;
00053 
00054      StatusCode sc = Service::initialize();
00055      if( sc.isFailure() ) return sc;
00056 
00057   // tianhl for mt
00058   std::string incidentSvc_name("IncidentSvc");
00059   //if(isGaudiThreaded(name())){
00060   //   incidentSvc_name += getGaudiThreadIDfromName(name());
00061   //}
00062   // tianhl for mt
00063      IIncidentSvc* incsvc;
00064      sc = service(incidentSvc_name.c_str(), incsvc);
00065      int priority = 100;
00066      if( sc.isSuccess() ){
00067        incsvc -> addListener(this, "BeginEvent", priority);
00068      }
00069 
00070      sc = m_mdcProvider->initialize();
00071      if( sc.isFailure() ) return sc;
00072      
00073      
00074      sc = m_tofProvider->initialize(m_onlineMode);
00075      if( sc.isFailure() ) return sc;
00076 
00077      if( m_skipLayers.size()>0 ) m_mdcProvider->setSkipLayers( m_skipLayers ); 
00078      m_mdcProvider->setEffThreshold( m_effThreshold ); 
00079 
00080      if(m_elow>0) m_emcProvider->setELowThreshold(RawDataUtil::EmcChargeChannel(m_elow));
00081      if(m_tlow>0) m_emcProvider->setTLowThreshold(m_tlow);
00082      if(m_thigh>0&&m_thigh<60) m_emcProvider->setTHighThreshold(m_thigh);
00083      if(m_hotVec.size()>0)     m_emcProvider->setHotCrystals(m_hotVec);
00084      if(m_deadVec.size()>0)     m_emcProvider->setHotCrystals(m_deadVec);
00085      sc = m_emcProvider->initialize(m_onlineMode,serviceLocator());
00086      if( sc.isFailure() ) return sc;
00087 
00088      //log << MSG::INFO << "finish initializing..." << endreq;
00089      return StatusCode::SUCCESS;
00090 }
00091 
00092 StatusCode RawDataProviderSvc::finalize(){
00093      MsgStream log(messageService(), name());
00094      log << MSG::INFO << "RawDataProviderSvc::finalize()" << endreq;
00095 
00096      return StatusCode::SUCCESS;
00097 }
00098 
00099 StatusCode RawDataProviderSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) 
00100 {
00101   if ( IRawDataProviderSvc::interfaceID().versionMatch(riid) )    {
00102     *ppvInterface = (IRawDataProviderSvc*)this;
00103   }else{
00104     return Service::queryInterface(riid, ppvInterface);
00105   }
00106   addRef();
00107   return StatusCode::SUCCESS;
00108 }
00109 
00110 void RawDataProviderSvc::handle(const Incident& inc){
00111   MsgStream log( messageService(), name() );
00112   log << MSG::DEBUG << "handle: " << inc.type() << endreq;
00113   if ( inc.type() == "BeginEvent" ){
00114     log << MSG::DEBUG << "Begin Event" << endreq;
00115     m_tofProvider->handle( inc );
00116     m_emcProvider->handle( inc );
00117     m_mdcProvider->handle( inc );
00118   } 
00119 }

Generated on Tue Nov 29 22:58:35 2016 for BOSS_7.0.2 by  doxygen 1.4.7