Gaudi Framework, version v21r11

Home   Generated: 30 Sep 2010

GaudiPython::Bindings::AppMgr Class Reference

Inheritance diagram for GaudiPython::Bindings::AppMgr:
[legend]
Collaboration diagram for GaudiPython::Bindings::AppMgr:
[legend]

List of all members.

Public Member Functions

def __new__
def __reset__
def __init__
def state
def FSMState
def targetFSMState
def loaddict
def service
def declSvcType
def createSvc
def services
def algorithm
def algorithms
def tool
def property
def datasvc
def evtsvc
def detsvc
def filerecordsvc
def evtsel
def histsvc
def ntuplesvc
def partsvc
def toolsvc
def optSvc
def readOptions
def addAlgorithm
def setAlgorithms
def removeAlgorithm
def config
def configure
def start
def run
def executeEvent
def execute
def runSelectedEvents
def exit
def __del__
 Custom destructor to ensure that the application is correctly finalized when exiting from python.

Public Attributes

 JobOptionsType
 OutputLevel
 topAlg

Static Public Attributes

 evtSvc = evtsvc
 histSvc = histsvc
 ntupleSvc = ntuplesvc
 evtSel = evtsel
 detSvc = detsvc
 toolSvc = toolsvc
 partSvc = partsvc


Detailed Description

Definition at line 656 of file Bindings.py.


Member Function Documentation

def GaudiPython::Bindings::AppMgr::__new__ (   cls,
  args,
  kwargs 
)

Definition at line 657 of file Bindings.py.

00657                                         :
00658         global _gaudi
00659         if not _gaudi :
00660             newobj = object.__new__( cls )
00661             cls.__init__(newobj, *args, **kwargs)
00662             _gaudi = newobj
00663         return _gaudi
    def __reset__(self):

def GaudiPython::Bindings::AppMgr::__reset__ (   self  ) 

Definition at line 664 of file Bindings.py.

