Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mainpage.c++
Go to the documentation of this file.
1 // This file contains the content included on the main page of
2 // the Hall-D software documentaion generated by doxygen. It
3 // has a suffix of .c++ just to make doxygen find it.
4 
5 /**
6  \mainpage Hall-D Analysis Software
7 
8  \section about About
9 
10  This documentation was generated automatically from the source
11  code using the doxygen program. The content of this page is
12  taken from the file sim-recon/src/doc/mainpage.c++
13 
14  To view repository statistics, <A href="SVNstats">look here</A>.
15 
16  \section intro Introduction
17 
18  The Hall-D reconstruction software is built upon the C++ <A href="http://www.jlab.org/JANA">JANA</A>
19  framework. The JANA framework was designed for Hall-D but is maintained separately as an
20  independent project and contains no Hall-D specific source code. The Hall-D specific reconstruction
21  software based on JANA is often referred to as <i>DANA</i>.
22 
23  In broad terms, the JANA framework distinguishes between data classes and algorithm classes.
24  Data classes generally have data members with no more than trivial methods defined. The algorithm
25  classes are where the real work is done. These classes are called <i>factories</i> in JANA.
26  The framework itself is repsonsible for passing pointers to the data objects between the factories
27  that make them.
28 
29  For example, a factory that makes calorimeter cluster objects does so by using calorimeter
30  hit objects as inputs. The cluster making factory requests the hit objects from the JANA framework
31  whose job is to locate them and return their pointers.
32 
33  This design provides a loose coupling between the factory classes. The
34  factory needing a type of data object as input doesn't need direct knowledge of the factory that
35  actually generates those objects. Furthermore, multiple factory classes can exist that
36  implement different algorithms, but deliver the same type of data objects. Which exact algorithm
37  that is used can be specified by the user at run time rather than at compile time.
38 
39  The naming convention used for classes is to have the factory class name be the name of the data
40  class of the objects it provides, but with "_factory" appended. For example, the algorithm that
41  produces DBCALCluster objects would be named DBCALCluster_factory. If an alternate algorithm
42  exists that produces the same type of data objects, it will be "tagged" and the tag appended
43  to the end of the name (e.g. DBCALCluster_factory_HOUGH). All Hall-D specific classes start
44  with the letter "D". (JANA classes start with "J").
45 
46  Below is a thumbnail of the call graph between factories implemented in DANA. For practical
47  reasons, only the names of the data classes are shown. Click on it to get
48  a larger picture where individual classes can be clicked to jump to the corresponding
49  factory page. In the image, the "first" request comes at the top from the JEventProcessor object asking
50  for DPhysicsEvent objects. The DPhysicsEvent algorithm requires DParticleSet as (its only) input as
51  shown by the arrows. Eventually, requests lead back to data from the input file which are the classes shown
52  in green trapazoids at the bottom of the graph.
53 
54  \htmlonly
55  <center>
56  <A href="jana_map.html" target="jana_map"> <IMG src="jana_map.gif" height="200"></A>
57  </center>
58  \endhtmlonly
59 
60  It should be noted that not all classes in the Hall-D reconstruction software show up in this
61  call graph. Deprecated classes and alternate algorithms that aren't part of the default
62  reconstruction as well as utility classes that aren't passed through the framework won't
63  show up here. The plot itself is generated automatically by JANA using the <i>janadot</i>
64  plugin and specifying only the defaults be used.
65 
66 
67  \section legend Using This Site
68 
69  Not all code in the repository is considered part of the core reconstruction/simulation
70  software for Hall-D. As software development is continuous, some code will naturally be replaced
71  with newer code that implements different algorithms. Alternatively, some code will exist
72  purely to aid in debugging or to understand certain aspects of the data, but will not be
73  used for production level processing. As such, classes may fall into one or more categories.
74  Which categories the class belongs in may be very useful for someone browsing through this
75  documentation. The following icons are used to provide quick visual cues to flag classes that
76  you probably don't want to spend a lot of time understanding. These are described in the
77  table below.
78 
79  \htmlonly
80  <table border="1" cellpadding="10" width="650">
81 
82  <TR>
83  <TD><IMG src="CORE.png" width="125"></TD>
84  <TD>
85  <font size="+1"><b><u> Core Package: </u></b></font><br>
86  This indicates the class is part of the core package. It should be safe to
87  use the class in an analysis.
88  </TD>
89  </TR>
90 
91 
92  <TR>
93  <TD><IMG src="DEP.png" width="125"></TD>
94  <TD>
95  <font size="+1"><b><u> Deprecated: </u></b></font><br>
96  This flags the class as one that is likely to be removed in the near future.
97  This class should no longer be used in any analysis.
98  </TD>
99  </TR>
100 
101  <TR>
102  <TD><IMG src="ND.png" width="125"></TD>
103  <TD>
104  <font size="+1"><b><u> Not Default: </u></b></font><br>
105  This flags the class as one not normally used in the reconstruction.
106  It usually will indicate alternate algorithms that are maintained for debugging
107  or comparisons puposes but are not used otherwise used.
108  </TD>
109  </TR>
110  </table>
111  \endhtmlonly
112 */
113