]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1995/10/24 10:20:06 cernlib | |
6 | * Geant | |
7 | * | |
8 | * | |
9 | #include "geant321/pilot.h" | |
10 | #if defined(CERNLIB_DOC) | |
11 | *CMZ : 3.21/02 29/03/94 15.41.19 by S.Giani | |
12 | *-- Author : | |
13 | * | |
14 | ************************************************************************ | |
15 | * * | |
16 | * * | |
17 | * Introduction to GEANT3 * | |
18 | * ---------------------- * | |
19 | * * | |
20 | * * | |
21 | * GEANT3 APPLICATIONS * | |
22 | * * | |
23 | * The principal applications of GEANT3 are: * | |
24 | * * | |
25 | * - The tracking of particles through an experimental setup for * | |
26 | * acceptance studies or simulation of detector response, and * | |
27 | * - the graphical representation of the setup and of the particle * | |
28 | * trajectories. * | |
29 | * * | |
30 | * It is of course desirable and very instructive to combine the two * | |
31 | * interactively since the observation of what happens to a particle * | |
32 | * during the tracking may underline the weaknesses of the setup and * | |
33 | * makes the debugging easier. In view of these applications, the * | |
34 | * GEANT3 system allows: * | |
35 | * * | |
36 | * - to describe an experimental setup in a rather efficient and * | |
37 | * simple way. The setup is represented by a structure of * | |
38 | * geometrical VOLUMEs. Each volume is given a 'MEDIUM' number by * | |
39 | * the user. Different volumes may have the same medium number * | |
40 | * [GEOM]. A medium is defined by a set of parameters, the * | |
41 | * so-called TRACKING MEDIUM parameters, which include reference to * | |
42 | * the MATERIAL filling the volume [CONS]. * | |
43 | * - to generate simulated events from standard Monte Carlo * | |
44 | * generators [KINE]. * | |
45 | * - to control the transport of particles through the various * | |
46 | * regions of the setup, taking into account the geometrical volume * | |
47 | * boundaries and all physical effects due to the nature of the * | |
48 | * particles themselves, to their interactions with the matter and * | |
49 | * to the magnetic field [TRAK, PHYS]. * | |
50 | * - to record the elements of the particle trajectories and the * | |
51 | * response from the sensitive detectors [HITS], * | |
52 | * - to visualize either interactively or in batch the detectors and * | |
53 | * the particle trajectories [DRAW, XINT]. * | |
54 | * * | |
55 | * Part of the subroutines available in GEANT3 are integrated into * | |
56 | * program segments which perform these tasks. * | |
57 | * The program segments may contain 'dummy' and 'default' user * | |
58 | * subroutines called whenever application dependent actions are * | |
59 | * expected. * | |
60 | * Other subroutines provide tools either to perform simple * | |
61 | * functions (control print, debug, I/O, etc.) or to implement the * | |
62 | * operations required for most of the applications (description of * | |
63 | * the geometrical setup, handling of detector responses,etc.). * | |
64 | * It is the responsibility of the user to assemble the appropriate * | |
65 | * program segments and tools into an executable program, to code the * | |
66 | * relevant user subroutines, to provide the data describing the * | |
67 | * experimental environment and to submit the appropriate data cards * | |
68 | * which control the execution of the program. The section BASE of * | |
69 | * the User's Guide gives the information necessary to understand how * | |
70 | * to do this job. * | |
71 | * * | |
72 | * Note: as a general convention the names of the dummy or default * | |
73 | * user subroutines have GU or UG as first two letters and are * | |
74 | * printed in bold characters. * | |
75 | * * | |
76 | * EVENT SIMULATION FRAMEWORK * | |
77 | * * | |
78 | * The framework for event simulation is described in the following * | |
79 | * paragraphs to familiarize the reader with the areas where user * | |
80 | * interventions are expected. * | |
81 | * At the same time, the GEANT3 data structures are introduced. * | |
82 | * This last point is important as the coding to be provided by the * | |
83 | * user often consists of filling data structures, or extracting * | |
84 | * information from them, or saving them on output, making use of * | |
85 | * standard routines available in the system. * | |
86 | * A main program has to be provided by the user [BASE 100]. It * | |
87 | * allocates the dynamic memory for ZEBRA and HBOOK and gives control * | |
88 | * to the three phases of the run: * | |
89 | * * | |
90 | * - Initialisation * | |
91 | * - Event processing * | |
92 | * - Termination. * | |
93 | * * | |
94 | * INITIALISATION * | |
95 | * * | |
96 | * The initialisation phase is under the control of the user [BASE * | |
97 | * 100]. It consists of the following steps, most of them performed * | |
98 | * via calls to standard GEANT3 subroutines: * | |
99 | * * | |
100 | * - GINIT, to initialize the GEANT3 common blocks with default * | |
101 | * values which the user should be aware of [BASE 030, 110]. * | |
102 | * - GFFGO to read 'free format' data cards which can override some * | |
103 | * of the values defined in GINIT the default options [BASE 040, * | |
104 | * 110]. * | |
105 | * - GZINIT to initialize the dynamic core divisions, the link areas * | |
106 | * and the data structure JRUNG [BASE 110]. * | |
107 | * - GDINIT to initialize the drawing package [DRAW]. * | |
108 | * - GPART and auxiliaries, to generate the data structure JPART * | |
109 | * describing the standard particle properties [CONS]. * | |
110 | * - GMATE and auxiliaries, to generate the data structure JMATE * | |
111 | * describing the characteristics of the most commonly used * | |
112 | * MATERIALs [CONS]. * | |
113 | * - <USER> to define the geometry of the different components of the * | |
114 | * experimental setup [GEOM] and the tracking medium parameters * | |
115 | * [CONS,TRAK], and to generate the corresponding data structures * | |
116 | * JROTM, JVOLUM and JTMED. * | |
117 | * - <USER> to specify which elements of the geometrical setup should * | |
118 | * be considered as 'sensitive detectors', giving a 'response' when * | |
119 | * hit by a particle [HITS]. * | |
120 | * - GGCLOS to close the Geometry package (mandatory). * | |
121 | * - GBHSTA to book standard GEANT3 histograms as required by the * | |
122 | * user with the data card HSTA [BASE 040, 110]. * | |
123 | * - GPHYSI to compute energy loss and cross section tables and to * | |
124 | * store them in the data structure JMATE [CONS,PHYS]. * | |
125 | * * | |
126 | * EVENT PROCESSING * | |
127 | * * | |
128 | * The processing phase is triggered by a call to the subroutine GRUN * | |
129 | * which, for each event to be processed, gives control to the * | |
130 | * subroutines: * | |
131 | * * | |
132 | * - GTRIGI, to initialize the event processing and to create the * | |
133 | * Header bank JHEAD. * | |
134 | * - GTRIG to process the event. * | |
135 | * - GTRIGC to clean up the event division * | |
136 | * * | |
137 | * and checks that enough time is left for the next event [BASE 200]. * | |
138 | * The main steps of GTRIG consist of calls to the following user * | |
139 | * routines: * | |
140 | * * | |
141 | * - GUKINE generates the data structures JVERTX and JKINE describing * | |
142 | * the kinematics of the current event on input [KINE], or reads * | |
143 | * them [IOPA]. * | |
144 | * - GUTREV (calls GTREVE) controls the tracking for the whole event * | |
145 | * [TRAK]. Each particle is tracked in turn and when a sensitive * | |
146 | * detector is hit, the user may store any useful information in * | |
147 | * the data structure JHITS [HITS]. Before tracking the next * | |
148 | * particle, any secondary products generated by the current one, * | |
149 | * and stored by the user in the temporary data structure JSTAK, * | |
150 | * are processed in the same way. * | |
151 | * Simultaneously, the data structure JXYZ, containing the * | |
152 | * coordinates of space points along the tracks for the whole * | |
153 | * event, can be filled by the user [TRAK]. * | |
154 | * - GUDIGI simulates the detector responses for the whole event, * | |
155 | * making use of the information previously recorded in the data * | |
156 | * structure JHITS, and stores the results in the data structure * | |
157 | * JDIGI [HITS]. * | |
158 | * - GUOUT outputs the relevant data structures for the current event * | |
159 | * [IOPA]. * | |
160 | * * | |
161 | * Other user routines called during the tracking phase triggered by * | |
162 | * GTREVE should be mentioned for completeness: * | |
163 | * * | |
164 | * - The hadronic processes activated by default for the tracking of * | |
165 | * hadrons in GEANT3 are described by the program GHEISHA (file * | |
166 | * GEANH). In the subroutines GUPHAD and GUHADR [TRAK] the user * | |
167 | * may select, instead of GHEISHA, the program FLUKA (file GEANF). * | |
168 | * - After each tracking step of a given track in a given medium, * | |
169 | * control is given to the subroutine GUSTEP. From the information * | |
170 | * available in common blocks the user is able to take the * | |
171 | * appropriate action, such as storing a hit or transferring a * | |
172 | * secondary product either in the stack JSTAK or in the events * | |
173 | * structure JVERTX/JKINE. * | |
174 | * - The subroutine GUSWIM is called by various tracking routines to * | |
175 | * select the appropriate code for transport of the particle over * | |
176 | * the given tracking step. A default version is provided in the * | |
177 | * library for this routine which in normal cases need not to be * | |
178 | * provided by the user. * | |
179 | * - The magnetic field, unless constant with no X- or Y-component, * | |
180 | * has to be returned by the user subroutine GUFLD. * | |
181 | * * | |
182 | * TERMINATION * | |
183 | * * | |
184 | * The termination phase is under the control of the user [BASE * | |
185 | * 300]. For trivial applications it may simply consist of a call to * | |
186 | * the subroutine GLAST which computes and prints some statistical * | |
187 | * information (time per event, use of dynamic memory, etc.). * | |
188 | * * | |
189 | * * | |
190 | ************************************************************************ | |
191 | * * | |
192 | * * | |
193 | * Simplified Program Flow Chart * | |
194 | * ----------------------------- * | |
195 | * * | |
196 | * MAIN(user) * | |
197 | * | * | |
198 | * |-GZEBRA initialisation of ZEBRA system, dynamic core * | |
199 | * | allocation * | |
200 | * |-UGINIT (user) * | |
201 | * || * | |
202 | * ||- GINIT initialisation of GEANT3 variables * | |
203 | * ||- GFFGO interpretation of data cards * | |
204 | * ||- GZINIT initialisation of ZEBRA core divisions and link * | |
205 | * || areas * | |
206 | * ||- GPART creation of the 'particle' data structure JPART * | |
207 | * ||- GMATE creation of the 'material' data structure JMATE * | |
208 | * ||- <USER> description of the geometrical setup, of the * | |
209 | * || sensitive detectors and creation of data structures * | |
210 | * || JVOLUM, JTMED, JROTM, JSETS * | |
211 | * ||- GGCLOS close Geometry package * | |
212 | * ||- GPHYSI preparation of cross-sections and energy loss tables * | |
213 | * | for all used materials * | |
214 | * | * | |
215 | * |-GRUN (loop over events) * | |
216 | * || * | |
217 | * ||- GTRIGI initialisation for event processing * | |
218 | * ||- GTRIG event processing * | |
219 | * || | * | |
220 | * || |- GUKINE (user) generation (or input) of event initial * | |
221 | * || | kinematics * | |
222 | * || |- GUTREV (user) * | |
223 | * || | |- GTREVE (simplified flow for sequential tracking) * | |
224 | * || | |- GSSTAK store primary tracks in stack * | |
225 | * || | |- Loop over tracks * | |
226 | * || | |- GLTRAC prepare commons for tracking * | |
227 | * || | |- GMEDIA find current volume /tracking medium * | |
228 | * || | |- GUTRAK (user) * | |
229 | * || | |- GTRACK * | |
230 | * || | |- GTGAMA/GTELEC/... tracking of particle * | |
231 | * || | according to type * | |
232 | * || | |- compute physical step size * | |
233 | * || | |- GTNEXT compute geometrical step size * | |
234 | * || | |- propagate (GUSWIM..) * | |
235 | * || | |- test change of volume (GINVOL) * | |
236 | * || | |- GUSTEP (user) recording of hits in data * | |
237 | * || | structure JHITS and of space points * | |
238 | * || | in structure JXYZ * | |
239 | * || |- GUDIGI computation of digitisations and recording in * | |
240 | * || | structure JDIGI * | |
241 | * || |- GUOUT output of current event * | |
242 | * || * | |
243 | * ||- GTRIGC clearing of memory for next event * | |
244 | * | * | |
245 | * |-UGLAST (user) * | |
246 | * || * | |
247 | * ||- GLAST standard GEANT3 termination. * | |
248 | * | * | |
249 | * | * | |
250 | * STOP * | |
251 | * * | |
252 | * * | |
253 | ************************************************************************ | |
254 | ************************************************************************ | |
255 | * * | |
256 | * Overview of COMMON Blocks * | |
257 | * ------------------------- * | |
258 | * * | |
259 | * * | |
260 | * INTRODUCTION * | |
261 | * * | |
262 | * The communication between program segments of the GEANT3 system is * | |
263 | * ensured by data structures and by 'long range' variables in common * | |
264 | * blocks. In addition,within the program segments, the subroutines * | |
265 | * communicate with each other via explicit arguments and via the * | |
266 | * common block variables. * | |
267 | * The data structures are described in separate sections. Here, the * | |
268 | * main features of the common blocks used in GEANT3 are summarized, * | |
269 | * with special mention of the variables initialized in GINIT and of * | |
270 | * the possibility to override them via data cards [BASE040]. * | |
271 | * The labelled common blocks are accessible via Patchy/CMZ * | |
272 | * sequences identified by the name of the COMMON. They are defined * | |
273 | * in the Patch GCDES. * | |
274 | * * | |
275 | * Note: Unless otherwise specified the long range variables are * | |
276 | * initialized in GINIT. When not zero, default values are * | |
277 | * quoted between brackets. If the value may be modified via a * | |
278 | * standard data card the card keyword is also given between * | |
279 | * brackets. * | |
280 | * * | |
281 | * DYNAMIC CORE * | |
282 | * * | |
283 | * The GEANT3 data structures are stored in the common /GCBANK/ * | |
284 | * accessible via the following Patchy sequence. * | |
285 | * * | |
286 | *+KEEP,GCBANK * | |
287 | * PARAMETER (KWBANK=69000,KWWORK=5200) * | |
288 | * COMMON/GCBANK/NZEBRA,GVERSN,ZVERSN,IXSTOR,IXDIV,IXCONS,FENDQ(16) * | |
289 | * + ,LMAIN,LR1,WS(KWBANK) * | |
290 | * DIMENSION IQ(2),Q(2),LQ(8000),IWS(2) * | |
291 | * EQUIVALENCE (Q(1),IQ(1),LQ(9)),(LQ(1),LMAIN),(IWS(1),WS(1)) * | |
292 | * EQUIVALENCE (JCG,JGSTAT) * | |
293 | * COMMON/GCLINK/JDIGI ,JDRAW ,JHEAD ,JHITS ,JKINE ,JMATE ,JPART * | |
294 | * + ,JROTM ,JRUNG ,JSET ,JSTAK ,JGSTAT,JTMED ,JTRACK,JVERTX * | |
295 | * + ,JVOLUM,JXYZ ,JGPAR ,JGPAR2,JSKLT * | |
296 | * * | |
297 | * The /GCLINK/ variables are pointers to the GEANT3 data structures. * | |
298 | * They belong to a permanent area declared in GZINIT. The common * | |
299 | * /GCLINK/ alone may be accessed through the sequence GCLINK. * | |
300 | * * | |
301 | * OTHER LABELLED COMMON BLOCKS * | |
302 | * * | |
303 | * COMMON/GCCUTS/CUTGAM,CUTELE,CUTNEU,CUTHAD,CUTMUO,BCUTE,BCUTM) * | |
304 | * + ,DCUTE ,DCUTM ,PPCUTM,TOFMAX,GCUTS(5) * | |
305 | * C * | |
306 | * CUTGAM Kinetic energy cut for gammas (0.001, CUTS) * | |
307 | * CUTELE Kinetic energy cut for electrons (0.001, CUTS) * | |
308 | * CUTHAD Kinetic energy cut for hadrons (0.01, CUTS) * | |
309 | * CUTNEU Kinetic energy cut for neutral hadrons (0.01, CUTS) * | |
310 | * CUTMUO Kinetic energy cut for muons (0.01, CUTS) * | |
311 | * BCUTE Kinetic energy cut for electron Brems. (CUTGAM, CUTS) * | |
312 | * BCUTM Kinetic energy cut for muon Brems. (CUTGAM, CUTS) * | |
313 | * DCUTE Kinetic energy cut for electron delta-rays (CUTELE, CUTS) * | |
314 | * DCUTM Kinetic energy cut for muon delta-rays (CUTELE, CUTS) * | |
315 | * PPCUTM Kinetic energy cut for e+e- pair production by muons * | |
316 | * (.01, CUTS) * | |
317 | * TOFMAX Tracking cut on time of flight integrated from primary * | |
318 | * interaction time (1.E+10, CUTS) * | |
319 | * GCUTS For user applications (CUTS) * | |
320 | * * | |
321 | * Note: The cuts BCUTE, BCUTM and DCUTE, DCUTM are given, in GPHYSI, * | |
322 | * the respective default values CUTGAM and CUTELE. Only * | |
323 | * experienced users should make use of the facility offered by * | |
324 | * the data card CUTS to change BCUTE, DCUTE, BCUTM and DCUTM. * | |
325 | * * | |
326 | * COMMON /GCDRAW/ ..... * | |
327 | * see GEANG Pam file * | |
328 | * * | |
329 | * COMMON/GCFLAG/IDEBUG,IDEMIN,IDEMAX,ITEST,IDRUN,IDEVT,IEORUN * | |
330 | * + ,IEOTRI,IEVENT,ISWIT(10),IFINIT(20),NEVENT,NRNDM(2) * | |
331 | * COMMON/GCFLAX/BATCH, NOLOG * | |
332 | * LOGICAL BATCH, NOLOG * | |
333 | * C * | |
334 | * IDEBUG Flag set equal to 1 to activate debug if IEVENT (below) * | |
335 | * IDEMIN is greater or equal to IDEMIN * | |
336 | * IDEMAX and less or equal to IDEMAX (DEBU) * | |
337 | * ITEST Flag to request printing of IEVENT, IDEVT and NRNDM * | |
338 | * (below) every ITEST events (DEBU) * | |
339 | * IDRUN Current user run number (1, RUN) * | |
340 | * IDEVT Current user event number (RUN) * | |
341 | * IEORUN Flag to terminate current run if non zero * | |
342 | * IEOTRI Flag to abort current event if non zero * | |
343 | * IEVENT Current event sequence number (1) * | |
344 | * ISWIT Flags reserved for user in relation to debug (SWIT) * | |
345 | * IFINIT System flags to check initialisation of GEANT routines * | |
346 | * NEVENT Number of events to be processed (10000000,TRIG) * | |
347 | * NRNDM Initial value of random number seeds NRNDM(1), * | |
348 | * NRNDM(2). If NRNDM(2) is 0, the independent sequence * | |
349 | * NRNDM(1) is used. If NRNDM(1) is 0, the default sequence * | |
350 | * is used. (9876, 54321, RNDM) * | |
351 | * BATCH Flag set to .TRUE. if the program is running in * | |
352 | * batch. * | |
353 | * NOLOG Flag set to .TRUE. if the no logon file has been * | |
354 | * requested. * | |
355 | * * | |
356 | * COMMON/GCJLOC/NJLOC(2),JTM,JMA,JLOSS,JPROB,JMIXT,JPHOT,JANNI * | |
357 | * + ,JCOMP,JBREM,JPAIR,JDRAY,JPFIS,JMUNU,JRAYL * | |
358 | * + ,JMULOF,JCOEF,JRANG * | |
359 | * C * | |
360 | * For relocation of local pointers. Self-explanatory [CONS 199]. * | |
361 | * * | |
362 | * COMMON/GCKINE/IKINE,PKINE(10),ITRA,ISTAK,IVERT,IPART,ITRTYP * | |
363 | * + ,NAPART(5),AMASS,CHARGE,TLIFE,VERT(3),PVERT(4),IPAOLD * | |
364 | * C * | |
365 | * IKINE User flag(0, KINE) * | |
366 | * PKINE User array(1E10, KINE) * | |
367 | * ITRA Current track number * | |
368 | * ISTAK Current stack-track number * | |
369 | * IVERT Current vertex number * | |
370 | * IPART Current particle number * | |
371 | * ITRTYP Tracking type of current particle * | |
372 | * NAPART Name of current particle * | |
373 | * AMASS Mass of current particle * | |
374 | * CHARGE Charge of current particle * | |
375 | * TLIFE Life-time of current particle * | |
376 | * VERT Coordinates of origin vertex for current track * | |
377 | * PVERT Track kinematics at origin vertex (PVERT(4) no longer * | |
378 | * used) * | |
379 | * IPAOLD Particle number of the previous track. * | |
380 | * * | |
381 | * INTEGER MXGKIN * | |
382 | * PARAMETER (MXGKIN=100) * | |
383 | * COMMON/GCKING/KCASE,NGKINE,GKIN(5,MXGKIN), * | |
384 | * + TOFD(MXGKIN),IFLGK(MXGKIN) * | |
385 | * KCASE Mechanism having generated the secondary particles * | |
386 | * NGKINE Number of generated secondaries * | |
387 | * GKIN(1,I) Px of I-th secondary * | |
388 | * GKIN(2,I) Py " " * | |
389 | * GKIN(3,I) Pz " " * | |
390 | * GKIN(4,I) E " " * | |
391 | * GKIN(5,I) Particle number " " * | |
392 | * TOFD(I) Time delay introduced by the interaction. * | |
393 | * * | |
394 | * COMMON/GCLIST/NHSTA,NGET ,NSAVE,NSETS,NPRIN,NGEOM,NVIEW,NPLOT * | |
395 | * + ,NSTAT,LHSTA(20),LGET (20),LSAVE(20),LSETS(20),LPRIN(20) * | |
396 | * + ,LGEOM(20),LVIEW(20),LPLOT(20),LSTAT(20) * | |
397 | *C * | |
398 | * NHSTA Number of histograms declared on data card HSTA * | |
399 | * NGET Number of data structures declared on data card GET * | |
400 | * NSAVE Number of data structures declared on data card SAVE * | |
401 | * NSETS Number of items described on data card SETS * | |
402 | * NPRIN Number of items described on data card PRIN * | |
403 | * NGEOM Number of items described on data card GEOM * | |
404 | * NVIEW Number of items described on data card VIEW * | |
405 | * NPLOT Number of items described on data card PLOT * | |
406 | * NSTAT Number of items described on data card STAT * | |
407 | * LHSTA,...,LSTAT Corresponding user lists of items (HSTA,...,STAT) * | |
408 | * * | |
409 | * See examples of utilisation of the user lists in GEANT3 examples * | |
410 | * in GEANX file. LSTAT(1) is reserved by the system for volume * | |
411 | * statistics. * | |
412 | * * | |
413 | * COMMON/GCMATE/NMAT,NAMATE(5),A,Z,DENS,RADL,ABSL * | |
414 | * C * | |
415 | * NMAT Current material number * | |
416 | * NAMATE Name of current material * | |
417 | * A Atomic weight of current material * | |
418 | * Z Atomic number of current material * | |
419 | * DENS Density of current material * | |
420 | * RADL Radiation length of current material * | |
421 | * ABSL Absorption length of current material * | |
422 | * * | |
423 | * COMMON/GCMULO/SINMUL(101),COSMUL(101),SQRMUL(101),OMCMOL,CHCMOL * | |
424 | * + ,EKMIN,EKMAX,NEKBIN,NEK1,EKINV,GEKA,GEKB,EKBIN(200),ELOW(200) * | |
425 | * * | |
426 | * Pre-computed quantities for multiple scattering and energy * | |
427 | * binning [CONS 199] * | |
428 | * SINMUL Not used * | |
429 | * COSMUL Not used * | |
430 | * SQRMUL Not used * | |
431 | * OMCMOL Constant Omega for Moliere scattering * | |
432 | * CHCMOL Constant for Moliere scattering * | |
433 | * EKMIN Lower edge for the energy range (1E-5, ERAN) * | |
434 | * EKMAX Upper edge for the energy range (1E+4, ERAN) * | |
435 | * NEKBIN Number of energy bins to be used (90, ERAN) * | |
436 | * NEK1 Number of energy bins to be used + 1 * | |
437 | * EKINV \ * | |
438 | * GEKA >Constants for the energy binning * | |
439 | * GEKB / * | |
440 | * EKBIN Lower edges of energy bins * | |
441 | * ELOW Lower edges of logarithm of energy bins * | |
442 | * * | |
443 | * COMMON/GCNUM/NMATE ,NVOLUM,NROTM,NTMED,NTMULT,NTRACK,NPART * | |
444 | * + ,NSTMAX,NVERTX,NHEAD,NBIT * | |
445 | * COMMON /GCNUMX/ NALIVE,NTMSTO * | |
446 | * C * | |
447 | * NMATE Number of Materials * | |
448 | * NVOLUM Number of Volumes * | |
449 | * NROTM Number of Rotation matrices * | |
450 | * NTMED Number of Tracking media * | |
451 | * NTMULT Number of tracks processed in current event (including * | |
452 | * secondaries), reset to 0 for each event * | |
453 | * NTRACK Number of tracks in JKINE banks for current event * | |
454 | * NPART Number of Particle banks * | |
455 | * NSTMAX Maximum number of tracks in stack JSTAK for current * | |
456 | * event, reset to 0 for each event * | |
457 | * NVERTX Number of Vertices in JVERTX banks for current event * | |
458 | * NHEAD Number of data words in the JHEAD bank (10) * | |
459 | * NBIT Number of bits per word (initialized in GINIT via FFINIT * | |
460 | * NALIVE Internal counter used for parallel tracking * | |
461 | * NTMSTO Internal counter used for parallel tracking * | |
462 | * * | |
463 | **KEEP,GCONSP * | |
464 | * DOUBLE PRECISION PI,TWOPI,PIBY2,DEGRAD,RADDEG,CLIGHT,BIG,EMASS * | |
465 | * DOUBLE PRECISION EMMU,PMASS,AVO * | |
466 | *C * | |
467 | * PARAMETER (PI=3.14159265358979324) * | |
468 | * PARAMETER (TWOPI=6.28318530717958648) * | |
469 | * PARAMETER (PIBY2=1.57079632679489662) * | |
470 | * PARAMETER (DEGRAD=0.0174532925199432958) * | |
471 | * PARAMETER (RADDEG=57.2957795130823209) * | |
472 | * PARAMETER (CLIGHT=29979245800.) * | |
473 | * PARAMETER (BIG=10000000000.) * | |
474 | * PARAMETER (EMASS=0.0005109990615) * | |
475 | * PARAMETER (EMMU=0.105658387) * | |
476 | * PARAMETER (PMASS=0.9382723128) * | |
477 | * PARAMETER (AVO=0.60221367) * | |
478 | * * | |
479 | * PI Number PI * | |
480 | * TWOPI (2.*PI) * | |
481 | * PIBY2 (PI/2.) * | |
482 | * DEGRAD Degree to radian conversion factor (PI/180.) * | |
483 | * RADDEG Radian to degree conversion factor (180./PI) * | |
484 | * CLIGHT Light velocity * | |
485 | * BIG Arbitrary large number * | |
486 | * EMASS Electron mass * | |
487 | * EMMU Muon mass * | |
488 | * PMASS Proton mass * | |
489 | * AVO Avogadro Number * 1E-24 * | |
490 | * * | |
491 | * Control of Geometry optimisation * | |
492 | * COMMON/GCOPTI/IOPTIM * | |
493 | * IOPTIM -1 = No optimisation at all. GSORD calls disabled * | |
494 | * 0 = No optimisation. Only user calls to GSORD kept * | |
495 | * 1 = All non-ordered volumes are ordered along the best axis* | |
496 | * 2 = All volumes are ordered along the best axis * | |
497 | * * | |
498 | * Control of physics processes. * | |
499 | * COMMON/GCPHYS/IPAIR,SPAIR,SLPAIR,ZINTPA,STEPPA * | |
500 | * + ,ICOMP,SCOMP,SLCOMP,ZINTCO,STEPCO * | |
501 | * + ,IPHOT,SPHOT,SLPHOT,ZINTPH,STEPPH * | |
502 | * + ,IPFIS,SPFIS,SLPFIS,ZINTPF,STEPPF * | |
503 | * + ,IDRAY,SDRAY,SLDRAY,ZINTDR,STEPDR * | |
504 | * + ,IANNI,SANNI,SLANNI,ZINTAN,STEPAN * | |
505 | * + ,IBREM,SBREM,SLBREM,ZINTBR,STEPBR * | |
506 | * + ,IHADR,SHADR,SLHADR,ZINTHA,STEPHA * | |
507 | * + ,IMUNU,SMUNU,SLMUNU,ZINTMU,STEPMU * | |
508 | * + ,IDCAY,SDCAY,SLIFE ,SUMLIF,DPHYS1 * | |
509 | * + ,ILOSS,SLOSS,SOLOSS,STLOSS,DPHYS2 * | |
510 | * + ,IMULS,SMULS,SOMULS,STMULS,DPHYS3 * | |
511 | * + ,IRAYL,SRAYL,SLRAYL,ZINTRA,STEPRA * | |
512 | * * * | |
513 | * IPAIR Controls pair production process (1,PAIR) * | |
514 | * 0 = no pair production * | |
515 | * 1 = pair production with generation of secondaries * | |
516 | * 2 = same without generation of secondaries * | |
517 | * ICOMP Controls Compton scattering process (1,COMP) * | |
518 | * 0 = no Compton scattering * | |
519 | * 1 = Compton scattering with generation of secondaries * | |
520 | * 2 = same without generation of secondaries * | |
521 | * IPHOT Controls photo-electric effect process (1,PHOT) * | |
522 | * 0 = no photo-electric effect * | |
523 | * 1 = photo-electric effect with generation of secondaries * | |
524 | * 2 = same without generation of secondaries * | |
525 | * IPFIS Controls photofission process (0,PFIS) * | |
526 | * 0 = no photofission * | |
527 | * 1 = photofission with generation of secondaries * | |
528 | * 2 = same without generation of secondaries * | |
529 | * IDRAY Controls delta rays process (1,DRAY) * | |
530 | * 0 = no delta rays effect * | |
531 | * 1 = delta rays with generation of secondaries * | |
532 | * 2 = same without generation of secondaries * | |
533 | * IANNI Controls positron annihilation process (1,ANNI) * | |
534 | * 0 = no positron annihilation effect * | |
535 | * 1 = positron annihilation with generation of secondaries * | |
536 | * 2 = same without generation of secondaries * | |
537 | * IBREM Controls Bremsstrahlung process (1,BREM) * | |
538 | * 0 = no Bremsstrahlung effect * | |
539 | * 1 = Bremsstrahlung with generation of secondaries * | |
540 | * 2 = same without generation of secondaries * | |
541 | * IHADR Controls hadron interactions process (1,HADR) * | |
542 | * 0 = no hadron interactions effect * | |
543 | * 1 = hadron interactions with generation of secondaries * | |
544 | * 2 = same without generation of secondaries * | |
545 | * IMUNU Controls muon nuclear interaction process (0,MUNU) * | |
546 | * 0 = no muon nuclear interaction effect * | |
547 | * 1 = muon nuclear interaction with generation of secondaries* | |
548 | * 2 = same without generation of secondaries * | |
549 | * IDCAY Controls decay process (1,DCAY) * | |
550 | * 0 = no decay effect * | |
551 | * 1 = decay with generation of secondaries * | |
552 | * 2 = same without generation of secondaries * | |
553 | * ILOSS Controls energy loss process (2,LOSS) * | |
554 | * 0 = no energy loss effect * | |
555 | * 1 = delta ray and reduced Landau fluctuations * | |
556 | * 2 = full Landau fluctuations and no delta rays * | |
557 | * 3 = same as 1 * | |
558 | * 4 = average Energy loss and no fluctuations * | |
559 | * IMULS Controls multiple scattering (1,MULS) * | |
560 | * 1 = Moliere or Coulomb scattering * | |
561 | * 2 = Moliere or Coulomb scattering * | |
562 | * 3 = Gaussian scattering * | |
563 | * IRAYL 0 = No Rayleigh scattering * | |
564 | * 1 = Rayleigh scattering * | |
565 | * * | |
566 | * COMMON/GCPOLY/IZSEC,IPSEC * | |
567 | * C * | |
568 | * Internal flags for polygon and polycone shapes. See GEANG file. * | |
569 | * * | |
570 | * COMMON/GCPUSH/NCVERT,NCKINE,NCJXYZ,NPVERT,NPKINE,NPJXYZ * | |
571 | * C * | |
572 | * NCVERT Initial size of mother bank JVERTX (5) * | |
573 | * NCKINE Initial size of mother bank JKINE (50) * | |
574 | * NCJXYZ Initial size of mother bank JXYZ (50) * | |
575 | * NPVERT Increment for size of mother bank JVERTX (5) * | |
576 | * NPKINE Increment for size of mother bank JKINE (10) * | |
577 | * NPJXYZ Increment for size of mother bank JXYZ (10) * | |
578 | * * | |
579 | * COMMON/GCSETS/IHSET,IHDET,ISET,IDET,IDTYPE,NVNAME,NUMBV(20) * | |
580 | * C * | |
581 | * IHSET Set identifier * | |
582 | * IHDET Detector identifier * | |
583 | * ISET Position of set in bank JSET * | |
584 | * IDET Position of detector in bank JS=IB(JSET-IDET) * | |
585 | * IDTYPE User defined detector type * | |
586 | * NVNAME Number of elements in NUMBV * | |
587 | * NUMBV List of volume numbers to identify the detector * | |
588 | * * | |
589 | * PARAMETER (NWSTAK=12,NWINT=11,NWREAL=12,NWTRAC=NWINT+NWREAL+5) * | |
590 | * COMMON /GCSTAK/ NJTMAX, NJTMIN, NTSTKP, NTSTKS, NDBOOK, NDPUSH, * | |
591 | * + NJFREE, NJGARB, NJINVO, LINSAV(15), LMXSAV(15) * | |
592 | *C * | |
593 | * NTKSTP Primary allocation for stack JSTAK * | |
594 | * NTKSTS Secondary allocation for stack JSTAK * | |
595 | * NDBOOK local variable for control of stack size * | |
596 | * NDPUSH local variable for control of stack size * | |
597 | * (other variables used in parallel tracking only) * | |
598 | * * | |
599 | * COMMON/GCTIME/TIMINT,TIMEND,ITIME,IGDATE,IGTIME * | |
600 | * INTEGER ITIME,IGDATE,IGTIME * | |
601 | * REAL TIMINT,TIMEND * | |
602 | * C * | |
603 | * TIMINT Total time left after initialization (System, TIME) * | |
604 | * TIMEND Time required for program termination phase (1., TIME) * | |
605 | * ITIME Test on time left done every ITIME events (1, ITIME) * | |
606 | * IGDATE Date of the day YYMMDD integer (e.g. 920407) * | |
607 | * IGTIME Time of the day HHMM integer (e.g. 1425) * | |
608 | * * | |
609 | * COMMON/GCTMED/NUMED,NATMED(5),ISVOL,IFIELD,FIELDM,TMAXFD,STEMAX * | |
610 | * + ,DEEMAX,EPSIL,STMIN,CFIELD,PREC,IUPD,ISTPAR,NUMOLD * | |
611 | * NUMED Current tracking medium number * | |
612 | * NATMED Name of current tracking medium * | |
613 | * ISVOL Sensitive volume flag (if non zero) * | |
614 | * IFIELD Field map type (0 if no field) * | |
615 | * FIELDM Maximum field * | |
616 | * TMAXFD Maximum field turning angle in one step * | |
617 | * STEMAX Maximum step allowed * | |
618 | * DEEMAX Maximum energy loss gradient in one step * | |
619 | * EPSIL Boundary crossing accuracy * | |
620 | * STMIN Minimum step size by energy loss, multiple scattering * | |
621 | * or field * | |
622 | * CFIELD Constant for field step evaluation * | |
623 | * PREC Initial step for boundary crossing (0.1*EPSIL) * | |
624 | * IUDP 0 If medium change, (1 otherwise) * | |
625 | * ISTPAR 0 If standard tracking parameters * | |
626 | * NUMOLD Numed of the last medium. * | |
627 | * * | |
628 | * PARAMETER (MAXMEC=30) * | |
629 | * COMMON/GCTRAK/VECT(7),GETOT,GEKIN,VOUT(7),NMEC,LMEC(MAXMEC) * | |
630 | * + ,NAMEC(MAXMEC),NSTEP ,MAXNST,DESTEP,DESTEL,SAFETY,SLENG * | |
631 | * + ,STEP ,SNEXT ,SFIELD,TOFG ,GEKRAT,UPWGHT,IGNEXT,INWVOL * | |
632 | * + ,ISTOP ,IGAUTO,IEKBIN, ILOSL, IMULL,INGOTO,NLDOWN,NLEVIN * | |
633 | * + ,NLVSAV,ISTORY * | |
634 | * VECT Current track parameters (X,Y,Z,Px/P,Py/P,Pz/P,P) * | |
635 | * GETOT Current track total energy * | |
636 | * GEKIN Current track kinetic energy * | |
637 | * VOUT Local use * | |
638 | * NMEC Number of mechanisms for current step * | |
639 | * LMEC List of mechanism indices for current step * | |
640 | * NAMEC Mechanism names (See below) * | |
641 | * NSTEP Number of steps so far * | |
642 | * MAXNST Maximum number of steps allowed (default = 10000) * | |
643 | * DESTEP Total energy lost in current step * | |
644 | * DESTEL Continuous energy loss in current step * | |
645 | * SAFETY Overestimated distance to closest medium boundary * | |
646 | * SLENG Track length at current point * | |
647 | * STEP Size of current tracking step * | |
648 | * SNEXT Straight distance to next current medium boundary * | |
649 | * SFIELD Field turning angle step size evaluation * | |
650 | * TOFG Time of flight * | |
651 | * GEKRAT Interpolation factor in table ELOW * | |
652 | * UPWGHT User particle weight * | |
653 | * IGNEXT Flag set to 1 when SNEXT has been recomputed * | |
654 | * INWVOL Flag set to 1 when entering a new volume, * | |
655 | * 2 when leaving a volume and * | |
656 | * 3 when leaving the experimental setup. * | |
657 | * 0 otherwise 0 * | |
658 | * ISTOP Flag set to 1 when track looses its identity * | |
659 | * 2 when energy below cut * | |
660 | * IGAUTO Automatic computation of DEEMAX,STMIN,TMAXFD,STEMAX * | |
661 | * IEKBIN Current kinetic energy bin in table ELOW * | |
662 | * ILOSL Local value of ILOSS for current tracking medium * | |
663 | * IMULL Local value of IMULS for current tracking medium * | |
664 | * INGOTO Content number of limiting content when computing SNEXT * | |
665 | * NLDOWN Lowest level reached down the tree (parallel tracking only)* | |
666 | * NLEVIN Number of levels currently filled and valid in /GCVOLU/ * | |
667 | * NLVSAV Current level (parallel tracking only) * | |
668 | * ISTORY User flag for current track history (reset to 0 in GLTRAC) * | |
669 | * -------- * | |
670 | * NAMEC List of possible mechanisms for step size limitation * | |
671 | * filled in GINIT : * | |
672 | * DATA MEC/'NEXT','MULS','LOSS','FIEL','DCAY','PAIR','COMP','PHOT' * | |
673 | * + ,'BREM','DRAY','ANNI','HADR','ECOH','EVAP','FISS','ABSO' * | |
674 | * + ,'ANNH','CAPT','EINC','INHE','MUNU','TOFM','PFIS','SCUT' * | |
675 | * + ,'RAYL','PARA','PRED','LOOP','NULL','STOP'/ * | |
676 | * * * | |
677 | * * | |
678 | * COMMON/GCUNIT/LIN,LOUT,NUNITS,LUNITS(5) * | |
679 | * INTEGER LIN,LOUT,NUNITS,LUNITS * | |
680 | * COMMON/GCMAIL/CHMAIL * | |
681 | * CHARACTER*132 CHMAIL * | |
682 | * C * | |
683 | * LIN Input unit to read data cards * | |
684 | * LOUT Line printer output unit * | |
685 | * NUNITS Number of additional units * | |
686 | * LUNITS List of additional units. * | |
687 | * CHMAIL Internal string used for error messages * | |
688 | * LIN and LOUT are defined in GINIT through calls to the routine * | |
689 | * FFGET from the standard FFREAD package. NUNITS and LUNITS are * | |
690 | * reserved for user applications. * | |
691 | * * | |
692 | * COMMON /GCVOLU/ ...... * | |
693 | * see GEANG Pam file * | |
694 | * * | |
695 | * * | |
696 | * * | |
697 | ************************************************************************ | |
698 | * * | |
699 | * Summary of Data Cards * | |
700 | * --------------------- * | |
701 | * * | |
702 | * * | |
703 | * INTRODUCTION * | |
704 | * * | |
705 | * GEANT3 uses the standard FFREAD package to read 'free format' data * | |
706 | * cards in the routine GFFGO. The cards currently interpreted by * | |
707 | * GFFGO can be classified into four categories: * | |
708 | * * | |
709 | * - General control of the run. * | |
710 | * - Control of the physics processes. * | |
711 | * - Debug and I/O operations. * | |
712 | * - User applications. * | |
713 | * * | |
714 | * The data cards are listed below by category with the following * | |
715 | * information: * | |
716 | * * | |
717 | * - KEY, card keyword, any number of characters truncated to the * | |
718 | * first 4 * | |
719 | * - N, maximum expected number of variables NVAR, * | |
720 | * - T, TYPE of these variables (I=INTEGER, R=REAL or M=MIXED) * | |
721 | * * | |
722 | * for each variable in turn: * | |
723 | * * | |
724 | * - VAR.., FORTRAN name * | |
725 | * - Short description (more detail in BASE 030) * | |
726 | * - COMMON where it is stored, and * | |
727 | * - Default value from GINIT. * | |
728 | * * | |
729 | * When a card is decoded, the values entered by the user without * | |
730 | * explicit assignment are assigned to the variables in order. The * | |
731 | * number of values can be less than NVAR. In case of a MIXED type * | |
732 | * the values entered have to be in agreement with the default of the * | |
733 | * corresponding FORTRAN variable names. * | |
734 | * * | |
735 | * Example of data card: RUN 5 201 * | |
736 | * * | |
737 | * to preset the current run and event number to 5 and 201 * | |
738 | * respectively. * | |
739 | * In batch jobs there is no need for any special termination card * | |
740 | * and none of the cards mentioned below is mandatory. * | |
741 | * * | |
742 | * USER DEFINED DATA CARDS * | |
743 | * * | |
744 | * Before calling GFFGO the user may define private data cards * | |
745 | * through calls to FFKEY as follows: * | |
746 | * CALL FFKEY('KEY',VAR(1),NVAR,'TYPE') * | |
747 | * They will be interpreted by GFFGO in the same way as the standard * | |
748 | * cards. * | |
749 | * * | |
750 | * SUMMARY OF THE MOST IMPORTANT GEANT3 DATA CARDS * | |
751 | * * | |
752 | * KEY N T VAR.. Short description COMMON GINIT * | |
753 | * General control of the run: * | |
754 | * HSTA 20 M LHSTA Names of required histograms GCLIST 0 * | |
755 | * PATR 4 I NJTMAX Max number of tracks in parallel GCSTAK 0 * | |
756 | * tracking stack * | |
757 | * NJTMIN Number of tracks above which " 0 * | |
758 | * parallel tracking can be * | |
759 | * reactivated when frozen earlier * | |
760 | * NTSTKP Primary allocation for stack JSTAK " 500 * | |
761 | * NTSTKS Secondary ... (when parallel " 100 * | |
762 | * tracking used) * | |
763 | * RNDM 2 I NRNDM Initial random number seeds * | |
764 | * NRNDM(1) GCFLAG 9876 * | |
765 | * NRNDM(2) GCFLAG 54321 * | |
766 | * RNDM 2 I NRNDM Initial random number seeds GCFLAG 0 * | |
767 | * RUNG 2 I IDRUN User run number GCFLAG 1 * | |
768 | * IDEVT User event number GCFLAG 1 * | |
769 | * TIME 3 M TIMINT Time left after initialisation GCTIME System * | |
770 | * TIMEND Time required for termination GCTIME 1. * | |
771 | * ITIME Test every ITIME events GCTIME 1 * | |
772 | * TRIG 1 I NEVENT Number of events to process GCFLAG 1E7 * | |
773 | * Geometry optimization: * | |
774 | * OPTI 1 I IOPTIM Optimization level GCOPTI 1 * | |
775 | * SCAN process control: * | |
776 | * SCAN 8 M SCAN granularity and mode * | |
777 | * SCANFL Scan processing flag (Logical) GCSCAN FALSE * | |
778 | * NPHI Number of divisions in PHI GCSCAN 90 * | |
779 | * PHIMIN Minimum value of PHI GCSCAN 0. * | |
780 | * PHIMAX Maximum value of PHI GCSCAN 360. * | |
781 | * NTETA Number of divisions in TETA GCSCAN 90 * | |
782 | * TETMIN Minimum value of TETA GCSCAN 0. * | |
783 | * TETMAX Maximum value of TETA GCSCAN 180. * | |
784 | * MODTET Type of TETA division GCSCAN 1 * | |
785 | * SCAL 32 M SLIST List of scanned volumes GCSCAN 'XXXX' * | |
786 | * SCAP 6 R SCAN parameters * | |
787 | * VX SCAN vertex X coordinate GCSCAN 0.0 * | |
788 | * VY SCAN vertex Y coordinate GCSCAN 0.0 * | |
789 | * VZ SCAN vertex Z coordinate GCSCAN 0.0 * | |
790 | * FACTX0 Scale factor for SX0 GCSCAN 100. * | |
791 | * FACTL Scale factor for SL GCSCAN 1000. * | |
792 | * FACTR Scale factor for R GCSCAN 100. * | |
793 | * Control of physics processes: * | |
794 | * AUTO 1 I IGAUTO Automatic computation of STMIN GCTRAK 1 * | |
795 | * STEMAX,DEEMAX,TMAXFD * | |
796 | * 0 = Tracking media parameters * | |
797 | * taken from the argument list * | |
798 | * of GSTMED * | |
799 | * 1 = Tracking media parameters * | |
800 | * calculated by GEANT * | |
801 | * ANNI 1 I IANNI Annihilation flag GCPHYS 1 * | |
802 | * BREM 1 I IBREM Bremsstrahlung flag GCPHYS 1 * | |
803 | * COMP 1 I ICOMP Compton scattering flag GCPHYS 1 * | |
804 | * CUTS 15 R Kinetic energy cuts : * | |
805 | * CUTGAM " " for gammas GCCUTS 0.001 * | |
806 | * CUTELE " " for electrons GCCUTS 0.001 * | |
807 | * CUTHAD " " for charged hadrons GCCUTS 0.01 * | |
808 | * CUTNEU " " for neutral hadrons GCCUTS 0.01 * | |
809 | * CUTMUO " " for muons GCCUTS 0.01 * | |
810 | * BCUTE " " for electron brems. GCCUTS CUTGAM * | |
811 | * BCUTM " " for muon Brems. GCCUTS CUTGAM * | |
812 | * DCUTE " " for electron delta-rays GCCUTS CUTELE * | |
813 | * DCUTM " " for muon delta-rays CCUTS CUTELE * | |
814 | * PPCUTM " " for e+e- pairs by muons CCUTS 10 MeV * | |
815 | * TOFMAX Time of flight cut GCCUTS 1.E+10 * | |
816 | * GCUTS 5 user words GCCUTS 0. * | |
817 | * DCAY 1 I IDCAY Decay flag GCPHYS 1 * | |
818 | * DRAY 1 I IDRAY delta-rays flag GCPHYS 1 * | |
819 | * ERAN 3 M Cross section tables * | |
820 | * R EKMIN Minimum energy for the tables GCMULO 1E-5 * | |
821 | * R EKMAX Maximum energy for the tables GCMULO 1E+4 * | |
822 | * I NEKBIN Number of bins in the table GCMULO 90 * | |
823 | * HADR 1 I IHADR Hadronic process flag GCPHYS 1 * | |
824 | * LOSS 1 I ILOSS Energy loss flag CGPHYS 2 * | |
825 | * MULS 1 I IMULS Multiple scattering flag GCPHYS 1 * | |
826 | * MUNU 1 I IMUNU Muon nuclear interactions flag GCPHYS 0 * | |
827 | * PAIR 1 I IPAIR Pair production flag GCPHYS 1 * | |
828 | * PFIS 1 I IPFIS Photofission flag GCPHYS 0 * | |
829 | * PHOT 1 I IPHOT Photo-electric effect flag GCPHYS 1 * | |
830 | * RAYL 1 I IRAYL Rayleigh scattering flag GCPHYS 0 * | |
831 | * * | |
832 | * Debug and I/O operations: * | |
833 | * DEBU 3 M IDEMIN First event to debug GCFLAG 0 * | |
834 | * IDEMAX Last event to debug GCFLAG 0 * | |
835 | * ITEST Print control frequency GCFLAG 0 * | |
836 | * GET 20 M LGET Names of data structure to get GCLIST ' ' * | |
837 | * PRIN 20 M LPRIN User keywords to print data GCLIST ' ' * | |
838 | * structures * | |
839 | * SAVE 20 M LSAVE Names of data struct. to save GCLIST ' ' * | |
840 | * SWIT 10 I ISWIT User flags for debug or else GCFLAG 0 * | |
841 | * User applications: * | |
842 | * KINE 11 M IKINE User flag GCKINE 0 * | |
843 | * PKINE 10 user words GCKINE 1.E+10 * | |
844 | * SETS 20 M LSETS User words for detector sets GCLIST ' ' * | |
845 | * STAT 20 M LSTAT 1 system + 19 user words GCLIST ' ' * | |
846 | * PLOT 20 M LPLOT User words to control plots GCLIST ' ' * | |
847 | * GEOM 20 M LGEOM User words to control geometry GCLIST ' ' * | |
848 | * VIEW 20 M LVIEW User words to control View banks GCLIST ' ' * | |
849 | * * | |
850 | * * | |
851 | * * | |
852 | * * | |
853 | * * | |
854 | * * | |
855 | ************************************************************************ | |
856 | * * | |
857 | * The Reference Systems and dimensional Units * | |
858 | * ------------------------------------------- * | |
859 | * * | |
860 | * * | |
861 | * THE MASTER REFERENCE SYSTEM (MARS) * | |
862 | * * | |
863 | * The Master Reference System (MARS) is determined by the way the * | |
864 | * user represents the kinematical quantities. If the axes are * | |
865 | * labelled (X,Y,Z), then the point P(A,B,C) is represented by * | |
866 | * * | |
867 | * Y | * | |
868 | * | * P(A,B,C) * | |
869 | * | * X A on axis X * | |
870 | * | * B on axis Y * | |
871 | * | * C on axis Z * | |
872 | * | * * | |
873 | * | * * | |
874 | * | * * | |
875 | * | * * | |
876 | * | * * | |
877 | * | * | |
878 | * | * | |
879 | * ............................> * | |
880 | * Z * | |
881 | * The tracking is performed in the MAster Reference System. This * | |
882 | * implies that the arguments of the user magnetic field routine, * | |
883 | * space point coordinates and field components, are given in this * | |
884 | * system. * | |
885 | * * | |
886 | * THE LOCAL REFERENCE SYSTEMS (MRS AND DRS) * | |
887 | * * | |
888 | * As explained in GEOM 001, the experimental set-up is described by * | |
889 | * the definition of an 'initial MOTHER' volume inside which * | |
890 | * 'DAUGHTER' volumes are positioned. Other daughter volumes can be * | |
891 | * positioned inside these volumes which are promoted as mother * | |
892 | * volumes and so on, as russian dolls. * | |
893 | * This requires the definition of local reference systems, the * | |
894 | * Mother Reference Systems (MRS, Origin O.) and the Daughter * | |
895 | * Reference Systems (DRS, Origin O.). * | |
896 | * The local reference system of the 'initial mother' volume * | |
897 | * coincides with the MAster Reference System. * | |
898 | * The full description of a given detector is usually given in the * | |
899 | * local reference system of the associated volume. * | |
900 | * The transformation of a point from the MRS (V.) to the DRS (V.), * | |
901 | * at any level, requires the knowledge of a rotation matrix R and a * | |
902 | * translation vector T defined through the relation : * | |
903 | * ( V. ) = [ R ] ( V. - T ) * | |
904 | * The components of T are the projections of the vector O.O. onto * | |
905 | * the MRS axes. * | |
906 | * The rotation matrices are computed from the spherical angles of * | |
907 | * each of the axes of the daughter reference system (I, II, III) * | |
908 | * with respect to the mother reference system (1,2,3). * | |
909 | * The spherical angles THETA and PHI of a direction D are defined * | |
910 | * as follows : * | |
911 | * * | |
912 | * THETA is the angle formed by the axis 3 and D (range : 0 to 180 * | |
913 | * degrees) * | |
914 | * PHI is the angle formed by the axis 1 and the projection of D * | |
915 | * onto the plane defined by the axes 1 and 2 (range : 0 to * | |
916 | * 360 degrees) * | |
917 | * Examples are given in GEOM 200. * | |
918 | * The various rotation matrices required for a given set-up must be * | |
919 | * defined during the initialisation stage, usually in the user * | |
920 | * routine UGEOM. * | |
921 | * A serial number is assigned to each matrix [GEOM 200]. * | |
922 | * The translation parameters and the serial number of the rotation * | |
923 | * matrix are specified by the user when the volumes are positioned * | |
924 | * inside the set-up [GEOM 110]. * | |
925 | * * | |
926 | * THE DIMENSIONAL UNITS * | |
927 | * * | |
928 | * Unless otherwise specified, the following units are used * | |
929 | * throughout the program : * | |
930 | * * | |
931 | * - CENTIMETER, SECOND, KILOGAUSS, GEV, GEV/C, DEGREE * | |
932 | * * | |
933 | ************************************************************************ | |
934 | * * | |
935 | * Examples of MAIN Program and User Initialisation * | |
936 | * ------------------------------------------------ * | |
937 | * * | |
938 | * PROGRAM MAIN * | |
939 | * C * | |
940 | * PARAMETER (NG=100000,NH=10000) * | |
941 | * COMMON/PAWC/H(NH) * | |
942 | * COMMON/GCBANK/Q(NG) * | |
943 | * C * | |
944 | * C Allocate memory for ZEBRA and HBOOK * | |
945 | * CALL GZEBRA(NG) * | |
946 | * CALL HLIMIT(-NH) * | |
947 | * C * | |
948 | * C Initialize Graphics package * | |
949 | * CALL IGINIT(0) * | |
950 | * C Open metafile and define workstation type * | |
951 | * C (computer dependent) * | |
952 | * .... * | |
953 | * C * | |
954 | * C Initialisation phase * | |
955 | * CALL UGINIT * | |
956 | * C * | |
957 | * C Processing phase * | |
958 | * CALL GRUN * | |
959 | * C * | |
960 | * C Termination phase * | |
961 | * CALL UGLAST * | |
962 | * C * | |
963 | * END * | |
964 | * SUBROUTINE UGINIT * | |
965 | * C * | |
966 | * +SEQ,GCLIST * | |
967 | * C * | |
968 | * C Initialize GEANT variables * | |
969 | * CALL GINIT * | |
970 | * C * | |
971 | * C Read data cards * | |
972 | * CALL GFFGO * | |
973 | * C * | |
974 | * C Initialize data structures * | |
975 | * CALL GZINIT * | |
976 | * C * | |
977 | * C Initialize drawing package * | |
978 | * CALL GDINIT * | |
979 | * C * | |
980 | * C Open I/O buffers * | |
981 | * IF(NGET .GT.0)CALL GOPEN(1,'I',0,IER) * | |
982 | * IF(NSAVE.GT.0)CALL GOPEN(2,'O',0,IER) * | |
983 | * C * | |
984 | * C Fetch permanent data structures (if any) * | |
985 | * CALL GFIN(1,'INIT',1,IDENT,' ',IER) * | |
986 | * IF(IER.LT.0) THEN * | |
987 | * C * | |
988 | * C Define standard Particle and Material data * | |
989 | * CALL GPART * | |
990 | * CALL GMATE * | |
991 | * C * | |
992 | * C Define the geometrical set-up * | |
993 | * CALL 'user code' * | |
994 | * CALL GGCLOS * | |
995 | * C * | |
996 | * C Compute cross-section and energy loss tables * | |
997 | * CALL GPHYSI * | |
998 | * ENDIF * | |
999 | * C * | |
1000 | * C Initialize standard histograms * | |
1001 | * CALL GBHSTA * | |
1002 | * C * | |
1003 | * END * | |
1004 | * * | |
1005 | * * | |
1006 | * * | |
1007 | ************************************************************************ | |
1008 | * * | |
1009 | * The System Initialisation routines * | |
1010 | * ---------------------------------- * | |
1011 | * * | |
1012 | * Presets COMMON block variables to default values. Preprocessing * | |
1013 | * of various COMMON block variables. See 'Overview of COMMON * | |
1014 | * blocks' [BASE 030]. Reads a set of data cards with the FFREAD * | |
1015 | * package. See 'Summary of data cards' [BASE 040] GFFGO should be * | |
1016 | * called after GINIT. Allocates the dynamic core divisions. * | |
1017 | * Initialize the link areas and the data structure JRUNG [BASE 299]. * | |
1018 | * Initialize exotic bank formats. GZINIT should be called after * | |
1019 | * GFFGO. To be called before the user geometry routine if the user * | |
1020 | * wants to open VIEW banks there. Initializes any standard * | |
1021 | * histogram required by the user with the data record HSTA. * | |
1022 | * The following histogram keywords may be used : * | |
1023 | * TIME Time per event * | |
1024 | * SIZE Size of division LXDIV per event * | |
1025 | * MULT Total number of tracks per event * | |
1026 | * NTRA Number of 'long life' tracks per event * | |
1027 | * STAK Maximum stack size per event * | |
1028 | * * | |
1029 | * GBHSTA should be called after GFFGO. * | |
1030 | * * | |
1031 | * Steering routines for Event Processing * | |
1032 | * -------------------------------------- * | |
1033 | * * | |
1034 | * The following flow chart is only valid for the 'batch' execution * | |
1035 | * mode. For interactive applications, see section XINT. Main * | |
1036 | * routine to control a run of events * | |
1037 | * ......... * | |
1038 | * ...>| TIMEX| * | |
1039 | * | ......... * | |
1040 | * | Get time left (TIMINT) after * | |
1041 | * initialisation * | |
1042 | * | * | |
1043 | * ............................. * | |
1044 | * | ........... | * | |
1045 | * ... >| GTRIGI | | * | |
1046 | * | ........... | * | |
1047 | * | ........... | * | |
1048 | * ........ . |.. >| GTRIG | ......... . * | |
1049 | * | | | ......... . |loop on | * | |
1050 | * | GRUN |... | | | | * | |
1051 | * ........ . | ......... . | events | * | |
1052 | * |.. >| GTRIGC | ......... . * | |
1053 | * | ......... . . * | |
1054 | * | ................... | * | |
1055 | * ... >| check time left | | * | |
1056 | * | ................... | * | |
1057 | * ............................. * | |
1058 | * * | |
1059 | * Resets to 0 the flag IEOTRI in /GCFLAG/ and the counters NTRACK * | |
1060 | * and NVERTX in /GCNUM/. Sets the debug flag IDEBUG in /GCFLAG/ to * | |
1061 | * the value required for the current event. * | |
1062 | * Creates the Header bank for current event. * | |
1063 | * Prints the sequence number, the event number and the number * | |
1064 | * random generators, under control of the flag ITEST (data card * | |
1065 | * DEBU). * | |
1066 | * Steering routine to process one event (trigger) * | |
1067 | * * | |
1068 | * .......................... * | |
1069 | * | Generates kinematics, | * | |
1070 | * ... >| or read event GUKINE | * | |
1071 | * | .......................... * | |
1072 | * | ................ * | |
1073 | * | | Tracking/hits| * | |
1074 | * ........ . |.. >| GUTREV | * | |
1075 | * | GTRIG |.. >| .............. . * | |
1076 | * ........ . | .............. . * | |
1077 | * |.. >| * | |
1078 | * Digitisations | * | |
1079 | * | | GUDIGI | * | |
1080 | * | ................ * | |
1081 | * | ................ * | |
1082 | * | | Output event | * | |
1083 | * ... >| GUOUT | * | |
1084 | * ................ * | |
1085 | * The partition initialized in GTRIGI is cleared. The space used * | |
1086 | * by the current event may be used by the next one. * | |
1087 | * * | |
1088 | * The banks JRUNG and JHEAD * | |
1089 | * ------------------------- * | |
1090 | * * | |
1091 | * Run bank JRUNG: 1 user link, 30 data words * | |
1092 | * LQ(JRUNG-1) user link * | |
1093 | * IQ(JRUNG+1) IDRUN Run number * | |
1094 | * "" +2/10) Reserved for user applications * | |
1095 | * +11) creation date for 'INIT' data structures * | |
1096 | * +12) creation time for 'INIT' data structures * | |
1097 | * +13) creation data for 'KINE' * | |
1098 | * +14) creation time for 'KINE' * | |
1099 | * +15) creation data for 'HITS' * | |
1100 | * +16) creation time for 'HITS' * | |
1101 | * +17) creation data for 'DIGI' * | |
1102 | * +18) creation time for 'DIGI' * | |
1103 | * +19) Random number seed 1 * | |
1104 | * +20) Random number seed 2 * | |
1105 | * +21) GEANT version number when 'INIT' created * | |
1106 | * +22) ZEBRA version number when 'INIT' created * | |
1107 | * +23) GEANT version number when 'KINE' created * | |
1108 | * +24) ZEBRA version number when 'KINE' created * | |
1109 | * +25) GEANT version number when 'HITS' created * | |
1110 | * +26) ZEBRA version number when 'HITS' created * | |
1111 | * +27) GEANT version number when 'DIGI' created * | |
1112 | * +28) ZEBRA version number when 'DIGI' created * | |
1113 | * Header bank JHEAD: 1 user link, NHEAD(=10) data words * | |
1114 | * IQ(JHEAD+1) IDRUN Run number * | |
1115 | * "" +2) IDEVT Event number * | |
1116 | * "" +3) NRNDM(1) Random number seed 1 at beginning of event * | |
1117 | * "" +4) NRNDM(2) " " * | |
1118 | * "" +5/10) Reserved for user applications * | |
1119 | * * | |
1120 | ************************************************************************ | |
1121 | * * | |
1122 | * * | |
1123 | * Example of User Termination and related routines * | |
1124 | * ------------------------------------------------ * | |
1125 | * * | |
1126 | * SUBROUTINE UGLAST * | |
1127 | * C * | |
1128 | * +SEQ,GCLIST * | |
1129 | * C * | |
1130 | * C Call standard GEANT termination routine * | |
1131 | * CALL GLAST * | |
1132 | * C * | |
1133 | * C Close HIGZ files * | |
1134 | * CALL IGEND * | |
1135 | * C * | |
1136 | * C Close I/O buffers * | |
1137 | * IF(NGET.EQ.0.AND.NSAVE.EQ.0) GO TO 5 * | |
1138 | * CALL GCLOSE(0,IER) * | |
1139 | * C * | |
1140 | * C Print histograms * | |
1141 | * 5 CALL HISTDO * | |
1142 | * C * | |
1143 | * END * | |
1144 | * * | |
1145 | * * | |
1146 | ************************************************************************ | |
1147 | #endif |