00664                        :
00665         global _gaudi
00666         # Stop, Finalize and Terminate the current AppMgr
00667         self.exit()
00668         # release interfaces
00669         self._evtpro.release()
00670         self._svcloc.release()
00671         self._appmgr.release()
00672         # Reset the C++ globals
00673         gbl.Gaudi.setInstance(makeNullPointer('ISvcLocator'))
00674         gbl.Gaudi.setInstance(makeNullPointer('IAppMgrUI'))
00675         # Reset the Python global
00676         _gaudi = None
    def __init__(self, outputlevel = -1, joboptions = None, selfoptions = {},

def GaudiPython::Bindings::AppMgr::__init__ (   self,
  outputlevel = -1,
  joboptions = None,
  selfoptions = {},
  dllname = None,
  factname = None 
)

Definition at line 677 of file Bindings.py.

00677                                                                           {},
00678                  dllname = None, factname = None) :
00679         global _gaudi
00680         if _gaudi : return
00681         # Protection against multiple calls to exit() if the finalization fails
00682         self.__dict__['_exit_called'] = False
00683         try:
00684             from GaudiKernel.Proxy.Configurable import expandvars
00685         except ImportError:
00686             # pass-through implementation if expandvars is not defined (AthenaCommon)
00687             expandvars = lambda data : data
00688         if dllname and factname:
00689             self.__dict__['_appmgr'] = gbl.Gaudi.createApplicationMgr(dllname,factname)
00690         elif dllname:
00691             self.__dict__['_appmgr'] = gbl.Gaudi.createApplicationMgr(dllname)
00692         else:
00693             self.__dict__['_appmgr'] = gbl.Gaudi.createApplicationMgr()
00694         self.__dict__['_svcloc'] = gbl.Gaudi.svcLocator()
00695         self.__dict__['_algmgr'] = InterfaceCast(gbl.IAlgManager)(self._appmgr)
00696         self.__dict__['_evtpro'] = InterfaceCast(gbl.IEventProcessor)(self._appmgr)
00697         self.__dict__['_svcmgr'] = InterfaceCast(gbl.ISvcManager)(self._appmgr)
00698         self.__dict__['pyalgorithms'] = []
00699         iService.__init__(self, 'ApplicationMgr', self._appmgr )
00700         #------python specific initialization-------------------------------------
00701         if self.FSMState() < Gaudi.StateMachine.CONFIGURED :  # Not yet configured
00702             self.JobOptionsType = 'NONE'
00703             if joboptions :
00704                 from GaudiKernel.ProcessJobOptions import importOptions
00705                 importOptions(joboptions)
00706             # Ensure that the ConfigurableUser instances have been applied
00707             import GaudiKernel.Proxy.Configurable
00708             if hasattr(GaudiKernel.Proxy.Configurable, "applyConfigurableUsers"):
00709                 GaudiKernel.Proxy.Configurable.applyConfigurableUsers()
00710             # This is the default and could be overridden with "selfopts"
00711             self.OutputLevel = 3
00712             selfprops = Configurable.allConfigurables.get('ApplicationMgr',{})
00713             if selfprops : selfprops = expandvars(selfprops.getValuedProperties())
00714             for p,v in selfprops.items()   : setattr(self, p, v)
00715             for p,v in selfoptions.items() : setattr(self, p, v)
00716             # Override job options
00717             if outputlevel != -1 : self.OutputLevel = outputlevel
00718             self.configure()
00719         #---MessageSvc------------------------------------------------------------
00720         ms = self.service('MessageSvc')
00721         if 'MessageSvc' in Configurable.allConfigurables:
00722             msprops = Configurable.allConfigurables['MessageSvc']
00723             ms = self.service('MessageSvc')
00724             if hasattr(msprops,"getValuedProperties"):
00725                 msprops = expandvars(msprops.getValuedProperties())
00726             for p,v in msprops.items():
00727                 setattr(ms, p, v)
00728         if outputlevel != -1 : ms.OutputLevel = outputlevel
00729         #---JobOptions------------------------------------------------------------
00730         self.__dict__['_optsvc'] = InterfaceCast(gbl.IJobOptionsSvc)(Helper.service(self._svcloc,'JobOptionsSvc'))
00731         #------Configurables initialization (part2)-------------------------------
00732         for n in getNeededConfigurables():
00733             c = Configurable.allConfigurables[n]
00734             if n in ['ApplicationMgr','MessageSvc'] : continue # These are already done---
00735             for p, v in  c.getValuedProperties().items() :
00736                 v = expandvars(v)
00737                 # Note: AthenaCommon.Configurable does not have Configurable.PropertyReference
00738                 if hasattr(Configurable,"PropertyReference") and type(v) == Configurable.PropertyReference:
00739                 # this is done in "getFullName", but the exception is ignored,
00740                 # so we do it again to get it
00741                     v = v.__resolve__()
00742                 if   type(v) == str : v = '"%s"' % v # need double quotes
00743                 elif type(v) == long: v = '%d'   % v # prevent pending 'L'
00744                 self._optsvc.addPropertyToCatalogue(n, StringProperty(p,str(v)))
00745         if hasattr(Configurable,"_configurationLocked"):
00746             Configurable._configurationLocked = True
00747         
00748         # Ensure that the exit method is called when exiting from Python 
00749         import atexit
00750         atexit.register(self.exit)
00751 
00752         #---Hack to avoid bad interactions with the ROOT exit handler
00753         # Look for an exit handler installed by ROOT
00754         root_handler_installed = False
00755         for h in atexit._exithandlers:
00756             func = h[0]
00757             if hasattr(func, "__module__") and func.__module__ == "ROOT":
00758                 root_handler_installed = True
00759                 break
00760         
00761         # If the handler is not yet installed, let's install our private version
00762         # that detects that the ROOT exit handler is installed and add our own
00763         # after it to ensure it is called before. 
00764         if not root_handler_installed:
00765             orig_register = atexit.register
00766             def register(func, *targs, **kargs):
00767                 orig_register(func, *targs, **kargs)
00768                 if hasattr(func, "__module__") and func.__module__ == "ROOT":
00769                     orig_register(self.exit)
00770                     # we do not need to remove out handler from the list because
00771                     # it can be safely called more than once
00772             register.__doc__ = (orig_register.__doc__ +
00773                                 "\nNote: version hacked by GaudiPython to work " +
00774                                 "around a problem with the ROOT exit handler")
00775             atexit.register = register
00776 

def GaudiPython::Bindings::AppMgr::state (   self  ) 

Definition at line 777 of file Bindings.py.

00777 : return self._isvc.FSMState()

def GaudiPython::Bindings::AppMgr::FSMState (   self  ) 

Definition at line 778 of file Bindings.py.

00778 : return self._isvc.FSMState()

def GaudiPython::Bindings::AppMgr::targetFSMState (   self  ) 

Definition at line 779 of file Bindings.py.

