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

Last change on this file since 902 was 902, checked in by garnier, 17 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.