| 1 | SUBROUTINE MMOLIE(OMEGA,DENS,VSCAT)
|
|---|
| 2 |
|
|---|
| 3 | C-----------------------------------------------------------------------
|
|---|
| 4 | C M(UON) MOLIE(RE MULTIPLE SCATTERING)
|
|---|
| 5 | C
|
|---|
| 6 | C TREATES MOLIERE MULTIPLE SCATTERING FOR MUONS
|
|---|
| 7 | C CORRECTED FOR FINITE ANGLE SCATTERING
|
|---|
| 8 | C THIS SUBROUTINE IS IN ANALOGY WITH SUBROUTINE GMOLIE
|
|---|
| 9 | C (AUTHOR: M.S.DIXIT, NRCC, OTTAWA) OF GEANT321
|
|---|
| 10 | C SEE CERN PROGRAM LIBRARY LONG WRITEUP W5013
|
|---|
| 11 | C THIS SUBROUTINE IS CALLED FROM UPDATE
|
|---|
| 12 | C ARGUMENTS:
|
|---|
| 13 | C OMEGA = NUMBER OF SCATTERINGS FOR THE STEP
|
|---|
| 14 | C DENS = LOCAL DENSITY
|
|---|
| 15 | C VSCAT = SCATTERING ANGLE
|
|---|
| 16 | C
|
|---|
| 17 | C REDESIGN: D. HECK IK3 FZK KARLSRUHE
|
|---|
| 18 | C-----------------------------------------------------------------------
|
|---|
| 19 |
|
|---|
| 20 | IMPLICIT NONE
|
|---|
| 21 | *KEEP,CONST.
|
|---|
| 22 | COMMON /CONST/ PI,PI2,OB3,TB3,ENEPER
|
|---|
| 23 | DOUBLE PRECISION PI,PI2,OB3,TB3,ENEPER
|
|---|
| 24 | *KEEP,MUMULT.
|
|---|
| 25 | COMMON /MUMULT/ CHC,OMC,FMOLI
|
|---|
| 26 | DOUBLE PRECISION CHC,OMC
|
|---|
| 27 | LOGICAL FMOLI
|
|---|
| 28 | *KEEP,PAM.
|
|---|
| 29 | COMMON /PAM/ PAMA,SIGNUM
|
|---|
| 30 | DOUBLE PRECISION PAMA(6000),SIGNUM(6000)
|
|---|
| 31 | *KEEP,PARPAR.
|
|---|
| 32 | COMMON /PARPAR/ CURPAR,SECPAR,PRMPAR,OUTPAR,C,
|
|---|
| 33 | * E00,E00PN,PTOT0,PTOT0N,THICKH,ITYPE,LEVL
|
|---|
| 34 | DOUBLE PRECISION CURPAR(14),SECPAR(14),PRMPAR(14),OUTPAR(14),
|
|---|
| 35 | * C(50),E00,E00PN,PTOT0,PTOT0N,THICKH
|
|---|
| 36 | INTEGER ITYPE,LEVL
|
|---|
| 37 | *KEEP,PARPAE.
|
|---|
| 38 | DOUBLE PRECISION GAMMA,COSTHE,PHI,H,T,X,Y,CHI,BETA,GCM,ECM
|
|---|
| 39 | EQUIVALENCE (CURPAR(2),GAMMA), (CURPAR(3),COSTHE),
|
|---|
| 40 | * (CURPAR(4), PHI ), (CURPAR(5), H ),
|
|---|
| 41 | * (CURPAR(6), T ), (CURPAR(7), X ),
|
|---|
| 42 | * (CURPAR(8), Y ), (CURPAR(9), CHI ),
|
|---|
| 43 | * (CURPAR(10),BETA), (CURPAR(11),GCM ),
|
|---|
| 44 | * (CURPAR(12),ECM )
|
|---|
| 45 | *KEEP,RANDPA.
|
|---|
| 46 | COMMON /RANDPA/ FAC,U1,U2,RD,NSEQ,ISEED,KNOR
|
|---|
| 47 | DOUBLE PRECISION FAC,U1,U2
|
|---|
| 48 | REAL RD(3000)
|
|---|
| 49 | INTEGER ISEED(103,10),NSEQ
|
|---|
| 50 | LOGICAL KNOR
|
|---|
| 51 | *KEEP,RUNPAR.
|
|---|
| 52 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
|---|
| 53 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
|---|
| 54 | * MONIOU,MDEBUG,NUCNUC,
|
|---|
| 55 | * CETAPE,
|
|---|
| 56 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
|---|
| 57 | * N1STTR,MDBASE,
|
|---|
| 58 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
|---|
| 59 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
|---|
| 60 | * ,GHEISH,GHESIG
|
|---|
| 61 | COMMON /RUNPAC/ DSN,HOST,USER
|
|---|
| 62 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
|---|
| 63 | REAL STEPFC
|
|---|
| 64 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
|---|
| 65 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
|---|
| 66 | * N1STTR,MDBASE
|
|---|
| 67 | INTEGER CETAPE
|
|---|
| 68 | CHARACTER*79 DSN
|
|---|
| 69 | CHARACTER*20 HOST,USER
|
|---|
| 70 |
|
|---|
| 71 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
|---|
| 72 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
|---|
| 73 | * ,GHEISH,GHESIG
|
|---|
| 74 | *KEND.
|
|---|
| 75 |
|
|---|
| 76 | DOUBLE PRECISION TINT(40),B,BINV,CHIC,CNST,DB,DENS,OMEGA,SINTH,
|
|---|
| 77 | * TEST,TMP,VSCAT
|
|---|
| 78 | REAL ARG(4),F0I(40),F1I(40),F2I(40),
|
|---|
| 79 | * THRED(40),VAL(4),DIN(3),F,THRI,XINT
|
|---|
| 80 | INTEGER IER,JA,L,M,NA,NA3,NA3M,NMAX
|
|---|
| 81 | DATA THRED/ 0.00, 0.10, 0.20, 0.30
|
|---|
| 82 | + , 0.40, 0.50, 0.60, 0.70
|
|---|
| 83 | + , 0.80, 0.90, 1.00, 1.10
|
|---|
| 84 | + , 1.20, 1.30, 1.40, 1.50
|
|---|
| 85 | + , 1.60, 1.70, 1.80, 1.90
|
|---|
| 86 | + , 2.00, 2.20, 2.40, 2.60
|
|---|
| 87 | + , 2.80, 3.00, 3.20, 3.40
|
|---|
| 88 | + , 3.60, 3.80, 4.00, 5.00
|
|---|
| 89 | + , 6.00, 7.00, 8.00, 9.00
|
|---|
| 90 | + , 10.00,11.00,12.00,13.00 /
|
|---|
| 91 | DATA F0I/
|
|---|
| 92 | + 0.000000E+00 ,0.995016E-02 ,0.392106E-01 ,0.860688E-01
|
|---|
| 93 | + ,0.147856E+00 ,0.221199E+00 ,0.302324E+00 ,0.387374E+00
|
|---|
| 94 | + ,0.472708E+00 ,0.555142E+00 ,0.632121E+00 ,0.701803E+00
|
|---|
| 95 | + ,0.763072E+00 ,0.815480E+00 ,0.859142E+00 ,0.894601E+00
|
|---|
| 96 | + ,0.922695E+00 ,0.944424E+00 ,0.960836E+00 ,0.972948E+00
|
|---|
| 97 | + ,0.981684E+00 ,0.992093E+00 ,0.996849E+00 ,0.998841E+00
|
|---|
| 98 | + ,0.999606E+00 ,0.999877E+00 ,0.999964E+00 ,0.999990E+00
|
|---|
| 99 | + ,0.999998E+00 ,0.999999E+00 ,0.100000E+01 ,0.100000E+01
|
|---|
| 100 | + ,0.100000E+01 ,0.100000E+01 ,0.100000E+01 ,0.100000E+01
|
|---|
| 101 | + ,1.000000E+00 ,1.000000E+00 ,1.000000E+00 ,1.000000E+00 /
|
|---|
| 102 | DATA F1I/
|
|---|
| 103 | + 0.000000E+00, 0.414985E-02, 0.154894E-01, 0.310312E-01
|
|---|
| 104 | + , 0.464438E-01, 0.569008E-01, 0.580763E-01, 0.468264E-01
|
|---|
| 105 | + , 0.217924E-01,-0.163419E-01,-0.651205E-01,-0.120503E+00
|
|---|
| 106 | + ,-0.178272E+00,-0.233580E+00,-0.282442E+00,-0.321901E+00
|
|---|
| 107 | + ,-0.350115E+00,-0.366534E+00,-0.371831E+00,-0.367378E+00
|
|---|
| 108 | + ,-0.354994E+00,-0.314803E+00,-0.266539E+00,-0.220551E+00
|
|---|
| 109 | + ,-0.181546E+00,-0.150427E+00,-0.126404E+00,-0.107830E+00
|
|---|
| 110 | + ,-0.933106E-01,-0.817375E-01,-0.723389E-01,-0.436650E-01
|
|---|
| 111 | + ,-0.294700E-01,-0.212940E-01,-0.161406E-01,-0.126604E-01
|
|---|
| 112 | + ,-0.102042E-01,-0.840465E-02,-0.704261E-02,-0.598886E-02/
|
|---|
| 113 | DATA F2I/
|
|---|
| 114 | + 0.000000 , 0.121500E-01, 0.454999E-01, 0.913000E-01
|
|---|
| 115 | + , 0.137300E+00, 0.171400E+00, 0.183900E+00, 0.170300E+00
|
|---|
| 116 | + , 0.132200E+00, 0.763000E-01, 0.126500E-01,-0.473500E-01
|
|---|
| 117 | + ,-0.936000E-01,-0.119750E+00,-0.123450E+00,-0.106300E+00
|
|---|
| 118 | + ,-0.732800E-01,-0.312400E-01, 0.128450E-01, 0.528800E-01
|
|---|
| 119 | + , 0.844100E-01, 0.114710E+00, 0.106200E+00, 0.765830E-01
|
|---|
| 120 | + , 0.435800E-01, 0.173950E-01, 0.695001E-03,-0.809500E-02
|
|---|
| 121 | + ,-0.117355E-01,-0.125449E-01,-0.120280E-01,-0.686530E-02
|
|---|
| 122 | + ,-0.385275E-02,-0.231115E-02,-0.147056E-02,-0.982480E-03
|
|---|
| 123 | + ,-0.682440E-03,-0.489715E-03,-0.361190E-03,-0.272582E-03/
|
|---|
| 124 | C-----------------------------------------------------------------------
|
|---|
| 125 |
|
|---|
| 126 | IF ( DEBUG ) WRITE(MDEBUG,*)'MMOLIE: OMEGA=',SNGL(OMEGA),
|
|---|
| 127 | * ' DENS=',SNGL(DENS)
|
|---|
| 128 |
|
|---|
| 129 | C COMPUTE VSCAT ANGLE FROM MOLIERE DISTRIBUTION
|
|---|
| 130 | VSCAT = 0.D0
|
|---|
| 131 | IF ( OMEGA .LE. ENEPER ) RETURN
|
|---|
| 132 | CNST = LOG(OMEGA)
|
|---|
| 133 | B = 5.D0
|
|---|
| 134 | DO 10 L = 1,10
|
|---|
| 135 | IF ( ABS(B) .LT. 1.D-10 ) THEN
|
|---|
| 136 | B = 1.D-10
|
|---|
| 137 | ENDIF
|
|---|
| 138 | DB = - (B - LOG(ABS(B)) - CNST)/(1.D0 - 1.D0/B)
|
|---|
| 139 | B = B + DB
|
|---|
| 140 | IF ( ABS(DB) .LE. 0.0001D0 ) GOTO 20
|
|---|
| 141 | 10 CONTINUE
|
|---|
| 142 | RETURN
|
|---|
| 143 | 20 CONTINUE
|
|---|
| 144 | IF ( B .LE. 0.D0 ) RETURN
|
|---|
| 145 | C CHC IS DEFINED DIFFERENTLY FROM GEANT
|
|---|
| 146 | CHIC = CHC*SQRT(CHI)/(PAMA(5)*GAMMA*BETA**2)
|
|---|
| 147 | BINV = 1.D0/B
|
|---|
| 148 | TINT(1) = 0.D0
|
|---|
| 149 | DO 30 JA = 2,4
|
|---|
| 150 | TINT(JA) = F0I(JA) + ( F1I(JA) + F2I(JA)*BINV ) * BINV
|
|---|
| 151 | 30 CONTINUE
|
|---|
| 152 | NMAX = 4
|
|---|
| 153 | 40 CONTINUE
|
|---|
| 154 | CALL RMMAR(RD,2,1)
|
|---|
| 155 | XINT = RD(2)
|
|---|
| 156 | DO 50 NA = 3,40
|
|---|
| 157 | IF ( NA .GT. NMAX ) THEN
|
|---|
| 158 | TINT(NA) = F0I(NA) + ( F1I(NA) + F2I(NA)*BINV ) * BINV
|
|---|
| 159 | NMAX = NA
|
|---|
| 160 | ENDIF
|
|---|
| 161 | IF ( XINT .LE. TINT(NA-1) ) GOTO 60
|
|---|
| 162 | 50 CONTINUE
|
|---|
| 163 | IF ( XINT .LE. TINT(40) ) THEN
|
|---|
| 164 | NA = 40
|
|---|
| 165 | GOTO 60
|
|---|
| 166 | ELSE
|
|---|
| 167 | TMP = 1.D0 - ( 1.D0 - B*(1.D0-XINT) )**5
|
|---|
| 168 | IF ( TMP .LE. 0.D0 ) GOTO 40
|
|---|
| 169 | THRI = 5.D0 / TMP
|
|---|
| 170 | GOTO 80
|
|---|
| 171 | ENDIF
|
|---|
| 172 | 60 CONTINUE
|
|---|
| 173 | NA = MAX(NA-1,3)
|
|---|
| 174 | NA3 = NA-3
|
|---|
| 175 | DO 70 M = 1,4
|
|---|
| 176 | NA3M = NA3 + M
|
|---|
| 177 | ARG(M) = TINT(NA3M)
|
|---|
| 178 | VAL(M) = THRED(NA3M)**2
|
|---|
| 179 | 70 CONTINUE
|
|---|
| 180 | F = THRED(NA) * .02D0
|
|---|
| 181 | CALL MMOL4(THRI,XINT,VAL,ARG,F,IER)
|
|---|
| 182 | 80 CONTINUE
|
|---|
| 183 | VSCAT = CHIC * SQRT( ABS(B*THRI) )
|
|---|
| 184 | IF ( VSCAT .GT. PI ) GOTO 40
|
|---|
| 185 | SINTH = SIN(VSCAT)
|
|---|
| 186 | TEST = VSCAT * (RD(1))**2
|
|---|
| 187 | IF ( TEST .GT. SINTH ) GOTO 40
|
|---|
| 188 |
|
|---|
| 189 | RETURN
|
|---|
| 190 | END
|
|---|