LCFIVertex  0.7.2
The LCFI Vertex Package

The LCFI Vertex Package provides the vertex finder ZVTOP, originally developed for SLD by D. Jackson [1], flavour tagging as well as vertex charge determination for b- and c-jets. By default, the flavour tag provided is obtained from the algorithm by R. Hawkings [2]. It is based on a neural net approach, combining track and vertex information to distinguish b, c- and light jets. The algorithm to determine vertex charge follows the SLD-approach [3], with modifications for b-jets developed by S. Hillert [4].

In addition to the algorithms, the package provides an object-oriented framework, in which the default approach can easily be modified and extended. Care was taken to make all main parameters of the code accessible to the user as steering parameters. The code was interfaced to the MarlinReco analysis framework and uses LCIO for input and output, permitting it to be used in conjunction with algorithms from other reconstruction frameworks.

The code was implemented by Ben Jeffery (ZVTOP, LCIO/Marlin interface, working classes design and testing), Erik Devetak (Flavour tag inputs calculation and testing, MC Jet flavour, Vertex Charge Processor), Mark Grimes (Flavour tag procedure, Vertex fitter), Dave Bailey (neural network code), Victoria Martin (AIDA Plot Processor), Tomas Lastovicka (Kalman filter for vertex fitting), Kristian Harder (use GEAR-geometry for suppression of hadronic interactions, Purity - Efficiency macro) and Sonja Hillert (coordination, system test). The authors thank the LCFI physics group for help and advice during the development phase, in particular D. Jackson (advice on ZVTOP), K. Harder(testing, Mokka/Gear interface) V. Martin (test of vertex charge procedure for c-jets), T. Lastovicka (testing), R. Walsh (testing), Clare Lynch (testing).

We would also like to thank F. Gaede, T. Behnke and N. Graf for fruitful discussions, D. Martsch for producing a test sample on the GRID and A. Raspereza for advice and for extending the track cheater functionality to provide the input required by the Vertex Package.

VtxPackageDirStruct.jpg
Vertex Package directory structure

Directories of the package are organised as follows: the top-level directories contain the Marlin processors (src) and the include- and steering files they require, as well as macros (macro) that can be run on output created by some of the processors. For example, a root macro is provided to make comparison plots of purity vs efficiency obtained from two subsequent runs of the PlotProcessor. (Note, that the package provides root output only if compiled with root option). The top-level directories provide an interface to the main part of the code, which is located in the directory vertex_lcfi. The Marlin processors access a set of algorithm classes for ZVTOP, flavour tag and vertex charge calculation which can be found in the subdirectory algo. These algorithm classes all inherit from a simple interface Algo, providing parameters and the method "calculateFor", returning the output of the algorithm. Input to the algorithm classes are objects like jets or events. The implementation of these object classes can be found in the directories vertex_lcfi/inc and vertex_lcfi/src. Working classes specific to the vertex finder ZVTOP, providing functionality like vertex finding, vertex resolving and vertex fitting, are located in the directory vertex_lcfi/zvtop. The neural network code is kept in the directory vertex_lcfi/nnet.

The following Marlin processors are provided:

The example steering files provided show how the package could be run in a typical analysis. The order in which the steering files would be called is as follows:

The first of these steering files calls event reconstruction processors from MarlinReco that are not part of the package but need to be run in order to obtain the collections required. Running Marlin with this steering file creates an input LCIO file for the package, by default called cheatout.slcio. It contains collections with MC particles, jets and the ReconstructedParticles within the jets. The execution flow diagram shows how these collections are used by the LCFIVertex package, as well as processors used and collections created if using the example steering files above. (The training of new neural nets is not covered in the diagram, as this would be done in a dedicated training run; the typical application uses networks that have already been trained). Unless otherwise indicated, all collections shown in the diagram are of type ReconstructedParticle.

VertexPackageExeFlow.jpg
Vertex Package execution flow obtained from the example steering files

Some processors depend on others to have run before, e.g. ZVTOP and the flavour tag inputs processor each require their own track selection implemented by the RPCutProcessor. Further details are provided in the documentation for each of the processors (see above) and in the tutorial section. Information on the internal ZVTOP classes can be found in the ZVTOP documentation. Scope and usage of the neural network code (which can also be used for purposes other than flavour tagging) is described in the neural net documentation.

In addition to code and example steering files, the package provides a set of pre-trained networks for the Hawkings default flavour tag. These have been trained using the fast MC SGV and are located in a new repository tagnet in the Zeuthen CVS repository (Use 'tagnet' as project name when checking out the directory). We strongly recommend submitting any new networks that users train with different boundary conditions to this directory along with a detailed description of training conditions. A form for providing training information can be found in the same directory in order to make ILC physics studies more transparent and ease comparisons of analyses performed within different groups, frameworks or detector concepts.

Summary of changes in release versions:

[1] D. Jackson, NIM A 388 (1997) 247
[2] R. Hawkings, LC-PHSM-2000-021
[3] J. Thom, SLAC-R-585 (2002), T. Wright, SLAC-R-602 (2002)
[4] S. Hillert, proceedings LCWS 2005

In case of comments or questions not answered by the documentation please contact the development and maintenance team:

Erik Devetak (E.Dev.nosp@m.etak.nosp@m.1@phy.nosp@m.sics.nosp@m..ox.a.nosp@m.c.uk)
Mark Grimes (Mark..nosp@m.Grim.nosp@m.es@br.nosp@m.isto.nosp@m.l.ac..nosp@m.uk)
Kristian Harder (K.Har.nosp@m.der@.nosp@m.rl.ac.nosp@m..uk)
Sonja Hillert (S.Hil.nosp@m.lert.nosp@m.1@phy.nosp@m.sics.nosp@m..ox.a.nosp@m.c.uk)
Talini Pinto Jayawardena (T.S.P.nosp@m.into.nosp@m..Jaya.nosp@m.ward.nosp@m.ena@r.nosp@m.l.ac.nosp@m..uk)
Ben Jeffery (B.Jef.nosp@m.fery.nosp@m.1@phy.nosp@m.sics.nosp@m..ox.a.nosp@m.c.uk)
Tomas Lastovicka (T.Las.nosp@m.tovi.nosp@m.cka1@.nosp@m.phys.nosp@m.ics.o.nosp@m.x.ac.nosp@m..uk)
Clare Lynch (Clare.nosp@m..Lyn.nosp@m.ch@br.nosp@m.isto.nosp@m.l.ac..nosp@m.uk)
Victoria Martin (victo.nosp@m.ria..nosp@m.marti.nosp@m.n@ed.nosp@m..ac.u.nosp@m.k)
Roberval Walsh (r.wal.nosp@m.sh@e.nosp@m.d.ac..nosp@m.uk)