| # Gaudi Framework, version v20r4
Generated: 8 Jan 2009

# Main.py

Go to the documentation of this file.

    00001 import sys, os
    00002 from Gaudi import Configuration
    00003 from GaudiKernel.ConfigurableDb import cfgDb, loadConfigurableDb, getConfigurable
    00004 import logging
    00005
    00006 log = logging.getLogger(__name__)
    00007
    00008 class gaudimain(object) :
    00009     def __init__(self) :
    00010         from Configurables import ApplicationMgr
    00011         appMgr = ApplicationMgr()
    00012         if "GAUDIAPPNAME" in os.environ:
    00013             appMgr.AppName = str(os.environ["GAUDIAPPNAME"])
    00014         if "GAUDIAPPVERSION" in os.environ:
    00015             appMgr.AppVersion = str(os.environ["GAUDIAPPVERSION"])
    00016
    00017     def generatePyOutput(self, all = False):
    00018         from pprint import pformat
    00019         conf_dict = Configuration.configurationDict(all)
    00020         return pformat(conf_dict)
    00021
    00022     def generateOptsOutput(self, all = False):
    00023         from pprint import pformat
    00024         conf_dict = Configuration.configurationDict(all)
    00025         out = []
    00026         names = conf_dict.keys()
    00027         names.sort()
    00028         for n in names:
    00029             props = conf_dict[n].keys()
    00030             props.sort()
    00031             for p in props:
    00032                 out.append('%s.%s = %s;' % (n,p, repr(conf_dict[n][p])))
    00033         return "\n".join(out)
    00034
    00035     def _writepickle(self, filename) :
    00036         #--- Lets take the first file input file as the name of the pickle file
    00037         import pickle
    00038         output = open(filename, 'wb')
    00039         # Dump only the the configurables that make sense to dump (not User ones)
    00040         from GaudiKernel.Proxy.Configurable import getNeededConfigurables
    00041         to_dump = {}
    00042         for n in getNeededConfigurables():
    00043             to_dump[n] = Configuration.allConfigurables[n]
    00044         pickle.dump(to_dump, output, -1)
    00045         output.close()
    00046
    00047     def printconfig(self, old_format = False, all = False) :
    00048         msg = 'Dumping all configurables and properties'
    00049         if not all:
    00050             msg += ' (different from default)'
    00051         log.info(msg)
    00052         conf_dict = Configuration.configurationDict(all)
    00053         if old_format:
    00054             print self.generateOptsOutput(all)
    00055         else:
    00056             print self.generatePyOutput(all)
    00057
    00058     def writeconfig(self, filename, all = False):
    00059         write = { ".pkl" : lambda filename, all: self._writepickle(filename),
    00060                   ".py"  : lambda filename, all: open(filename,"w").write(self.generatePyOutput(all) + "\n"),
    00061                   ".opts": lambda filename, all: open(filename,"w").write(self.generateOptsOutput(all) + "\n"),
    00062                 }
    00063         from os.path import splitext
    00064         ext = splitext(filename)[1]
    00065         if ext in write:
    00066             write[ext](filename, all)
    00067         else:
    00068             log.error("Unknown file type '%s'. Must be any of %r.", ext, write.keys())
    00069             sys.exit(1)
    00070
    00071     def run(self) :
    00072         #--- Instantiate the ApplicationMgr------------------------------
    00073         import GaudiPython
    00074         self.g = GaudiPython.AppMgr()
    00075         success = self.g.run(self.g.EvtMax).isSuccess()
    00076         success = self.g.exit().isSuccess() and success
    00077         if not success:
    00078             return 1
    00079         return 0