Some rationalisation of the documentation. In particular pictures are all now in...
[u/mrichter/AliRoot.git] / html / Manual.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2 <HTML>
3 <HEAD>
4    <TITLE> cmz code description for GALICE </TITLE>
5    <!-- Changed by: Yiota Foka, 18-Mar-1999 -->
6    <META NAME="rating" CONTENT="General">
7    <META NAME="objecttype" CONTENT="Manual">
8    <META NAME="keywords" CONTENT="
9 software development, oo, object oriented">
10    <META NAME="description" CONTENT="
11 GALICE - Geant3 based Simulation Environment">
12    <META NAME="GENERATOR" CONTENT="
13 Mozilla/3.0Gold (X11; I; HP-UX B.10.20 9000/819) [Netscape]">
14  
15
16    <STYLE TYPE="text/css">
17      
18       H2 {                     color: red   ; font-size: 22pt               }
19       H3 {                     color: blue  ; font-size: 20pt               }
20       H4 {                     color: violet; font-size: 18pt               }
21       H5 {                     color: olive ; font-size: 16pt               }
22       H6 {                     color: maroon; font-size: 14pt               }
23       TABLE { font-size: 14pt }
24    </STYLE>
25    <BASEFONT SIZE=4>
26 <!-- Header material -->
27 <body background="../picts/back.gif" text=black>
28 <basefont face="verdana,arial,helvetica,sans-serif">
29
30 <!-- Header material -->
31 <table border=0   cellpadding=5 cellspacing=0 width="100%">
32   <tr bgcolor=#eab575>
33       <td align=left width=20%> <img src="../picts/MadHatter.jpg" HEIGHT=130 WIDTH=130> &nbsp;
34       <td align=center>
35       <font size="+4"><b>
36
37 cmz code description for GALICE 
38       <td align=right width=20%> <img src="../picts/Logo.gif"> &nbsp;
39   </tr>
40
41   <tr>
42       <td colspan=3 align=right><font size="-1">
43           <script language="JavaScript">
44              document.write("Last modified "+ document.lastModified)
45              // end of script -->
46           </script></font>
47       </td>
48   </tr>
49 </table>
50
51 </HEAD>
52
53 <BODY TEXT="#000000" BGCOLOR="#FFFFFF" 
54 LINK="#0000FF" VLINK="#551A8B" ALINK="#FF0000">
55
56 <!=========================================================================>
57
58 <P>
59 <BR>
60 <H1>
61  User Manual and Reference <A HREF="history.html#V2_04">(version 2.05)</A>
62 </H1>
63
64 <!======================================================================>
65 <H3><IMG src=picts/act.gif> page under construction </H3>
66 <P> 
67 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
68 </P>
69 <HR>
70 <!======================================================================>
71
72 <H2><FONT COLOR=BLUE>
73 <A NAME="Foreword">
74 Foreword</FONT>
75 </A>
76 </H2>
77
78 <P>The new version of GALICE has assembled in few months to be used for the
79 Technical Design Report exercise. This has left little time to work on
80 documentation. Therefore we invite readers of this page to provide
81 comments, suggestions and complaints to the Simulation Mailing <A
82 HREF="mailto:alice-sim@alice-lb.cern.ch">list</A>.
83
84 <H2><FONT COLOR=BLUE>
85 <A NAME="Content">
86 Content</FONT>
87 </A>
88 </H2>
89
90 <OL>
91 <LI><A HREF="#1">Input Data Cards</A> 
92 <OL TYPE="a">
93    <LI><A HREF="#1.1">User GEANT control cards</A>
94    <LI><A HREF="#1.2">GALICE specific control cards</A>
95 </OL>
96 <BR>
97 <LI><A HREF="#2">The Cut File</A>
98 <LI><A HREF="#3">The Lego option</A>
99 <LI><A HREF="#4">Code description</A>
100 <OL TYPE="a">
101    <LI><A HREF="#4.1">Content of galice.cmz</A>
102    <LI><A HREF="#4.2">FORTRAN coding Conventions</A>
103    <LI><A HREF="#4.3">Numbering and Names</A>
104    <LI><A HREF="#4.4">Common Block Description</A>
105    <LI><A HREF="#4.5">Routine Description</A>
106 </OL>
107 <BR>
108 <LI><A HREF="#5">Output Format</A>
109 <LI><A HREF="#6">ROOT Interface to Galice</A>
110 <LI><A HREF="#7">Magnetic Field</A>
111 <LI><A HREF="#8">Version History</A>
112 </UL>
113
114
115 Back to: 
116 <A HREF="http://www1.cern.ch/ALICE/welcome.html">ALICE home</A>,
117 <A HREF="http://www1.cern.ch/ALICE/Projects/offline/AliceOffLineHomePage.html">
118 Offline home</A>,
119 <A HREF="galice.html">
120 GALICE home</A>.
121 <BR><BR>
122
123 <!=========================================================================>
124
125 <HR>
126 <BR>
127 <H2>
128 <A NAME="1">1. Input Data Cards
129 </A>
130 </H2>
131
132 <!======================================================================>
133 <H3><IMG src=picts/act.gif> page under construction </H3>
134 <P> 
135 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
136 </P>
137 <HR>
138 <!======================================================================>
139
140 <P> The data card file distributed with GALICE contains three categories of
141 <A HREF="http://wwwinfo.cern.ch/asdoc/WWW/ffread/ffmain/ffmain.html">
142 FFREAD</A> cards:
143
144 <UL>
145
146 <LI> Standard <A
147 HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node21.html">GEANT control
148 cards </A>.
149
150 <LI> User <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node21.html">GEANT
151 control cards </A>.
152
153 <LI> Generic GALICE cards defined in the routine <A
154 HREF="#SXKEY"><B>SXKEY</B></A>
155
156 <li> Specific GALICE module cards, described in the single module <A
157 HREF="Welcome.html#Detectors">pages</a>.
158
159 </UL>
160
161 <H3><FONT COLOR="#FF8050"><A NAME="1.1">1.1 User GEANT control cards</A></FONT></H3>
162 <!======================================================================>
163 <H3><IMG src=picts/act.gif> page under construction </H3>
164 <P> 
165 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
166 </P>
167 <HR>
168 <!======================================================================>
169 <DL>
170 <DT><KBD><A NAME="KINE">KINE</A></KBD>
171
172 <DD><P>This is a standard GEANT data card, but the meaning of the different
173 field is defind by the user. The first field is integer and the others floating
174 point. Note that this is a mixed data cards, and it
175 mandatory to input floating point numbers with a decimal point. In
176 GALICE the meaning is the following:
177
178 <DL>
179 <DT><P><KBD>
180 KINE   1      x      y     z   theta    phi   pmom part
181 </KBD>
182
183 <DD><P>One particle per trigger, starting from x, y, z with angles theta and
184 phi, momentum pmom and particle type NINT(part). Angles are given in
185 degrees.
186
187 <DT><P><KBD>
188 KINE   2    thmin  thmax phimin phimax pmin   pmax part  npart
189 </KBD>
190
191 <DD><P>NINT(npart) particles per trigger centered at the interaction point
192 (SXIPXS) with theta, phi and p in the range (thmin,thmax), (phimin,phimax),
193 (pmin,pmax) and particle type NINT(part). Angles are given in degrees.
194
195 <DT><P><KBD>
196 KINE -2   thmin  thmax phimin phimax pmean sigma part  npart
197 </KBD>
198
199 <DD><P>Same as before, but with a gaussian momentum distribution with average
200 pmean and standard deviation sigma. Angles are given in degrees.
201
202 <DT><P><KBD>
203 KINE 3  parmin parmax thmin thmax phimin phimax pmin  pmax
204 </KBD>
205
206 <DD><P>Source is read from an external file in <A
207 HREF="http://www-subatech.in2p3.fr/Sciences/Theorie/venus/venus.html">VENUS</A>
208 format. Only accept particle with part, theta, phi, pmom in the range
209 (parmin, parmax), (thmin, themax), (phimin, phimax) and (pmin, pmax) where
210 part is the GEANT particle code. Angles are given in degrees. This interface is
211 now obsolete and has been kept for backward compatibility only.
212
213 <DT><P><KBD>
214 KINE 4   thmin  thmax phimin phimax pmin   pmax npart
215 </KBD>
216
217 <DD><P><CODE>NINT(npart)</CODE> source particles are generated per event
218 according to a pt and eta distribution which is parametrised on the SHAKER
219 distribution. Angular and momentum cuts are possible with the same meaning
220 than the previous cards.
221
222 <DT><P><KBD>
223 KINE 5   thmin  thmax phimin phimax pmin   pmax part
224 </KBD>
225
226 <DD><P>One particle of type <code>part</code> is generated per event
227 according to a pt and eta distribution which is parametrised on the <a
228 href="http://www-cdf.fnal.gov/cdf.html">CDF</a> data and <a
229 href="http://www.thep.lu.se/tf2/staff/torbjorn/jetset/">PYTHIA</a>
230 simulation. Code provided by Andreas Morsch (see ALICE notes <a
231 href="http://consult.cern.ch/alice/Internal_Notes/1995/05/abstract">95-05</a>
232 and <a
233 href="http://consult.cern.ch/alice/Internal_Notes/1996/31/abstract">96-31</a>);
234 decay is simulated only in phase space.  Only accept particle with theta,
235 phi and pmom in the range (thmin, themax), (phimin, phimax) and (pmin,
236 pmax). Angles are given in degrees.  The code of the particles is the
237 following:
238
239 <p>
240 <table align=center>
241   <tr>
242     <th><code>part</code><th>Particle
243   <tr>
244     <td>113<td>J/Psi
245   <tr>
246     <td>114<td>Upsilon
247   <tr>
248     <td>115<td>Phi
249 </table>
250
251 </DL>
252 </DL>
253
254 <H3><FONT COLOR="#FF8050"><A NAME="1.2">1.2 GALICE specific control cards</A></FONT></H3>
255
256
257 <DL>
258 <DT><P><KBD>
259 <A NAME="SXLEGO">
260 SXLEGO  thmin   thmax  phimin  phimax rmin  rmax  zmax  nthe  nphi iflego
261 </KBD>
262
263 <DD><P>Activates LEGO option. See below for explanation of this option.
264 GEANTINOS are shot in nthe bins in theta and nphi in phi with the above
265 angular limitations, and statistics on the matter traversed is accumulated
266 per r in the range (rmin,rmax) and z in the range (0, zmax).  iflego has to
267 be set to 1 for the card to take effect.
268
269 <DT><P><KBD>
270 SXEVT ifirst
271 </KBD>
272
273 <DD><P>First even to be used when reading from file.
274
275 <DT><P><KBD>
276 <A NAME="SXnnn">
277 SXnnn  OnOff  Gate   Version   Debug  TrackPrint  GeomDraw TrackDraw RAW/SPC  PAW
278 </KBD>
279
280 <DD><P>Steers the simulation of a module. nnn can be any of the currently
281 implemented module names (see above). All values are integers.
282
283
284 <P><TABLE BORDER WIDTH=80% ALIGN=CENTRE>
285 <TR>
286    <TH>Flag <TH>Explanation
287 <TR>
288    <TH>OnOff
289    <TD>0 the module is absent from the run 1 the module is present in the run
290 <TR>
291    <TH>Gate
292    <TD>time gate in nanoseconds for the module
293 <TR>
294    <TH>Version
295    <TD>version of the geometry. -1 is the default version, whichever is defined in
296 the program
297 <TR>
298    <TH>Debug
299    <TD>debug level for a module, can be 0, 1 or 2
300 <TR>
301    <TH>TrackPrint
302    <TD>print flag for tracks, can be 0 or 1
303 <TR>
304    <TH>GeomDraw
305    <TD>draw flag for the geometry, can be 0 or 1
306 <TR>
307    <TH>TrackDraw
308    <TD>draw flag for the tracks, can be 0 or 1
309 <TR>
310    <TH>RAW/SPC
311    <TD>0 do not output raw data and space points 1 output raw data and space points
312 <TR>
313    <TH>PAW
314    <TD>level of paw output (0,1,2)
315 </TABLE>
316
317 <P>The meaning of these cards is largely module dependent.
318
319 <DT><P><KBD>
320 SXDCH idraw
321 </KBD>
322
323 <DD><P>Select charge of tracks to be drawn: idraw=100*ineg+10*ineut*ipos, where
324 the track is drawn if the flag of the corresponding charge is 1.
325
326 <DT><P><KBD>
327 SXHID ihid
328 </KBD>
329
330 <DD><P>Hidden line removal (ihid 0=off, 1=on) for drawings.
331
332 <A NAME="SXLUN">
333 <DT><P><KBD>
334 SXLUN input zebra spc paw draw rdb raw
335 </KBD>
336
337 <DD><P>Fortran logical unit numbers.
338
339 <P><TABLE ALIGN=CENTRE WIDTH=80% BORDER>
340 <TR>
341    <TH>Parameter <TH>Explanation
342 <TR>
343    <TH>input
344    <TD>input unit for the event generator file containing the events as column
345 wise ntuples (CWN)
346 <TR>
347    <TH>zebra
348    <TD>output unit in zebra format for the /hits
349 <TR>
350    <TH>spc
351    <TD>output unit for the raw space points (explained later)
352 <TR>
353    <TH>paw
354    <TD>output unit for histograms and other paw objects
355 <TR>
356    <TH>draw
357    <TD>output unit for metafile
358 <TR>
359    <TH>rdb
360    <TD>input/output unit for initialisation data structures in RZ format. If positive
361 the initialisation structures are written to disk, and if negative they are read
362 from disk.
363 <TR>
364     <TH>raw
365     <TD>logical unit for writing raw data information (not used yet)
366 </TABLE>
367
368 <DT><P><KBD>
369 SXWKS imeta
370 </KBD>
371
372 <DD><P>Workstation type of graphics output. See the <A
373 HREF="http://wwwcn.cern.ch/asdoc/higz/HIGZMAIN.html">HIGZ</A>
374 manual for more information.
375
376 <DT><P><KBD>
377 SXIPX  X Y Z
378 </KBD>
379
380 <DD><P>Sigma in (X,Y,Z) (cm) on interaction point position.
381
382 <DT><P><KBD>
383 <A NAME="SXFLD">SXFLD</A>  ISXFLD  ISXFMAP   SXMAGN    SXMGMX
384 </KBD>
385
386 <DD><P>Defines the magnetic field to be used:
387
388 <P><TABLE BORDER WIDTH=80% ALIGN=CENTRE>
389 <TR>
390    <TH>Flag <TH>Explanation
391 <TR>
392    <TH>ISXFLD
393    <TD>Magnetic field transport flag 0=no field, 1=Runge Kutta, 2=helix
394 <TR>
395    <TH>ISXFMAP
396    <TD>Magnetic field map version (see <a href="#7">later</a>)
397 <TR>
398    <TH>SXMAGN
399    <TD>Scale factor for the magnetic field
400 <TR>
401    <TH>SXMGMX
402    <TD>Maximum value for the magnetic field
403 </TABLE>
404
405 <DT><P><KBD>
406 <a name="SXHACC">SXHACC</a> isxhacc
407 </KBD>
408
409 <DD><P>Selects acceptance of heavy particles decay in muon chambers: when
410 <code>isxhacc</code> is different from zero, Galice keeps only events with
411 both muons in the 2-9 degrees window.
412
413 <DT><P><KBD>
414 <a name="SXTREE">SXTREE</a> chtree
415 </KBD>
416
417 <DD><P>Selects the Root trees that are written onto the Root output file. One letter
418 selects one tree:
419
420 <p><table align=center border=yes>
421 <tr>
422    <th> Letter <th> Tree
423 <tr>
424    <td> E  <td> Event Header Tree
425 <tr>
426    <td> K  <td> Event Kinematic Tree
427 <tr>
428    <td> H  <td> Hits Tree
429 <tr>
430    <td> D  <td> Digits Tree
431 </table>
432
433 <DT><P><KBD>
434 SXVAC  ivac
435 </KBD>
436
437 <DD><P>Selects the material of the Alice mother volume (1 vacuum, 0 air).
438
439 <DT><P><KBD>
440 SXMAXD sxrmax sxzmax
441 </KBD>
442
443 <DD><P>Tracking stops if the radius is larger than SXRMA or the absolute value
444 of z is larger than SXZMA.
445
446 </DL>
447
448 <P>Module specific control cards can be defined via the <A
449 HREF="#DETMOD">nnn_FKEY</A> routines.
450
451
452 <!===================================================================================>
453 <P>
454 <HR>
455 <BR>
456 <H2>
457 <A NAME="2">2. The Cut file
458 </A></FONT>
459 </H2>
460 <!======================================================================>
461 <H3><IMG src=picts/act.gif> page under construction </H3>
462 <P> 
463 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
464 </P>
465 <HR>
466 <!======================================================================>
467
468 <P>In the simulation of the transport of radiation in matter it is
469 important to be able to change the energy cuts of the different particles
470 and the physic processes
471 for each tracking medium. In GEANT 3.21 this is done by setting the <A
472 HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node68.html">parameters</A>
473 directly in the code. To allow changing these parameters without
474 recompiling, a file, if it exists, is read in at initialisation time, where
475 the energy thresholds and the flags for the different physics processes
476 can be specified for each tracking medium.
477
478 <P>The format of the file is the following:
479
480 <P><KBD>
481 ITMED GAM ELE NH CH MU EBR MBR EDEL MUDEL MUPA ANNI BREM COMP DRAY
482        LOSS MULS PAIR PHOT RAYL
483 </KBD>
484
485 <P>Where
486
487 <P><TABLE ALIGN=CENTER BORDER WIDTH=80%>
488 <TR>
489    <TH>Field <TH>Meaning
490 <TR>
491    <TH>ITMED
492    <TD>user tracking medium number, i.e. the position in the array
493 <A HREF="#SCXDB">IDTMED</A> where the actual tracking medium number
494 has been returned by the routine <A HREF="#SXSTME">SXSTME</A>.
495 <TR>
496    <TH>GAM
497    <TD>(REAL) Photon transport threshold
498 <TR>
499    <TH>ELE
500    <TD>(REAL) Electron/positron transport threshold
501 <TR>
502    <TH>NH
503    <TD>(REAL) Neutral hadrons transport threshold
504 <TR>
505    <TH>CH
506    <TD>(REAL) Charged hadrons transport threshold
507 <TR>
508    <TH>MU
509    <TD>(REAL) Muon transport threshold
510 <TR>
511    <TH>EBR
512    <TD>(REAL) Electron/positron energy threshold for bremstrahlung production
513 <TR>
514    <TH>MUBR
515    <TD>(REAL) Muon energy threshold for bremstrahlung
516 <TR>
517    <TH>EDEL
518    <TD>(REAL) Electron/positron energy threshold for delta rays production
519 <TR>
520    <TH>MUDEL
521    <TD>(REAL) Muon energy threshold for delta rays production
522 <TR>
523    <TH>MUPA
524    <TD>(REAL) Muon energy threshold for direct pair production
525 <TR>
526    <TH>ANNI
527    <TD>(INTEGER) Positron annihilation flag
528 <TR>
529    <TH>BREM
530    <TD>(INTEGER) Bremstrahlung flag
531 <TR>
532    <TH>COMP
533    <TD>(INTEGER) Compton scattering flag
534 <TR>
535    <TH>DRAY
536    <TD>(INTEGER) Delta Ray flag
537 <TR>
538    <TH>LOSS
539    <TD>(INTEGER) Energy loss flag
540 <TR>
541    <TH>MULS
542    <TD>(INTEGER) Multiple scattering flag
543 <TR>
544    <TH>PAIR
545    <TD>(INTEGER) Pair production flag
546 <TR>
547    <TH>PHOT
548    <TD>(INTEGER) Photelectric effect flag
549 <TR>
550    <TH>RAYL
551    <TD>(INTEGER) Rayleigh scattering flag
552 </TABLE>
553
554 <P>The first 10 paremeters are energy cuts, and should be entered as
555 floating point numbers. Energies are kinetic, and should be entered in GeV.
556 The remaining 9 numbers are integers. A negative value is ignored.  The
557 file name is fixed: <B>galice.cuts</B>.
558
559 <P><EM>Please note</EM>: when reading the initialisation data structure
560 from disk (triggered when the rdb parameter in <A HREF="#SXLUN">SXLUN</A>
561 data card is negative) the galice.cuts file is not read.  So any change
562 will remain ineffective. If cuts need to be changed, then the
563 initialisation data structure needs to be recreated.
564
565 <!===================================================================================>
566 <HR>
567 <BR>
568 <H2><FONT COLOR=BLUE>
569 <A NAME="3">3. The LEGO Option
570 </A></FONT>
571 </H2>
572 <!======================================================================>
573 <H3><IMG src=picts/act.gif> page under construction </H3>
574 <P> 
575 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
576 </P>
577 <HR>
578 <!======================================================================>
579
580 <P>This transport option allows to evaluate the material budget from a
581 given radius to the surface of an arbitrary cylinder along radial
582 directions from the centre. When the <A HREF="#SXLEGO"><B>SXLEGO</B></A>
583 data card is specified, the normal event generation and transport cycle is
584 altered.  In this case Galice will produce only nthe times nphi
585 events. Each event is composed by a single primary track, a <A
586 HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node72.html">geantino</A>,
587 corresponding to GEANT particle code 48, with unit momentum and angle at
588 regular intervals between phimin and phimax and themin and
589 themax.
590
591 <P>Geantinos are produced at the origin and then moved at the surface
592 of a cylinder of radius rmin, where they start being transported. If rmin=0
593 geantinos start from the origin. Geantinos are stopped when they reach the
594 surface of a cylinder of radius rmax and half length in z zmax.
595
596 <P> At the beginning of the job, three double
597 dimensional plots are created with nphi times nthe bins:
598
599 <P><TABLE WIDTH=50% ALIGN=CENTER>
600 <TR>
601    <TD>-100<TD>Radiation length map
602 <TR>
603    <TD>-101<TD>Interaction length map
604 <TR>
605    <TD>-102<TD>g/cm2 length map
606 </TABLE>
607
608 <!===================================================================================>
609 <HR>
610 <BR>
611 <H2><FONT COLOR=BLUE>
612 <A NAME="4">4. Code description
613 </A></FONT>
614 </H2>
615 <!======================================================================>
616 <H3><IMG src=picts/act.gif> page under construction </H3>
617 <P> 
618 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
619 </P>
620 <HR>
621 <!======================================================================>
622 <P>The code of GALICE is composed by two parts. One is a set of FORTRAN routines
623 in the framework of GEANT and the other is a set of C++ routines that constitute
624 the interface with ROOT. The FORTRAN code is contained in a single 
625 <A HREF="http://wwwcn.cern.ch/cmz/index.html">cmz</A> file called
626 galice.cmz, while the C++ code is contained in a set of file and headers 
627 that are managed by a makefile.
628
629 <H3><FONT COLOR="#FF8050"><A NAME="4.1">4.1 Content of galice.cmz</A></FONT></H3>
630
631 <H4><FONT COLOR="#008800">4.1.1 cmz flags</FONT></H4>
632
633 <P><TABLE>
634 <TR>
635    <TH>ROOTIO<TD>         Activates the ROOT interface.
636 </TABLE>
637
638 <H4><FONT COLOR="#008800"><A NAME="4.1.2">4.1.2 Patches in GALICE</A></FONT></H4>
639
640 <P>The code is divided in modules, each one describing a part of the
641 experiment. The code relevant to each module is kept in a dedicated cmz
642 directory, called PATCH.  Each module is composed by one or more routines,
643 which are called at different times during the execution of the program and
644 perform different actions related to the module. They are contained in
645 dedicated to the module DECKs which compose the corresponding PATCH, as can
646 be seen for the <A HREF="picts/cmzdirectories.gif">TPC</A>.
647
648 <P>The code contains the following patches:
649
650 <P><TABLE WIDTH=80% ALIGN=CENTER>
651 <TR>
652   <TH ALIGN=LEFT> Patch <TH ALIGN=LEFT>Content
653 <TR>
654   <TH ALIGN=LEFT>$VERSION       
655   <TD>Standard cmz PATCH containing version control information.
656 <TR>
657   <TH ALIGN=LEFT>WRITEUP        
658   <TD>Description of the program (this file).
659 <TR>
660   <TH ALIGN=LEFT>HISTORY        
661   <TD>The modification log.
662 <TR>
663   <TH ALIGN=LEFT>$KUMACS        
664   <TD>The macros needed to install the program.
665 <TR>
666   <TH ALIGN=LEFT>DATA           
667   <TD>Examples of data cards and cut files.
668 <TR>
669   <TH ALIGN=LEFT>EXAMPLES       
670   <TD>Examples of run decks.
671 <TR>
672   <TH ALIGN=LEFT>*GALICE        
673   <TD>Pilot patch for the standalone version of GALICE.
674 <TR>
675   <TH ALIGN=LEFT>*ALIROOT       
676   <TD>Pilot patch for the ROOT I/O version of GALICE.
677 <TR>
678   <TH ALIGN=LEFT>GCDES          
679   <TD>GEANT common blocks
680 <TR>
681   <TH ALIGN=LEFT>GALICE         
682   <TD>Main programs.
683 <TR>
684   <TH ALIGN=LEFT>GUCODE         
685   <TD>GEANT user routines.
686 <TR>
687   <TH ALIGN=LEFT>STEER          
688   <TD>Steering routines for GALICE.
689 <TR>
690   <TH ALIGN=LEFT>ITS            
691   <TD>Description of the Inner Tracking System
692 <TR>
693   <TH ALIGN=LEFT>MAG            
694   <TD>Description of the L3 magnet.
695 <TR>
696   <TH ALIGN=LEFT>TPC            
697   <TD>Description of the Time Projection Chamber
698 <TR>
699   <TH ALIGN=LEFT>TOF            
700   <TD>Description of the Time Of Flight apparatus
701 <TR>
702   <TH ALIGN=LEFT>PMD
703   <TD>Description of the Photon Multiplicity Detector
704 <TR>
705   <TH ALIGN=LEFT>PHOS           
706   <TD>Description of the Photon Detector
707 <TR>
708   <TH ALIGN=LEFT>RICH           
709   <TD>Description of the HMPID Rich detector
710 <TR>
711   <TH ALIGN=LEFT ALIGN=LEFT>MUON           
712   <TD>Description of the Muon Chambers in the Muon Arm
713 <TR>
714   <TH ALIGN=LEFT>FRAME          
715   <TD>Description of the Support Frame for the TPC
716 <TR>
717   <TH ALIGN=LEFT>CASTOR         
718   <TD>Description of the Castor detector
719 <TR>
720   <TH ALIGN=LEFT>FMD            
721   <TD>Description of the Forward Multiplicity Detector
722 <TR>
723   <TH ALIGN=LEFT>SUCODE         
724   <TD>Dummy user routines
725 <TR>
726   <TH ALIGN=LEFT>HALL           
727   <TD>Description of the experimental hall
728 <TR>
729   <TH ALIGN=LEFT>ABSO           
730   <TD>Description of the Muon Absorber
731 <TR>
732   <TH ALIGN=LEFT>SHIL           
733   <TD>Description of the Muon Arm Shield
734 <TR>
735   <TH ALIGN=LEFT>DIPO           
736   <TD>Description of the Dipole Magnet
737 <TR>
738   <TH ALIGN=LEFT>TRD            
739   <TD>Description of the Transition Radiation Detector
740 <TR>
741   <TH ALIGN=LEFT>PIPE           
742   <TD>Description of the Beam Pipe
743 <TR>
744   <TH ALIGN=LEFT>LEGO           
745   <TD>Routines needed for the LEGO option
746 <TR>
747   <TH ALIGN=LEFT>MISC           
748   <TD>Miscellaneous routines
749 <TR>
750   <TH ALIGN=LEFT>DUMMIES        
751   <TD>Dummy routines
752 <TR>
753   <TH ALIGN=LEFT>GPATCH         
754   <TD>Corrections for GEANT 3.21
755 <TR>
756   <TH ALIGN=LEFT>GDEBUG         
757   <TD>Debug version of GEANT 3.21 routines
758 <TR>
759   <TH ALIGN=LEFT>ROOTIO         
760   <TD>Code specific for ROOT I/O
761 <TR>
762   <TH ALIGN=LEFT>LAST           
763   <TD>Last PATCH
764 </TABLE>
765
766 <!====================================================================================>
767
768 <H3><FONT COLOR="#FF8050"><A NAME="4.2">4.2 FORTRAN Coding Conventions</A></FONT></H3>
769 <!======================================================================>
770 <H3><IMG src=picts/act.gif> page under construction </H3>
771 <P> 
772 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
773 </P>
774 <HR>
775 <!======================================================================>
776
777 <P>Some simple coding conventions have been adopted. Only standard ANSI
778 Fortran 77 is accepted with the following Fortran 90 compatible extensions:
779 <UL>
780 <LI> Names of SUBROUTINES and VARIABLES with a maximum of 20 characters.</LI>
781 <LI> Names of COMMON blocks with a maximum of 8 characters.</LI>
782 <LI> Use of DO WHILE ... ENDDO structures.</LI>
783 <LI> The use of IMPLICIT NONE.</LI>
784 </UL>
785
786 <P>FORTRAN statements are written in CAPITALS. Comment lines start with a
787 CAPITAL C or * while the rest of the comment line can be written in mixed
788 case. The use of explicit type defintion in combination with <CODE>IMPLICIT
789 NONE</CODE> is recommended but not enforced. In any case variable names
790 should follow the implicit typing of FORTRAN:
791
792 <P><TABLE ALIGN=CENTER WIDTH=80%>
793 <TR>
794    <TH ALIGN=LEFT>Type <TH ALIGN=LEFT>Coding
795 <TR>
796    <TH ALIGN=LEFT>INTEGER <TD>Variable name starts with I-N
797 <TR>
798    <TH ALIGN=LEFT>REAL    <TD>Variable names starts with A-H or O-Z
799 <TR>
800    <TH ALIGN=LEFT>CHARACTER <TD>Variable name starts with CH
801 <TR>
802    <TH ALIGN=LEFT> LOGICAL  <TD>Variable name starts with L
803 <TR>
804    <TH ALIGN=LEFT>DOUBLE PRECISION <TD>Variable name starts with D
805 </TABLE>
806
807 <P>This allows the detector space point data to be directly entered into
808 the SPC data CWN and also the type of routines/functions arguments can be
809 checked directly from the variable names by compiler utilities and/or CMZ.
810
811 <P> We strongly encourage the users developing code to follow these rules.
812
813
814
815 <!================================================================================>
816
817 <H3><FONT COLOR="#FF8050"><A NAME="4.3">4.3 Numbering and Names</A></FONT></H3>
818 <!======================================================================>
819 <H3><IMG src=picts/act.gif> page under construction </H3>
820 <P> 
821 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
822 </P>
823 <HR>
824 <!======================================================================>
825 <P>Each module has a name, a number and a one letter code:
826
827 <P><TABLE ALIGN=CENTER WIDTH=80%>
828 <TR>
829    <TH ALIGN=LEFT>Description <TH ALIGN=LEFT>Name <TH ALIGN=LEFT>Number <TH ALIGN=LEFT>Code
830 <TR>
831    <TH ALIGN=LEFT>Inner Tracking System <TD>ITS <TD>2 <TD>I
832 <TR>
833    <TH ALIGN=LEFT>L3 magnet <TD>MAG <TD>3 <TD>M
834 <TR>
835    <TH ALIGN=LEFT>Time Projection Chamber <TD>TPC <TD>4 <TD>T
836 <TR>
837    <TH ALIGN=LEFT>Time Of Flight apparatus <TD>TOF <TD>5 <TD>F
838 <TR>
839    <TH ALIGN=LEFT>Photon Multiplicity Detector <TD>PMD <TD>6 <TD>W
840 <TR>
841    <TH ALIGN=LEFT>Photon Detector <TD>PHOS <TD>7 <TD>P
842 <TR>
843    <TH ALIGN=LEFT>Zero Degree Calorimeter <TD>ZDC <TD>8 <TD>Z
844 <TR>
845    <TH ALIGN=LEFT>Forward Multiplicity Detector <TD>FMD      <TD>9      <TD>G
846 <TR>
847    <TH ALIGN=LEFT>HMPID Rich detector <TD>RICH <TD>10 <TD>R
848 <TR>
849    <TH ALIGN=LEFT>Muon Chambers in the Muon Arm <TD>MUON <TD>11 <TD>C
850 <TR>
851    <TH ALIGN=LEFT>Support Frame for the TPC <TD>FRAME <TD>12 <TD>B
852 <TR>
853    <TH ALIGN=LEFT>Transition Radiation Detector <TD>TRD <TD>13 <TD>U
854 <TR>
855    <TH ALIGN=LEFT>Castor detector <TD>CASTOR <TD>15 <TD>S
856 <TR>
857    <TH ALIGN=LEFT>Muon Absorber <TD>ABSO <TD>16 <TD>A
858 <TR>
859    <TH ALIGN=LEFT>Muon Arm Shield <TD>SHIL <TD>17 <TD>Y
860 <TR>
861    <TH ALIGN=LEFT>Dipole Magnet <TD>DIPO <TD>18 <TD>D
862 <TR>
863    <TH ALIGN=LEFT>Experimental hall <TD>HALL <TD>19 <TD>H
864 <TR>
865    <TH ALIGN=LEFT>Beam Pipe <TD>PIPE <TD>20 <TD>Q
866 </TABLE>
867
868 <P>The detector module  numbers are contained in PARAMETERs called <VAR> 
869 ID_nnn</VAR> in sequence <A HREF="#SCXDB">SCXDB</A>.
870
871 <P>To each module is assigned a range of integers:  
872
873 <P><CENTER><CODE>ID_nnn*100->ID_nnn*100+99</CODE></CENTER>
874
875 <P>thad is used throughout the program every time a detector identifier is
876 needed.  We will refer to this range as the <EM>module range</EM>. The
877 modules specific letter will be hereon indicated with <I>char</I>.
878
879 <P>The ROUTINES in the different modules are called <VAR>nnn_fff</VAR>, 
880 where <VAR>nnn</VAR> is the name of the module:
881 ITS, MAG, TPC, TOF, PMD, PHOS, RICH, MUON, FRAME, CASTOR, FMD, HALL, 
882 ABSO, SHIL, DIPO, TRD, PIPE.
883
884 <P>When several version of a given module are present, a routine may act as
885 a switchyard, to version-specific routines where the last letter is
886 replaced by a digit. So if there are 2 version of the TPC, the routine
887 TPC_GEOM would just call TPC_GEO0 or TPC_GEO1 according to the version
888 chosen for the run.
889
890 <P>The complete code referring to a certain detector has to be contained in
891 1 patch with the structure:
892
893 <PRE>
894  +PATCH,name.          Contains the code related to module 'nnn'
895  +DECK,CDES.           Contains the private KEEP sequences
896  +DECK,nnn_fff.        Contains the code of routine 'nnn_fff'
897 </PRE>
898
899 <P>Example:
900
901 <PRE>
902
903       +PATCH,TOF.
904
905       +DECK,CDES.
906       +KEEP,T_START.
907             COMMON /S_START/ JCOUNT,MOD_FIRST
908       C
909       +KEEP,T_SPC.
910             PARAMETER (MAX6=1000)
911             COMMON /SCXSCR/ NHIT6,IROW6(MAX6),ICOL6(MAX6),IADC6(MAX6)
912       C
913
914       +DECK,TOF_INIT.
915             SUBROUTINE TOF_INIT
916       C
917       +CDE,T_START.
918       C
919       *
920             END
921
922       +DECK,TOF_DIGT.
923             SUBROUTINE TOF_DIGT
924       C
925       +CDE,T_SPC.
926       C
927       *
928             END
929 </PRE>
930
931 <P>These patches are in the <B>galice.cmz</B> file as described in the <A
932 HREF="#4.1.2"> layout </A> of the galice.cmz file.
933
934 <P>Any printout message should contain the name of the routine which produced
935 it. The recommended way to produce printouts is the FORTRAN WRITE
936 instruction. The nnn_INIT and nnn_END routines must printout a message with
937 the name of the detector.
938
939 <P>The dummy SU <A HREF="#SUCODE">routines</A> may be used to test out new
940 component simulation packages.  Note that these routines are always called,
941 irrespective of the FFREAD data cards selections.
942
943 <P>Each module can create private histograms and/or ntuples to investigate
944 its performance.  All this HBOOK/PAW activity must be under the control of
945 the flags related to the <A HREF="#SXnnn">SXnnn</A> FFREAD data cards.
946
947 <P>Examples of actions in the module routines are:
948
949 <P><UL>
950 <LI>Book the histograms/ntuples in the nnn_INIT routines into the //GALICE
951 HBOOK directory with a unique identifier, e.g.:
952
953 <P><CENTER>CALL HBOOKN(IDN,'...',...,'//GALICE',...,...)</CENTER>
954
955 <P>where IDN stands for the HBOOK identifier with the convention:
956
957 <P><TABLE ALIGN=CENTER>
958 <TR>
959    <TH ALIGN=LEFT>IDN <TD>     1000*J+N
960 <TR>
961    <TH ALIGN=LEFT>J   <TD>     detector identification number (0 for steerings)
962 <TR>
963    <TH ALIGN=LEFT>N   <TD>     histogram number (0 <= N <= 99)
964 </TABLE>
965
966 <P><TABLE>
967 <TR>
968 <TD VALIGN=TOP>Notes:
969 <TD>
970 <OL>
971 <LI>IDN=999 is reserved for the output SPC data CWN.
972 <LI>IDN=888 is reserved for the input EVTGEN data CWN.
973 </OL>
974 </TABLE>
975
976 <LI>Fill the histograms/ntuples in the nnn_STEP, nnn_TRKE, nnn_EVE routines
977 or whatever is the most convenient.
978 </UL>
979
980 <P>PAW file opening, directory setting and writing out of the ntuples
981 etc... is done by the general steering routines.
982
983
984
985 <!================================================================================>
986
987 <H3><FONT COLOR="#FF8050"><A NAME="4.4">4.4 Common Block Description</A></FONT></H3>
988 <!======================================================================>
989 <H3><IMG src=picts/act.gif> page under construction </H3>
990 <P> 
991 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
992 </P>
993 <HR>
994 <!======================================================================>
995 <P>The COMMONS of the various detectors are called <B>char_uuuuuu</B>,
996 uuuuuu = Left free to the user.  An exception on this are the STEERING
997 commons which are called <B>SCXuuuuu</B>
998
999 <P><TABLE WIDTH=80%>
1000 <TR>
1001 <TH VALIGN=TOP>
1002 Note:
1003 <TD>
1004 <OL>
1005 <LI>The KEEP sequence MUST have the same name as the (first)
1006 COMMON in that sequence and the use of BLOCKDATA must be
1007 omitted (all initialisation in name_INIT).
1008 <LI>Executable statements or DATA statements are NOT allowed
1009 in a KEEP sequence.
1010 </OL>
1011 </TABLE>
1012
1013
1014 <H4><FONT COLOR="#cc5050"><A NAME="SCXIO">SCXIO</A></FONT></H4>
1015 <PRE>
1016 +KEEP,SCXIO.------------------------------------------------------------------------
1017 C --- Common which contains the units for the various I/O streams ---
1018       INTEGER LUNIN,LUNZEB,LUNSPC,LUNPAW,LUNDRW,LUNRDB,LUNRAW
1019      $,       NKEYS,JRECO
1020 C
1021       COMMON /SCXIO/ LUNIN,LUNZEB,LUNSPC,LUNPAW,LUNDRW,LUNRDB,LUNRAW
1022      $,              NKEYS,JRECO
1023       CHARACTER*4 KEYS
1024       COMMON /SCXIO2/ KEYS(4)
1025 C
1026
1027       LUNIN     Logical input unit for the generator data file in case
1028                 IKINE=3 (see card KINE).
1029       LUNZEB    Logical input unit for writing ZEBRA data structures.
1030       LUNSPC    Logical unit for writing Alice space point Column Wise
1031                 Ntuples.
1032       LUNPAW    Logical unit for PAW Ntuple output
1033       LUNDRW    Logical unit for graphic metafil
1034       LUNRDB    Logical unit for initial data structure file
1035       NKEYS     Number of structures to save every event on LUNZEB
1036       KEYS      Name of the structures to save every event on LUNZEB
1037 </PRE>
1038
1039 <H4><FONT COLOR="#cc5050"><A NAME="SCXDB">SCXDB</A></FONT></H4>
1040 <PRE>
1041 +KEEP,SCXDB.------------------------------------------------------------------------
1042 C --- Common which contains debug flags for the various detectors ---
1043 C IDBUGF(J) = Debug level (0,1,2) for detector "J"
1044 C --- Also control flags (JPAWF,JVERF,JOUTF) for each detector added ---
1045       INTEGER NDBMAX
1046       PARAMETER (NDBMAX=20)
1047 C
1048       INTEGER       ID_ITS,ID_MAG,ID_TPC,ID_TOF,ID_PMD,ID_PHOS
1049      $,       ID_ZDC,ID_FMD,ID_RICH,ID_STEE,ID_MUON,ID_FRAME,ID_TRD
1050      $,       ID_CASTOR,ID_ABSO,ID_SHIL,ID_DIPO,ID_HALL,ID_PIPE
1051      $,       ID_ALICE
1052 C
1053       PARAMETER (ID_ALICE=0,        ID_ITS=2,ID_MAG=3,ID_TPC=4,ID_TOF=5
1054      $,          ID_PMD=6,ID_PHOS=7,ID_ZDC=8,ID_FMD=9,ID_RICH=10
1055      $,          ID_MUON=11,ID_FRAME=12,ID_TRD=13,ID_CASTOR=15
1056      $,          ID_ABSO=16,ID_SHIL=17,ID_DIPO=18,ID_HALL=19,ID_PIPE=20
1057      $,          ID_STEE=NDBMAX+1)
1058 C
1059       INTEGER IDBUGF,JPAWF,JVERF,JOUTF,IDTMED,ILTMED
1060 C
1061       INTEGER MMEDIA
1062       CHARACTER*6 CHNVOL
1063       PARAMETER (MMEDIA=1000)
1064       COMMON /SCXDB/ IDBUGF(NDBMAX+1),JPAWF(NDBMAX+1),JVERF(NDBMAX+1)
1065      $,              JOUTF(NDBMAX+1)
1066      $,              IDTMED(100*(NDBMAX+1))
1067      $,              ILTMED(2,0:NDBMAX)
1068      $,              IMEDIA(MMEDIA),CHNVOL(0:NDBMAX)
1069 C
1070
1071       IDBUGF         Debug flag for all modules (0->2). The storing of the hits
1072                      requires a value >0 of this flag.
1073       JPAWF          PAW flag for all modules (0->2). This flag triggers
1074                      booking and filling of histograms.
1075       JVERF          Version chosen for all modules.
1076       JOUTF          Raw data (digits) output flag for modules (0, 1).
1077       IDTMED         Translation array between tracking media codes and
1078                      GEANT numbers.
1079       ILTMED         Tracking media id ranges for different modules. The
1080                      tracking media identifiers (ID) of module I are such
1081                      that ILTMED(1,I)<ID<ILTMED(2,I)
1082       IMEDIA         Correspondence between tracking media number and 
1083                      module identifier. A particle in tracking media II
1084                      is in the module whose ID is IMEDIA(II)
1085       CHNVOL         Names of the different modules.
1086 C
1087 </PRE>
1088
1089 <H4><FONT COLOR="#cc5050"><A NAME="SCXFF">SCXFF</A></FONT></H4>
1090 <PRE>
1091 +KEEP,SCXFF.------------------------------------------------------------------------
1092 C --- Common which contains FFREAD stuff for the GALICE package ---
1093 C --- as well as the total processed event counter ---
1094       INTEGER NSXDET,NLUNS,NPARS
1095      $,       JDETF,JTRAF,JDRGF,JDRTF,IFDRAT,ISXDCH,JDCHM,JDCHN,JDCHP
1096      $,       ISXWKS,ISXVAC,NSXEVT,IFPART,IFVOLU,IFMATE
1097      $,       IFTMED,IFVERT,IFKINE,IFSETS,IFHITS,IFDIGI,IFSECS
1098      $,       IFXSEC,IFLOSS,ISXEVT,ISXHID,ISXFLD,ISXFMAP
1099      $,       ISXITS,ISXMAG,ISXTPC,ISXTOF,ISXPMD,ISXPHOS
1100      $,       ISXZDC,ISXFMD,ISXRICH,ISXMUON,ISXFRAME,ISXTRD,ISXCASTOR
1101      $,       ISXSTEE,ISXABSO,ISXSHIL,ISXDIPO,ISXHALL,ISXPIPE
1102      $,       ISXHACC
1103       REAL SXGATE,SXMAGN,SXIPXS,SXMGMX,SXRMAX,SXZMAX
1104 C
1105       PARAMETER (NSXDET=20,NLUNS=7,NPARS=9)
1106       COMMON /SCXFF/ JDETF(NSXDET+1),JTRAF(NSXDET+1)
1107      $,              JDRGF(NSXDET+1),JDRTF(NSXDET+1),IFDRAT
1108      $,              ISXDCH,JDCHM,JDCHN,JDCHP
1109      $,              SXGATE(NSXDET)
1110      $,              ISXWKS,ISXVAC,NSXEVT
1111      $,              IFPART,IFVOLU,IFMATE,IFTMED,IFVERT,IFKINE
1112      $,              IFSETS,IFHITS,IFDIGI,IFSECS
1113      $,              IFXSEC,IFLOSS
1114      $,              ISXEVT,SXIPXS(3),ISXHID
1115      $,              ISXFLD,ISXFMAP,SXMAGN,SXMGMX
1116      $,              ISXITS(NPARS),ISXMAG(NPARS)
1117      $,              ISXTPC(NPARS),ISXTOF(NPARS),ISXPMD(NPARS)
1118      $,              ISXPHOS(NPARS),ISXZDC(NPARS),ISXFMD(NPARS)
1119      $,              ISXRICH(NPARS),ISXMUON(NPARS),ISXFRAME(NPARS)
1120      $,              ISXTRD(NPARS),ISXCASTOR(NPARS)
1121      $,              ISXABSO(NPARS),ISXSHIL(NPARS),ISXDIPO(NPARS)
1122      $,              ISXHALL(NPARS),ISXPIPE(NPARS)
1123      $,              ISXSTEE(NPARS),SXRMAX,SXZMAX
1124      $,              ISXHACC
1125 C
1126       JDETF          0 if the module does not exist, 1 otherwise
1127       JTRAF          Step by step printing for the module if not 0
1128       JDRGF          Draw in the view bank for the module if not 0
1129       JDRTF          Store the track points in memory for the module 
1130                      if not 0
1131       IFDRAT         Not 0 if at least one module is drawn. Then every
1132                      event is drawn superinposed to the modules in the view
1133                      banks.
1134       ISXDCH         Charge of particles drawn (100*NEG+10*NEUT+ICHAR,
1135                      where NEG, NEUT and ICHAR can be 0 or 1)
1136       JDCHM          1 if negative particles are drawn
1137       JDCHN          1 if neutral particles are drawn
1138       JDCHP          1 if positive particles are drawn
1139       SXGATE         Time gate for the each module
1140       ISXWKS         Graphics metafile code
1141       ISXVAC         If 1 Alice will be filled with vacuum, if 0 with air
1142       NSXEVT         Global event counter
1143       IFPART         If 1 PART data structure is printed
1144       IFVOLU         If 1 VOLU data structure is printed
1145       IFMATE         If 1 MATE data structure is printed
1146       IFTMED         If 1 TMED data structure is printed
1147       IFVERT         If 1 VERT data structure is printed
1148       IFKINE         If 1 KINE data structure is printed
1149       IFSETS         If 1 SETS data structure is printed
1150       IFHITS         If 1 HITS data structure is printed
1151       IFDIGI         If 1 DIGI data structure is printed
1152       IFSECS         If 1 Secondary statistic is printed
1153       IFXSEC         If 1 hadronic cross section is printed
1154       IFLOSS         If 1 energy loss information is printed
1155       ISXEVT         Start event number when reading from a file
1156       SXIPXS         Interaction point
1157       ISXHID         If 1 turns on HIDE option for drawing
1158       ISXFLD         Magnetic field transport flag 0=no field, 2=helix, 3=Runge Kutta
1159       ISXFMAP        Magnetic field map version (1, 2 see <a href="#7">later</a>)
1160       SXMAGN         Scale factor for the magnetic field
1161       SXMGMX         Maximum value for the magnetic field
1162       ISXITS         Input array of flags for ITS
1163       ISXMAG         Input array of flags for MAG
1164       ISXTPC         Input array of flags for TPC
1165       ISXTOF         Input array of flags for TOF
1166       ISXPMD         Input array of flags for PMD
1167       ISXPHOS        Input array of flags for PHOS
1168       ISXZDC         Input array of flags for ZDC
1169       ISXFMD         Input array of flags for FMD
1170       ISXRICH        Input array of flags for RICH
1171       ISXMUON        Input array of flags for MUON
1172       ISXFRAME       Input array of flags for FRAME
1173       ISXTRD         Input array of flags for TRD
1174       ISXCASTOR      Input array of flags for CASTOR
1175       ISXABSO        Input array of flags for ABSO
1176       ISXSHIL        Input array of flags for SHIL
1177       ISXDIPO        Input array of flags for DIPO
1178       ISXHALL        Input array of flags for HALL
1179       ISXPIPE        Input array of flags for PIPE
1180       ISXSTEE        Input array of flags for STEE
1181       SXRMAX         Maximum radius for transport
1182       SXZMAX         Maximum value of z for transport
1183       ISXHACC        Accept heavy particle decays within mu-chambers acceptance
1184 C
1185 </PRE>
1186
1187 <H4><FONT COLOR="#cc5050"><A NAME="SCXGOE">SCXGEO</A></FONT></H4>
1188 <PRE>
1189 +KEEP,SCXGEO.-----------------------------------------------------------------------
1190 C --- Common which contains some general geometry parameters ---
1191       REAL DALIC
1192 C
1193       COMMON /SCXGEO/ DALIC(3)
1194 C
1195        
1196       DALIC          Dimension of the Alice mother volume
1197
1198 </PRE>
1199
1200 <H4><FONT COLOR="#cc5050"><A NAME="SCXPAW">SCXPAW</A></FONT></H4>
1201 <PRE>
1202 +KEEP,SCXPAW.-----------------------------------------------------------------------
1203 C --- Common which contains the NTUPLE info for the steerings ---
1204       INTEGER NVRS1
1205       REAL VALS1
1206 C
1207       PARAMETER (NVRS1=2)
1208       CHARACTER*6 VARS1
1209       COMMON /SCXPAW/ VALS1(NVRS1)
1210       COMMON /SCXPW2/ VARS1(NVRS1)
1211 C
1212
1213       VALS1          Names of the NTUPLE variables for the steering
1214       VARS1          Values of the NTUPLE variables for the steering
1215
1216 </PRE>
1217
1218 <H4><FONT COLOR="#cc5050"><A NAME="SCXPST">SCXPST</A></FONT></H4>
1219 <PRE>
1220 +KEEP,SCXPST.-----------------------------------------------------------------------
1221 C --- Common which contains secondary particle statistics ---
1222       INTEGER IPCNT
1223 C
1224       COMMON /SCXPST/ IPCNT(100)
1225       CHARACTER*20 NAME,NAMES
1226       COMMON /SCXPS2/ NAME,NAMES(100)
1227 C
1228       SAVE /SCXPST/
1229       SAVE /SCXPS2/
1230 C
1231
1232       IPCNT          Number of secondaries for each particle species
1233       NAME           Temporary storage for the name of the particle
1234       NAMES          Names of the particles
1235
1236 </PRE>
1237
1238 <H4><FONT COLOR="#cc5050"><A NAME="SCXEVT">SCXEVT</A></FONT></H4>
1239 <PRE>
1240 +KEEP,SCXEVT.-----------------------------------------------------------------------
1241 C --- Common which contains standard event parameters ---
1242       INTEGER JSXRUN,JSXEVT,JSXNPA,JSXZB,JSXZT,NSXPIN,IPX,IPY,IPZ
1243       REAL RSXIMP,RSXPNU,RSXECM
1244 C
1245       COMMON /SCXEVT/ JSXRUN,JSXEVT,JSXNPA,JSXZB,JSXZT
1246      $,               RSXIMP,RSXPNU,RSXECM,NSXPIN(48)
1247      $,               IPX,IPY,IPZ
1248 C
1249       JSXRUN
1250       JSXEVT
1251       JSXNPA
1252       JSXZB
1253       JSXZT
1254       RSXIMP
1255       RSXPNU
1256       RSXECM
1257       NSXPIN(48)
1258       IPX
1259       IPY
1260       IPZ
1261
1262 </PRE>
1263
1264 <H4><FONT COLOR="#cc5050"><A NAME="SCXSCR">SCXSCR</A></FONT></H4>
1265 <PRE>
1266 +KEEP,SCXSCR.-----------------------------------------------------------------------
1267 C --- Common containing scratch space for detector SPC/RAW arrays ---
1268       INTEGER NSCR,IARR
1269 C
1270       PARAMETER (NSCR=100000)
1271       COMMON /SCXSCR/ IARR(NSCR)
1272 C
1273 </PRE>
1274
1275 <H4><FONT COLOR="#cc5050"><A NAME="SLATE">SLATE</A></FONT></H4>
1276 <PRE>
1277 +KEEP,SLATE.
1278 C --- CERNLIB common with additional info for the DATIME package ---
1279       INTEGER ISL
1280       REAL DUMMY
1281 C
1282       COMMON /SLATE/ ISL(6),DUMMY(34)
1283 C
1284 </PRE>
1285
1286 <H4><FONT COLOR="#cc5050"><A NAME="QUEST">QUEST</A></FONT></H4>
1287 <PRE>
1288 +KEEP,QUEST.
1289 C --- CERNLIB common for communication with the ZEBRA package ---
1290       INTEGER IQUEST
1291 C
1292       COMMON /QUEST/ IQUEST(100)
1293 C
1294 </PRE>
1295
1296 <H4><FONT COLOR="#cc5050"><A NAME="SCXGEN">SCXGEN</A></FONT></H4>
1297 <PRE>
1298 +KEEP,SCXGEN.
1299 C --- Common containing event generator data ---
1300       INTEGER NIHMAX,NRHMAX,NRGEN,JRGEN,JTKGEN,NIHEAD,IHEAD,NRHEAD,IPAR
1301       REAL RHEAD,THETA,PHI,PMOM,E
1302 C
1303       PARAMETER (NIHMAX=12,NRHMAX=6)
1304       COMMON /SCXGEN/ NRGEN,JRGEN,JTKGEN
1305      $,               NIHEAD,IHEAD(NIHMAX),NRHEAD,RHEAD(NRHMAX)
1306      $,               IPAR,THETA,PHI,PMOM,E
1307 C
1308 </PRE>
1309
1310 <H4><FONT COLOR="#cc5050"><A NAME="SCXZLN">SCXZLN</A></FONT></H4>
1311 <PRE>
1312 +KEEP,SCXZLN
1313 C --- Alice permanent links for ZEBRA banks
1314       INTEGER NALINK, JALINK, JLEDEP
1315       PARAMETER (NALINK=1)
1316       COMMON / SCXZLN / JALINK(NALINK)
1317       EQUIVALENCE (JLEDEP,JALINK(1))
1318
1319 </PRE>
1320
1321 <H4><FONT COLOR="#cc5050"><A NAME="SCKINE">SCKINE</A></FONT></H4>
1322 <PRE>
1323 +KEEP,SCKINE,IF=ROOTIO
1324       CHARACTER*4 CHTREE
1325       COMMON / SCKINE / MTRACK, MPRIMA
1326      +,                 CHTREE(2)
1327
1328 C     MTRACK     Track number in the Root stack
1329 C     MPRIMA     Number of primaries generated
1330 C     CHTREE     Root trees to be created in memory
1331
1332 </PRE>
1333
1334 <H4><FONT COLOR="#cc5050"><A NAME="SCXMFD">SCXMFD</A></FONT></H4>
1335 <PRE>
1336 +KEEP,SCXMFD,IF=-ROOTIO.
1337 C --- Common containing magnetic field map data
1338       REAL DZ,DX,DY,UDX,UDY,UDZ
1339      $,XMBEG,YMBEG,ZMBEG,XMEND,YMEND,ZMEND
1340      $,BV
1341       INTEGER NX,NY,NZ
1342
1343       PARAMETER(MAXFLD=250000)
1344       COMMON /SCXMFD/ NX,NY,NZ,DZ,DX,DY,UDX,UDY,UDZ
1345      $,XMBEG,YMBEG,ZMBEG,XMEND,YMEND,ZMEND
1346      $,BV(MAXFLD)
1347 C
1348 C       NX, NY, NZ    Number of map points
1349 C       DX, DY, DZ    Map cell side
1350 C       XMBEG, XMEND  Map extension in X
1351 C       YMBEG, YMEND  Map extension in Y
1352 C       ZMBEG, ZMEND  Map extension in Z
1353 C       BV            Array of field values (BX,BY,BZ)(IX,IY,IZ)
1354 C
1355 C       
1356 </pre>
1357
1358 <H4><FONT COLOR="#cc5050"><A NAME="SCXLEGO">SCXLEGO</A></FONT></H4>
1359 <PRE>
1360 +KEEP,SCXLEGO
1361 C --- LEGO option for calculating material traversed
1362 C
1363 C       THEMIN   Minimum generation theta
1364 C       THEMAX   Maximum generation theta
1365 C       PHIMIN   Minimum generation phi
1366 C       PHIMAX   Maximum generation phi
1367 C       RLMIN    Generation radius
1368 C       RLMAX    Maximum tracking radius
1369 C       ZLMAX    Maximum tracking Z
1370 C       NLTHE    Number of bins in Theta
1371 C       NLPHI    Numner of bins in Phi
1372 C       IFLEGO   Lego Flag
1373 C       ICTHE    Current theta bin
1374 C       ICPHI    Current phi bin
1375 C       CURTHE   Current theta of track
1376 C       CURPHI   Current phi of track
1377 C       TOTRADL  Total Radiation length
1378 C       TOTABSO  Total absorption length
1379 C       TOTGCM2  Total G/CM2 traversed
1380 C
1381       COMMON / SCXLEGO / THEMIN, THEMAX, PHIMIN, PHIMAX, RLMIN, RLMAX,
1382      $ZLMAX, NLTHE, NLPHI, IFLEGO, ICTHE, ICPHI, TOTRADL, TOTABSO,
1383      $TOTGCM2, CURPHI, CURTHE
1384
1385 </PRE>
1386
1387 <H4><FONT COLOR="#cc5050"><A NAME="SCCPROTO">SCCPROTO</A></FONT></H4>
1388 <PRE>
1389 +KEEP,SCCPROTO,IF=ROOTIO
1390 //
1391 //  Prototypes for Galice
1392 //
1393 #ifdef WIN32
1394 #define sxsrot SXSROT
1395 #define type_of_call _stdcall
1396 #else
1397 #define sxsrot sxsrot_
1398 #define type_of_call
1399 #endif
1400
1401 extern "C" void type_of_call
1402      sxsrot(int &nmat, const float &theta1, const float &phi1,
1403                        const float &theta2, const float &phi2,
1404                        const float &theta3, const float &phi3);
1405 </PRE>
1406 </pre>
1407
1408
1409 <!================================================================================>
1410
1411 <H3><A NAME="4.5">4.5 Routine Description</A></H3>
1412 <!======================================================================>
1413 <H3><IMG src=picts/act.gif> page under construction </H3>
1414 <P> 
1415 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
1416 </P>
1417 <HR>
1418 <!======================================================================>
1419 <H4><A NAME="GALICE">PATCH GALICE</A></H4>
1420 <P>Contains the main programs for the standalone FORTRAN version:
1421
1422 <P><TABLE>
1423 <TR>
1424    <TH ALIGN=LEFT>$GALIBAT <TD> Batch main program.
1425 <TR>
1426    <TH ALIGN=LEFT>$GALINT  <TD> Interactive main program.
1427 </TABLE>
1428
1429 <P>These are obsolete.
1430
1431 <H4><A NAME="DUMMIES">PATCH DUMMIES</A></H4>
1432 <P>Contains dummy routines needed to satisfy all externals. These are called
1433 internally from CERNLIB routines.
1434
1435 <H4><A NAME="LEGO">PATCH LEGO</A></H4>
1436 <P>Contains the routines to calculate the material budget maps when the
1437 <A HREF="#3">LEGO</A> option is activated by the <A HREF="#SXLEGO">SXLEGO</A>
1438 data card.
1439
1440 <DL>
1441 <P><DT><A NAME="SXLGCY"><B>SXLGCY(X,V,R,Z,T)</B></A>
1442 <DD>Routine to propagate a track to the boundary of a cylinder from the
1443 inside. The cylinder is centered in the origin and has the axis along z.
1444 Called by SXLGST.
1445
1446 <P><TABLE>
1447 <TR>
1448    <TH ALIGN=LEFT>X(3)
1449    <TD>Current position
1450 <TR>
1451    <TH ALIGN=LEFT>V(3)
1452    <TD>Current direction (unnormalised)
1453 <TR>
1454    <TH ALIGN=LEFT>R
1455    <TD>Radius of the cylinder
1456 <TR>
1457    <TH ALIGN=LEFT>Z
1458    <TD>half length of the cylinder
1459 <TR>
1460    <TH ALIGN=LEFT>T
1461    <TD>distance to the boundary
1462 </TABLE>
1463
1464 <P><DT><A NAME="SXLGIN"><B>SXLGIN</B></A>
1465 <DD>Initialises LEGO calculations. Called by UGINIT.
1466
1467 <P><DT><A NAME="SXLGKI"><B>SXLGKI</B></A>
1468 <DD>Generates kinematic for lego calculation. Called by GUKINE.
1469
1470 <P><DT><A NAME="SXLGOU"><B>SXLGOU</B></A>
1471 <DD>End of event routine for LEGO option. Called by GUOUT.
1472
1473 <P><DT><A NAME="SXLGST"><B>SXLGST</B></A>
1474 <DD>Step routine for the LEGO option. Called by GUSTEP.
1475 </DL> 
1476  
1477 <H4><A NAME="MISC">PATCH MISC</A></H4>
1478 <DL>
1479 <DT><A NAME="fpe"><B>fpe</B></A>
1480 <DD>Thanks to <A HREF="mailto:billm@suburbia.net"> W. Metzenthen</A>, 22
1481 Parker St, Ormond, Vic 3163, Australia, This code implements floating point
1482 trap for the Linux g77/egcs FORTRAN compilers.
1483 </DL>
1484
1485 <H4><A NAME="GPATCH">PATCH GPATCH</A></H4>
1486 <P>Contains corrections for GEANT 3.21
1487
1488 <DL>
1489 <P><DT><A NAME="CGHPLA"><B>CGHPLA</B></A>
1490 <DD>Precision problem corrected in case of volumes with very disuniform
1491 dimensions.
1492
1493 <P><DT><A NAME="GGPERP"><B>GGPERP</B></A>
1494 <DD>Correction in error message.
1495
1496 <P><DT><A NAME="GGPPAR"><B>GGPPAR</B></A>
1497 <DD>Modified to support TRD1 in TRD1 with negative parameters.
1498
1499 <P><DT><A NAME="GRFILE"><B>GRFILE</B></A>
1500 Modified to support I/O of ZEBRA linear structures.
1501
1502 <P><DT><A NAME="GROUT"><B>GROUT</B></A>
1503 <DD>Modified to support I/O of ZEBRA linear structures.
1504 </DL>
1505
1506 <H4><A NAME="ROOTIO">PATCH ROOTIO</A></H4>
1507
1508 <DL>
1509 <P><DT><A NAME="GTREVE"><B>GTREVE</B></A>
1510 <DD>Modified version of the original GEANT routine. Particles are fetched from
1511 the ROOT stack by the routine RXGTRAK and loaded into the JKINE/JVERT
1512 structure as track N 1 and vertex N 1. From there on the
1513
1514 <P><DT><A NAME="GTRIGI"><B>GTRIGI</B></A>
1515 <DD>Modified version of the original GEANT routine. It calls a RXSTIN to
1516 initialise the ROOT stack.
1517 </DL>
1518
1519 <H4><A NAME="DETMOD">Routines for Detector Modules</A></H4>
1520
1521 The routines in the different modules are called nnn_fff, where nnn is
1522 the name of the module, which can be:
1523
1524 <P><CENTER>
1525 ITS, MAG, TPC, TOF, PMD, PHOS, RICH, MUON, FRAME, CASTOR, FMD, HALL, 
1526 ABSO, SHIL, DIPO, TRD, PIPE</CENTER>
1527
1528 <P>and fff is:
1529
1530 <P><TABLE ALIGN=CENTER WIDTH=80%>
1531 <TR>
1532    <TH ALIGN=LEFT>nnn_FKEY
1533    <TD>Definition of the FFREAD data cards specific for a given module.
1534 <TR>
1535    <TH ALIGN=LEFT>nnn_INIT
1536    <TD>Initialisation routine for a given module.
1537 <TR>
1538    <TH ALIGN=LEFT>nnn_MEDIA
1539    <TD> Definition of materials and tracking media
1540 <TR>
1541    <TH ALIGN=LEFT>nnn_GEOM
1542    <TD>  Definition of geometry
1543 <TR>
1544    <TH ALIGN=LEFT>nnn_SENS
1545    <TD>  Definition of hits and digit structure
1546 <TR>
1547    <TH ALIGN=LEFT>nnn_DRAW
1548    <TD>  Drawing routine
1549 <TR>
1550    <TH ALIGN=LEFT>nnn_STEP
1551    <TD>  Specific routine called at each step
1552 <TR>
1553    <TH ALIGN=LEFT>nnn_TRKI
1554    <TD>  Routine called at the beginning of each new track
1555 <TR>
1556    <TH ALIGN=LEFT>nnn_TRKE
1557    <TD>  Routine called at the end of each new track
1558 <TR>
1559    <TH ALIGN=LEFT>nnn_DIGT
1560    <TD>  Digitisation routine called at the end of each track
1561 <TR>
1562    <TH ALIGN=LEFT>nnn_DIGE
1563    <TD>  Digitisation routine called after each event
1564 <TR>
1565    <TH ALIGN=LEFT>nnn_EVE
1566    <TD>   Termination routine called after each event
1567 <TR>
1568    <TH ALIGN=LEFT>nnn_END
1569    <TD>   Termination routine called at the end of the run
1570 </TABLE>
1571
1572 <P>When several version of a given module are present, a routine may act as
1573 a switchyard, to version-specific routines where the last letter is
1574 replaced by a digit. So if there are 2 version of the TPC, the routine
1575 TPC_GEOM would just call TPC_GEO0 or TPC_GEO1 according to the version
1576 chosen for the run.
1577
1578 <H4><A NAME="STEER">PATCH STEER</A></H4>
1579 <P>This patch contains the GALICE Steering Routines
1580
1581 <DL>
1582 <P><DT><A NAME="SXACCUT"><B>SXACCUT</B></A>
1583 <DD>Selects the particles from heavy resonances decay that are within
1584 the acceptance of the muon chambers (2-9 degrees).
1585
1586 <P><DT><A NAME="SXCOLOR"><B>SXCOLOR</B></A>
1587 <DD>Defines the color attribute for the different elements of the setup. Only
1588 the first seven colors are used to allow the possibility to make drawing
1589 with shading. The algorithm assigns the same color to volumes that are
1590 filled with the same tracking medium (modulo 6).
1591
1592 <P><DT><A NAME="SXCUTS"><B>SXCUTS</B></A>
1593 <DD>Reads the file <A HREF="#2"><B>galice.cuts</B></A> and sets the cuts
1594 for a specific tracking medium. Called by UGINIT.
1595
1596 <P><DT><A NAME="SXDIGT"><B>SXDIGT</B></A>
1597 <DD>Digitising and recording of hits after each track. This routine is
1598 called from SXTRKE for tracks saved in the JKINE bank after the calls to
1599 the nnn_TRKE routines. This routine in turn calls the nnn_DIGT routines for
1600 each module, but ONLY in case that the detector <A HREF="#SXLUN">spc</A>
1601 flag has been selected.
1602
1603 <P>In the nnn_DIGT routines the detector specific SPC data arrays contained
1604 in the <char>_SPC KEEP sequence are filled and written onto the SPC data
1605 CWN by a call to HFNTB with the corresponding block name. <char>_SPC should
1606 contain the common /SCXSCR/ which serves as a scratch space buffer for all
1607 detector raw data. Note that all SPC data consist of INTEGER values. As an
1608 example consider the PHOS SPC data structure.
1609
1610 <P><EM><FONT COLOR="RED">Note that this code has not yet been developed for
1611 all detectors and it implies that the CWN I/O instead that the ROOT I/O is
1612 used. CWN output is not supported and will be discontinued soon.  When
1613 using the ROOT I/O, the digitisation is performed after the simulation in a
1614 separate pass with a ROOT macro or a C++ program.</FONT></EM>
1615
1616 <P><DT><A NAME="SXDRAW"><B>SXDRAW</B></A>
1617 <DD>Drawing of the layout of the various detectors. Called from UGINIT.
1618 This routine calls the nnn_DRAW routines of the various detectors.  In case
1619 view banks are used in the nnn_xxxx routines, then the identifiers of these
1620 view banks have to be in the module range.  Actual drawing (GDRAW, GDSHOW
1621 etc...) may only take place in the SuDRAW routines, and the view banks
1622 created have to be deleted (GDELET) at the end of the name_DRAW routines.
1623
1624 <P><DT><A NAME="SXEDIN"><B>SXEDIN</B></A>
1625 <DD>Initialises the recording of the deposited energy in all
1626 volumes. Called by GUKINE.
1627
1628 <P><DT><A NAME="SXEDOU"><B>SXEDOU</B></A>
1629 <DD>Updates the statistics for the deposited energy at the end of each
1630 event. Called by GUOUT.
1631
1632 <P><DT><A NAME="SXEDSU"><B>SXEDSU</B></A>
1633 <DD>Prints the summary of the energy deposited in all volumes. Called by
1634 UGLAST.
1635
1636 <P><DT><A NAME="SXFMAP"><B>SXFMAP</B></A>
1637 <DD>Routine to read the field map in case the map 2 is chosen. This     
1638 routine is called by <a href="#UGINIT">UGINIT</a> and it stores the
1639 field map either in the common block <a href="#SCXMFD">SCXMFD</a>
1640 for the standalone Galice, or in the class AliMagFCM in the
1641 version interfaced with Root.
1642
1643 <P><DT><A NAME="SXGEOM"><B>SXGEOM</B></A>
1644 <DD>Defines the geometry of the complete setup. Called from UGINIT. This
1645 routine calls the nnn_GEOM routines of the various modules. SXGEOM defines
1646 the Alice mother volume, ALIC, which is a rectangular box filled with air
1647 containing the various detectors.  All the volumes defined by a module
1648 should start with the letter specific to the detector to avoid name
1649 clashes. Unfortunately this rule has not been followed entirely, and we
1650 reserve the possibility to enforce it in a future version of the program.
1651
1652 <P><DT><A NAME="SXKEY"><B>SXKEY</B></A>
1653 <DD>Defines the <A
1654 HREF="http://wwwcn.cern.ch/asdoc/WWW/ffread/ffmain/ffmain.html">FFREAD</A>
1655 data cards. Called by UGINIT.
1656
1657 <P><DT><A NAME="SXMECA"><B>SXMECA(MEC,CHMECA)</B></A>
1658 <DD>Returns the name of a GEANT interaction mechanism.
1659
1660 <P><TABLE WIDTH=80%>
1661 <TR>
1662    <TH ALIGN=LEFT>MEC
1663    <TD>Mechanism code.
1664 <TR>
1665    <TH ALIGN=LEFT>CHMECA
1666    <TD>(CHARACTER*4) Mechanism name.
1667 </TABLE>
1668
1669
1670 <P><DT><A NAME="SXMEDIA"><B>SXMEDIA</B></A>
1671 <DD>Steers the definition of materials and tracking media for the whole
1672 setup. Called by UGINIT. The routines acts as a switchyard calling all
1673 the nnn_MEDIA routines for each module. Tracking media identifiers are
1674 stored into the IDTMED array in common <A HREF="#SCXDB">SCXDB</A>
1675 in the
1676 appropriate module range. For instance, all tracking media of the TPC
1677 are stored in IDTMED(400:499). They do not need to be stored contiguously.
1678
1679 <P><DT><A NAME="SXMULO"><B>SXMULO</B></A>
1680 <DD>Routine to save and restore information that is needed when reading the
1681 initialisation structures from disk. Called by UGINIT. 
1682
1683 <P>For a detector complex as Alice the creation of the permanent ZEBRA data
1684 structures (DRAW, MATE, PART, ROTM, RUNG, SETS, TMED, VOLU and SCAN) can be
1685 quite a long process. This is not disturbing in long production runs, but
1686 can hit badly a debug cycle. The structures can be saved on disk and
1687 reread, but in the standard version of GEANT the common /GCMULO/ is not
1688 saved and restored. This implies that a call to the GPHYSI routine is
1689 always needed, which can be very time-consuming. The routine SXMULO save
1690 and restores this common together with the arrays IDTMED and IMEDIA in
1691 common <A HREF="#SCXDB"> SCXDB</A>.
1692
1693 <P>Not to alter the generality of the standard GEANT I/O routines this
1694 information is attached as a next bank to the JRUNG bank, that in the
1695 original version of GEANT does not have a next bank. Unfortunately the
1696 standard I/O routines of GEANT do not read or write linear structures, so
1697 we had to introduce modified I/O routines in <A HREF="#GPATCH">GPATCH</A>.
1698
1699 <P><DT><A NAME="SXOUT"><B>SXOUT</B></A>
1700 <DD>Termination routine called by GUOUT. It perform various I/O operations
1701 under user control.
1702
1703 <P><DT><A NAME="SXPART"><B>SXPART</B></A>
1704 <DD>Defines additional particles and their decay modes. Called by
1705 UGINIT. The particles defined are: OMEGA(783), PHI(1020), D+, D-, D0, ANTI
1706 D0 RHO+, RHO- and RHO0 and the related decay modes. This routine has mainly
1707 been kept for backward compatibility. GEANT 3.21 decays particles according
1708 to phase space, which is not correct for these particles. The decay of
1709 heavy particles should be performed via some specialised routine such as
1710 the ones found in the LUND MonteCarlo library.
1711
1712 <P><DT><A NAME="SXPMAT"><B>SXPMAT(IMATE,IPART,MECA)</B></A>
1713 <DD>Called by UGLAST, it provides material and particle information for
1714 phyisics mechanisms in GEANT. Arguments:
1715
1716 <P><TABLE WIDTH=80%>
1717 <TR>
1718    <TH ALIGN=LEFT>IMATE
1719    <TD>Material number. 0 means all materials.
1720 <TR>
1721    <TH ALIGN=LEFT VALIGN=TOP>IPART
1722    <TD>Particle number. 0 means Electron, Positron, Gamma,
1723                  Pi+, Pi-, Neutron, Proton, Alpha.
1724 <TR>
1725    <TH ALIGN=LEFT VALIGN=TOP>MECHA
1726    <TD>(CHARACTER*4) the mechanism for which the information is
1727                  requested. It can be 'LOSS', 'PHOT', 'ANNI', 'COMP', 
1728                  'MUNU', 'BREM', 'PAIR', 'DRAY', 'PFIS', 'HADT', 'HADG',
1729                  'ALL'
1730 </TABLE>
1731
1732
1733 <P><DT><A NAME="SXPSTA"><B>SXPSTA(IPAR)</B></A>
1734 <DD>Secondary particle statistics called by GUSTEP, UGINIT, UGLAST.
1735
1736 <P><TABLE WIDTH=60%>
1737 <TR>
1738    <TH ALIGN=LEFT VALIGN=TOP>IPAR
1739    <TD VALIGN=TOP>Action flag:
1740    <TD VALIGN=TOP>
1741    <TABLE>
1742       <TR> 
1743       <TD>1
1744       <TD>initialisation
1745       <TR>
1746       <TD>2
1747       <TD>updating statistics
1748       <TR>
1749       <TD>3
1750       <TD>printout of statistics.
1751    </TABLE>
1752 </TABLE>
1753
1754
1755 <P><DT><A NAME="SXSATS"><B>SXSATS(EDEP,DEDX,RKB,C)</B></A>
1756 <DD>Apply Birk's saturation law to energy deposition. Called by the
1757 user. This routine does practically the same as GBIRK but it returns the
1758 parameters used instead the visible energy alone.
1759
1760 <P><TABLE WIDTH=80%>
1761 <TR>
1762    <TH ALIGN=LEFT VALIGN=TOP>MODE
1763    <TD VALIGN=TOP> Attenuation mode.
1764    <TD VALIGN=TOP><TABLE>
1765    <TR><TD>1 <TD>organic scintillator
1766    <TR><TD>2 <TD>Liquid (Not yet implemented)
1767    <TR><TD>3 <TD>for Gas (Not yet implemented).
1768    </TABLE>
1769 </TABLE>
1770
1771 <P>The material is assumed ideal, which means that impurities and aging
1772 effects are not taken into account. The algorithm for MODE=1, the only one
1773 implemented is:
1774
1775 <P><CENTER>EDEP = DESTEP / (1. + RKB*DE/DX +C*(DE/DX)**2)</CENTER>
1776
1777 <P>The values of MODE, RKB and C can be entered via
1778 <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node71.html">GSTPAR</A>:
1779
1780       <P><CODE>CALL GSTPAR(IMATE,'BIRK1',VALUE)</CODE> to set MODE
1781       <BR><CODE>CALL GSTPAR(IMATE,'BIRK2',VALUE)</CODE> to set RKB
1782       <BR><CODE>CALL GSTPAR(IMATE,'BIRK3',VALUE)</CODE> to set C
1783
1784 <P>The basic units of the coefficient are g/(MeV*cm<SUP>2</SUP>) because the DE/DX
1785 is expressed in MeV/cm Exp. values from NIM 80 (1970) 239-244 are:
1786
1787
1788          <P>RKB = 0.013 g/MeV*cm<SUP>2</SUB>
1789          <BR>C   = 9.6 10<SUP>-6</SUP> g<SUP>2</SUP>/(MeV<SUP>2</SUP>)(cm<SUP>4</SUP>)
1790
1791 <P><DT><A NAME="SXSENS"><B>SXSENS</B></A>
1792 <DD>Steers the definition of the sensitive module elements. Called from
1793 UGINIT.  This routine calls the nnn_SENS routines of the various modules.
1794 The nnn_SENS routines don't have any arguments.  The names used in the
1795 nnn_SENS routines to define (sets of) sensitive module elements have to
1796 start with the pre-defined character as specified for the geometry
1797 volumes. Again this use has been lost during evolution of the program and
1798 it should probably be reinforced. In case user identifiers (IDTYPE) are
1799 used for various module elements (GSDET), these identifiers have to
1800 be in the module range.
1801
1802 <P><DT><A NAME="SXSMAT"><B>SXSMAT(IMAT,NAMATE,A,Z,DENS,RADL,ABSL,UBUF,NWBUF)</B></A>
1803 <DD>Defines a material. This routine is the same as
1804 <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node50.html">GSMATE</A>
1805 with the difference
1806 that the material identifier IMAT is an output parameter. The next free
1807 material identifier is returned.
1808
1809 <P><DT><A NAME="SXSMIX"><B>SXSMIX(IMAT,NAMATE,A,Z,DENS,NLMAT,WMAT)</B></A>
1810 <DD>Defines a mixture or a compound. This routine is the same as
1811 <A HREF="http://wwwcn.cern.ch/asdoc/geant/H2GEANTCONS110.html">GSMIXT</A>
1812 with the difference
1813 that the material identifier IMAT is an output parameter. The next free
1814 material identifier is returned.
1815
1816 <P><DT><A NAME="SXSROT"><B>SXSROT(NMAT,THETA1,PHI1,THETA2,PHI2,THETA3,PHI3)</B></A>
1817 <DD>Defines a rotation matrix. This routine is the same as
1818 <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node118.html"> GSROTM </A>
1819 with the difference
1820 that the matrix identifier NMAT is an output parameter. The next free
1821 matrix identifier is returned.
1822
1823 <P><DT><A NAME="SXSTME"><B>
1824 SXSTME(KTMED,NATMED,NMAT,ISVOL,IFIELD,FIELDM,TMAXFD,
1825 <BR>     +        STEMAX,DEEMAX,EPSIL,STMIN,UBUF,NWBUF)
1826 </B></A>
1827 <DD>Defines a tracking media. This routine is the same as GSTMED
1828 <A HREF="<http://wwwcn.cern.ch/asdoc/geant/H2GEANTCONS200.html#GSTMED">
1829 GSTMED</A>
1830 with the
1831 difference that the tracking medium identifier KTMED is an output
1832 parameter. The next free matrix identifier is returned.
1833
1834 <P><DT><A NAME="SXTRKE"><B>SXTRKE</B></A>
1835 <DD>End statistics after tracking for each track.  Called from GUTRAK.  This
1836 routine calls the nnn_TRKE routines of the various detectors.  The
1837 nnn_TRKE routines have 1 argument (IFLAG) to denote primary (1) and
1838 secondary (2) tracks.
1839
1840 <P><DT><A NAME="SXTRKI"><B>SXTRKI</B></A>
1841 <DD>Initialisation before tracking for each track.  Called from GUTRAK.  This
1842 routine calls the nnn_TRKI routines of the various detectors.  The
1843 nnn_TRKI routines have 1 argument (IFLAG) to denote primary (1) and
1844 secondary (2) tracks.  Note : The name_TRKI routines are THE location to
1845 reset the detector specific hit statistics arrays for a certain track.
1846
1847 <P><DT><A NAME="SXWSIM"><B>SXWSIM(X,Y,Z,PX,PY,PZ,JTK,IPA,JSTACK)</B></A>
1848 <DD>Handles track information for pattern recognition development. Called by
1849 user.
1850
1851 <P><TABLE WIDTH=80%>
1852 <TR>
1853    <TH ALIGN=LEFT>X,Y,Z<TD>         Position of the particle;
1854 <TR>
1855    <TH ALIGN=LEFT>PX,PY,PZ<TD>      Momentum of the particle;
1856 <TR>
1857    <TH ALIGN=LEFT>JTK<TD>           Track number;
1858 <TR>
1859    <TH ALIGN=LEFT>IPA<TD>           Particle code;
1860 <TR>
1861    <TH ALIGN=LEFT>JSTACK<TD>        Stack number;
1862 </TABLE>
1863
1864 <P><DT><A NAME="SXZINI"><B>SXZINI</B></A> 
1865 <DD>Initialises the Alice Zebra structure. Called by UGINIT. The Alice Zebra
1866 structure contains the scratch space for recording the energy deposition
1867 in all volumes, and it depends on the link JLEDEP in common /SCXZLN/.
1868 </DL>
1869
1870 <H4><A NAME="SUCODE">PATCH SUCODE</A></H4>
1871 <P>User Steering Routines
1872
1873 <DL>
1874 <P><DT><A NAME="SUDIGE"><B>SUDIGE</B></A>
1875 <DD>User entry to digitise and record raw data after each event. Called by
1876 GUDIGI.
1877
1878 <P><DT><A NAME="SUDIGT"><B>SUDIGT</B></A>
1879 <DD>User entry to digitise and record hits after each track. Called by SXDIGT.
1880
1881 <P><DT><A NAME="SUDRAW"><B>SUDRAW</B></A>
1882 <DD>User entry to draw detector layout. Called by SXDRAW.
1883
1884 <P><DT><A NAME="SUEND"><B>SUEND</B></A>
1885 <DD>User entry for a termination routine at end of a run. Called by SXEND.
1886
1887 <P><DT><A NAME="SUEVE"><B>SUEVE</B></A>
1888 <DD>User entry called at the end of each event. Called by SXEVE.
1889
1890 <P><DT><A NAME="SUGEOM"><B>SUGEOM</B></A>
1891 <DD>User entry for geometry definition. Called SXGEOM.
1892
1893 <P><DT><A NAME="SUINIT"><B>SUINIT</B></A>
1894 <DD>User entry for initialisation. Called UGINIT.
1895
1896 <P><DT><A NAME="SUMEDIA"><B>SUMEDIA</B></A>
1897 <DD>User entry for material and tracking media definition. Called by SXMEDIA.
1898
1899 <P><DT><A NAME="SUSENS"><B>SUSENS</B></A>
1900 <DD>User entry for sensitive detector definition. Called by SXSENS.
1901
1902 <P><DT><A NAME="SUSTEP"><B>SUSTEP</B></A>
1903 <DD>User entry at each step. Called by GUSTEP.
1904
1905 <P><DT><A NAME="SUTRKE"><B>SUTRKE</B></A>
1906 <DD>User entry called at the end of eack track. Called by SXTRKE.
1907
1908 <P><DT><A NAME="SUTRKI"><B>SUTRKI</B></A>
1909 <DD>User entry called at the beginning of eack track. Called by SXTRKI.
1910 </DL>
1911
1912
1913 <H4><A NAME="GUCODE">PATCH GUCODE</A></H4>
1914 <P>Description of Geant User Routines
1915
1916 <DL>
1917 <P><DT><A NAME="GUDIGI"><B>GUDIGI</B></A> 
1918 <DD>Digitising and recording of raw data after each event.  This routine calls
1919 the nnn_DIGE routines of the various detectors ONLY in case that detector
1920 has been selected for writing out the RAW data.  In the nnn_DIGE routines
1921 the detector specific RAW data arrays as specified in +KEEP,char_RAW is
1922 filled and written onto the RAW data output stream.  Here char stands for
1923 the detector specific identification character as specified above.  The
1924 sequence +KEEP,char_RAW however should actually contain the common /SCXSCR/
1925 which serves as a scratch space buffer for all detector raw data.  Note
1926 that all RAW data consist of INTEGER values.  However, the RAW format still
1927 has to be defined at the moment.
1928
1929 <P><DT><A NAME="GUFLD"><B>GUFLD(VECT,B)</B></A> 
1930 <DD>User routine to return the magnetic field. The field model is controlled
1931 by the FFREAD card <A HREF="#SXFLD">SXFLD</A>. This routine has a FORTRAN 
1932 version, selected when the standalone version of GALICE is compiled, and a
1933 C++ version to be used with the version of GALICE interfaced with ROOT.
1934
1935
1936 <P><DT><A NAME="GUPHAD"></A><A NAME="GUHADR"><B>GUHADR and GUPHAD</B></A>
1937 <DD>User routines to steer the hadronic package used. If the IHADR flag (FFKEY
1938 card or tracking media parameter) is 4, the GEANT FLUKA92 interface is
1939 called, while if IHADR is 1 GHEISHA is called.
1940
1941 <P><DT><A NAME="GUKINE"><B>GUKINE</B></A>
1942 <DD>Event generation routine. It is steered by the <A HREF="#KINE">KINE</A> card.
1943 See <A HREF="picts/galice1cards.gif">galice data cards</A> as an example.
1944
1945 <P><DT><A NAME="GUOUT"><B>GUOUT</B></A>                        
1946 <DD>Termination routine after each event.  This routine calls the nnn_EVE
1947 routines of the various detectors.
1948
1949 <P><DT><A NAME="GUSTEP"><B>GUSTEP</B></A>                        
1950 <DD>Records possible hits after each step.  This routine calls the nnn_STEP
1951 routines of the various detectors.
1952
1953 <P><DT><A NAME="GUTRAK"><B>GUTRAK</B></A>                        
1954 <DD>User routine called for each primary track.
1955
1956 <P><DT><A NAME="GUTREV"><B>GUTREV</B></A>                        
1957 <DD>User routine called for each event.
1958
1959 <P><DT><A NAME="UGINIT"><B>UGINIT</B></A>                        
1960 <DD>Initialisation at the beginning of a simulation run called from the main
1961 program GALICE.  This routine calls the nnn_INIT routines of the various
1962 modules. For example the initialization of the PHOS is in PHOS_INIT
1963 These nnn_INIT routines perform module specific initialisations (if
1964 needed) and also specify the content of the module SPC data block in case
1965 the SPC data CWN is used. The name of the SPC data block should be the same
1966 as the module name (i.e. PHOS, ZDC etc.).  As the names of the variables
1967 within the SPC data block have to be unique, each variable has to have as
1968 the last character the module specific identification number (see before).
1969  Each nnn_INIT should to produce a short printout indicating the routine
1970 name, so that from the log file of a certain run it can be directly seen
1971 which detectors were invoked and correctly initialised.
1972
1973 <P><DT><A NAME="UGLAST"><B>UGLAST</B></A>                        
1974 <DD>Termination at the end of a simulation run.  This routine calls the
1975 nnn_END routines of the various detectors.  The nnn_END routines don't have
1976 any arguments.
1977
1978 </DL>
1979
1980
1981 <!=======================================================================>
1982
1983 <HR>
1984 <BR>
1985 <H2>
1986 <A NAME="5">5. Output Format
1987 </A>
1988 </H2>
1989 <!======================================================================>
1990 <H3><IMG src=picts/act.gif> page under construction </H3>
1991 <P> 
1992 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
1993 </P>
1994 <HR>
1995 <!======================================================================>
1996 <P>There are currently two options for the output format of GALICE:
1997 <UL>
1998 <LI> HBOOK CWN, GEANT HITS and DIGI structures all based on ZEBRA
1999 <LI> ROOT Object I/O
2000 </UL>
2001
2002 <P>The FORTRAN/ZEBRA output format has been kept for backward compatiblity
2003 and may be removed in the near future if there are no requests to maintain
2004 it. It is described in the galice.cmz file in the DECK FORMAT of the different
2005 patches, and the reader is referred to the code for more information.
2006
2007 <P>The ROOT Object I/O is described together with the rest of the ROOT interface
2008 to Galice in the next chapter.
2009
2010 <HR>
2011 <BR>
2012 <H2>
2013 <A NAME="6">6. ROOT Interface to Galice
2014 </A>
2015 </H2>
2016 <!======================================================================>
2017 <H3><IMG src=picts/act.gif> page under construction </H3>
2018 <P> 
2019 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
2020 </P>
2021 <HR>
2022 <!======================================================================>
2023
2024 <P> During 1998 GALICE has been upgraded and modified to provide
2025 a simulation tool for the Technical Design
2026 Reports.  Those <A HREF="history.html"> upgrades</A> lead to two releases
2027 of the package in June 1998 and are detailed <A HREF="history.html">
2028 elsewhere</A>.  <B>Version 2.02</B> of GALICE is the first version of the
2029 package that includes the ROOT interface.
2030
2031 <P>
2032 <B>The main reasons for that were to: </B> 
2033 <UL>
2034 <LI> Provide a particle stack within GEANT which is capable to hold 
2035      the complete particle 
2036      history without inherent limitations. The current GEANT stack
2037      does not save full particle history and is limited to 65K tracks
2038      which is not enough for the process of an ALICE event.</LI>
2039 <BR><BR>
2040 <LI> Provide output services more advanced than the traditional GEANT
2041      HITS structure based on ZEBRA 
2042      and more flexible than the
2043      <A HREF="http://wwwcn.cern.ch/asdoc/hbook_html3/hboomain.html">
2044      Column Wise Ntuple (CWN)</A> and which can hold the amount of data
2045      of ALICE detectors. 
2046      The new I/O
2047      can accomodate complex hit structures without inherent space
2048      limitations. The standard CWN are limited to 50,000 events per
2049      column.</LI>
2050 <BR><BR>
2051 <LI> Provide an evolutive framework, where reconstruction and analysis
2052      programs can be prototyped via ROOT macros, which are nothing else
2053      than C++ fragments. The advantage of the fact that the coding and 
2054      scripting language are the same is that these macros can evolve into 
2055      compiled libraries
2056      and later reconstruction and analysis packages seamlessly. At the
2057      moment of writing the Alice Offline framework is being defined,
2058      but we already know it will be based on OO technology. This approach
2059      avoids the creation of legacy code, and allow us to reuse whatever
2060      work is done for the TDR's in the final Alice Offline framework.</LI>
2061 </UL>
2062
2063 <P>
2064 <H3>6.1 The traditional GEANT3.21 </H3>
2065
2066 <P>The old galice 1.05 program uses GEANT3.21 in the standard way, with
2067 KUIP as the interactive interface and the FFREAD cards to specify at run
2068 time the source of primary tracks in one event, to select the detectors
2069 taking part in the simulation and to switch on or off the sensitive media
2070 of the detectors that produce hits that are written out as PAW ntuples. The
2071 user routine UGINIT initializes the package and calls UGEOM that sets up
2072 the geometry.
2073
2074 <BR>
2075
2076 <TABLE BORDER="0" CELLSPACING="1" WIDTH="100%">
2077 <TR>
2078  <TD ALIGN=left ROWSPAN="2">
2079  <IMG ALT="Logical Diagram of OLD GALICE" ALIGN=left 
2080   SRC="picts/oldg.gif"  
2081   width="750" height="630" VSPACE="5" HSPACE="2.5" BORDER="0">
2082  </TD>
2083 </TR>
2084 </TABLE>
2085
2086 <P>To process an event GUKINE takes an event from the event generator or
2087 generates the primary tracks internally, creating the Geant stacks JVERTEX
2088 and JKINE. These stacks are too small to contain a full ALICE event, then
2089 secondary tracks are added to them as the tracks are followed though the
2090 setup and produce secondaries, overflowing at 65K tracks.
2091
2092 <P> The Geometry of the setup and the Hits in the sensitive parts of the
2093 detectors are coded by the users in FORTRAN.
2094
2095
2096
2097 <H3><A NAME="6.2">6.2 The ROOT interface in GALICE</A></H3>
2098 <!======================================================================>
2099 <H3><IMG src=picts/act.gif> page under construction </H3>
2100 <P> 
2101 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
2102 </P>
2103 <HR>
2104 <!======================================================================>
2105 <P> To move to the Object Oriented world and to be able to handle
2106 simulations of the ALICE detectors in an efficient way for the work being
2107 done for the Technical Design Reports (TDRs), it was decided to provide
2108 GALICE with a ROOT output. This was done in a way almost transparent to the
2109 galice users, keeping the KUIP and FFCARDS steering and the definition of
2110 the Geometry and Hits with the same user routines in FORTRAN. A future
2111 version in which the steering is done within ROOT and the Geometry and Hits
2112 can be defined by users in C++ is in preparation.
2113
2114 <P>The code of this C++ interface is entirely documented <A
2115 HREF="html/USER_Index.html">here</A>.
2116
2117
2118 <P><TABLE>
2119 <TR>
2120  <TD ALIGN=left ROWSPAN="2">
2121  <IMG ALT="Logical Diagram of NEW GALICE" ALIGN=left 
2122   SRC="picts/newg.gif"  
2123   width="750" height="630" VSPACE="5" HSPACE="2.5" BORDER="0">
2124  </TD>
2125 </TR>
2126 </TABLE>
2127
2128 <P> The GEANT routines GUKINE, GTREVE and GUSTEP have been modified so that
2129 the GEANT engine only follows one particle at a time and the output objects
2130 of the kinematics and hits are stored in ROOT Tree structures. The
2131 advantage of treating one particle at a time is that even if in one full
2132 ALICE event hundred of thousands of particles are followed, the program
2133 runs in less than 20 MBytes of memory.
2134
2135 <P> GUKINE when given an event to simulate, sets up a ROOT stack:
2136 fParticles, in which all particles are inserted, which will not overflow
2137 and which also keeps all the history of all the particles so that if in a
2138 later generation a particle crosses a sensitive detector and the hit is
2139 written out, one can know from what type of primary it originates and which
2140 processes and in which materials gave rise to it.
2141
2142 <P> When simulating one event, GUKINE takes one particle at a time and
2143 inserts it in the GEANT stack JKINE which is taken by GTREVE and followed
2144 through the setup. If in a given tracking step new particles are produced,
2145 GUSTEP inserts in the ROOT stack the kinematics of the secondary vertex and
2146 all the produced particles which will be fed eventually one by one to the
2147 GEANT 3 engine.
2148
2149 <P> An ALICE <A HREF="html/USER_Index.html">class library</A> has been
2150 created that contains classes corresponding to the Hits defined for each
2151 detector in the Fortran routines.
2152
2153 <P> The Hits are written out after each track in a ROOT Tree structure
2154 TreeH, of the file galice.root. There is one such tree per event. The
2155 kinematics of all the particles that produce hits, together with their
2156 genealogy up to the primary tracks is stared in the galice.root file in an
2157 other tree TreeK of which exists one per event. An additional tree of
2158 digits called TreeD is written out at each event. This tree contains
2159 information which is relative to the whole event and not track per track,
2160 as for instance the energy clusters in the TPC and PHOS. Finally the
2161 information of the events in the run is stored in the same file in the tree
2162 TreeE, containing the run and event number, the number of vertices, tracks
2163 and primary tracks in the event.
2164
2165 <P>
2166
2167 <H3>The class AliRun</H3>
2168
2169 <P>Control class for Alice C++
2170   Only one single instance of this class exists.
2171   The object is created in main program aliroot
2172   and is pointed by the global gAlice.                                     
2173                  
2174 <UL>
2175 <LI>Supports the list of all Alice Detectors (fDetectors).
2176 <LI>Supports the list of particles (fParticles).
2177 <LI>Supports the Trees.
2178 <LI>Supports the geometry.
2179 <LI>Supports the event display.
2180 </UL>
2181
2182 <TABLE>
2183 <TR>
2184  <TD ALIGN=left ROWSPAN="2">
2185  <IMG ALT="Logical Diagram of OLD GALICE" ALIGN=left 
2186   SRC="picts/alirun.gif"  
2187   width="750" height="900" VSPACE="5" HSPACE="2.5" BORDER="0">
2188  </TD>
2189 </TR>
2190 </TABLE>
2191
2192 <H3>FORTRAN / C++ Interface routines</H3>
2193
2194 <P>To be able to communicate between the FORTRAN code of GEANT and the ROOT
2195 data structure, a number of interface routines have been developed. These
2196 are in the source file <A
2197 HREF="html/examples/aliroot.cxx.html">aliroot.cxx</A>.
2198
2199 <!=============================================================================>
2200
2201 <DL>
2202
2203 <P><DT><A NAME="RXSTMG"><B>RXSTMG</B></A>
2204 <DD>C++ step manager dispatcher. This is a direct interface to the <A
2205 HREF="html/AliRun.html">AliRun</A> step manager routine. It is called
2206 by the default version of GUSTEP and allows the user to handle directly the 
2207 data structures from C++ instead that via the FORTRAN interface.
2208
2209 <P><DT><A NAME="RXAHIT"><B>RXAHIT(IDET, MTRACK, NUMBV, HITS)</B></A>
2210
2211 <DD>Stores a hit in the ROOT structure. This routine is supposed to be called
2212 by the nnn_step routines.
2213
2214 <P><TABLE WIDTH=80%>
2215 <TR>
2216    <TH ALIGN=LEFT>IDET
2217    <TD>detector number as found in GEANT common block
2218    <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node384.html#SECTION0138000000000000000000000">GCSETS</A>.
2219 <TR>
2220    <TH ALIGN=LEFT>MTRACK
2221    <TD>Number of the track generting the hit. The ROOT stack track number is found
2222        in common block <A HREF="#SCKINE">SCKINE</A>
2223 <TR>
2224    <TH ALIGN=LEFT>NUMBV
2225    <TD>Array of voume numbers as found in common block 
2226    <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node384.html#SECTION0138000000000000000000000">GCSETS</A>.
2227 <TR>
2228    <TH ALIGN=LEFT>HITS
2229    <TD>Array of user defined hits.
2230 </TABLE>
2231
2232 <P><DT><A NAME="RXDINI"><B>RXDINI</B></A>
2233 <DD>Initialises all detectors. This routine is called by UGINIT.
2234
2235 <P><DT><A NAME="RXGTRAK"><B>RXGTRAK (MTRACK, IPART, PMOM, E, VPOS, TOF)</B></A>
2236 <DD>Fetches next track from the ROOT stack for transport. Called by the modified
2237 version of <A HREF="#GTREVE">GTREVE</A>.
2238
2239 <P><TABLE WIDTH=80%>
2240 <TR>
2241    <TH ALIGN=LEFT>MTRACK
2242    <TD>Track number in the ROOT stack. If MTRACK=0 no more tracks are left in the
2243    stack to be transported.
2244 <TR>
2245    <TH ALIGN=LEFT>IPART
2246    <TD>Particle code in the 
2247 <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node72.html#SECTION024000000000000000000000">GEANT conventions</A>.
2248 <TR>
2249    <TH ALIGN=LEFT>PMOM(3)
2250    <TD>Particle momentum in GeV/c
2251 <TR>
2252    <TH ALIGN=LEFT>E
2253    <TD>Particle energy in GeV
2254 <TR>
2255    <TH ALIGN=LEFT>VPOS(3)
2256    <TD>Particle position
2257 <TR>
2258    <TH ALIGN=LEFT>TOF
2259    <TD>Particle time of flight in seconds
2260 </TABLE>
2261
2262 <P><DT><A NAME="RXSTRAK"><B>RXSTRAK (IDONE, IPARENT, IPART, PMOM, VPOS, TOF, CHMECA, NT)</B></A>
2263 <DD>Fetches next track from the ROOT stack for transport. Called by <A HREF="#GUKINE">
2264 GUKINE</A> and <A HREF="#GUSTEP">GUSTEP</A>.
2265
2266 <P><TABLE WIDTH=80%>
2267 <TR>
2268    <TH ALIGN=LEFT>IDONE
2269    <TD>Status of the track. If IDONE=0 the track is put on the ROOT stack but it
2270    is not fetched for transport.
2271 <TR>
2272    <TH ALIGN=LEFT VALIGN=TOP>IPARENT
2273    <TD>Parent track. If IPARENT=0 the track is a primary. In GUSTEP the routine
2274 is normally called to store secondaries generated by the current track whose
2275 ROOT stack number is MTRACK (common <A HREF="#SCKINE">SCKINE</A>.
2276 <TR>
2277    <TH ALIGN=LEFT>IPART
2278    <TD>Particle code in the 
2279 <A HREF="http://wwwcn.cern.ch/asdoc/geant_html3/node72.html#SECTION024000000000000000000000">GEANT conventions</A>.
2280 <TR>
2281    <TH ALIGN=LEFT>PMOM(3)
2282    <TD>Particle momentum in GeV/c
2283 <TR>
2284    <TH ALIGN=LEFT>VPOS(3)
2285    <TD>Particle position
2286 <TR>
2287    <TH ALIGN=LEFT>TOF
2288    <TD>Particle time of flight in seconds
2289 <TR>
2290    <TH ALIGN=LEFT>CHMECA
2291    <TD>(CHARACTER*10) Particle origin. This field is user defined and it is
2292 not used inside the GALICE code.
2293 <TR>
2294    <TH ALIGN=LEFT>NT
2295    <TD>Number assigned to the particle in the ROOT stack.
2296 </TABLE>
2297
2298 <P><DT><A NAME="RXSTIN"><B>RXSTIN(IRUN,IDEVT)</B></A>
2299 <DD> Called by GTRIGI at the beginning of each event.
2300
2301 <P><TABLE WIDTH=80%>
2302 <TR>
2303    <TH ALIGN=TOP>IRUN
2304    <TD>Current run number
2305 <TR>
2306    <TH ALIGN=TOP>IDEVT
2307    <TD>Current user event number
2308 </TABLE>
2309
2310 <P><DT><A NAME="RXFILE"><B>RXFILE (CHFILE)</B></A>
2311 <DD>Opens the ROOT output file. Called by UGINIT.
2312
2313 <P><TABLE WIDTH=80%>
2314 <TR>
2315    <TH ALIGN=TOP>CHFILE
2316    <TD>(CHARACTER*(*)) file name to be opened.
2317 </TABLE>
2318
2319 <P><DT><A NAME="RXOUTH"><B>RXOUTH</B></A>
2320 <DD>Called by GTREVE at the end of each primary track.
2321
2322 <P><DT><A NAME="RXOUTK"><B>RXOUTK(IEVENT)</B></A>
2323 <DD>Called by GUOUT to write out kinematics at the end of the event:
2324
2325 <P><TABLE WIDTH=80%>
2326 <TR>
2327    <TH ALIGN=TOP>IEVENT
2328    <TD>Number of the current event.
2329 </TABLE>
2330
2331 <P><DT><A NAME="RXFEND"><B>RXFEND</B></A>
2332 <DD>Called by UGLAST to write out everything and close down.
2333 </DL>
2334
2335 <HR>
2336 <BR>
2337 <H2>
2338 <A NAME="7">7. Magnetic Field
2339 </A>
2340 </H2>
2341 <!======================================================================>
2342 <H3><IMG src=picts/act.gif> page under construction </H3>
2343 <P> 
2344 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
2345 </P>
2346 <HR>
2347 <!======================================================================>
2348 <P>At the moment there are two magnetic field maps supported.
2349
2350 <p><b>Map 1</b>
2351
2352 <br>This is a constant field map for the L3 magnet and a parametrised
2353 dipole field with the following features:
2354
2355
2356 <P><TABLE WIDTH=80%>
2357 <TR>
2358    <TH ALIGN=LEFT>position <TH ALIGN=LEFT>field
2359 <TR>
2360    <TD>z  (725,1225) <TD>                    {7*(1-1E-5*(975-z)**2), 0, 0) 
2361 <TR>
2362     <TD>z (-700,700) and sqrt(x**2+(y+30)**2)<560 <TD>           {0,0,2)
2363 <TR>
2364     <TD>                elsewhere      <TD>                        {0,0,0}
2365 </TABLE>
2366
2367 <p><b>Map 2</b>
2368
2369 <br>This is a constant field map for the L3 magnet and a field map for
2370 the dipole. The data are contained in the file field01.dat in the same 
2371 directory than the rest of the files.
2372
2373 <HR>
2374 <BR>
2375 <H2>
2376 <A NAME="8">8. Version history
2377 </A>
2378 </H2>
2379 <!======================================================================>
2380 <H3><IMG src=picts/act.gif> page under construction </H3>
2381 <P> 
2382 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
2383 </P>
2384 <HR>
2385 <!======================================================================>
2386 <P>The detailed history of the changes to the fortran code can be found in
2387 the CMZ <A HREF="history.html">history file</A>. A general description of
2388 the modifications including those in the C++ code can be found in the <A
2389 HREF="Introduction.html">introduction</A>.
2390
2391 <!=============================================================================>
2392 <!======================================================================>
2393 <H3><IMG src=picts/act.gif> page under construction </H3>
2394 <P> 
2395 please send comments to: <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
2396 </P>
2397 <HR>
2398 <!======================================================================>
2399 <BR><BR>
2400 <HR>
2401 page maintained by :
2402 <A HREF="mailto:Yiota.Foka@cern.ch">Yiota Foka</A>
2403 <BR>
2404 Back to: 
2405 <A HREF="http://www1.cern.ch/ALICE/welcome.html"> ALICE home, </A>
2406 <A HREF="http://www1.cern.ch/ALICE/Projects/offline/AliceOffLineHomePage.html">
2407 Offline home</A>
2408
2409 </BODY>
2410 </HTML>
2411
2412
2413
2414
2415
2416