Hall-D Software
alpha
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
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
mainpage.c++
Generated on Fri Jul 26 2019 14:02:36 for Hall-D Software by
1.8.5