]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/fluka/stalin.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / fluka / stalin.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.4 1997/10/17 10:11:47 mclareni
6* Negative square root protection
7*
8* Revision 1.3 1996/05/03 07:31:39 cernlib
9* Replace in Max( .., 0.0) the 0.0 by ZERO to have the proper variable type.
10*
11* Revision 1.2 1996/04/26 12:19:59 ravndal
12* neg. SQRT protection
13*
14* Revision 1.1.1.1 1995/10/24 10:19:58 cernlib
15* Geant
16*
17*
18#include "geant321/pilot.h"
19*CMZ : 3.21/02 29/03/94 15.41.44 by S.Giani
20*-- Author :
21*$ CREATE STALIN.FOR
22*COPY STALIN
23* *
24*=== stalin ===========================================================*
25* *
26 SUBROUTINE STALIN
27
28#include "geant321/dblprc.inc"
29#include "geant321/dimpar.inc"
30#include "geant321/iounit.inc"
31*
32 PARAMETER (ZERO=0)
33*----------------------------------------------------------------------*
34* *
35* STAbility LINe calculation: *
36* *
37* Created on 04 december 1992 by Alfredo Ferrari & Paola Sala *
38* Infn - Milan *
39* *
40* Last change on 04-dec-92 by Alfredo Ferrari *
41* *
42* *
43*----------------------------------------------------------------------*
44*
45#include "geant321/isotop.inc"
46*
47 DIMENSION ZNORM (260)
48* +-------------------------------------------------------------------*
49* |
50 DO 1000 IZ=1,100
51 DO 500 J=1,2
52 ASTLIN (J,IZ) = 0.D+00
53 500 CONTINUE
54 1000 CONTINUE
55* |
56* +-------------------------------------------------------------------*
57* +-------------------------------------------------------------------*
58* |
59 DO 2000 IA=1,260
60 ZNORM (IA) = 0.D+00
61 DO 1500 J=1,2
62 ZSTLIN (J,IA) = 0.D+00
63 1500 CONTINUE
64 2000 CONTINUE
65* |
66* +-------------------------------------------------------------------*
67* +-------------------------------------------------------------------*
68* | Loop on the Atomic Number
69 DO 3000 IZ=1,100
70* | +----------------------------------------------------------------*
71* | | Loop on the stable isotopes
72 DO 2500 IS = ISONDX (1,IZ), ISONDX (2,IZ)
73 IA = ISOMNM (IS)
74 ASTLIN (1,IZ) = ASTLIN (1,IZ) + ABUISO (IS) * IA
75 ASTLIN (2,IZ) = ASTLIN (2,IZ) + ABUISO (IS) * IA**2
76 ZNORM (IA) = ZNORM (IA) + ABUISO (IS)
77 ZSTLIN (1,IA) = ZSTLIN (1,IA) + ABUISO (IS) * IZ
78 ZSTLIN (2,IA) = ZSTLIN (2,IA) + ABUISO (IS) * IZ**2
79 2500 CONTINUE
80* | |
81* | +----------------------------------------------------------------*
82* | Normalize and print A_stab versus Z data:
83 ASTLIN (2,IZ) = MAX ( SQRT (
84 & MAX ( ASTLIN(2,IZ)-ASTLIN(1,IZ)**2,ZERO)),
85 & HLFHLF )
86 3000 CONTINUE
87* |
88* +-------------------------------------------------------------------*
89* +-------------------------------------------------------------------*
90* | Normalize and print Z_stab versus A data:
91 TMP10 = 1.D-10
92 TMP03 = 0.3D+00
93 DO 4000 IA=1,260
94 ZSTLIN (1,IA) = ZSTLIN (1,IA) / MAX ( ZNORM (IA), TMP10 )
95 ZSTLIN (2,IA) = ZSTLIN (2,IA) / MAX ( ZNORM (IA), TMP10 )
96 ZSTLIN (2,IA) = MAX ( ZSTLIN (2,IA), ZSTLIN (1,IA)**2 )
97 IF ( ZNORM (IA) .GT. ANGLGB )
98 & ZSTLIN (2,IA) = MAX ( SQRT (
99 & MAX ( ZSTLIN(2,IA)-ZSTLIN(1,IA)**2,ZERO)),
100 & TMP03 )
101 4000 CONTINUE
102* |
103* +-------------------------------------------------------------------*
104* +-------------------------------------------------------------------*
105* | Normalize and print Z_stab versus A data:
106 DO 5000 IA=1,260
107 IF ( ZNORM (IA) .LE. ANGLGB ) THEN
108 DO 4200 JA = IA-1,1,-1
109 IF ( ZNORM (JA) .GT. ANGLGB ) THEN
110 IA1 = JA
111 GO TO 4300
112 END IF
113 4200 CONTINUE
114 4300 CONTINUE
115 DO 4400 JA = IA+1,260
116 IF ( ZNORM (JA) .GT. ANGLGB ) THEN
117 IA2 = JA
118 GO TO 4500
119 END IF
120 4400 CONTINUE
121 IA2 = IA1
122 IA1 = IA1 - 1
123 4500 CONTINUE
124 DIAIA1 = IA-IA1
125 DIA2IA = IA2-IA1
126 ZSTLIN (1,IA) = DIAIA1 / DIA2IA
127 & * ( ZSTLIN (1,IA2) - ZSTLIN (1,IA1) )
128 & + ZSTLIN (1,IA1)
129 ZSTLIN (2,IA) = DIAIA1 / DIA2IA
130 & * ( ZSTLIN (2,IA2) - ZSTLIN (2,IA1) )
131 & + ZSTLIN (2,IA1)
132 END IF
133 IZ = MIN ( 100, NINT (ZSTLIN(1,IA)) )
134 ATOZ = IZ / ASTLIN (1,IZ)
135 ZSTLIN (2,IA) = MAX ( ZSTLIN (2,IA), ATOZ * ASTLIN (2,IZ) )
136 5000 CONTINUE
137* |
138* +-------------------------------------------------------------------*
139 RETURN
140 END