7 import GaudiPython.Bindings
as PyGaudi
15 PyGaudi.iService.__init__( self,
'PyAthenaEventLoopMgr' )
40 self.__dict__[
'_evtSeek' ] = cppyy.bind_object( cppself, cppyy.gbl.IEventSeek )
43 self.__dict__[
'_isvc' ] = PyGaudi.InterfaceCast( cppyy.gbl.IService )( self._evtSeek )
44 self.__dict__[
'_ip' ] = PyGaudi.InterfaceCast( cppyy.gbl.IProperty )( self._evtSeek )
47 self.__dict__[
'_state' ] = PyGaudi.InterfaceCast( cppyy.gbl.IStateful )( self._evtSeek )
48 self.__dict__[
'_evtpro' ] = PyGaudi.InterfaceCast( cppyy.gbl.IEventProcessor )( self._evtSeek )
52 for obj
in [ self._evtSeek, self._state, self._evtpro ]:
54 return getattr( obj, attr )
59 return super( PyAthenaEventLoopMgr, self ).
__getattr__( attr )
63 from AthenaPython.PyAthena
import py_svc
64 from AthenaPython.PyAthenaComps
import StatusCode
65 appmgr =
py_svc(
'ApplicationMgr',iface=
"IProperty")
66 algmgr =
py_svc(
'ApplicationMgr',iface=
'IAlgManager')
69 ctx = cppyy.bind_object(cppcontext,
"EventContext")
72 for name
in appmgr.getProperty(
"TopAlg").
value():
73 ialg=algmgr.algorithm(name).
get()
74 ialg.execState(ctx).
reset()
75 result = ialg.sysExecute(ctx)
76 if result.isFailure():
77 from AthenaCommon.Logging
import log
as msg
78 msg.error(
"Execution of algorithm %s failed", name )
79 return result.getCode()
80 except KeyboardInterrupt:
81 from AthenaCommon.Logging
import log
as msg
82 msg.critical(
"event loop stopped by user interrupt" )
83 return StatusCode.Failure
85 return StatusCode.Success