/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RawDataCnv/RawDataCnv-00-04-35/src/RawDataEvtHeaderCnv.cxx

Go to the documentation of this file.
00001 #include "GaudiKernel/MsgStream.h"
00002 // for Mutil-thread by tianhl
00003 #include "GaudiKernel/ThreadGaudi.h"
00004 // for Mutil-thread by tianhl
00005 
00006 #include "RawDataCnv/RawDataAddress.h"
00007 #include "RawDataCnv/RawDataInputSvc.h"
00008 #include "RawDataCnv/PackedRawDataCnvSvc.h"
00009 #include "RawDataCnv/EventManagement/RAWEVENT.h" 
00010 #include "EventModel/EventHeader.h"
00011 #include "RawDataCnv/RawDataEvtHeaderCnv.h"
00012 
00013 extern const CLID& CLID_EventHeader;
00014 
00015 RawDataEvtHeaderCnv::RawDataEvtHeaderCnv(ISvcLocator* svc) :
00016   RawDataBaseCnv(PACKEDRAWEVENT_StorageType, classID(), svc)
00017 {
00018   // for Mutil-thread by tianhl
00019   //init();
00020   // for Mutil-thread by tianhl
00021 }
00022 
00023 StatusCode RawDataEvtHeaderCnv::initialize()
00024 {
00025   StatusCode sc = RawDataBaseCnv::initialize();
00026   if ( sc.isFailure() ) return sc;
00027 
00028   std::string PackedRawDataCnvSvc_Name("PackedRawDataCnvSvc");
00029   std::string RawDataInputSvc_Name("RawDataInputSvc");
00030   std::string RawDataEvtHeaderCnv_Name("RawDataEvtHeaderCnv");
00031   
00032   // for Mutil-thread by tianhl
00033   //ConversionSvc*  pCnvSvc = 0;
00034   //if (pCnvSvc = dynamic_cast<ConversionSvc*>(conversionSvc())){
00035   SmartIF<IService> pCnvSvc(conversionSvc());  
00036   if  (isGaudiThreaded(pCnvSvc->name())){
00037       PackedRawDataCnvSvc_Name += getGaudiThreadIDfromName(pCnvSvc->name());
00038       RawDataInputSvc_Name += getGaudiThreadIDfromName(pCnvSvc->name());
00039       RawDataEvtHeaderCnv_Name += getGaudiThreadIDfromName(pCnvSvc->name());
00040     }
00041   //}
00042   // for Mutil-thread by tianhl
00043   MsgStream log(messageService(), RawDataEvtHeaderCnv_Name.c_str());
00044 
00045   IService* svc = 0;
00046   sc = serviceLocator()->service(PackedRawDataCnvSvc_Name.c_str(), svc);
00047   if ( sc.isFailure() ) {
00048     log << MSG::ERROR << "Can't get RawDataAccess interface" << endreq;
00049     return StatusCode::FAILURE;
00050   }
00051 
00052   m_RawDataAccess = dynamic_cast<PackedRawDataCnvSvc*> (svc);
00053   if (m_RawDataAccess  == 0 ) {
00054     log << MSG::ERROR << "RawDataEvtHeaderCnv: Cant cast to RawDataCnvSvc" << endreq;
00055     return StatusCode::FAILURE;
00056   }
00057 
00058   sc = serviceLocator()->getService(RawDataInputSvc_Name.c_str(), svc);
00059   if ( sc.isFailure() ) {
00060     log << MSG::WARNING << "Cant get RawDataInputSvc " << endreq;
00061     return sc ;
00062   }
00063 
00064   m_inputSvc = dynamic_cast<RawDataInputSvc*> (svc);
00065   if ( m_inputSvc == 0 ) {
00066     log << MSG::ERROR << "Cant cast to RawDataInputSvc" << endreq;
00067     return StatusCode::FAILURE ;
00068   }
00069 
00070   return StatusCode::SUCCESS;
00071 }
00072 
00073 const CLID& RawDataEvtHeaderCnv::classID()
00074 {
00075   return CLID_EventHeader;
00076 }
00077 
00078 StatusCode RawDataEvtHeaderCnv::updateObj(IOpaqueAddress* pAddr, DataObject* pObj) {
00079   //MsgStream log(msgSvc(), "RawDataEvtHeaderCnv");
00080   //log << MSG::DEBUG << "RawDataEvtHeaderCnv::updateObj" << endreq;
00081   return Converter::updateObj(pAddr, pObj);
00082 }
00083 
00084 // Create a converted object in the Transient Data Store.
00085 StatusCode RawDataEvtHeaderCnv::createObj(IOpaqueAddress* pAddr, DataObject*& pObj)
00086 {
00087    StatusCode sc;
00088    RawDataAddress *pEFAddr;
00089    const RAWEVENT *evt;
00090 
00091    Event::EventHeader *header = new Event::EventHeader();
00092    pObj = header;
00093 
00094    //if ( (pEFAddr = dynamic_cast<RawDataAddress*>(pAddr)) ) {
00095      evt = m_inputSvc->currentEvent();
00096      
00097      if (evt == NULL) return StatusCode::FAILURE;
00098 
00099      header->setEventNumber(evt->eventHeader().event_number());
00100      header->setRunNumber(evt->eventHeader().run_number());
00101      header->setTime(evt->eventHeader().time());
00102      header->setFlag1( evt->eventHeader().flag1() );
00103      //header->setFlag2( evt->eventHeader().flag2() );
00104 
00105      
00106    return StatusCode::SUCCESS;
00107    //}
00108    //else {
00109    //  return StatusCode::FAILURE;
00110    //}
00111 
00112 }

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