mc_runjob
Introduction:
mc_runjob is a package containing Python scripts design to run Monta
Carlo Production chain. Figure below shows the basic design ideas
behind mc_runjob. There are two basic entities. The Configurator encapsulates
all of the knowledge needed to run an executable or perform some simple
task. The Linker is responsible for instantiating Configurators, maintaining
a list of Configurators, and handling communication among Configurators
and the user.

Figure above shows the Conceptual design of mc_runjob. The user interacts
with the Linker, sending commands to attach and configure various Configurators.
Each configurator knows how to run oneproduction executable or how
to perform a simple task. The user then asks the Linker to make a job at
which point each Configurator produces a /bin/sh script and release area
with configured RCPs to run its corresponding executable. The shell scripts
are collected by the Linker and compiled into a master shell script which
is then presented to the user. The user can run the resulting shell script,
or it can of course be run by another Configurator.
The user can communicate with the Linker using commands contained in a
macro script or through a Graphical User Interface (GUI). The GUI architecture
is conceptually the same as depicted in figure; the Linker GUI will instantiate
a Configurator GUI and maintain it in a visual list. The GUI implementations
are related to the non-GUI implementation through inheritance; in fact
the GUI Configurators are built automatically from the contents of their
non-GUI counterparts with only a few additional cues regarding presentation
and item ordering.
The contents of this manual are as follows :
-
Introductory material is described in Section 0.
-
The macro commands are described in Section 1.
-
The individual Configurators are described in Section 2.
-
The GUI is described in Section 3.
-
Advanced topics are described in Section 4.
Mc_runjob, as of this writing, consists of nearly 7500 lines of Python
code. Much use is made of inheritance among the Configurators to keep the
code size down.