Namespaces | |
namespace | __init__ |
Functions | |
MainAlgorithm (const string &name, ISvcLocator *pSvcLocator) | |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
~MainAlgorithm () |
MainAlgorithm::MainAlgorithm | ( | const string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 10 of file MainAlgorithm.cc.
00011 :GaudiAlgorithm(name, pSvcLocator) 00012 { 00013 info()<< "Construct:MainAlgorithm()!"<< endreq; 00014 00015 m_roBSvc = 0; 00016 m_execNum = 0; 00017 }
StatusCode MainAlgorithm::initialize | ( | ) |
Definition at line 19 of file MainAlgorithm.cc.
00020 { 00021 StatusCode sc = this->GaudiAlgorithm::initialize(); 00022 if(sc.isFailure()) 00023 { 00024 error()<< "Error when initializing GaudiAlgorithm"<< endreq; 00025 return sc; 00026 } 00027 00028 //Prepare the sub algorithm--DigitalizeAlg 00029 Algorithm* subAlg = 0; 00030 sc = createSubAlgorithm("DigitalizeAlg", "DigitalizeAlg", subAlg); 00031 if(sc.isFailure()) 00032 { 00033 error()<< "Error creating Sub-Algorithm: DigitalizeAlg!" << endreq; 00034 return sc; 00035 } 00036 //m_digitAlg = dynamic_cast< DigitalizeAlg* >(subAlg); 00037 m_digitAlg = (DigitalizeAlg*)subAlg; 00038 if(!m_digitAlg) 00039 { 00040 error()<< "Can not converte Algorithm* to DigitalizeAlg* !"<< endreq; 00041 return StatusCode::SUCCESS; 00042 } 00043 00044 //Initialize the ROBufferSvc 00045 IService* isvc = 0; 00046 sc = serviceLocator()->service("ROBufferSvc", isvc, true); 00047 if(sc.isFailure()) 00048 { 00049 error()<< "Service:ROBufferSvc could not be retrieved"<< endreq; 00050 return sc; 00051 } 00052 isvc->addRef(); 00053 sc = isvc->queryInterface(IROBufferSvc::interfaceID(), (void**)&m_roBSvc); 00054 if(sc.isFailure()) 00055 { 00056 error()<< "ROBufferSvc does not implement IROBufferSvc."<< endreq; 00057 return sc; 00058 } 00059 00060 info()<< "MainAlgorithm initialize()!"<< endreq; 00061 00062 return StatusCode::SUCCESS; 00063 }
StatusCode MainAlgorithm::execute | ( | ) |
Definition at line 65 of file MainAlgorithm.cc.
00066 { 00067 //In one execute(), output one ReadoutHeader! 00068 info()<< "Now into MainAlgorithm "<< m_execNum<< " executation!"<< endreq; 00069 00070 for( ; ; ) 00071 { 00072 //If the MixHeader buffer is empty, notice the DigitalizeAlg 00073 if(0 == m_roBSvc->getMBufferSize()) 00074 { 00075 info()<< "The MixHeader buffer is empty!"<< endreq; 00076 //Fill the MixHeader buffer 00077 StatusCode sc = m_digitAlg->execute(); 00078 if(sc.isFailure()) 00079 { 00080 error()<< "Error in DigitalizeAlg::execute()!"<< endreq; 00081 return StatusCode::FAILURE; 00082 } 00083 continue; 00084 } 00085 //If the MixHeader buffer is not empty, get one ReadoutHeader directly 00086 else 00087 { 00088 ReadoutHeader* roh = 0; 00089 roh = m_roBSvc->getROHeader(); 00090 if(!roh) 00091 { 00092 error()<< "Failed to get one ReadoutHeader!"<< endreq; 00093 return StatusCode::FAILURE; 00094 } 00095 00096 info()<< "Put the ReadoutHeader: "<< roh<< " into TES!"<< endreq; 00097 this->put(evtSvc(), roh, ReadoutHeaderLocation::Default); 00098 break; 00099 } 00100 } 00101 00102 m_execNum++; 00103 info()<< "MainAlgorithm execute() finalized!" << endreq; 00104 00105 return StatusCode::SUCCESS; 00106 }
StatusCode MainAlgorithm::finalize | ( | ) |
Definition at line 108 of file MainAlgorithm.cc.
00109 { 00110 info()<< "MainAlgorithm finalize()!"<< endreq; 00111 return StatusCode::SUCCESS; 00112 }
MainAlgorithm::~MainAlgorithm | ( | ) |
Definition at line 114 of file MainAlgorithm.cc.
00115 { 00116 info()<< "Destructor:~MainAlgorithm()!"<< endreq; 00117 }