00779 : return self._isvc.targetFSMState()

def GaudiPython::Bindings::AppMgr::loaddict (   self,
  dict 
)

Definition at line 780 of file Bindings.py.

00780                              :
00781         loaddict(dict)
    def service(self, name, interface = None) :

def GaudiPython::Bindings::AppMgr::service (   self,
  name,
  interface = None 
)

Definition at line 782 of file Bindings.py.

00782                                               :
00783         svc = Helper.service( self._svcloc, name )
00784         if interface :
00785             return InterfaceCast(interface)(svc)
00786         else :
00787             return iService(name, svc )
    def declSvcType(self, svcname, svctype ) :

def GaudiPython::Bindings::AppMgr::declSvcType (   self,
  svcname,
  svctype 
)

Definition at line 788 of file Bindings.py.

00788                                              :
00789         self._svcmgr.declareSvcType(svcname, svctype)
    def createSvc(self, name ) :

def GaudiPython::Bindings::AppMgr::createSvc (   self,
  name 
)

Definition at line 790 of file Bindings.py.

00790                                :
00791         return Helper.service( self._svcloc, name, True )
    def services(self) :

def GaudiPython::Bindings::AppMgr::services (   self  ) 

Definition at line 792 of file Bindings.py.

00792                        :
00793         l = self._svcloc.getServices()
00794         nl = l.__class__(l)  # get a copy
00795         s = []
00796         for i in range(l.size()) :
00797             s.append(nl.front().name())
00798             nl.pop_front()
00799         return s
    def algorithm(self, name , createIf = False ) :

def GaudiPython::Bindings::AppMgr::algorithm (   self,
  name,
  createIf = False 
)

Definition at line 800 of file Bindings.py.

00800                                                   :
00801         alg = Helper.algorithm( self._algmgr, name , createIf )
00802         if not alg : return iAlgorithm ( name       , alg )
00803         else       : return iAlgorithm ( alg.name() , alg )
    def algorithms(self) :

def GaudiPython::Bindings::AppMgr::algorithms (   self  ) 

Definition at line 804 of file Bindings.py.

00804                          :
00805         l = self._algmgr.getAlgorithms()
00806         nl = l.__class__(l)  # get a copy
00807         s = []
00808         for i in range(l.size()) :
00809             s.append(nl.front().name())
00810             nl.pop_front()
00811         return s
    def tool(self, name ) :

def GaudiPython::Bindings::AppMgr::tool (   self,
  name 
)

Definition at line 812 of file Bindings.py.

00812                           :
00813         return iAlgTool(name)
    def property( self , name ) :

def GaudiPython::Bindings::AppMgr::property (   self,
  name 
)

Definition at line 814 of file Bindings.py.

00814                                 :
00815         if name in self.algorithms() : return self.algorithm( name )
00816         elif name in self.services() : return self.service(name )
00817         else :                         return iProperty( name )
    def datasvc(self, name) :

def GaudiPython::Bindings::AppMgr::datasvc (   self,
  name 
)

Definition at line 818 of file Bindings.py.

00818                             :
00819         if self.state() == Gaudi.StateMachine.CONFIGURED :  self.initialize()
00820         svc = Helper.service( self._svcloc, name )
00821         return iDataSvc(name, svc)
    def evtsvc(self) :

def GaudiPython::Bindings::AppMgr::evtsvc (   self  ) 

Definition at line 822 of file Bindings.py.

00822                      :
00823         return self.datasvc('EventDataSvc')
    def detsvc(self) :

def GaudiPython::Bindings::AppMgr::detsvc (   self  ) 

Definition at line 824 of file Bindings.py.

00824                      :
00825         return self.datasvc('DetectorDataSvc')
    def filerecordsvc(self) :

def GaudiPython::Bindings::AppMgr::filerecordsvc (   self  ) 

Definition at line 826 of file Bindings.py.

00826                             :
00827         return self.datasvc('FileRecordDataSvc')
    def evtsel(self):

def GaudiPython::Bindings::AppMgr::evtsel (   self  ) 

Definition at line 828 of file Bindings.py.

00828                     :
00829         if self.state() == Gaudi.StateMachine.CONFIGURED :  self.initialize()
00830         if not hasattr(self,'_evtsel') : self.__dict__['_evtsel'] = iEventSelector()
00831         return self._evtsel
    def histsvc(self, name='HistogramDataSvc') :

def GaudiPython::Bindings::AppMgr::histsvc (   self,
  name = 'HistogramDataSvc' 
)

