| [474] | 1 | $Id: README,v 1.16 2005/11/22 16:11:04 maire Exp $
|
|---|
| 2 | -------------------------------------------------------------------
|
|---|
| 3 |
|
|---|
| 4 | =========================================================
|
|---|
| 5 | Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
|---|
| 6 | =========================================================
|
|---|
| 7 |
|
|---|
| 8 | ExampleN03
|
|---|
| 9 | ----------
|
|---|
| 10 |
|
|---|
| 11 | This example simulates a simple Sampling Calorimeter setup.
|
|---|
| 12 |
|
|---|
| 13 | 1- GEOMETRY DEFINITION
|
|---|
| 14 |
|
|---|
| 15 | The calorimeter is a box made of a given number of layers. A layer
|
|---|
| 16 | consists of an absorber plate and of a detection gap. The layer is
|
|---|
| 17 | replicated.
|
|---|
| 18 |
|
|---|
| 19 | Six parameters define the calorimeter :
|
|---|
| 20 | - the material of the absorber,
|
|---|
| 21 | - the thickness of an absorber plate,
|
|---|
| 22 | - the material of the detection gap,
|
|---|
| 23 | - the thickness of a gap,
|
|---|
| 24 | - the number of layers,
|
|---|
| 25 | - the transverse size of the calorimeter (the input face is a square).
|
|---|
| 26 |
|
|---|
| 27 | In addition a transverse uniform magnetic field can be applied.
|
|---|
| 28 |
|
|---|
| 29 | The default geometry is constructed in DetectorConstruction class,
|
|---|
| 30 | but all of the above parameters can be modified interactively via
|
|---|
| 31 | the commands defined in the DetectorMessenger class.
|
|---|
| 32 |
|
|---|
| 33 |
|
|---|
| 34 | |<----layer 0---------->|<----layer 1---------->|<----layer 2---------->|
|
|---|
| 35 | | | | |
|
|---|
| 36 | ==========================================================================
|
|---|
| 37 | || | || | || | ||
|
|---|
| 38 | || | || | || | ||
|
|---|
| 39 | || absorber | gap || absorber | gap || absorber | gap ||
|
|---|
| 40 | || | || | || | ||
|
|---|
| 41 | || | || | || | ||
|
|---|
| 42 | beam || | || | || | ||
|
|---|
| 43 | ======> || | || | || | ||
|
|---|
| 44 | || | || | || | ||
|
|---|
| 45 | || | || | || | ||
|
|---|
| 46 | || | || | || | ||
|
|---|
| 47 | || | || | || | ||
|
|---|
| 48 | || | || | || | ||
|
|---|
| 49 | ==========================================================================
|
|---|
| 50 |
|
|---|
| 51 | NB. The thickness of the absorber or of the gap can be set to zero
|
|---|
| 52 | (but not together), and the number of layers to 1. In this case we
|
|---|
| 53 | have a unique homogeneous block of matter, which looks like
|
|---|
| 54 | a bubble chamber rather than a calorimeter ...
|
|---|
| 55 | (see the macro of commands: newgeom.mac)
|
|---|
| 56 |
|
|---|
| 57 | 2- AN EVENT : THE PRIMARY GENERATOR
|
|---|
| 58 |
|
|---|
| 59 | The primary kinematic consists of a single particle which hits the
|
|---|
| 60 | calorimeter perpendicular to the input face. The type of the particle
|
|---|
| 61 | and its energy are set in the PrimaryGeneratorAction class, and can
|
|---|
| 62 | be changed via the G4 build-in commands of ParticleGun class (see
|
|---|
| 63 | the macros provided with this example).
|
|---|
| 64 |
|
|---|
| 65 | In addition one can choose randomly the impact point of the incident
|
|---|
| 66 | particle. The corresponding interactive command is built in
|
|---|
| 67 | PrimaryGeneratorMessenger class (see run2.mac).
|
|---|
| 68 |
|
|---|
| 69 | A RUN is a set of events.
|
|---|
| 70 |
|
|---|
| 71 |
|
|---|
| 72 | 3- VISUALIZATION
|
|---|
| 73 |
|
|---|
| 74 | The Visualization Manager is set in the main().
|
|---|
| 75 | The initialisation of the drawing is done via a set of /vis/ commands
|
|---|
| 76 | in the macro vis.mac. This macro is automatically read from
|
|---|
| 77 | the main in case of interactive running mode.
|
|---|
| 78 |
|
|---|
| 79 | By default, vis.mac opens a DAWNFILE, suitable for viewing in DAWN,
|
|---|
| 80 | and an OGLX for OpenGl.
|
|---|
| 81 | You can switch to other graphics systems by commenting out this line
|
|---|
| 82 | and instead uncommenting one of the other /vis/open statements, such as
|
|---|
| 83 | HepRepFile or HepRepXML.
|
|---|
| 84 |
|
|---|
| 85 | The DAWNFILE, HepRepFile and HepRepXML drivers are always available
|
|---|
| 86 | (since they require no external libraries), but the OGLIX driver
|
|---|
| 87 | requires:
|
|---|
| 88 | 1- the visualisation & interfaces categories have been compiled
|
|---|
| 89 | with the environment variable G4VIS_BUILD_OPENGLX_DRIVER.
|
|---|
| 90 | 2- exampleN03.cc has been compiled with G4VIS_USE_OPENGLX.
|
|---|
| 91 |
|
|---|
| 92 | The HepRepXML driver outputs a zip file that can be unzipped into
|
|---|
| 93 | several individual HepRep files, each viewable in WIRED.
|
|---|
| 94 |
|
|---|
| 95 | For more information on visualization, including information on how to
|
|---|
| 96 | install and run DAWN, OpenGL and WIRED, see the visualization tutorials
|
|---|
| 97 | on the Geant4 Workshop Tutorial CD available at:
|
|---|
| 98 | http://geant4.slac.stanford.edu/g4cd/Welcome.html
|
|---|
| 99 |
|
|---|
| 100 | The detector has a default view which is a longitudinal view of the
|
|---|
| 101 | calorimeter.
|
|---|
| 102 |
|
|---|
| 103 | The tracks are drawn at the end of event, and erased at the end of run.
|
|---|
| 104 | Optionaly one can choose to draw all particles, only the charged,
|
|---|
| 105 | or neutral or none. This command is build in EventActionMessenger class.
|
|---|
| 106 |
|
|---|
| 107 | Additional visualization tutorial macros are available in the visTutor
|
|---|
| 108 | subdirectory. They can be tried as:
|
|---|
| 109 | % $G4BINDIR/exampleN03
|
|---|
| 110 | idle > /control/execute visTutor/exN03VisX.mac
|
|---|
| 111 | For details, see comment lines described in the macro files.
|
|---|
| 112 | These macros are designed to help your understanding the User's Guide.
|
|---|
| 113 |
|
|---|
| 114 |
|
|---|
| 115 | 4- PHYSICS DEMO
|
|---|
| 116 |
|
|---|
| 117 | The particle's type and the physic processes which will be available
|
|---|
| 118 | in this example are set in PhysicsList class.
|
|---|
| 119 |
|
|---|
| 120 | In addition the build-in interactive command:
|
|---|
| 121 | /process/(in)activate processName
|
|---|
| 122 | allows to activate/inactivate the processes one by one.
|
|---|
| 123 | Then one can well visualize the processes one by one, especially
|
|---|
| 124 | in the bubble chamber setup with a transverse magnetic field.
|
|---|
| 125 | (see run2.mac and newgeom.mac)
|
|---|
| 126 |
|
|---|
| 127 | As a homework try to visualize a gamma conversion alone,
|
|---|
| 128 | or the effect of the multiple scattering.
|
|---|
| 129 |
|
|---|
| 130 | 5- RANDOM NUMBERS HANDLING
|
|---|
| 131 |
|
|---|
| 132 | CLHEP provides several random number engines. In this example the Ranecu
|
|---|
| 133 | engine is choosen at beginning of the main (exampleN03.cc).
|
|---|
| 134 |
|
|---|
| 135 | By default, G4RunManager does not save the rndm seed.
|
|---|
| 136 | To do so the user must set in BeginOfRunAction:
|
|---|
| 137 | G4RunManager::GetRunManager()->SetRandomNumberStore(true);
|
|---|
| 138 |
|
|---|
| 139 | Then the rndm seed is systematically saved at beginning of run
|
|---|
| 140 | (currentRun.rndm) and beginning of event (currentEvent.rndm)
|
|---|
| 141 | Therefore, in case of abnormal end, the seed of the last event processed
|
|---|
| 142 | is available in currentEvent.rndm
|
|---|
| 143 |
|
|---|
| 144 | Even in case of normal run processing, the user may wish to preserve the
|
|---|
| 145 | rndm seed of selected events. At any time in the event, put the
|
|---|
| 146 | following statement:
|
|---|
| 147 | if (condition) G4RunManager::GetRunManager()->rndmSaveThisEvent();
|
|---|
| 148 | currentEvent.rndm will be copied to runXXevntYY.rndm
|
|---|
| 149 | (see ExN03SteppingAction::UserSteppingAction() )
|
|---|
| 150 |
|
|---|
| 151 | To restart a run from a given rndm seed, use the UI command :
|
|---|
| 152 | /random/resetEngineFrom fileName
|
|---|
| 153 |
|
|---|
| 154 | The macro rndmSeed.mac shows how to save and reset the random number
|
|---|
| 155 | seed between runs, from UI commands.
|
|---|
| 156 |
|
|---|
| 157 | 6- USER INTERFACES
|
|---|
| 158 |
|
|---|
| 159 | The default command interface, called G4UIterminal, is done via
|
|---|
| 160 | standart cin/G4cout.
|
|---|
| 161 | On Linux and Sun-cc on can use a smarter command interface G4UItcsh.
|
|---|
| 162 | It is enough to set the environment variable G4UI_USE_TCSH
|
|---|
| 163 |
|
|---|
| 164 | On can use a Motif driven command interface (called G4UIXm) if:
|
|---|
| 165 | 1- interfaces category has been compiled with G4UI_BUILD_XM_SESSION
|
|---|
| 166 | 2- exampleN03.cc has been compiled with G4UI_USE_XM.
|
|---|
| 167 |
|
|---|
| 168 |
|
|---|
| 169 | 7- HOW TO START ?
|
|---|
| 170 |
|
|---|
| 171 | - compile and link to generate an executable
|
|---|
| 172 | % cd N03
|
|---|
| 173 | % gmake
|
|---|
| 174 |
|
|---|
| 175 | - execute N03 in 'batch' mode from macro files
|
|---|
| 176 | % exampleN03 run1.mac
|
|---|
| 177 |
|
|---|
| 178 | - execute N03 in 'interactive mode' with visualization
|
|---|
| 179 | % exampleN03
|
|---|
| 180 | ....
|
|---|
| 181 | Idle> ---> type your commands. For instance:
|
|---|
| 182 | Idle> /run/beamOn
|
|---|
| 183 | ....
|
|---|
| 184 | Idle> /run/beamOn 10
|
|---|
| 185 | ....
|
|---|
| 186 | Idle> /control/execute newgeom.mac
|
|---|
| 187 | ....
|
|---|
| 188 | Idle> exit
|
|---|
| 189 |
|
|---|
| 190 |
|
|---|
| 191 |
|
|---|