source: trunk/Documentation/geant4/support/introductionToGeant4.shtml @ 901

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

Add Geant4 Documentation at 8.12.2008

File size: 17.6 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2   "http://www.w3.org/tr/xhtml1/DTD/xhtml1-transitional.dtd">
3<html>
4 
5<head>
6<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
7<title>Introduction to Geant4</title>
8<link rel="stylesheet" type="text/css" href="../includes/geantstyle.css" />
9</head>
10 
11<body>
12 
13<!-- stop index -->
14<table id="top" cellpadding="0" cellspacing="0" width="100%">
15  <tr>
16    <td><a href="index.shtml">
17    <img alt="Geant4 Home" src="http://cern.ch/geant4/images/geanttiny.gif" width="164" height="40" /></a></td>
18    <td align="right" class="doNotPrint">
19    <a href="http://cern.ch/geant4/support/download.shtml">Download</a>
20    | <a href="http://hypernews.slac.stanford.edu/HyperNews/geant4/cindex">User
21    Forum</a> | <a href="http://cern.ch/geant4/gallery/index.html">
22    Gallery</a><br />
23    <a href="http://cern.ch/geant4/collaboration/contacts.shtml">
24    Contact Us</a><br />
25      <form method="get" action="http://www.cern.ch/cgi-bin/directory-search.pl">
26      <input type="hidden" value="No" name="SubSearch" />
27      <input type="hidden" value="url:wwwinfo.cern.ch/asd/geant4/G4UsersDocuments/
28url:geant4.web.cern.ch/geant4/G4UsersDocuments/" name="AdditionalQuery" />
29      <input type="hidden" value="searchbrowse.html" name="TemplateFile" />
30      <input type="hidden" value="http://wwwinfo.cern.ch/asd/" name="Referer" />
31      <input type="hidden" value="cern" name="qc" />
32      <input type="hidden" value="cern" name="col" />
33      <input size="35" name="qt" />
34      <input type="submit" value="Search Geant4" />
35    </form>
36    </td>
37  </tr>
38</table>
39
40<!-- start index -->
41
42<table border="0" cellpadding="4" cellspacing="0" width="100%">
43  <tr>
44    <td id="breadcrumb">
45    <!-- start bread crumb --><a href="../index.shtml">Home</a> &gt;
46                <a href="index.shtml">User Support</a> &gt;
47            <a href="userdocuments.shtml">User Documentation</a>
48    <!-- end bread crumb --></td>
49  </tr>
50  <tr>
51    <td id="main">
52 
53
54<h1>Geant4 User's Documents: Introduction to Geant4</h1>
55<br/>      
56
57
58<h2>Contents</h2>
59<ol>
60  <li><a href="#1.">Geant4 Scope of Application</a></li>
61  <li><a href="#2.">History of Geant4</a></li>
62  <li><a href="#3.">Overview of Geant4 Functionality</a></li>
63  <li><a href="#4.">Geant4 User Suppport</a></li>
64  <li><a href="#5.">Software Knowledge Required to Use the Geant4 Toolkit</a></li>
65  <li><a href="#6.">Computing Environment Required by the Geant4 Toolkit</a></li>
66</ol>
67
68<hr/>
69
70<!-- ============================================== Section -->
71<a name="1."></a>
72<h2>1. Geant4 Scope of Application</h2>
73<p>
74Geant4 is a free software package composed of tools which can be used to
75accurately simulate the passage of particles through matter.  All aspects
76of the simulation process have been included in the toolkit:
77</p>
78<ul>
79  <li>the geometry of the system,</li>
80  <li>the materials involved,</li>
81  <li>the fundamental particles of interest,</li>
82  <li>the generation of primary events,</li>
83  <li>the tracking of particles through materials and electromagnetic fields,</li>
84  <li>the physics processes governing particle interactions,</li>
85  <li>the response of sensitive detector components,</li>
86  <li>the generation of event data,</li>
87  <li>the storage of events and tracks,</li>
88  <li>the visualization of the detector and particle trajectories, and</li>
89  <li>the capture and analysis of simulation data at different levels of
90      detail and refinement.</li>
91</ul>
92<p>
93Users may construct stand-alone applications or applications built upon
94another object-oriented framework.  In either case the toolkit will support
95them from the initial problem definition to the production of results and
96graphics for publication.  To this end, the toolkit includes:
97</p>
98<ul>
99  <li>user interfaces,</li>
100  <li>built-in steering routines, and</li> 
101  <li>command interpreters</li>
102</ul>
103<p>
104which operate at every level of the simulation.
105</p>
106<p>
107At the heart of Geant4 is an abundant set of physics models to handle the
108interactions of particles with matter across a very wide energy range.  Data
109and expertise have been drawn from many sources around the world and in this
110respect, Geant4 acts as a repository which incorporates a large part of all
111that is known about particle interactions.
112</p>
113<p>
114Geant4 is written in C++ and exploits advanced software-engineering
115techniques and object-oriented technology to achieve transparency.  For
116example, the way in which cross sections are input or computed is separated
117from the way in which they are used or accessed.  The user can overload both
118of these features.  Similarly, the computation of the final state can be
119divided into alternative or complementary models, according to the energy
120range, the particle type, and the material.  To build a specific application
121the user-physicist chooses from among these options and implements code in
122user action classes supplied by the toolkit.  A serious problem with
123previous simulation codes was the difficulty of adding new or variant
124physics models; development was difficult due to the increased size,
125complexity and interdependency of the procedure-based code.  In contrast,
126object-oriented methods help manage complexity and limit dependencies by
127defining a uniform interface and common organizational principles for all
128physics models.  Within this framework the functionality of models can be
129more easily recognized and understood, and the creation and addition of new
130models is a well-defined procedure that entails little or no modification to
131the existing code.
132</p>
133<a name="2."></a>
134<h2>2. History of Geant4</h2>
135<p>
136These ideas first appeared in two studies done independently at CERN and KEK
137in 1993.  Both groups sought to investigate how modern computing techniques
138could be applied to improve the existing FORTRAN based Geant3 simulation
139program.  Activities were merged in the fall of 1994 and a formal proposal,
140RD44, to construct an entirely new program based on object-oriented
141technology was submitted to CERN's Detector Research and Development
142Committee.  The initiative grew to become a large international
143collaboration of physicist programmers and software engineers from a number
144of institutes and universities participating in a range of high-energy
145physics experiments in Europe, Japan, Canada and the United States.  The
146objective was to write a detector simulation program which had the
147functionality and flexibility necessary to meet the requirements of the next
148generation of subatomic physics experiments.  The initial scope quickly
149widened when it became apparent that such a tool would also benefit the
150nuclear, accelerator, space and medical physics community, with more
151individuals joining from these fields of science.
152</p>
153<p>
154The RD44 project represented a pioneering effort in redesigning a major CERN
155software package for a modern object-oriented (OO) environment based on C++.
156The R &amp; D phase was completed in December 1998 with the delivery of the
157first production release.  The collaboration was subsequently renamed Geant4
158and re-instated on the basis of a formal Memorandum of Understanding (MoU)
159signed by many of the same national institutes, laboratories and large HEP
160experiments who participated in RD44.  The agreement addresses the program
161management, maintenance and user support during the production phase and the
162continued development and refinement of the toolkit.  It is subject to tacit
163renewal every two years and sets out a collaboration structure defined by a
164Collaboration Board (CB), a Technical Steering Board (TSB) and several
165working groups.
166</p>
167<p>
168The collaboration now profits from the accumulated experience of many
169contributors to the field of Monte Carlo simulation of physics detectors and
170physical processes.  While geographically distributed software development
171and large-scale object-oriented systems are no longer a novelty, Geant4, in
172terms of the size and scope of the code and the number of contributors, may
173well represent the largest and most ambitious project of its kind outside
174the corporate world.  A clean overall problem decomposition has led to a
175clear hierarchical structure of domains.  Every section of the Geant4
176software, which corresponds to a releasable component (library), is
177individually managed by a working group of experts.  In addition, there is a
178working group for each of the activities: testing and quality assurance,
179software management and documentation management.  A release coordinator
180heads each group.  This consequent distribution of responsibility among a
181relative large number of people permits a support structure whereby
182outside users can address questions directly to the appropriate expert.
183</p>
184<a name="3."></a>
185<h2>3. Overview of Geant4 Functionality</h2>
186<p>
187The Geant4 class category diagram is shown in Fig. 1.
188</p>
189
190<img src="classCategory.gif" alt="Class Categories"></img>
191
192<p>
193Fig. 1 Geant4 class categories<br/><br/>
194</p>
195
196<p>
197Categories at the bottom of the diagram are used by virtually all higher categories and provide the foundation of the toolkit.
198</p>
199<p>
200The
201</p>
202<ul>
203    <li><i>global</i></li>
204</ul>
205<p>
206category covers the system of units, constants, numerics and random number
207handling.
208</p>
209<p>
210The two categories:
211</p>
212<ul>
213  <li><i>materials</i></li>
214  <li><i>particles</i></li>
215</ul>
216<p>
217implement facilities necessary to describe the physical properties of
218particles and materials for the simulation of particle-matter interactions.
219</p>
220<p>
221The
222</p>
223<ul>
224    <li><i>geometry</i></li>
225</ul>
226<p>
227module offers the ability to describe a geometrical structure and propagate particles efficiently through it.
228</p>
229<p>
230Above these reside categories required to describe the tracking of particles
231and the physical processes they undergo. The
232</p>
233<ul>
234    <li><i>track</i></li>
235</ul>
236<p>
237category contains classes for tracks and steps, used by the
238</p>
239<ul>
240    <li><i>processes</i></li>
241</ul>
242<p>
243category, which contains implementations of models of physical interactions: electromagnetic interactions of leptons, photons,
244hadrons and ions, and hadronic interactions.
245</p>
246<p>
247All processes are invoked by the
248</p>
249<ul>
250    <li><i>tracking</i></li>
251</ul>
252<p>
253category, which manages their contribution to the evolution of a track's state
254and provides information in sensitive volumes for hits and digitization.
255</p>
256<p>
257Above these the
258</p>
259<ul>
260    <li><i>event</i></li>
261</ul>
262<p>
263category manages events in terms of their tracks and the
264</p>
265<ul>
266    <li><i>run</i></li>
267</ul>
268<p>
269category manages collections of events that share a common beam and detector
270implementation. A
271</p>
272<ul>
273    <li><i>readout</i></li>
274</ul>
275<p>
276category allows the handling of pile-up.
277</p>
278<p>
279Finally capabilities that use all of these categories and connect to
280facilities outside the toolkit through abstract interfaces, provide
281<i>visualization</i>, <i>persistency</i> and user <i>interface</i>
282capabilities.
283</p>
284
285<a name="4."></a>
286<h2>4. Geant4 User Support</h2>
287
288<p>
289The collaboration offers support for Geant4, providing
290</p>
291<ul>
292  <li>assistance with problems relating to the code,</li>
293  <li>consultation on using the toolkit, and</li>
294  <li>response to enhancement requests.</li>
295</ul>
296<p>
297A user can also expect assistance in
298</p>
299<ul>
300  <li>investigating aberrant results.</li>
301</ul>
302<p>
303Users of the software who encounter a problem in running the code can use an
304</p>
305<ul>
306  <li>Internet-based <a href="http://bugzilla-geant4.kek.jp/">problem reporting system</a>.</li>
307</ul>
308<p>
309The system is open to all users. It is set up automatically to assign problem
310reports to the responsible person according to the category affected. The
311contact person may then respond directly or forward it to a colleague.  This
312system is a customized version of the open source reporting tool
313<a target="_ext" href="http://bugzilla.mozilla.org">Bugzilla</a>.  Besides routing the
314problem to specialists, it tracks and documents the responses until the
315problem is resolved.
316</p>
317<p>
318New requirements, such as requests for new functionality, are presented to
319and decided by the Technical Steering Board (TSB).  The TSB sets the
320priorities and agrees on time-scales for the fulfillment of new
321requirements.  Such support is guaranteed to collaboration members, while
322requests from non-members are handled on a <i>best effort</i> basis.
323</p>
324<p>
325For each member organisation a contact person
326<a href="http://cern.ch/geant4/organisation/technical_board.html">(TSB member)</a> has been designated who acts as a first reference for Geant4
327users in that locality, which may include affiliated institutions, user
328groups, and others in the same geographic area.  The contact person will
329respond to enquiries, help resolve simple problems, and forward more
330specialized queries to the relevant expert(s).
331</p>
332
333<p>
334Beyond that, a list of frequently asked questions
335<a href="FAQ.html">(FAQs)</a>, and an internet-based
336<a target="_ext" href="http://geant4-hn.slac.stanford.edu:5090/Geant4-HyperNews/index">user forum</a> complete the available Geant4 user support.
337<br/>
338</p>
339
340<a name="5."></a>
341<h2>5. Software Knowledge Required to Use the Geant4 Toolkit</h2>
342<p>
343In general, there are three types of users:
344</p>
345<ul>
346  <li>the <b>end user</b>,</li>
347  <li>the <b>application programmer</b>,</li>
348</ul>
349<p>
350and for large simulation tasks:
351</p>
352<ul>
353  <li>the <b>framework provider</b>.</li>
354</ul>
355
356<p>
357The <b>end user</b> runs the simulation program by controlling run time
358parameters. The interface with the program may be a graphical user
359interface, an interactive command line interface, or the macro-based system
360for batch.  The end user needs a basic knowledge of how to control the
361program flow but does not necessarily have to know object-oriented
362programming or C++.
363</p>
364<p>
365The <b>application programmer</b> is central to any simulation task. A firm
366knowledge of C++ is required to implement code in user action classes to
367specify, at a minimum, the detector description, the relevant particles and
368physics processes, and the initial event kinematics.  A manual for the
369application programmer is found in the
370<a href="../../../UsersGuides/ForApplicationDeveloper/html/index.html">User's Guide: For Application Developers</a>.
371</p>
372<p>
373Using standard components of Geant4, a <b>framework provider</b> would add
374interfaces to external tools, such as for example, to Computer Aided Design
375(CAD) programs, Object-Oriented Data Base Management Systems (ODBMS) and
376graphics systems. This requires the development of new classes overloading
377standard Geant4 functionality and hence a solid understanding of
378object-oriented Programming.  A manual for the framework provider is found
379in the
380<a href="../../../UsersGuides/ForToolkitDeveloper/html/index.html">User's Guide: For Toolkit Developers</a>.
381</p>
382
383
384<b>References</b>
385<p>
386All user documentation can be found on the Geant4 homepage
387<a href="http://cern.ch/geant4">http://cern.ch/geant4</a>.
388</p>
389<p>
390References for Object-Oriented Technology:
391</p>
392<ul>
393  <li>Grady Booch, Object-Oriented Analysis and Design with Applications The Benjamin/Cummings Publishing Co. Inc, 1994,
394     ISBN 0-8053-5340-2 </li>
395  <li>R.C.Martin, Designing Object-Oriented C++ Applications Using The Booch Method, Prentice Hall 1995, ISBN
396     0-13-203837-4; </li>
397  <li>E. Gamma, et al., Design Patterns - Elements of Reusable Object-Oriented Software, Addison Wesley 1995, ISBN
398     0-201-63361-2; </li>
399</ul>
400<p>
401Information on and links to many Object-Oriented methodologies and related
402tools are also available at
403<a href="http://geant4.cern.ch/asd/geant/geant4_public/pub_methodology.html">http://geant4.cern.ch/asd/geant/geant4_public/pub_methodology.html</a>.
404</p>
405<p>
406References for C++:
407</p>
408<ul>
409  <li>B.Stroustrup, C++ Programming Language 3rd Edition, Addison Wesley,
410      ISBN: 0-201-88954-4</li>
411  <li>I.Pohl, Object-Oriented Programming Using C++, 2nd Edition, Addison
412      Wesley, ISBN: 0-201-89550-1.</li>
413</ul>
414<br/>
415
416<a name="6."></a>
417<h2>6. Computing Environment Required by the Geant4 Toolkit</h2>
418<p>
419The Geant4 toolkit is available for a variety of operating systems:
420</p>
421<ul>
422  <li>flavors of UNIX,</li> 
423  <li>Linux,</li>
424  <li>and Windows systems.</li>
425</ul>
426<p>
427In order to link and build the program only two underlying software packages are mandatory:
428</p>
429<ul>
430  <li>CLHEP (Class Library of High Energy Physics) and the</li>
431  <li>STL (Standard Template Library for fundamental classes like C++ containers and strings).</li>
432</ul>
433<p>
434The Geant4 source code is available from the
435<a href="http://cern.ch/geant4">Geant4 web pages</a>
436while CLHEP is available from the
437<a target="_ext" href="http://cern.ch/clhep">CLHEP Home Page</a>.
438For details on setting up the computing environment see the
439<a href="../../../UsersGuides/InstallationGuide/html/index.html">Installation Guide</a>.
440</p>
441    </td>
442  </tr>
443</table>
444<!-- start footer -->
445<div id="bottom">
446  <br/><br/>
447<a href="http://cern.ch/geant4/applications/index.shtml">Applications</a> |
448<a href="http://cern.ch/geant4/support/index.shtml">User Support</a> |
449<a href="http://cern.ch/geant4/results/index.shtml">Results &amp; Publications</a> |
450<a href="http://cern.ch/geant4/collaboration/index.shtml">Collaboration</a> |
451<a href="http://cern.ch/geant4/sitemap.shtml">Site Map</a><br />
452<p></p>
453<script type="text/javascript">
454<!--//
455var zap_domain = "cern.ch"
456var zap_user = "Gunter.Folger"
457var zap_recipient = zap_user + "@" + zap_domain
458var zap_url = "mailto:" + zap_recipient +"?subject=Feedback&body=My feedback concerns the page at: " + " " + escape(top.parent.location.href)
459document.write('<a href="' + zap_url + '" target=>Contact Webmaster</a>')
460//-->
461</script>
462
463
464  <div id="update">
465  <p>Last updated:
466 
467   03/23/2007
468  </p>
469  </div>
470</div>
471<!-- End footer -->
472 
473</body>
474 
475</html>
Note: See TracBrowser for help on using the repository browser.