Marlin
1.17.1
|
Marlin [Modular Analysis and Reconstruction for the LINear collider] is a simple modular application framework for analysis and reconstruction code based on LCIO.
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:
The installation of Marlin is described in the README.md. 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 !
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 as described in the README.md.
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)
You can get an example XML steering file with:
The XML steering files provide the following features:
See marlin::XMLParser for a detailed description of the xml steering files.
The application is run by:
You can convert old ascii steering files to xml steering files by typing:
You can get a list of all supported command line options with
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 &
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: