MarlinMT  0.1.0

Marlin [Modular Analysis and Reconstruction for the LINear collider] is a simple modular application framework for analysis and reconstruction code based on LCIO.

Overview

The main purpose of Marlin is to facilitate the modular development of reconstruction and analysis code based on LCIO. As a lot of different groups are involved it should be simple and straight forward to have distributed development of modules and combine existing modules as needed in a larger application.
The base class for a Marlin module is called marlin::Processor. It defines a set of callbacks that the user can implement in their subclasses. A steering file mechanism allows to activate the needed processors. These are then called for every event using the LCEvent as container for input and output data in terms of LCCollections:

Installation

The installation of Marlin is described in the documentation. Note that since v00-09-08 the default build process has been changed to use CMake and create shared libraries. This allows for a flexible plugin mechanism that does not involve recompiling and relinking of Marlin and the needed packages if only one package is changed !

Running Marlin

After having installed Marlin you have to write your own marlin::Processor(s) subclass that performs the computation. This is fairly straight forward and Marlin provides an example in "$MARLIN/examples/mymarlin" that can serve as a template for your own projects.

Note: there is no need to write a main program as this is provided by Marlin. Existing Processors are automatically registered with Marlin provided one instance exists in the library.

Steering files

A Marlin application is controlled via a steering file that defines the active processors and the order in which they are called as well as global and processor specific parameters. The default format of the steering files is xml (older ascci steering files are still supported for a transition period)

XML steering files

You can get an example XML steering file with:

  • ./bin/Marlin -x > example.xml

The XML steering files provide the following features:

  • definition of the program flow (order of processors to be executed)
  • global parameters
  • processor parameters
  • conditional execution of processors (depending on flags set by other processors)
  • grouping of processors sharing common parameters

See marlin::XMLParser for a detailed description of the xml steering files.

The application is run by:

  • ./bin/Marlin example.xml

Old Ascii steering files

You can convert old ascii steering files to xml steering files by typing:

  • ./bin/Marlin -o old.steer new.xml

Other commands

You can get a list of all supported command line options with

  • ./bin/Marlin -h

This will create the following output:

 Usage: Marlin [OPTION] [FILE]...
   runs a Marlin application
 Running the application with a given steering file:
   Marlin steer.xml
   Marlin -h                     print this help information
   Marlin -?                     print this help information
   Marlin -x                     print an example steering file to stdout
   Marlin -c steer.xml           check the given steering file for consistency
   Marlin -f old.xml new.xml     convert old xml files to new xml files for consistency check
   Marlin -o old.steer new.xml   convert old steering file to xml steering file
   Marlin -l                     [deprecated: old format steering file example]
   Marlin -d steer.xml flow.dot  create a program flow diagram (see: http://www.graphviz.org)
 Example:
 To create a new default steering file from any Marlin application, run
     Marlin -x > mysteer.xml
 and then use either an editor or the MarlinGUI to modify the created steering file
 to configure your application and then run it. e.g. :
     Marlin mysteer.xml > marlin.out 2>&1 &

Release Notes

Marlin is under development and there are frequent releases. Please check the ./ReleaseNotes.md


If you have any questions or proposals for new features please contact the author:

frank.gaede@desy.de
remi.ete@desy.de