Definition at line 832 of file Bindings.py.

00832                                                :
00833         svc = Helper.service( self._svcloc, name )
00834         return iHistogramSvc(name, svc)
    def ntuplesvc(self, name='NTupleSvc') :

def GaudiPython::Bindings::AppMgr::ntuplesvc (   self,
  name = 'NTupleSvc' 
)

Definition at line 835 of file Bindings.py.

00835                                           :
00836         if name not in self.ExtSvc : self.ExtSvc += [name]
00837 #    if self.HistogramPersistency == 'NONE' : self.HistogramPersistency = 'ROOT'
00838         svc = Helper.service( self._svcloc, name, True )
00839         return iNTupleSvc(name, svc)
    def partsvc(self ) :

def GaudiPython::Bindings::AppMgr::partsvc (   self  ) 

Definition at line 840 of file Bindings.py.

00840                        :
00841         if self.FSMState() == Gaudi.StateMachine.CONFIGURED :  self.initialize()
00842         svc = Helper.service( self._svcloc, 'ParticlePropertySvc' )
00843         return InterfaceCast(gbl.IParticlePropertySvc)(svc)
    def toolsvc(self, name='ToolSvc') :

def GaudiPython::Bindings::AppMgr::toolsvc (   self,
  name = 'ToolSvc' 
)

Definition at line 844 of file Bindings.py.

00844                                       :
00845         svc = Helper.service( self._svcloc, name, True )
00846         return iToolSvc(name, svc)
    def optSvc (self, name='JobOptionsSvc') :

def GaudiPython::Bindings::AppMgr::optSvc (   self,
  name = 'JobOptionsSvc' 
)

Definition at line 847 of file Bindings.py.

00847                                             :
00848         svc = Helper.service( self._svcloc, name, True )
00849         return iJobOptSvc(name, svc)
    def readOptions(self, file) :

def GaudiPython::Bindings::AppMgr::readOptions (   self,
  file 
)

Definition at line 850 of file Bindings.py.

00850                                 :
00851         return self._optsvc.readOptions(file)
    def addAlgorithm(self, alg) :

def GaudiPython::Bindings::AppMgr::addAlgorithm (   self,
  alg 
)

Add an Algorithm to the list of Top algorithms. It can be either a instance of
    an Algorithm class or it name 

Definition at line 852 of file Bindings.py.

00852                                 :
00853         """ Add an Algorithm to the list of Top algorithms. It can be either a instance of
00854             an Algorithm class or it name """
00855         if type(alg) is  str :
00856             self.topAlg += [alg]
00857         else :
00858             self.pyalgorithms.append(alg)
00859             setOwnership(alg,0)
00860             if self.targetFSMState() >= Gaudi.StateMachine.INITIALIZED :
00861                 alg.sysInitialize()
00862                 if self.targetFSMState() == Gaudi.StateMachine.RUNNING :
00863                     alg.sysStart()
00864             self.topAlg += [alg.name()]
    def setAlgorithms(self, algs) :

def GaudiPython::Bindings::AppMgr::setAlgorithms (   self,
  algs 
)

Set the list of Top Algorithms.
    It can be an individual of a list of algorithms names or instances 

Definition at line 865 of file Bindings.py.

00865                                   :
00866         """ Set the list of Top Algorithms.
00867             It can be an individual of a list of algorithms names or instances """
00868         if type(algs) is not list : algs = [algs]
00869         names = []
00870         for alg in algs :
00871             if type(alg) is str : names.append(alg)
00872             else :
00873                 self.pyalgorithms.append(alg)
00874                 if self.targetFSMState() >= Gaudi.StateMachine.INITIALIZED :
00875                     alg.sysInitialize()
00876                     if self.targetFSMState() == Gaudi.StateMachine.RUNNING :
00877                         alg.sysStart()
00878                 names.append(alg.name())
00879         self.topAlg = names
    def removeAlgorithm(self, alg) :

def GaudiPython::Bindings::AppMgr::removeAlgorithm (   self,
  alg 
)

Remove an Algorithm to the list of Top algorithms. It can be either a instance of
    an Algorithm class or it name 

Definition at line 880 of file Bindings.py.

00880                                    :
00881         """ Remove an Algorithm to the list of Top algorithms. It can be either a instance of
00882             an Algorithm class or it name """
00883         tmp = self.topAlg
00884         if type(alg) is  str :
00885             tmp.remove(alg)
00886         else :
00887             tmp.remove(alg.name())
00888             self.pyalgorithms.remove(alg)
00889             setOwnership(alg,1)
00890         self.topAlg = tmp
    def config ( self, **args ):

