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 Geant4 - an Object-Oriented Toolkit for Simulation in HEP
4 =========================================================
5
6 ExampleP02
7 ----------
8
9 General description
10 -------------------
11
12 This example shows how to store in a binary file and how to
13 read back the geometry tree using the 'reflection' technique for
14 persistency provided by the Reflex tool also included in ROOT. The
15 Reflex tool allows to create a dictionary for the geometry classes,
16 making then possible to save the entire tree in a .root file.
17
18 The provided makefile produces the executable: 'exampleP02'. In order
19 to run it one has to specify the argument, either 'write' or
20 'read'. In the first case the geometry is instaciated in the standard
21 way and then saved into the root file (geo.root). In the second case,
22 the geometry is read from geo.root file.
23
24
25 Building and running the example
26 --------------------------------
27
28 This examples requires the ROOT toolkit of version 6 to be installed. The
29 provided CMake file checks for the existence of the package and its version.
30 Once the CMake configuration has been succesfully done, the executable
31 for this example should be built using make
32 (in your CMake build directory):
33
34 make
35
36 Remark on dictionary generation
37 -------------------------------
38
39 The dictionary is generated by ${ROOTSYS}/bin/genreflex
40 tool. The arguments that will be used by this tool are configured
41 in CMakeLists.txt using the CMake function REFLEX_GENERATE_DICTIONARY
42 provided by ROOT. They include the header file including headers for
43 all the classes we want to generate the dictionary, and additionally,
44 a so called selection file (xml). The role of this file is to
45 specify which classes we want to generate the dictionary for. The
46 selection file for our dictionary is in xml/ directory. Please refer
47 to genreflex manual for more details concerning the usage of that
48 tool.
49
50 Concerning generating dictionary for the Geant4 objects, there are
51 also two technical remarks that need to be made here.
52 The Reflex tool requires all the templated classes to be
53 explicitely used somewhere in the included header files in order for
54 the generation of the dictionary to be possible. For those templated
55 classes for which it is not the case, the problem can be very easily
56 solved by instaciating them in the headerfile which is given to
57 genreflex (see includes/ExP02Classes.hh) as argument.
58 The second remark is that there is an unfortunate clash of names as
59 far as G4String class is concerned. The header of G4String class
60 defines __G4String which happens to be the name of a variable used
61 within the generated dictionary code. The solution for that is to do
62 #undef __G4String in include/ExP02Classes.hh file.