1 | SUBROUTINE ININKG
|
---|
2 |
|
---|
3 | C-----------------------------------------------------------------------
|
---|
4 | C INI(TIALIZE) NKG
|
---|
5 | C
|
---|
6 | C INITIALIZES ARRAYS FOR NKG CALCULATING VARIABLES
|
---|
7 | C THIS SUBROUTINE IS CALLED FROM MAIN
|
---|
8 | C-----------------------------------------------------------------------
|
---|
9 |
|
---|
10 | IMPLICIT NONE
|
---|
11 | *KEEP,BUFFS.
|
---|
12 | COMMON /BUFFS/ RUNH,RUNE,EVTH,EVTE,DATAB,LH
|
---|
13 | INTEGER MAXBUF,MAXLEN
|
---|
14 | PARAMETER (MAXBUF=39*7)
|
---|
15 | PARAMETER (MAXLEN=12)
|
---|
16 | REAL RUNH(MAXBUF),EVTH(MAXBUF),EVTE(MAXBUF),
|
---|
17 | * RUNE(MAXBUF),DATAB(MAXBUF)
|
---|
18 | INTEGER LH
|
---|
19 | CHARACTER*4 CRUNH,CRUNE,CEVTH,CEVTE
|
---|
20 | EQUIVALENCE (RUNH(1),CRUNH), (RUNE(1),CRUNE)
|
---|
21 | EQUIVALENCE (EVTH(1),CEVTH), (EVTE(1),CEVTE)
|
---|
22 | *KEEP,NKGI.
|
---|
23 | COMMON /NKGI/ SEL,SELLG,STH,ZEL,ZELLG,ZSL,DIST,
|
---|
24 | * DISX,DISY,DISXY,DISYX,DLAX,DLAY,DLAXY,DLAYX,
|
---|
25 | * OBSATI,RADNKG,RMOL,TLEV,TLEVCM,IALT
|
---|
26 | DOUBLE PRECISION SEL(10),SELLG(10),STH(10),ZEL(10),ZELLG(10),
|
---|
27 | * ZSL(10),DIST(10),
|
---|
28 | * DISX(-10:10),DISY(-10:10),
|
---|
29 | * DISXY(-10:10,2),DISYX(-10:10,2),
|
---|
30 | * DLAX (-10:10,2),DLAY (-10:10,2),
|
---|
31 | * DLAXY(-10:10,2),DLAYX(-10:10,2),
|
---|
32 | * OBSATI(2),RADNKG,RMOL(2),TLEV(10),TLEVCM(10)
|
---|
33 | INTEGER IALT(2)
|
---|
34 | *KEEP,OBSPAR.
|
---|
35 | COMMON /OBSPAR/ OBSLEV,THCKOB,XOFF,YOFF,THETAP,PHIP,
|
---|
36 | * THETPR,PHIPR,NOBSLV
|
---|
37 | DOUBLE PRECISION OBSLEV(10),THCKOB(10),XOFF(10),YOFF(10),
|
---|
38 | * THETAP,THETPR(2),PHIP,PHIPR(2)
|
---|
39 | INTEGER NOBSLV
|
---|
40 | *KEEP,RUNPAR.
|
---|
41 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
---|
42 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
---|
43 | * MONIOU,MDEBUG,NUCNUC,
|
---|
44 | * CETAPE,
|
---|
45 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
46 | * N1STTR,MDBASE,
|
---|
47 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
48 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
49 | * ,GHEISH,GHESIG
|
---|
50 | COMMON /RUNPAC/ DSN,HOST,USER
|
---|
51 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
---|
52 | REAL STEPFC
|
---|
53 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
---|
54 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
55 | * N1STTR,MDBASE
|
---|
56 | INTEGER CETAPE
|
---|
57 | CHARACTER*79 DSN
|
---|
58 | CHARACTER*20 HOST,USER
|
---|
59 |
|
---|
60 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
61 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
62 | * ,GHEISH,GHESIG
|
---|
63 | *KEND.
|
---|
64 |
|
---|
65 | DOUBLE PRECISION DEPTH,HEIGH,RHOF,RMGCM,THICK
|
---|
66 | INTEGER I,IL,K,KL
|
---|
67 | EXTERNAL HEIGH,RHOF,THICK
|
---|
68 | DATA RMGCM / 9.6D0 /
|
---|
69 | C-----------------------------------------------------------------------
|
---|
70 |
|
---|
71 | IF ( DEBUG ) WRITE(MDEBUG,*) 'ININKG:'
|
---|
72 |
|
---|
73 | C SET LATERAL DISTRIBUTION DISTANCES
|
---|
74 | IF ( RADNKG .LE. 100.D0 ) THEN
|
---|
75 | WRITE(MONIOU,*) 'ININKG: RADNKG=',RADNKG,' CM TOO SMALL '
|
---|
76 | RADNKG = 200.D2
|
---|
77 | WRITE(MONIOU,*) ' RADNKG CORRECTED TO ',RADNKG,' CM'
|
---|
78 | ENDIF
|
---|
79 | EVTH(148) = RADNKG
|
---|
80 | DO I=1,10
|
---|
81 | DIST(I) = 100.D0 * 10.D0**(LOG10(RADNKG/100.D0)*0.1D0*I)
|
---|
82 | DISX(I) = DIST(I)
|
---|
83 | DISX(-I) = -DIST(I)
|
---|
84 | ENDDO
|
---|
85 | DISX(0) = 0.D0
|
---|
86 |
|
---|
87 | C MOLIERE RADIUS FOR COULOMB SCATTERING ; EQUIVALENT TO 9.6 G/CM**2
|
---|
88 | C OBSERVATION LEVELS AND CORRESPONDING MOLIERE RADII (IN CM) FOR NKG
|
---|
89 | OBSATI(1) = OBSLEV(NOBSLV)
|
---|
90 | RMOL (1) = RMGCM / RHOF(OBSATI(1))
|
---|
91 | IF ( NOBSLV .GT. 1 ) THEN
|
---|
92 | OBSATI(2) = OBSLEV(NOBSLV-1)
|
---|
93 | RMOL (2) = RMGCM / RHOF(OBSATI(2))
|
---|
94 | ELSE
|
---|
95 | OBSATI(2) = -1.D0
|
---|
96 | RMOL (2) = 0.D0
|
---|
97 | IALT (2) = 0
|
---|
98 | ENDIF
|
---|
99 |
|
---|
100 | C CALCULATE COORDINATES OF POINTS ON THE X AND Y AXIS AND THE TWO
|
---|
101 | C DIAGONAL LINES Y IS X AND Y IS -X
|
---|
102 | DO 3333 KL = -10,10
|
---|
103 | DISY (KL) = DISX (KL)
|
---|
104 | DISXY(KL,1) = DISX (KL) / SQRT(2.D0)
|
---|
105 | DISXY(KL,2) = DISXY(KL,1)
|
---|
106 | DISYX(KL,1) = DISXY(KL,1)
|
---|
107 | DISYX(KL,2) = -DISXY(KL,2)
|
---|
108 | 3333 CONTINUE
|
---|
109 | C CLEAR ARRAY FOR LATERAL ELECTRON DISTR. (AVERAGE OVER ALL SHOWERS)
|
---|
110 | DO 45 K = 1,2
|
---|
111 | DO 45 I = -10,10
|
---|
112 | DLAX (I,K) = 0.D0
|
---|
113 | DLAY (I,K) = 0.D0
|
---|
114 | DLAXY(I,K) = 0.D0
|
---|
115 | DLAYX(I,K) = 0.D0
|
---|
116 | 45 CONTINUE
|
---|
117 | C CLEAR ARRAY FOR AGE PARAMETER CALCULATION (AVERAGE OVER ALL SHOWERS)
|
---|
118 | DO 17 I = 1,10
|
---|
119 | SEL(I) = 0.D0
|
---|
120 | SELLG(I) = 0.D0
|
---|
121 | STH(I) = 0.D0
|
---|
122 | ZELLG(I) = 0.D0
|
---|
123 | ZEL(I) = 0.D0
|
---|
124 | ZSL(I) = 0.D0
|
---|
125 | 17 CONTINUE
|
---|
126 |
|
---|
127 | C LAST OBSERVATION LEVEL DEPTH IS GIVEN IN G/CM**2
|
---|
128 | DEPTH = THICK(OBSATI(1))
|
---|
129 | IALT(1) = MIN( 10, INT(DEPTH/102.D0)+1 )
|
---|
130 | C CALCULATE 10 LEVELS AT EACH 100 G/CM**2
|
---|
131 | DO 111 IL = 1,IALT(1)-1
|
---|
132 | TLEV (IL) = 100.D0 * IL
|
---|
133 | TLEVCM(IL) = HEIGH(TLEV(IL))
|
---|
134 | 111 CONTINUE
|
---|
135 | C FOR LAST LEVEL NOT IL*100 BUT OBSERVATION LEVEL
|
---|
136 | TLEV (IALT(1)) = DEPTH
|
---|
137 | TLEVCM(IALT(1)) = OBSATI(1)
|
---|
138 | C SECOND OBSERVATION LEVEL ?
|
---|
139 | IF ( OBSATI(2) .GE. 0.D0 ) THEN
|
---|
140 | DEPTH = THICK(OBSATI(2))
|
---|
141 | IALT(2) = INT(DEPTH/102.D0) + 1
|
---|
142 | IF ( IALT(2) .GE. IALT(1) ) IALT(2) = IALT(1) - 1
|
---|
143 | TLEV (IALT(2)) = DEPTH
|
---|
144 | TLEVCM(IALT(2)) = OBSATI(2)
|
---|
145 | ENDIF
|
---|
146 |
|
---|
147 | RETURN
|
---|
148 | END
|
---|