source: trunk/Documentation/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch03.html @ 902

Last change on this file since 902 was 902, checked in by garnier, 16 years ago

debut de modif de la doc

File size: 10.4 KB
Line 
1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 3.  Toolkit Fundamentals</title><link rel="stylesheet" href="../xml/XSLCustomizationLayer/G4HTMLStylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.71.1"><link rel="start" href="index.html" title="Geant4 User's Guide for Application Developers"><link rel="up" href="index.html" title="Geant4 User's Guide for Application Developers"><link rel="prev" href="ch02s10.html" title="2.10.  How to Visualize the Detector and Events"><link rel="next" href="ch03s02.html" title="3.2.  Global Usage Classes"><script language="JavaScript">
2function remote_win(fName)
3{
4   var url = "AllResources/Detector/geometry.src/" + fName;
5   RemoteWin=window.open(url,"","resizable=no,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,copyhistory=0,width=520,height=520")
6   RemoteWin.creator=self
7}
8</script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. 
9Toolkit Fundamentals
10</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s10.html"><img src="AllResources/IconsGIF/prev.gif" alt="Prev"></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch03s02.html"><img src="AllResources/IconsGIF/next.gif" alt="Next"></a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="chap.ToolkitFundamentals"></a>Chapter 3. 
11Toolkit Fundamentals
12</h2></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sect.ClassCate"></a>3.1. 
13Class Categories and Domains
14</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="sect.ClassCate.WhatIsClassCate"></a>3.1.1. 
15What is a class category?
16</h3></div></div></div><p>
17In the design of a large software system such as Geant4, it is
18essential to partition it into smaller logical units. This makes
19the design well organized and easier to develop. Once the logical
20units are defined independent to each other as much as possible,
21they can be developed in parallel without serious interference.
22</p><p>
23In object-oriented analysis and design methodology by Grady Booch
24[<span class="citation">
25<a href="bi01.html#biblio.booch1994">
26    Booch1994
27  </a>
28</span>]
29, class categories are used to
30create logical units. They are defined as "clusters of classes that
31are themselves cohesive, but are loosely coupled relative to other
32clusters." This means that a class category contains classes which
33have a close relationship (for example, the "has-a" relation).
34However, relationships between classes which belong to different
35class categories are weak, i.e., only limitted classes of these
36have "uses" relations. The class categories and their relations are
37presented by a class category diagram. The class category diagram
38designed for Geant4 is shown in the figure below. Each box in the
39figure represents a class category, and a "uses" relation by a
40straight line. The circle at an end of a straight line means the
41class category which has this circle uses the other category.
42
43</p><div class="figure"><a name="fig.G4ClassCategory"></a><div class="figure-contents"><div class="mediaobject" align="center"><img src="./AllResources/Fundamentals/classCategory.gif" align="middle" alt="Geant4 class categories"></div></div><p class="title"><b>Figure 3.1. 
44Geant4 class categories
45</b></p></div><p><br class="figure-break">
46</p><p>
47The file organization of the Geant4 codes follows basically the
48structure of this class cateogory. This <span class="emphasis"><em>User's Manual</em></span> 
49is also organized according to class categories.
50</p><p>
51In the development and maintenance of Geant4, one software team
52will be assigned to a class category. This team will have a
53responsibility to develop and maintain all classes belonging to the
54class category.
55</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="sect.ClassCate.ClassCateInGeant4"></a>3.1.2. 
56Class categories in Geant4
57</h3></div></div></div><p>
58The following is a brief summary of the role of each class category
59in Geant4.
60
61</p><div class="orderedlist"><ol type="1" compact><li><p><span class="bold"><strong>Run and Event</strong></span>
62            </p><p>These are categories related to the generation of events,
63                  interfaces to event generators, and any secondary particles
64                  produced. Their roles are principally to provide particles to be
65                  tracked to the Tracking Management.
66            </p><p>
67  </p></li><li><p><span class="bold"><strong>Tracking and Track</strong></span>
68            </p><p>These are categories related to propagating a particle by
69                  analyzing the factors limiting the step and applying the relevant
70                  physics processes. The important aspect of the design was that a
71                  generalized Geant4 physics process (or interaction) could perform
72                  actions, along a tracking step, either localized in space, or in
73                  time, or distributed in space and time (and all the possible
74                  combinations that could be built from these cases).
75            </p><p>
76  </p></li><li><p><span class="bold"><strong>Geometry and Magnetic Field</strong></span>
77            </p><p>These categories manage the geometrical definition of a detector
78                  (solid modeling) and the computation of distances to solids (also
79                  in a magnetic field). The Geant4 geometry solid modeler is based on
80                  the ISO STEP standard and it is fully compliant with it, in order
81                  to allow in future the exchange of geometrical information with CAD
82                  systems. A key feature of the Geant4 geometry is that the volume
83                  definitions are independent of the solid representation. By this
84                  abstract interface for the G4 solids, the tracking component works
85                  identically for various representations. The treatment of the
86                  propagation in the presence of fields has been provided within
87                  specified accuracy. An OO design allows us to exchange different
88                  numerical algorithms and/or different fields (not only B-field),
89                  without affecting any other component of the toolkit.
90            </p><p>
91  </p></li><li><p><span class="bold"><strong>Particle Definition and Matter</strong></span>
92            </p><p>These two categories manage the the definition of materials and
93                  particles.
94            </p><p>
95            </p></li><li><p><span class="bold"><strong>Physics</strong></span>
96            </p><p>This category manages all physics processes participating in the
97                  interactions of particles in matter. The abstract interface of
98                  physics processes allows multiple implementations of physics models
99                  per interaction or per channel. Models can be selected by energy
100                  range, particle type, material, etc. Data encapsulation and
101                  polymorphism make it possible to give transparent access to the
102                  cross sections (independently of the choice of reading from an
103                  ascii file, or of interpolating from a tabulated set, or of
104                  computing analytically from a formula). Electromagnetic and
105                  hadronic physics were handled in a uniform way in such a design,
106                  opening up the physics to the users.
107            </p><p>
108  </p></li><li><p><span class="bold"><strong>Hits and Digitization</strong></span>
109            </p><p>These two categories manage the creation of hits and their use
110                  for the digitization phase. The basic design and implementation of
111                  the Hits and Digi had been realized, and also several prototypes,
112                  test cases and scenarios had been developed before the
113                  alpha-release. Volumes (not necessarily the ones used by the
114                  tracking) are aggregated in sensitive detectors, while hits
115                  collections represent the logical read out of the detector.
116                  Different ways of creating and managing hits collections had been
117                  delivered and tested, notably for both single hits and calorimetry
118                  hits types. In all cases, hits collections had been successfully
119                  stored into and retrieved from an Object Data Base Management
120                  System.
121            </p><p>
122  </p></li><li><p><span class="bold"><strong>Visualization</strong></span>
123            </p><p>This manages the visualization of solids, trajectories and hits,
124                  and interacts with underlying graphical libraries (the
125                  Visualization class category). The basic and most frequently used
126                  graphics functionality had been implemented already by the
127                  alpha-release. The OO design of the visualization component allowed
128                  us to develop several drivers independently, such as for OpenGL, Qt and
129                  OpenInventor (for X11 and Windows), DAWN, Postscript (via DAWN) and
130                  VRML.
131            </p><p>
132  </p></li><li><p><span class="bold"><strong>Interfaces</strong></span>
133            </p><p>This category handles the production of the graphical user
134                  interface (GUI) and the interactions with external software
135                  (OODBMS, reconstruction etc.).
136            </p><p>
137  </p></li></ol></div><p>
138</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s10.html"><img src="AllResources/IconsGIF/prev.gif" alt="Prev"></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch03s02.html"><img src="AllResources/IconsGIF/next.gif" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">2.10. 
139How to Visualize the Detector and Events
140 </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="AllResources/IconsGIF/home.gif" alt="Home"></a></td><td width="40%" align="right" valign="top"> 3.2. 
141Global Usage Classes
142</td></tr></table></div></body></html>
Note: See TracBrowser for help on using the repository browser.