Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Hall-D Analysis Software


This documentation was generated automatically from the source code using the doxygen program. The content of this page is taken from the file sim-recon/src/doc/mainpage.c++

To view repository statistics, look here.


The Hall-D reconstruction software is built upon the C++ JANA framework. The JANA framework was designed for Hall-D but is maintained separately as an independent project and contains no Hall-D specific source code. The Hall-D specific reconstruction software based on JANA is often referred to as DANA.

In broad terms, the JANA framework distinguishes between data classes and algorithm classes. Data classes generally have data members with no more than trivial methods defined. The algorithm classes are where the real work is done. These classes are called factories in JANA. The framework itself is repsonsible for passing pointers to the data objects between the factories that make them.

For example, a factory that makes calorimeter cluster objects does so by using calorimeter hit objects as inputs. The cluster making factory requests the hit objects from the JANA framework whose job is to locate them and return their pointers.

This design provides a loose coupling between the factory classes. The factory needing a type of data object as input doesn't need direct knowledge of the factory that actually generates those objects. Furthermore, multiple factory classes can exist that implement different algorithms, but deliver the same type of data objects. Which exact algorithm that is used can be specified by the user at run time rather than at compile time.

The naming convention used for classes is to have the factory class name be the name of the data class of the objects it provides, but with "_factory" appended. For example, the algorithm that produces DBCALCluster objects would be named DBCALCluster_factory. If an alternate algorithm exists that produces the same type of data objects, it will be "tagged" and the tag appended to the end of the name (e.g. DBCALCluster_factory_HOUGH). All Hall-D specific classes start with the letter "D". (JANA classes start with "J").

Below is a thumbnail of the call graph between factories implemented in DANA. For practical reasons, only the names of the data classes are shown. Click on it to get a larger picture where individual classes can be clicked to jump to the corresponding factory page. In the image, the "first" request comes at the top from the JEventProcessor object asking for DPhysicsEvent objects. The DPhysicsEvent algorithm requires DParticleSet as (its only) input as shown by the arrows. Eventually, requests lead back to data from the input file which are the classes shown in green trapazoids at the bottom of the graph.

It should be noted that not all classes in the Hall-D reconstruction software show up in this call graph. Deprecated classes and alternate algorithms that aren't part of the default reconstruction as well as utility classes that aren't passed through the framework won't show up here. The plot itself is generated automatically by JANA using the janadot plugin and specifying only the defaults be used.

Using This Site

Not all code in the repository is considered part of the core reconstruction/simulation software for Hall-D. As software development is continuous, some code will naturally be replaced with newer code that implements different algorithms. Alternatively, some code will exist purely to aid in debugging or to understand certain aspects of the data, but will not be used for production level processing. As such, classes may fall into one or more categories. Which categories the class belongs in may be very useful for someone browsing through this documentation. The following icons are used to provide quick visual cues to flag classes that you probably don't want to spend a lot of time understanding. These are described in the table below.

Core Package:
This indicates the class is part of the core package. It should be safe to use the class in an analysis.
This flags the class as one that is likely to be removed in the near future. This class should no longer be used in any analysis.
Not Default:
This flags the class as one not normally used in the reconstruction. It usually will indicate alternate algorithms that are maintained for debugging or comparisons puposes but are not used otherwise used.