Job Option Module
|Offline Documentation: [Offline Category] [FAQ] [Howto] [Reference] [Manual]|
|This article is part |
of the Offline Documentation
Job Option Modules (JOMs) are used to customize the standard nuwa.py job. They are Python modules that follow several conventions.
Basics of JOMs
At the most basic level a JOM is just a listing of configuration code with no other structure. This code is executed when the module is
imported by nuwa.py. Modules are loaded in the order in which they are listed on the command line. For simple configurations this may be enough.
Special methods of JOMs
To provide for more structure a JOM can have two special methods that will be called by nuwa.py.
The configure() method
After all modules have been loaded each is checked for the existence of a
configure() method. If one exists it is called, again in the order that the modules are listed on the command line.
The configure() method's signature should be:
def configure(argv = None):
You module may then use
argv to receive any command line arguments.
def configure(argv = None): if argv: parse_args(argv)
You may call any kind of configuration code from configure() that you might call at top level. In particular, you can register any (C++) algorithms that the job should run. This is done like:
def configure(argv = None): from Gaudi.Configuration import ApplicationMgr from MyPackage.MyPackageConf import MyAlgorithm theApp = ApplicationMgr() myalg = MyAlgorithm() myalg.Property = .... theApp.TopAlg.append(myalg)
The run() method
After all modules have been loaded and any configure() methods have been called the modules are checked for the existence of a
run() method. This method is called after all configuration has been done but just before any algorithms are called. The main reason a JOM may want to implement this method is to create an instance of a Python algorithm and add it to the list to run in the job. Note as the ordering so far should indicate, all Python algorithms will follow any C++ ones.
The run() method follows this signature:
An example of adding a Python algorithm is given:
def run(app): myalg = MyPythonAlg() app.addAlgorithm(myalg) return
|Offline Software Documentation: [Offline Categories] [FAQ] [Offline Manual Category]|