FLUKA can be used to generate and propagate optical photons of Cherenkov,
scintillation and transition radiation light. Light generation is switched
off by default and is activated and totally controlled by the user by means
of data cards and user routines. This is true also for the optical properties of
materials. These include the refraction index as a function of wave-length
(or frequency or energy), the reflection coefficient of a given material,
etc.
In this respect, the user has the responsibility of issuing the right input
directives: the code does not perform any physics check on the assumptions
about the light yield and the properties of material.
Optical photons (FLUKA id = -1) are treated according the laws of
geometrical optics and therefore can be reflected and refracted at
boundaries between different materials. From the physics point of view,
optical photons have a certain energy (sampled according to the
generation parameters given by the user) and carry along their polarisation
information. Cherenkov photons are produced with their expected
polarisation, while scintillation photons are assumed to be unpolarised. At
each reflection or refraction, polarisation is assigned or modified
according to optics laws derived from Maxwell equations.
At a boundary between two materials with different refraction index, an
optical photon is propagated (refracted) or reflected with a relative
probability calculated according to the laws of optics.
Furthermore, optical photons can be absorbed in flight (if the user
defines a non zero absorption coefficient for the material under
consideration) or elastically scattered (Rayleigh scattering) if the
user defines a non zero diffusion coefficient for the material under
consideration).
In order to deal with optical photon problems, two specific input cards
are available to the user:
OPT-PROP: to set optical properties of materials.
OPT-PROD: to manage light generation.
See the corresponding detailed description of these options and of their
parameters in Chapter 7}.
Some user routines are also available for a more complete representation
of the physical problem:
i) RFRNDX: to specify a refraction index as a function of wavelength,
frequency or energy
ii) RFLCTV: to specify the reflectivity of a material.
This can be activated by card OPT-PROP with SDUM = METAL and
WHAT(3) < -99.
iii) OPHBDX: to set optical properties of a boundary surface. The call
is activated by card OPT-PROP with SDUM = SPEC-BDX.
iv) FRGHNS: to set a possible degree of surface roughness, in order to have
both diffusive and specular reflectivity from a given material
surface (NOT YET IMPLEMENTED).
v) QUEFFC: to request a detailed quantum efficiency treatment. This is
activated by card OPT-PROP with SDUM = SENSITIV, setting the
0-th optical photon sentitivity parameter to a value lesser
than -99 (WHAT(1) < -99).
All running values of optical photon tracking are contained in the TRACKR
common block, just as for the other ordinary elementary particles.
12.1} Cherenkov transport and quantum efficiency
-----------------------------------------
In order to use quantum efficiency (using the QUEFFC routine)
the user must input a sensitivity < -100 using the OPT-PROP option with
SDUM = SENSITIV).
That option sets the quantum efficiency as a function of photon energy
OVERALL through the problem and it is not material/region dependent.
The reason is that it is applied "a priori" at photon generation time
(for obvious time saving reasons). Here below is an explanation taken
directly from the code.
a) current particle is at a given position, in a given material
b) Cherenkov (or scintillation) photons are going to be produced
c) the photon generation probability is immediately reduced over the whole
energy spectrum according to the maximum quantum efficiency of the problem.
The latter, set as WHAT(5) in card OPT-PROD, IS MEANINGFUL EVEN IF
ROUTINE QUEFFC IS USED, see below
d) the detailed efficiency, set again by the OPT-PROD card with
SDUM = SENSITIV or by routine QUEFFC, is used for a further reduction
when the actual energy of each individual photon is selected (rejecting it
against Q.E.(omega)/Q.E._max, where omega = photon angular frequency)
Summarising, the yes/no detection check is done AT PRODUCTION and NOT AT
DETECTION: this in order to substantially cut down CPU time. If one wants
all photons to be produced the sensitivity must be set = 1. Then it is
still possibile to apply a quantum efficiency curve AT DETECTION, by means of
the user weighting routine FLUSCW (see 13}) or by a user-written off-line code.
Since the quantum efficiency curve provided by OPT-PROD with
SDUM = SENSITIV is applied at production and not at detection, it is not known
which material the photon will eventually end up in.
Furthermore, WHAT(5) must be set anyway equal to the maximum quantum
efficiency over the photon energy range under consideration. One cannot
use the QUEFFC routine as a way to provide an initial screening on the
produced photons, i.e. to use a "safe" initial guess for the quantum
efficiency (say, for instance 20%) and then, at detection, to refine it
through more sophisticated curves, i.e. rejecting against the
actual quantum efficiency/0.2 (this again can be done in routine FLUSCW).
This makes sense of course if the user has different quantum efficiency curves
for different detectors (one should use in QUEFFC the curve that maximises
all of them and then refine it by rejection case by case), or if the
quantum efficiency is position/angle dependent upon arrival on the
photomultiplier (again one should use inside QUEFFC the quantum efficiency
for the most efficient position/angle and refine by rejection at detection
time.
Optical photons are absorbed in those material where the user selected properties
dictate absorption, i.e. metals or materials with a non zero absorption cross
section. These absorption events can be detected in different ways. For instance:
a) through energy deposition by particle -1 (optical photons have always
id = -1), photons usually deposit all energy in one step (since only
absorption and coherent scattering are implemented). So one can
check for JTRACK = -1 and energy deposition (RULL) in a
given region (e.g., the photocathode of the PMT). One can also apply an extra
quantum efficiency selection, e.g. using the COMSCW user routine.
b) through boundary crossing of particles -1 into the given region,
however this is correct if and only if absorption is set such that the
photon will not survive crossing the region. Again further selections
can be performed, e.g., using the FLUSCW user routine.
12.2} Handling optical photons
In order to help the user to understand how to deal with optical photons,
in the following we describe two input files respectively concerning the
production of Cherenkov and Scintillation light in Liquid Argon. A specific
user routine, giving the refraction index of Liquid Argon as a function of
wave-length is also shown.
It is a very simple case, in which muons are generated inside a box
filled with Liquid Argon. Notice that at present it is not yet
possible to request optical photons as primary particles via the
BEAM card. Therefore light must be generated by a user-written
SOURCE routine, or starting from ordinary particles.
The examples presented here consider 0.5 GeV muons in a box of 4 x 4 x 4 m^3.
In order to avoid unnecessary complications in the example, secondary particle
production by muons is switched off. Of course this is not required in real
problems.
As far as the output is concerned, the following example propose a
standard energy spectrum scoring at a boundary (option USRBDX)
applied to optical photons, together with a user-specific output built
via the MGDRAW user routine (see Chap. 13}, where a dump of optical photon
tracking is inserted. At the end of this paragraph we shall propose the
relevant code lines to be inserted in MGDRAW (activated by the USERDUMP card),
together with an example of readout.
12.2.1} Routine assigning a continuous Refraction Index as a function of
Wave-Length
Notice that in this example, a check is performed on the material number.
In the following problems, the light will be generated on material
no. 18. In order to avoid problems a FLUKA abort is generated if
the routine is called by mistake for a different material.
*
*=== Rfrndx ===========================================================*
*
DOUBLE PRECISION FUNCTION RFRNDX ( WVLNGT, OMGPHO, MMAT )
INCLUDE '(DBLPRC)'
INCLUDE '(DIMPAR)'
INCLUDE '(IOUNIT)'
*
*----------------------------------------------------------------------*
* *
* user defined ReFRaction iNDeX: *
* *
* Created on 19 September 1998 by Alfredo Ferrari & Paola Sala *
* Infn - Milan *
* *
* Last change on 25-Oct-02 by Alfredo Ferrari *
* *
* *
*----------------------------------------------------------------------*
*
INCLUDE '(FLKMAT)'
*
* Check on the material number
*
IF ( MMAT .NE. 18 ) THEN
CALL FLABRT ( 'RFRNDX', 'MMAT IS NOT SCINTILLATOR!' )
END IF
*
WL = WVLNGT * 1.D+07
RFRNDX = ONEONE
& + 9.39373D+00*(4.15D-08/(0.000087892D+00 - WL**(-2))
& + 2.075D-07 / (0.000091012D+00 - WL**(-2))
& + 4.333D-06 / (0.00021402 D+00 - WL**(-2)))
RETURN
*=== End of function Rfrndx ===========================================*
END
12.2.2} Input Example no. 1: Only Cherenkov light is generated
Cherenkov light generation depends on the refraction index. Among the
different possibilities, here we have chosen to give the refraction
index by means of the user routine shown above.
The relevant data cards are commented.
The value inserted for light absorption in this example is arbitrary, while
the mean free path for Rayleigh scattering is the result obtained
from measurements performed in the framework of the Icarus collaboration.
TITLE
Test of Cherenkov light production in Liquid Argon
DEFAULTS PRECISIO
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
BEAM -10.000 MUON+
BEAMPOS 0.0 0.0 190.0 NEGATIVE
DELTARAY -1.0 18.0 18.0
PAIRBREM -3.0 18.0 18.0
MUPHOTON -1.0 18.0 18.0
PHOTONUC -1.0 3.0 100.0
EVENTYPE 6.0
DISCARD 27.0 28.0 43.0 44.0 5.0 6.0
GEOBEGIN COMBINAT
Test
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
* A large box for the blackhole
RPP 1 -9999999. +9999999. -9999999. +9999999. -9999999. +9999999.
* A smaller box for for liquid argon
RPP 2 -200.0 +200.0 -200.0 +200.0 -200.0 +200.0
END
*== Region Definitions =================================================
* 1) Blackhole
BL1 +1 -2
* 2) Liquid Argon
LG3 +2
END
GEOEND
* Switch off electron and photon transport
EMF EMF-OFF
*
MATERIAL 18.0 39.948 1.400 18.0 ARGON
* Select neutron cross sections at liquid argon temperature
LOW-MAT 18.0 18.0 -2.0 87.0 ARGON
*
ASSIGNMAT 1.0 1.0 500. 1.0 0.0
ASSIGNMAT 18.0 2.0 2.0
*
* Set Light production/transport properties: from 100 to 600 nm in all materials
OPT-PROP 1.000E-05 3.500E-05 6.000E-05 3.0 100.0 WV-LIMIT
* Set all materials to "metal" with 0 reflectivity:
OPT-PROP 1.0 3.0 100.0 METAL
* resets all previous properties for material n. 18 (Liquid Argon)
OPT-PROP 18.0 RESET
* switches off scintillation light production in material n. 18 (Liq. Argon)
OPT-PROD 18.0 SCIN-OFF
* defines Cherenkov production for material n. 18 (Liq. Argon)
OPT-PROD 1.100E-05 5.500E-05 18.0 CEREN-WV
* The following card restores the wave-length limits for material n. 18
OPT-PROP 1.000E-05 3.500E-05 6.000E-05 18.0 WV-LIMIT
* The following card, for material n. 18:
* a) calls the RFRNDX user routine (to define the refraction index
* vs wave-length (WHAT(1)< -99)
* b) sets to 1000 cm the mean free path for absorption.
* c) sets to 90 cm the mean free path for Rayleigh scattering.
OPT-PROP -100.0 0.001 0.01111 18.0
* The following card defines the "Sensitivity" in order to introduce the
* maximum Quantum Efficiency at generation level.
* Here 1/10 of photons is actually generated.
* Fluctuations are properly sampled
OPT-PROP 0.1 0.1 SENSITIV
SCORE 208.0 211.0 201.0 210.0
RANDOMIZ 1.0
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
USRBDX 1.0 -1.0 -55.0 2.0 1.0 Opt.Phot
USRBDX 12.0E-09 0.0 120.0 &
USERDUMP 111. 2. MGDRAW
START 10000.0
STOP
12.2.3} Input Example no. 2: Only Scintillation light is concerned
Here it is necessary to point out that, at present, FLUKA can generate
scintillation lines only for monochromatic lines. A maximum number of 3
different lines is possible. The value inserted here (128 nm) is the correct one
for Liquid Argon. The fraction of deposited energy going into scintillation light
depends on the degree of recombination after ionisation.
Again, the value used here is a parameter justified in the framework of the Icarus
collaboration, where about 20000 photons/MeV of deposited energy have been
measured for the electric field of 500 V/cm (the field used in
Icarus). A different electric field intensity will change the degree of
recombination and therefore the light yield.
TITLE
Test of scintillation light production in Liquid Argon
DEFAULTS PRECISIO
BEAM -0.5000 MUON+
BEAMPOS 0.0 0.0 199.0 NEGATIVE
*
DELTARAY -1.0 18.0 18.0
PAIRBREM -3.0 18.0 18.0
MUPHOTON -1.0 18.0 18.0
PHOTONUC -1.0 3.0 100.0
EVENTYPE 6.0
DISCARD 27.0 28.0 43.0 44.0 5.0 6.0
GEOBEGIN COMBINAT
Test
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
* A large box for the blackhole
RPP 1 -9999999. +9999999. -9999999. +9999999. -9999999. +9999999.
* A SMALLER BOX FOR FOR LIQUID ARGON
RPP 2 -200.0 +200.0 -200.0 +200.0 -200.0 +200.0
END
*== Region Definitions =================================================
* 1) Blackhole
BL1 +1 -2
* 2) Liquid Argon
LG3 +2
END
GEOEND
*
EMF EMF-OFF
*
MATERIAL 18.0 39.948 1.400 18.0 ARGON
LOW-MAT 18.0 18.0 -2.0 87.0 ARGON
ASSIGNMAT 1.0 1.0 500. 1.0 0.0
ASSIGNMAT 18.0 2.0 2.0
*
* Set Light production/transport properties: from 100 to 600 nm in all materials
OPT-PROP 1.000E-05 1.280E-05 6.000E-05 3.0 100.0 WV-LIMIT
* Set all materials to "metal" with 0 reflectivity:
OPT-PROP 1.0 3.0 100.0 METAL
* resets all previous properties for material n. 18 (Liquid Argon)
OPT-PROP 18.0 RESET
* switches off Cherenkov light production in material n. 18 (Liquid Argon)
OPT-PROD 18.0 CERE-OFF
* defines Scint. light production for material n. 18 (Liq. Argon). Parameters:
* a) wavelength (cm) of first scintillation line.
* b) fraction of deposited energy going into scint. light
* (in Liquid Argon ~ 2 10**4 photons/MeV)
OPT-PROD 1.280E-05 9.686E-02 18.0 SCINT-WV
* The following card restores the wave-length limits for material n. 18
OPT-PROP 1.000E-05 1.280E-05 6.000E-05 18.0 WV-LIMIT
* The following card, for material n. 18:
* a) calls the RFRNDX user routine (to define the refraction index
* vs wave-length (WHAT(1)< -99)
* b) sets to 1000 cm the mean free path for absorption.
* c) sets to 90 cm the mean free path for Rayleigh scattering
OPT-PROP -100.0 0.001 0.01111 18.0
* The following card defines the "Sensitivity" in order to introduce the
* maximum Quantum Efficiency at generation level. Here 1/10 of photons are
* actually generated.
* Fluctuations are properly sampled
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
OPT-PROP 0.1 0.1 SENSITIV
SCORE 208.0 211.0 201.0 210.0
RANDOMIZ 1.0
*
USRBDX 1.0 -1.0 -55.0 2.0 1.0 Opt.Phot
USRBDX 12.0E-09 0.0 120.0 &
USERDUMP 111. 2. MGDRAW
START 10000.
STOP
12.2.4} User output for optical photons from USERDUMP
The user can request any kind of standard FLUKA output for optical photons
and also a user specific output, starting for instance from the MGDRAW
user routine. Here an example follows, where a few variables are
simply recorded in the output "collision tape" (dump file) at each step
in the tracking only for particle id = -1 (optical photons).
It can be useful, in order to exploit the flags available in this
routine, and explained in the different comments, to know that the FLUJKA
routine which drives the transport of optical photons is KASOPH.
The content of the TRACKR common can be used to fully exploit
the possibilities offered from the use of MGDRAW routine
(see Chap. 13}).
Warning: in the present version of FLUKA, there is not yet the possibility
of using the User Particle Properties for optical photons (variables
SPAUSR, ISPUSR and the STUPFR user routine)
* *
*=== mgdraw ===========================================================*
* *
SUBROUTINE MGDRAW ( ICODE, MREG )
INCLUDE '(DBLPRC)'
INCLUDE '(DIMPAR)'
INCLUDE '(IOUNIT)'
*
*----------------------------------------------------------------------*
* *
* MaGnetic field trajectory DRAWing: actually this entry manages *
* all trajectory dumping for *
* drawing *
* *
* Created by Alfredo Ferrari *
* INFN - Milan *
* last change 10-Nov-02 by Alfredo Ferrari *
* INFN - Milan *
* *
*----------------------------------------------------------------------*
*
INCLUDE '(CASLIM)'
INCLUDE '(COMPUT)'
INCLUDE '(FHEAVY)'
INCLUDE '(FLKSTK)'
INCLUDE '(GENSTK)'
INCLUDE '(MGDDCM)'
INCLUDE '(PAPROP)'
INCLUDE '(SOURCM)'
INCLUDE '(SUMCOU)'
INCLUDE '(TRACKR)'
*
CHARACTER*20 FILNAM
LOGICAL LFCOPE
SAVE LFCOPE
DATA LFCOPE / .FALSE. /
*
*----------------------------------------------------------------------*
* *
* Icode = 1: call from Kaskad *
* Icode = 2: call from Emfsco *
* Icode = 3: call from Kasneu *
* Icode = 4: call from Kashea *
* Icode = 5: call from Kasoph *
* *
*----------------------------------------------------------------------*
* *
IF ( .NOT. LFCOPE ) THEN
LFCOPE = .TRUE.
IF ( KOMPUT .EQ. 2 ) THEN
FILNAM = '/'//CFDRAW(1:8)//' DUMP A'
ELSE
FILNAM = CFDRAW
END IF
WRITE(*,*) 'TRAJECTORY OPEN!'
WRITE(*,'(A)') 'FILNAM = ',FILNAM
OPEN ( UNIT = IODRAW, FILE = FILNAM, STATUS = 'NEW', FORM =
& 'UNFORMATTED' )
END IF
C
C Write trajectories of optical photons
C
IF(JTRACK .EQ. -1) THEN
WRITE (IODRAW) NTRACK, MTRACK, JTRACK, SNGL (ETRACK),
& SNGL (WTRACK)
WRITE (IODRAW) ( SNGL (XTRACK (I)), SNGL (YTRACK (I)),
& SNGL (ZTRACK (I)), I = 0, NTRACK ),
& ( SNGL (DTRACK (I)), I = 1,MTRACK ),
& SNGL (CTRACK)
WRITE(IODRAW) SNGL(CXTRCK),SNGL(CYTRCK),SNGL(CZTRCK)
ENDIF
RETURN
*
*======================================================================*
* *
* Boundary-(X)crossing DRAWing: *
* *
* Icode = 1x: call from Kaskad *
* 19: boundary crossing *
* Icode = 2x: call from Emfsco *
* 29: boundary crossing *
* Icode = 3x: call from Kasneu *
* 39: boundary crossing *
* Icode = 4x: call from Kashea *
* 49: boundary crossing *
* Icode = 5x: call from Kasoph *
* 59: boundary crossing *
* *
*======================================================================*
* *
ENTRY BXDRAW ( ICODE, MREG, NEWREG, XSCO, YSCO, ZSCO )
RETURN
*
*======================================================================*
* *
* Event End DRAWing: *
* *
*======================================================================*
* *
ENTRY EEDRAW ( ICODE )
RETURN
*
*======================================================================*
* *
* ENergy deposition DRAWing: *
* *
* Icode = 1x: call from Kaskad *
* 10: elastic interaction recoil *
* 11: inelastic interaction recoil *
* 12: stopping particle *
* 13: pseudo-neutron deposition *
* 14: escape *
* 15: time kill *
* Icode = 2x: call from Emfsco *
* 20: local energy deposition (i.e. photoelectric) *
* 21: below threshold, iarg=1 *
* 22: below threshold, iarg=2 *
* 23: escape *
* 24: time kill *
* Icode = 3x: call from Kasneu *
* 30: target recoil *
* 31: below threshold *
* 32: escape *
* 33: time kill *
* Icode = 4x: call from Kashea *
* 40: escape *
* 41: time kill *
* Icode = 5x: call from Kasoph *
* 50: optical photon absorption *
* 51: escape *
* 52: time kill *
* *
*======================================================================*
* *
ENTRY ENDRAW ( ICODE, MREG, RULL, XSCO, YSCO, ZSCO )
RETURN
*
*======================================================================*
* *
* SOurce particle DRAWing: *
* *
*======================================================================*
*
ENTRY SODRAW
* |
* +-------------------------------------------------------------------*
RETURN
*
*======================================================================*
* *
* USer dependent DRAWing: *
* *
* Icode = 10x: call from Kaskad *
* 100: elastic interaction secondaries *
* 101: inelastic interaction secondaries *
* 102: particle decay secondaries *
* 103: delta ray generation secondaries *
* 104: pair production secondaries *
* 105: bremsstrahlung secondaries *
* Icode = 20x: call from Emfsco *
* 208: bremsstrahlung secondaries *
* 210: Moller secondaries *
* 212: Bhabha secondaries *
* 214: in-flight annihilation secondaries *
* 215: annihilation at rest secondaries *
* 217: pair production secondaries *
* 219: Compton scattering secondaries *
* 221: photoelectric secondaries *
* 225: Rayleigh scattering secondaries *
* Icode = 30x: call from Kasneu *
* 300: interaction secondaries *
* Icode = 40x: call from Kashea *
* 400: delta ray generation secondaries *
* For all interactions secondaries are put on GENSTK common (kp=1,np) *
* but for KASHEA delta ray generation where only the secondary elec- *
* tron is present and stacked on FLKSTK common for kp=lstack *
* *
*======================================================================*
*
ENTRY USDRAW ( ICODE, MREG, XSCO, YSCO, ZSCO )
* No output by default:
RETURN
*=== End of subroutine Mgdraw ==========================================*
END
12.2.5} Readout of the sample user output
A sample program to readout the output obtained from the previously
shown MGDRAW routine is here presented. In this example the key routine
in the one called VXREAD, where some trivial output is sent to logical
units 66 and 67. Of course the user must adapt such a readout program
to his own needs.
PROGRAM MGREAD
CHARACTER FILE*80
*
WRITE (*,*)' Name of the binary file?'
READ (*,'(A)') FILE
OPEN ( UNIT = 33, FILE = FILE, STATUS ='OLD',
& FORM = 'UNFORMATTED' )
1000 CONTINUE
WRITE (*,*)' Event number?'
READ (*,*) NCASE
IF ( NCASE .LE. 0 ) GO TO 9999
CALL VXREAD (NCASE)
GO TO 1000
9999 CONTINUE
STOP
END
SUBROUTINE VXREAD (NCASE)
PARAMETER ( MXH = 2000 )
PARAMETER ( MXPR = 300 )
DIMENSION XH (MXH), YH (MXH), ZH (MXH), DH (MXH),
& EPR (MXPR), WPR (MXPR), XPR (MXPR), YPR (MXPR),
& ZPR (MXPR), TXP (MXPR), TYP (MXPR), TZP (MXPR),
& IPR (MXPR)
*
LUNSCR = 33
REWIND (LUNSCR)
*
* +-------------------------------------------------------------------*
* |
NEVT=0
DO 4000 I=1,2000000000
READ (LUNSCR,END=4100) NDUM,MDUM,JDUM,EDUM,WDUM
IF(I.EQ.1) WRITE(*,*) 'NDUM,MDUM,JDUM,EDUM,WDUM',NDUM,MDUM,JDUM
& ,EDUM,WDUM
NEVT = NEVT + 1
* | +----------------------------------------------------------------*
* | | Real tracking data:
* | +----------------------------------------------------------------*
IF ( NDUM .GT. 0 ) THEN
NTRACK=NDUM
MTRACK=MDUM
JTRACK=JDUM
ETRACK=EDUM
WTRACK=WDUM
IF(NTRACK.GT.1) WRITE(67,*) 'NTRACK = ',NTRACK
READ (LUNSCR)(XH(J),YH(J),ZH(J),J=1,NTRACK+1),
& (DH(J),J=1,MTRACK), CTRACK
READ (LUNSCR) CXX,CYY,CZZ
IF(I.EQ.1) THEN
WRITE(67,*) (XH(J),YH(J),ZH(J),J=1,NTRACK+1),
& (DH(J),J=1,MTRACK), CTRACK
WRITE(67,*) CXX,CYY,CZZ
ENDIF
DO J=1,NTRACK+1
WRITE(67,*) XH(J),YH(J),ZH(J),
& CXX,CYY,CZZ
END DO
IF ( NEVT.EQ.NCASE ) THEN
WRITE(66,*)' New step:'
WRITE(66,*)' Part.id.:',JTRACK,' Kin.En.:',ETRACK,
& ' N.of substep:', NTRACK
WRITE(66,*)' X, Y, Z, i=0, # substep'
WRITE(*,*)' New step:'
WRITE(*,*)' Part.id.:',JTRACK,' Kin.En.:',ETRACK,
& ' N.of substep:', NTRACK
WRITE(*,*)' X, Y, Z, i=0, # substep'
END IF
* | |
* | +----------------------------------------------------------------*
* | | Energy deposition data:
ELSE IF ( NDUM .EQ. 0 ) THEN
ICODE1=MDUM/10
ICODE2=MDUM-ICODE1*10
IJDEPO=JDUM
ENPART=EDUM
WDEPOS=WDUM
READ (LUNSCR) XSCO, YSCO, ZSCO, ENDEPO
IF ( NEVT.EQ.NCASE ) THEN
WRITE(66,*) ' En. dep. code n.:',MDUM
WRITE(66,*) IJDEPO,' Tot. en. proj.:', ENPART,
& ' Weight:',WDEPOS
WRITE(66,*) ' Position:',XSCO,YSCO,ZSCO,
& ' En. Dep.:',ENDEPO
END IF
* | |
* | +----------------------------------------------------------------*
* | | Source particle:
ELSE
NEVT =-NDUM
LPRIMA = MDUM
NSTMAX = JDUM
TKESUM = EDUM
WEIPRI = WDUM
READ (LUNSCR) ( IPR(J),EPR(J),WPR(J),XPR(J),YPR(J),
& ZPR(J),TXP(J),TYP(J),TZP(J),J=1,LPRIMA )
DO J = 1, LPRIMA
IF ( ABS(IPR(J)) .LT. 10000 ) THEN
LPTRUE=J
END IF
END DO
LPROJ = LPRIMA - LPTRUE
LPRIMA = LPTRUE
IF (NEVT .EQ. NCASE) THEN
WRITE(66,*)' Event #',NEVT
IF ( LPROJ .GT. 0) THEN
WRITE(66,*)
& ' Original projectile(s),n. of:',LPROJ
DO IJ = 1, LPROJ
J=LPRIMA+IJ
IPR(J) = IPR(J)/10000
WRITE(66,*) ' Part.id.:',IPR(J),' Kin.en.:',
& EPR(J),' Weight:',WPR(J)
WRITE(66,*) IPR(J),EPR(J),WPR(J)
WRITE(66,*) ' Position :', XPR(J),YPR(J),ZPR(J)
WRITE(66,*) ' Direction:', TXP(J),TYP(J),TZP(J)
END DO
END IF
WRITE(66,*)' Source particle(s), n. of:',LPRIMA
DO J = 1, LPRIMA
WRITE(66,*) ' Part.id.:',IPR(J),' Kin.en.:',
& EPR(J),' Weight:',WPR(J)
WRITE(66,*) ' Position :', XPR(J),YPR(J),ZPR(J)
WRITE(66,*) ' Direction:', TXP(J),TYP(J),TZP(J)
C WRITE(67,*) XPR(J)/1.E+05,YPR(J)/1.E+05,ZPR(J)/1.E+05
END DO
END IF
IF (NEVT.GT.NCASE) GO TO 4100
END IF
* | |
* | +----------------------------------------------------------------*
4000 CONTINUE
* |
* +-------------------------------------------------------------------*
4100 CONTINUE
RETURN
END