A "collision tape" is a file where quantities describing selected events
are recorded in the course of a FLUKA run.
Note that "event" would be a more appropriate word than "collision",
and "file" better than "tape". For historical reasons, however,
the expression "collision tape" is used in Monte Carlo jargon rather
than "event file". It is true that most interesting events are generally
collision events (but also boundary crossings, decays, etc.), and that
the large size of the file may require the use of a magnetic tape (or at
least, that was often the case in the past).
There are several reasons for which the user might decide to write a
collision tape. Some examples are:
a) to perform a non-standard analysis or scoring
b) to save details of transport for a new independent analysis (in this
case, however, the user must make sure that all phase-space regions
of interest are not undersampled because of biasing options in the
corresponding run)
c) to connect FLUKA to other radiation transport codes (now less
likely than in the past, since FLUKA covers most energy ranges
and transports most particles which can be of interest).
d) to split the transport problem in two or more sequential phases.
A technique used in deep penetration calculations, which can be
considered as an extension of splitting, consists in recording
all particles crossing a given boundary (with their energy,
weight, coordinates and direction cosines at the point of crossing),
and to sample repeatedly source particles from that set in a
successive run (Fas87). A special subroutine SOURCE (see 13} and
option SOURCE) must be written for this purpose.
e) to perform some manipulation in an intermediate phase of Monte
Carlo transport. An example is saving photon histories to be
processed by some program which prepares a photomuon source for a
successive run (a special case of c) where connection is of FLUKA to
itself). Another example is a variation of d), in which a user
program interpolates some smooth analytical distribution through
the recorded quantities, from which source particles are sampled
in the next FLUKA run.
f) to trace suspected errors in transport
g) to connect to a graphical display program
FLUKA allows to write a complete dump of each source particle, of each
trajectory and of each energy deposition event, possibly under event-driven
conditions specified by the user (see description of user routine MGDRAW
in 13}).
How to write a collision tape
-----------------------------
To obtain a collision tape, the user must input option USERDUMP with
WHAT(1) >= 100.
The user can choose to dump all data concerning particle trajectories, data
concerning continuous energy deposition, data concerning local (point) energy
deposition, or any combination of the three. Data are written on the collision
tape in single precision and unformatted, but it is also possible for
the user to modify the MGDRAW subroutine and to obtain a more customised output
file (see 13}).
The variables written, and their number, differ in the three cases. The
sign of the first (integer) variable dumped at an event indicates how to
interpret the following ones:
- Case 1 (First variable > 0 ): continuous energy deposition
- Case 2 (First variable = 0 ): point energy deposition
- Case 3 (First variable < 0 ): source particles
In Case 1, the following variables are written:
First record:
NTRACK, MTRACK, JTRACK, ETRACK, WTRACK,
(three integers and two real variables)
Next record:
(XTRACK(I), YTRACK(I), ZTRACK(I), I = 0, NTRACK),
(DTRACK(J), J = 1, MTRACK), CTRACK
(NTRACK+MTRACK+1 real variables)
where:
NTRACK = number of trajectory segments
MTRACK = number of energy deposition events along the trajectory
JTRACK = particle type (see 5})
ETRACK = total energy of the particle (rest + kinetic)
WTRACK = particle weight
XTRACK(I), YTRACK(I), ZTRACK(I) = coordinates defining the upstream
end of the (I+1)th segment; for I = NTRACK, the end of the
trajectory
DTRACK(J) = energy deposition in the Jth deposition event along the
trajectory
CTRACK = total curved path
In Case 2, the following variables are written:
First record:
0, ICODE, JTRACK, ETRACK, WTRACK
(three integers and two real variables)
Next record:
XSCO, YSCO, ZSCO, RULL
(4 real variables)
where:
JTRACK, ETRACK, WTRACK have the meaning explained above,
XSCO, YSCO, ZSCO = coordinates of the energy deposition point
RULL = amount of energy deposited
ICODE = indicates the type of point event giving raise to energy
deposition, as explained below:
1x = call from KASKAD (hadronic part of FLUKA);
10: elastic interaction recoil
11: inelastic interaction recoil
12: stopping particle
13: pseudo-neutron deposition
14: escape
2x = call from EMFSCO (electromagnetic part of FLUKA);
20: local energy deposition (i.e. photoelectric)
21: below user-defined cut-off
22: below user cut-off
23: escape
3x = call from KASNEU (low-energy neutron part of FLUKA)
30: target recoil
31: neutron below threshold
32: escape
4x = call from KASHEA (heavy ion part of FLUKA)
40: escape
5x = call from KASOPH (optical photon part of FLUKA)
50: optical photon absorption
51: escape
In Case 3, the following variables are written:
First record:
-NCASE, NPFLKA, NSTMAX, TKESUM, WEIPRI,
(three integers and two real variables)
Next record:
(ILOFLK(I), ETOT(I), WTFLK(I), XFLK(I), YFLK(I), ZFLK(I), TXFLK(I), TYFLK(I),
TZFLK(I), I = 1, NPFLKA )
(NPFLKA times (one integer + 8 real variables))
where:
NCASE = number of primaries treated so far (including current one)
NPFLKA = number of particles in the stack
NSTMAX = maximum number of particles in stack so far
TKESUM = total kinetic energy of the primaries of a user written
SOURCE
WEIPRI = total weight of the primaries handled so far
ILOFLK(I) = type of the Ith stack particle (see 5})
ETOT(I) = total energy of Ith stack particle
XFLK(I), YFLK(I), ZFLK(I) = source coordinates for the Ith stack particle
TXFLK(I), TYFLK(I), TZFLK(I) = direction cosines of the Ith stack particle