Version:
[ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]
1 -------------------------------------------------------------------
2
3 =========================================================
4 Geant4 - an Object-Oriented Toolkit for Simulation in HEP
5 =========================================================
6
7 Example B1
8 -----------
9
10 This example demonstrates a very simple application where an energy
11 deposit is accounted in user actions and their associated objects
12 and a dose in a selected volume is calculated.
13
14
15 1- GEOMETRY DEFINITION
16
17 The geometry is constructed in the B1::DetectorConstruction class.
18 The setup consists of a an envelope of box shape containing two
19 volumes: a spherical cone and a trapezoid.
20
21 In this example we use some common materials materials for medical
22 applications. The envelope is made of water and the two inner volumes
23 are made from tissue and bone materials.
24 The materials are created with the help of the G4NistManager class,
25 which allows to build a material from the NIST database using their
26 names. All available materials can be found in the Geant4 User's Guide
27 for Application Developers, Appendix 10: Geant4 Materials Database.
28
29 2- PHYSICS LIST
30
31 The particle's type and the physic processes which will be available
32 in this example are set in the QBBC physics list. This physics list
33 requires data files for electromagnetic and hadronic processes.
34 See more on installation of the datasets in Geant4 Installation Guide,
35 Chapter 3.3: Note On Geant4 Datasets:
36 http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides
37 /InstallationGuide/html/ch03s03.html
38 The following datasets: G4LEDATA, G4LEVELGAMMADATA, G4NEUTRONXSDATA,
39 G4SAIDXSDATA and G4ENSDFSTATEDATA are mandatory for this example.
40
41 In addition the build-in interactive command:
42 /process/(in)activate processName
43 allows to activate/inactivate the processes one by one.
44
45 3- ACTION INITALIZATION
46
47 A newly introduced class, B1::ActionInitialization, instantiates and registers
48 to Geant4 kernel all user action classes.
49
50 While in sequential mode the action classes are instatiated just once,
51 via invoking the method:
52 B1::ActionInitialization::Build()
53 in multi-threading mode the same method is invoked for each thread worker
54 and so all user action classes are defined thread-local.
55
56 A run action class is instantiated both thread-local
57 and global that's why its instance is created also in the method
58 B1::ActionInitialization::BuildForMaster()
59 which is invoked only in multi-threading mode.
60
61 4- PRIMARY GENERATOR
62
63 The primary generator is defined in the B1::PrimaryGeneratorAction class.
64 The default kinematics is a 6 MeV gamma, randomly distributed in front
65 of the envelope across 80% of the transverse (X,Y) envelope size.
66 This default setting can be changed via the Geant4 built-in commands
67 of the G4ParticleGun class.
68
69 5- DETECTOR RESPONSE
70
71 This example demonstrates a simple scoring implemented directly
72 in the user action classes. Alternative ways of scoring via Geant4 classes
73 can be found in the other examples.
74
75 The energy deposited is collected step by step for a selected volume
76 in B1::SteppingAction and accumulated event by event in B1::EventAction.
77
78 At end of event, the value acummulated in B1::EventAction is added in B1::RunAction
79 and summed over the whole run (see B1::EventAction::EndOfevent()).
80
81 Total dose deposited is computed at B1::RunAction::EndOfRunAction(),
82 and printed together with informations about the primary particle.
83 In multi-threading mode the energy accumulated in G4Accumulable objects per
84 workers is merged to the master in B1::RunAction::EndOfRunAction() and the final
85 result is printed on the screen.
86
87 G4Parameter<G4double> type instead of G4double type is used for the B1::RunAction
88 data members in order to facilitate merging of the values accumulated on workers
89 to the master. Currently the accumulables have to be registered to G4AccumulablesManager
90 and G4AccumulablesManager::Merge() has to be called from the users code. This is planned
91 to be further simplified with a closer integration of G4Accumulable classes in
92 the Geant4 kernel next year.
93
94 An example of creating and computing new units (e.g., dose) is also shown
95 in the class constructor.
96
97 The following paragraphs are common to all basic examples
98
99 A- VISUALISATION
100
101 The visualization manager is set via the G4VisExecutive class
102 in the main() function in exampleB1.cc.
103 The initialisation of the drawing is done via a set of /vis/ commands
104 in the macro vis.mac. This macro is automatically read from
105 the main function when the example is used in interactive running mode.
106
107 By default, vis.mac opens an OpenGL viewer (/vis/open OGL).
108 The user can change the initial viewer by commenting out this line
109 and instead uncommenting one of the other /vis/open statements, such as
110 HepRepFile or DAWNFILE (which produce files that can be viewed with the
111 HepRApp and DAWN viewers, respectively). Note that one can always
112 open new viewers at any time from the command line. For example, if
113 you already have a view in, say, an OpenGL window with a name
114 "viewer-0", then
115 /vis/open DAWNFILE
116 then to get the same view
117 /vis/viewer/copyView viewer-0
118 or to get the same view *plus* scene-modifications
119 /vis/viewer/set/all viewer-0
120 then to see the result
121 /vis/viewer/flush
122
123 The DAWNFILE, HepRepFile drivers are always available
124 (since they require no external libraries), but the OGL driver requires
125 that the Geant4 libraries have been built with the OpenGL option.
126
127 From Release 9.6 the vis.mac macro in example B1 has additional commands
128 that demonstrate additional functionality of the vis system, such as
129 displaying text, axes, scales, date, logo and shows how to change
130 viewpoint and style. Consider copying these to other examples or
131 your application. To see even more commands use help or
132 ls or browse the available UI commands in the Application
133 Developers Guide, Section 7.1.
134
135 Since 11.1, the TSG visualization driver can also produce the "offscrean"
136 file output in png, jpeg, gl2ps formats without drawing on the screen.
137 It can be controlled via UI commands provided in '/vis/tsg' which are
138 demonstrated in the tsg_offscreen.mac macro in example B5.
139
140 For more information on visualization, including information on how to
141 install and run DAWN, OpenGL and HepRApp, see the visualization tutorials,
142 for example,
143 http://geant4.slac.stanford.edu/Presentations/vis/G4[VIS]Tutorial/G4[VIS]Tutorial.html
144 (where [VIS] can be replaced by DAWN, OpenGL and HepRApp)
145
146 The tracks are automatically drawn at the end of each event, accumulated
147 for all events and erased at the beginning of the next run.
148
149 B- USER INTERFACES
150
151 The user command interface is set via the G4UIExecutive class
152 in the main() function in exampleB1.cc
153
154 The selection of the user command interface is then done automatically
155 according to the Geant4 configuration or it can be done explicitly via
156 the third argument of the G4UIExecutive constructor (see exampleB4a.cc).
157
158 The gui.mac macros are provided in examples B2, B4 and B5. This macro
159 is automatically executed if Geant4 is built with any GUI session.
160 It is also possible to customise the icons menu bar which is
161 demonstrated in the icons.mac macro in example B5.
162
163 C- HOW TO RUN
164
165 - Execute exampleB1 in the 'interactive mode' with visualization:
166 % ./exampleB1
167 and type in the commands from run1.mac line by line:
168 Idle> /control/verbose 2
169 Idle> /tracking/verbose 1
170 Idle> /run/beamOn 10
171 Idle> ...
172 Idle> exit
173 or
174 Idle> /control/execute run1.mac
175 ....
176 Idle> exit
177
178 - Execute exampleB1 in the 'batch' mode from macro files
179 (without visualization)
180 % ./exampleB1 run2.mac
181 % ./exampleB1 exampleB1.in > exampleB1.out
182
183