-
Notifications
You must be signed in to change notification settings - Fork 13
Home
Welcome to the halld_recon wiki!
halld_recon is a software package based on JANA and written in C++. It contains a collection of libraries that allow the reconstruction of charged particle tracks and neutral particle showers based on real data provided by the HallD DAQ system in EVIO format or from Monte Carlo simulations in hddm format. The two main executables are hd_ana and hd_root.
The code is organized into libraries and plugins. The libraries contain the core reconstruction code and are statically linked into most of the halld_recon executables (e.g. hd_root). Each major detector system has its own library, but there are also libraries dedicated to TRACKING, PID, etc... Plugins are pieces of code that tend to be the consumers of the reconstructed data objects. These are primarily used for creating histograms and trees. When running a halld_recon executable, plugins are requested by the user on the command line.
Roughly speaking, algorithms used in the reconstruction are contained in C++ classes JANA calls Factories. The libraries mentioned above mainly contain factories. These factory classes produce various types of reconstructed data objects. These data objects are then used by JANA Processors. The plugins mainly contain processors.
Examples of Factory plugins can be found in src/libraries/ where the plugins are separated by their main task like handling the data from the forward calorimeter FCAL. A skeleton of a Factory plugin is created with the perl script mkfactory_plugin. It will create a header file ".h" and a ".cc" program file. In addition the hooks for this Factory plugin need to be added to the factory initialization file AAAA_init.cc where AAAA represents the library name.
Examples of regular plugins can be found for example in src/plugins/. A regular plugin can be created and used anywhere in you file system and does not need to be located inside the halld_recon hierarchy files structure. The skeleton of a regular plugin is created with the perl script mkplugin. It will also create a header file ".h" and a ".cc" program file as well as the necessary SConstruct file to be used with scons to compile and link the code. Such a plugin is "stand alone" meaning in order to be used it has to be specified on the command line by the user when executing programs like hd_root or hd_anal with the command line parameter -PPLUGINS=ZZZZZ where ZZZZZ is the name of the plugin.