def GaudiPython::Bindings::AppMgr::config (   self,
  args 
)

Simple utility to perform the configuration of Gaudi application.
It reads the set of input job-options files, and set few
additional parameters 'options' through the usage of temporary *.opts file
Usage:
gaudi.config( files   = [ '$GAUSSOPTS/Gauss.opts'                     ,
                  '$DECFILESROOT/options/10022_010.0GeV.opts' ] ,
      options = [ 'EventSelector.PrintFreq   =   5  '         ] )

Definition at line 891 of file Bindings.py.

00891                                :
00892         """
00893         Simple utility to perform the configuration of Gaudi application.
00894         It reads the set of input job-options files, and set few
00895         additional parameters 'options' through the usage of temporary *.opts file
00896         Usage:
00897         gaudi.config( files   = [ '$GAUSSOPTS/Gauss.opts'                     ,
00898                                   '$DECFILESROOT/options/10022_010.0GeV.opts' ] ,
00899                       options = [ 'EventSelector.PrintFreq   =   5  '         ] )
00900         """
00901         files  = args.get('files',[])
00902         for file in files :
00903             sc = self.readOptions(file)
00904             if sc.isFailure() :
00905                 raise RuntimeError , ' Unable to read file "' + file +'" '
00906         options  = args.get('options',None)
00907         if options :
00908             import tempfile
00909             tmpfilename = tempfile.mktemp()
00910             tmpfile     = open( tmpfilename, 'w' )
00911             tmpfile.write ( '#pragma print on  \n' )
00912             tmpfile.write ( '/// File         "' + tmpfilename+'" generated by GaudiPython \n\n' )
00913             for opt in options :
00914                 if type(options) is dict :
00915                     tmpfile.write( ' \t ' + opt + ' = '+ options[opt]+ ' ;  // added by GaudiPython \n' )
00916                 else :
00917                     tmpfile.write( ' \t ' + opt + ' ;  // added by GaudiPython \n' )
00918             tmpfile.write ( '/// End of  file "' + tmpfilename+'" generated by GaudiPython \n\n' )
00919             tmpfile.close()
00920             sc = self.readOptions( tmpfilename )
00921             if sc.isFailure() :
00922                 raise RuntimeError , ' Unable to read file "' + tmpfilename +'" '
00923             os.remove( tmpfilename )
00924         # We need to make sure that the options are taken by the ApplicationMgr
00925         if self.FSMState() != Gaudi.StateMachine.OFFLINE : # The state is already configured, so we need to do something....
00926 
00927             ## get job-options-service, @see class iJobOptSvc
00928             jos   = self.optSvc()
00929 
00930             ## list of all libraries
00931             _dlls = jos.getProperty   ( self.name() , 'DLLs'   )
00932             ## take care about libraries : APPEND if not done yet
00933             if _dlls :
00934                 libs = [ l for l in _dlls if not l in self.DLLs ]
00935                 if libs : self.DLLs  += libs
00936 
00937             ## all external services
00938             _svcs = jos.getProperty   ( self.name() , 'ExtSvc' )
00939             ## take care about services : APPEND  if not done yet
00940             if _svcs :
00941                 svcs = [ s for s in _svcs if not s in self.ExtSvc ]
00942                 if svcs : self.ExtSvc += svcs
00943 
00944             ## get all properties
00945             props = jos.getProperties ( self.name() )
00946             ## finally treat all other properties (presumably scalar properties)
00947             for key in props :
00948                 if 'DLLS' == key or 'EXTSVC' == key : continue
00949                 self.__setattr__( key , props[key] )
00950         return SUCCESS                                           # RETURN
    def configure(self) :

def GaudiPython::Bindings::AppMgr::configure (   self  ) 

Definition at line 951 of file Bindings.py.

00951                         :
00952         return self._appmgr.configure()
    def start(self) :

def GaudiPython::Bindings::AppMgr::start (   self  ) 

Definition at line 953 of file Bindings.py.

00953                     :
00954         return self._appmgr.start()
    def run(self, n) :

def GaudiPython::Bindings::AppMgr::run (   self,
  n 
)

Definition at line 955 of file Bindings.py.

