source: trunk/documents/UserDoc/DocBookUsersGuides/IntroductionToGeant4/xml/Introduction/ChapIntroduction.xml @ 1358

Last change on this file since 1358 was 1211, checked in by garnier, 15 years ago

CVS update

File size: 18.1 KB
Line 
1<!-- ******************************************************** -->
2<!--                                                          -->
3<!--  [History]                                               -->
4<!--    Converted to DocBook: Katsuya Amako, Aug-2006         -->
5<!--                                                          -->
6<!-- ******************************************************** -->
7
8
9<!-- ******************* Chapter **************************** -->
10<chapter id="chap.G4Scope">
11<title>
12Geant4 Scope of Application
13</title>
14
15<para>
16Geant4 is a free software package composed of tools which can be
17used to accurately simulate the passage of particles through
18matter. All aspects of the simulation process have been included in
19the toolkit:
20
21<itemizedlist spacing="compact">
22  <listitem><para>
23    the geometry of the system,
24  </para></listitem>
25  <listitem><para>
26    the materials involved,
27  </para></listitem>
28  <listitem><para>
29    the fundamental particles of interest,
30  </para></listitem>
31  <listitem><para>
32    the generation of primary events,
33  </para></listitem>
34  <listitem><para>
35    the tracking of particles through materials and electromagnetic fields,
36  </para></listitem>
37  <listitem><para>
38    the physics processes governing particle interactions,
39  </para></listitem>
40  <listitem><para>
41    the response of sensitive detector components,
42  </para></listitem>
43  <listitem><para>
44    the generation of event data,
45  </para></listitem>
46  <listitem><para>
47    the storage of events and tracks,
48  </para></listitem>
49  <listitem><para>
50    the visualization of the detector and particle trajectories, and
51  </para></listitem>
52  <listitem><para>
53    the capture and analysis of simulation data at different levels
54    of detail and refinement.
55  </para></listitem>
56</itemizedlist>
57</para>
58
59<para>
60Users may construct stand-alone applications or applications built
61upon another object-oriented framework. In either case the toolkit
62will support them from the initial problem definition to the
63production of results and graphics for publication. To this end,
64the toolkit includes:
65
66<itemizedlist spacing="compact">
67  <listitem><para>
68    user interfaces,
69  </para></listitem>
70  <listitem><para>
71    built-in steering routines, and
72  </para></listitem>
73  <listitem><para>
74    command interpreters
75  </para></listitem>
76</itemizedlist>
77
78which operate at every level of the simulation.
79</para>
80
81<para>
82At the heart of Geant4 is an abundant set of physics models to
83handle the interactions of particles with matter across a very wide
84energy range. Data and expertise have been drawn from many sources
85around the world and in this respect, Geant4 acts as a repository
86which incorporates a large part of all that is known about particle
87interactions.
88</para>
89
90<para>
91Geant4 is written in C++ and exploits advanced
92software-engineering techniques and object-oriented technology to
93achieve transparency. For example, the way in which cross sections
94are input or computed is separated from the way in which they are
95used or accessed. The user can overload both of these features.
96Similarly, the computation of the final state can be divided into
97alternative or complementary models, according to the energy range,
98the particle type, and the material. To build a specific
99application the user-physicist chooses from among these options and
100implements code in user action classes supplied by the toolkit. A
101serious problem with previous simulation codes was the difficulty
102of adding new or variant physics models; development was difficult
103due to the increased size, complexity and interdependency of the
104procedure-based code. In contrast, object-oriented methods help
105manage complexity and limit dependencies by defining a uniform
106interface and common organizational principles for all physics
107models. Within this framework the functionality of models can be
108more easily recognized and understood, and the creation and
109addition of new models is a well-defined procedure that entails
110little or no modification to the existing code.
111</para>
112
113</chapter>
114
115
116<!-- ******************* Chapter **************************** -->
117<chapter id="chap.HistoryG4">
118<title>
119History of Geant4
120</title>
121
122<para>
123These ideas first appeared in two studies done independently at
124CERN and KEK in 1993. Both groups sought to investigate how modern
125computing techniques could be applied to improve the existing
126FORTRAN based Geant3 simulation program. Activities were merged in
127the fall of 1994 and a formal proposal, RD44, to construct an
128entirely new program based on object-oriented technology was
129submitted to CERN's Detector Research and Development Committee.
130The initiative grew to become a large international collaboration
131of physicist programmers and software engineers from a number of
132institutes and universities participating in a range of high-energy
133physics experiments in Europe, Japan, Canada and the United States.
134The objective was to write a detector simulation program which had
135the functionality and flexibility necessary to meet the
136requirements of the next generation of subatomic physics
137experiments. The initial scope quickly widened when it became
138apparent that such a tool would also benefit the nuclear,
139accelerator, space and medical physics community, with more
140individuals joining from these fields of science.
141</para>
142
143<para>
144The RD44 project represented a pioneering effort in redesigning
145a major CERN software package for a modern object-oriented (OO)
146environment based on C++. The R&amp;D phase was completed in
147December 1998 with the delivery of the first production release.
148The collaboration was subsequently renamed Geant4 and reinstated on
149the basis of a formal Memorandum of Understanding (MoU) signed by
150many of the same national institutes, laboratories and large HEP
151experiments who participated in RD44. The agreement addresses the
152program management, maintenance and user support during the
153production phase and the continued development and refinement of
154the toolkit. It is subject to tacit renewal every two years and
155sets out a collaboration structure defined by a Collaboration Board
156(CB), a Technical Steering Board (TSB) and several working
157groups. In February 2006 a new MoU came into effect and CB and TSB
158were renamed to Oversight Board (OB) and Steering Board (SB)
159respectively.
160</para>
161
162<para>
163The collaboration now profits from the accumulated experience of
164many contributors to the field of Monte Carlo simulation of physics
165detectors and physical processes. While geographically distributed
166software development and large-scale object-oriented systems are no
167longer a novelty, Geant4, in terms of the size and scope of the
168code and the number of contributors, may well represent the largest
169and most ambitious project of its kind outside the corporate world.
170A clean overall problem decomposition has led to a clear
171hierarchical structure of domains. Every section of the Geant4
172software, which corresponds to a releasable component (library), is
173individually managed by a working group of experts. In addition,
174there is a working group for each of the activities: testing and
175quality assurance, software management and documentation
176management. A release coordinator heads each group. This consequent
177distribution of responsibility among a relative large number of
178people permits a support structure whereby outside users can
179address questions directly to the appropriate expert.
180</para>
181
182</chapter>
183
184
185<!-- ******************* Chapter **************************** -->
186<chapter id="chap.OverviewG4Func">
187<title>
188Overview of Geant4 Functionality
189</title>
190
191<para>
192The Geant4 class category diagram is shown in <xref linkend="fig.G4ClassCategory" />
193</para>
194
195<para>
196Categories at the bottom of the diagram are used by virtually
197all higher categories and provide the foundation of the
198toolkit.
199</para>
200
201<para>
202The
203
204<itemizedlist spacing="compact">
205  <listitem><para>
206    <emphasis>global</emphasis>
207  </para></listitem>
208</itemizedlist>
209
210category covers the system of units, constants, numerics and random
211number handling.
212</para>
213
214<para>
215The two categories:
216
217<itemizedlist spacing="compact">
218  <listitem><para>
219    <emphasis>materials</emphasis>
220  </para></listitem>
221  <listitem><para>
222    <emphasis>particles</emphasis>
223  </para></listitem>
224</itemizedlist>
225
226implement facilities necessary to describe the physical properties
227of particles and materials for the simulation of particle-matter
228interactions.
229</para>
230
231<para>
232The
233
234<itemizedlist spacing="compact">
235  <listitem><para>
236    <emphasis>geometry</emphasis>
237  </para></listitem>
238</itemizedlist>
239
240module offers the ability to describe a geometrical structure and
241propagate particles efficiently through it.
242</para>
243
244<figure id="fig.G4ClassCategory">
245<title>
246Geant4 class categories
247</title>
248
249<mediaobject>
250  <imageobject role="fo">
251    <imagedata fileref="./AllResources/Fundamentals/classCategory.jpg"
252               format="JPG" contentwidth="7.0cm" align="center" />
253  </imageobject>
254  <imageobject role="html">
255    <imagedata fileref="./AllResources/Fundamentals/classCategory.jpg"
256               format="JPG" align="center" />
257  </imageobject>
258</mediaobject>
259</figure>
260
261<para>
262Above these reside categories required to describe the tracking
263of particles and the physical processes they undergo. The
264
265<itemizedlist spacing="compact">
266  <listitem><para>
267    <emphasis>track</emphasis>
268  </para></listitem>
269</itemizedlist>
270
271category contains classes for tracks and steps, used by the
272
273<itemizedlist spacing="compact">
274  <listitem><para>
275    <emphasis>processes</emphasis>
276  </para></listitem>
277</itemizedlist>
278
279category, which contains implementations of models of physical
280interactions: electromagnetic interactions of leptons, photons,
281hadrons and ions, and hadronic interactions.
282</para>
283
284<para>
285All processes are invoked by the
286
287<itemizedlist spacing="compact">
288  <listitem><para>
289    <emphasis>tracking</emphasis>
290  </para></listitem>
291</itemizedlist>
292
293category, which manages their contribution to the evolution of a
294track's state and provides information in sensitive volumes for
295hits and digitization.
296</para>
297
298<para>
299Above these the
300
301<itemizedlist spacing="compact">
302  <listitem><para>
303    <emphasis>event</emphasis>
304  </para></listitem>
305</itemizedlist>
306
307category manages events in terms of their tracks and the
308
309<itemizedlist spacing="compact">
310  <listitem><para>
311    <emphasis>run</emphasis>
312  </para></listitem>
313</itemizedlist>
314
315category manages collections of events that share a common beam and
316detector implementation. A
317
318<itemizedlist spacing="compact">
319  <listitem><para>
320    <emphasis>readout</emphasis>
321  </para></listitem>
322</itemizedlist>
323
324category allows the handling of pile-up.
325</para>
326
327<para>
328Finally capabilities that use all of these categories and
329connect to facilities outside the toolkit through abstract
330interfaces, provide <emphasis>visualization</emphasis>,
331<emphasis>persistency</emphasis> and user
332<emphasis>interface</emphasis> capabilities.
333</para>
334
335</chapter>
336
337
338<!-- ******************* Chapter **************************** -->
339<chapter id="chap.G4UserSupport">
340<title>
341Geant4 User Support
342</title>
343
344<para>
345The collaboration offers support for Geant4, providing
346
347<itemizedlist spacing="compact">
348  <listitem><para>
349    assistance with problems relating to the code,
350  </para></listitem>
351  <listitem><para>
352    consultation on using the toolkit, and
353  </para></listitem>
354  <listitem><para>
355    response to enhancement requests.
356  </para></listitem>
357</itemizedlist>
358</para>
359
360<para>
361A user can also expect assistance in
362
363<itemizedlist spacing="compact">
364  <listitem><para>
365    investigating aberrant results.
366  </para></listitem>
367</itemizedlist>
368</para>
369
370<para>
371Users of the software who encounter a problem in running the code
372can use an
373
374<itemizedlist spacing="compact">
375  <listitem><para>
376    Internet-based
377    <ulink url="http://geant4.web.cern.ch/geant4/problemreport/">
378    problem reporting system
379    </ulink>.
380  </para></listitem>
381</itemizedlist>
382</para>
383
384<para>
385The system is open to all users. It is set up automatically to
386assign problem reports to the responsible person according to the
387category affected. The contact person may then respond directly or
388forward it to a colleague. This system is a customized version of
389the open source reporting tool
390<ulink url="https://bugzilla.mozilla.org/">
391Bugzilla
392</ulink>
393.
394Besides routing the
395problem to specialists, it tracks and documents the responses until
396the problem is resolved.
397</para>
398
399<para>
400New requirements, such as requests for new functionality, are
401presented to and decided by the Steering Board (SB). The
402SB sets the priorities and agrees on time-scales for the
403fulfillment of new requirements. Such support is guaranteed to
404collaboration members, while requests from non-members are handled
405on a <emphasis>best effort</emphasis> basis.
406</para>
407
408<para>
409For each member organisation a contact person
410<ulink url="http://geant4.web.cern.ch/geant4/collaboration/SteeringBoard.shtml">
411(SB member)
412</ulink>
413has been designated who acts as a first reference for
414Geant4 users in that locality, which may include affiliated
415institutions, user groups, and others in the same geographic area.
416The contact person will respond to enquiries, help resolve simple
417problems, and forward more specialized queries to the relevant
418expert(s).
419</para>
420
421<para>
422Beyond that, a list of frequently asked questions
423<ulink url="http://geant4.web.cern.ch/geant4/support/faq.shtml">
424(FAQs)
425</ulink>
426,
427and an internet-based
428<ulink url="http://geant4-hn.slac.stanford.edu:5090/Geant4-HyperNews/index">
429user forum
430</ulink>
431complete the available Geant4 user support.
432</para>
433
434</chapter>
435
436
437<!-- ******************* Chapter **************************** -->
438<chapter id="sect.SoftwareKnowledge">
439<title>Software Knowledge Required to Use the Geant4 Toolkit
440</title>
441
442<para>
443In general, there are three types of users:
444
445<itemizedlist spacing="compact">
446   <listitem><para>
447     the <emphasis role="bold">end user</emphasis>,
448   </para></listitem>
449   <listitem><para>
450     the <emphasis role="bold">application programmer</emphasis>,
451   </para></listitem>
452</itemizedlist>
453
454and for large simulation tasks:
455
456<itemizedlist spacing="compact">
457  <listitem><para>
458    the <emphasis role="bold">framework provider</emphasis>.
459  </para></listitem>
460</itemizedlist>
461</para>
462
463<para>
464The <emphasis role="bold">end user</emphasis> runs the simulation
465program by controlling run time parameters. The interface with the
466program may be a graphical user interface, an interactive command
467line interface, or the macro-based system for batch. The end user
468needs a basic knowledge of how to control the program flow but does
469not necessarily have to know object-oriented programming or C++.
470</para>
471
472<para>
473The <emphasis role="bold">application programmer</emphasis> is central
474to any simulation task. A firm knowledge of C++ is required to implement
475code in user action classes to specify, at a minimum, the detector description,
476the relevant particles and physics processes, and the initial event
477kinematics. A manual for the application programmer is found in the
478<ulink url="http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/index.html">
479User's Guide: For Application Developers
480</ulink>
481.
482</para>
483
484<para>
485Using standard components of Geant4, a
486<emphasis role="bold">framework provider</emphasis>
487would add interfaces to external tools, such as for example, to
488Computer Aided Design (CAD) programs, Object-Oriented Data Base
489Management Systems (ODBMS) and graphics systems. This requires the
490development of new classes overloading standard Geant4
491functionality and hence a solid understanding of object-oriented
492Programming. A manual for the framework provider is found in the
493<ulink url="http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForToolkitDeveloper/html/index.html">
494User's Guide: For Toolkit Developers
495</ulink>
496.
497</para>
498
499<para>
500<emphasis role="bold">References</emphasis>
501</para>
502
503<para>
504All user documentation can be found on the Geant4 homepage
505<ulink url="http://cern.ch/geant4">
506http://cern.ch/geant4
507</ulink>
508.
509</para>
510
511<para>
512References for Object-Oriented Technology:
513
514<itemizedlist spacing="compact">
515  <listitem><para>
516    Grady Booch, Object-Oriented Analysis and Design with
517    Applications The Benjamin/Cummings Publishing Co. Inc, 1994, ISBN
518    0-8053-5340-2
519  </para></listitem>
520  <listitem><para>
521    R.C.Martin, Designing Object-Oriented C++ Applications Using
522    The Booch Method, Prentice Hall 1995, ISBN 0-13-203837-4;
523  </para></listitem>
524  <listitem><para>
525    E. Gamma, et al., Design Patterns - Elements of Reusable
526    Object-Oriented Software, Addison Wesley 1995, ISBN
527    0-201-63361-2;
528  </para></listitem>
529</itemizedlist>
530</para>
531
532<para>
533References for C++:
534
535<itemizedlist spacing="compact">
536  <listitem><para>
537    B.Stroustrup, C++ Programming Language 3rd Edition, Addison
538    Wesley, ISBN: 0-201-88954-4
539  </para></listitem>
540  <listitem><para>I.Pohl, Object-Oriented Programming Using C++, 2nd Edition,
541    Addison Wesley, ISBN: 0-201-89550-1.
542  </para></listitem>
543</itemizedlist>
544</para>
545
546</chapter>
547
548
549<!-- ******************* Chapter **************************** -->
550<chapter id="sect.ComputingEnv">
551<title>
552Computing Environment Required by the Geant4 Toolkit
553</title>
554
555<para>
556The Geant4 toolkit is available for a variety of operating systems:
557
558<itemizedlist spacing="compact">
559  <listitem><para>
560    flavors of UNIX,
561  </para></listitem>
562  <listitem><para>
563    Linux,
564  </para></listitem>
565  <listitem><para>
566    and Windows systems.
567  </para></listitem>
568</itemizedlist>
569</para>
570
571<para>
572In order to link and build the program only two underlying software
573packages are mandatory:
574
575<itemizedlist spacing="compact">
576  <listitem><para>
577    CLHEP (Class Library of High Energy Physics) and the
578  </para></listitem>
579  <listitem><para>
580    STL (Standard Template Library for fundamental classes like C++
581    containers and strings).
582  </para></listitem>
583</itemizedlist>
584</para>
585
586<para>
587The Geant4 source code is available from the
588<ulink url="http://geant4.web.cern.ch/geant4/">
589Geant4 web pages
590</ulink>
591while CLHEP is available from the
592<ulink url="http://proj-clhep.web.cern.ch/proj-clhep/">
593CLHEP Home Page
594</ulink>
595.
596For details on setting up the computing environment see the
597<ulink url="http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/InstallationGuide/html/index.html">
598Installation Guide
599</ulink>
600.
601</para>
602
603</chapter>
Note: See TracBrowser for help on using the repository browser.