]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/fluka/stalin.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / fluka / stalin.F
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