00955                      :
00956         if self.FSMState() == Gaudi.StateMachine.CONFIGURED :
00957             sc = self.initialize()
00958             if sc.isFailure(): return sc
00959         if self.FSMState() == Gaudi.StateMachine.INITIALIZED :
00960             sc = self.start()
00961             if sc.isFailure(): return sc
00962         return self._evtpro.executeRun(n)
    def executeEvent(self) :

def GaudiPython::Bindings::AppMgr::executeEvent (   self  ) 

Definition at line 963 of file Bindings.py.

00963                            :
00964         return self._evtpro.executeEvent()
    def execute(self) :

def GaudiPython::Bindings::AppMgr::execute (   self  ) 

Definition at line 965 of file Bindings.py.

00965                       :
00966         return self._evtpro.executeEvent()
    def runSelectedEvents(self, pfn, events):

def GaudiPython::Bindings::AppMgr::runSelectedEvents (   self,
  pfn,
  events 
)

Definition at line 967 of file Bindings.py.

00967                                             :
00968         if self.FSMState() == Gaudi.StateMachine.CONFIGURED :
00969             sc = self.initialize()
00970             if sc.isFailure(): return sc
00971         if self.FSMState() == Gaudi.StateMachine.INITIALIZED :
00972             sc = self.start()
00973             if sc.isFailure(): return sc
00974         #--- Access a number of services ----
00975         if not hasattr(self,'_perssvc'): self.__dict__['_perssvc'] = self.service('EventPersistencySvc','IAddressCreator')
00976         if not hasattr(self,'_filecat'): self.__dict__['_filecat'] = self.service('FileCatalog','Gaudi::IFileCatalog')
00977         if not hasattr(self,'_evtmgr'):  self.__dict__['_evtmgr']  = self.service('EventDataSvc','IDataManagerSvc')
00978         #--- Get FID from PFN and number of events in file
00979         if pfn.find('PFN:') == 0: pfn = pfn[4:]
00980         fid, maxevt = _getFIDandEvents(pfn)
00981         #--- Add FID into catalog if needed ---
00982         if not self._filecat.existsFID(fid) : self._filecat.registerPFN(fid, pfn, '')
00983         #--- Loop over events
00984         if type(events) is not list : events = (events,)
00985         for evt in events :
00986             #--- Create POOL Address from Generic Address
00987             gadd = gbl.GenericAddress(0x202, 1, fid, '/Event', 0, evt)
00988             oadd = makeNullPointer('IOpaqueAddress')
00989             self._perssvc.createAddress(gadd.svcType(),gadd.clID(),gadd.par(),gadd.ipar(),oadd)
00990             #--- Clear TES, set root and run all algorithms
00991             self._evtmgr.clearStore()
00992             self._evtmgr.setRoot('/Event',oadd)
00993             self._evtpro.executeEvent()
    def exit(self):

def GaudiPython::Bindings::AppMgr::exit (   self  ) 

Definition at line 994 of file Bindings.py.

00994                   :
00995         # Protection against multiple calls to exit() if the finalization fails
00996         if not self._exit_called:
00997             self.__dict__['_exit_called'] = True
00998             if self.FSMState() == Gaudi.StateMachine.RUNNING:
00999                 self._appmgr.stop().ignore()
01000             if self.FSMState() == Gaudi.StateMachine.INITIALIZED:
01001                 self._appmgr.finalize().ignore()
01002             if self.FSMState() == Gaudi.StateMachine.CONFIGURED:
01003                 self._appmgr.terminate()
01004         return SUCCESS
    ## Custom destructor to ensure that the application is correctly finalized when exiting from python.

def GaudiPython::Bindings::AppMgr::__del__ (   self  ) 

Custom destructor to ensure that the application is correctly finalized when exiting from python.

Definition at line 1006 of file Bindings.py.

01006                      :
01007         self.exit()
    evtSvc  = evtsvc


Member Data Documentation

Definition at line 1008 of file Bindings.py.

Definition at line 1009 of file Bindings.py.

Definition at line 1010 of file Bindings.py.

Definition at line 1011 of file Bindings.py.

Definition at line 1012 of file Bindings.py.

Definition at line 1013 of file Bindings.py.

Definition at line 1014 of file Bindings.py.

Definition at line 701 of file Bindings.py.

Definition at line 710 of file Bindings.py.

Definition at line 879 of file Bindings.py.


The documentation for this class was generated from the following file:

Generated at Thu Sep 30 09:59:01 2010 for Gaudi Framework, version v21r11 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004