1 | SUBROUTINE ELECTR(IRCODE)
|
---|
2 | C VERSION 4.00 -- 26 JAN 1986/1900
|
---|
3 | C******************************************************************
|
---|
4 | DOUBLE PRECISION PEIE
|
---|
5 | COMMON/BOUNDS/ECUT(6),PCUT(6),VACDST
|
---|
6 | *KEEP,BUFFS.
|
---|
7 | COMMON /BUFFS/ RUNH,RUNE,EVTH,EVTE,DATAB,LH
|
---|
8 | INTEGER MAXBUF,MAXLEN
|
---|
9 | PARAMETER (MAXBUF=39*7)
|
---|
10 | PARAMETER (MAXLEN=12)
|
---|
11 | REAL RUNH(MAXBUF),EVTH(MAXBUF),EVTE(MAXBUF),
|
---|
12 | * RUNE(MAXBUF),DATAB(MAXBUF)
|
---|
13 | INTEGER LH
|
---|
14 | CHARACTER*4 CRUNH,CRUNE,CEVTH,CEVTE
|
---|
15 | EQUIVALENCE (RUNH(1),CRUNH), (RUNE(1),CRUNE)
|
---|
16 | EQUIVALENCE (EVTH(1),CEVTH), (EVTE(1),CEVTE)
|
---|
17 | *KEEP,CEREN1.
|
---|
18 | COMMON /CEREN1/ CERELE,CERHAD,ETADSN,WAVLGL,WAVLGU,CYIELD,
|
---|
19 | * CERSIZ,LCERFI
|
---|
20 | DOUBLE PRECISION CERELE,CERHAD,ETADSN,WAVLGL,WAVLGU,CYIELD
|
---|
21 | REAL CERSIZ
|
---|
22 | LOGICAL LCERFI
|
---|
23 | *KEND.
|
---|
24 | COMMON/ELECIN/EKELIM,ICOMP,EKE0,EKE1,CMFP0,CMFP1,RANGE0,RANGE1, XR
|
---|
25 | *0,TEFF0,BLCC,XCC,PICMP0(1),PICMP1(1),EICMP0(1),EICMP1(1),MPEEM(1),
|
---|
26 | * ESIG0(500),ESIG1(500),PSIG0(500),PSIG1(500),EDEDX0(500),EDEDX1(50
|
---|
27 | *0),PDEDX0(500),PDEDX1(500),EBR10(500),EBR11(500),PBR10(500),PBR11(
|
---|
28 | *500),PBR20(500),PBR21(500),TMXS0(500),TMXS1(500),CMFPE0(1),CMFPE1(
|
---|
29 | *1),CMFPP0(1),CMFPP1(1),ERANG0(1),ERANG1(1),PRANG0(1),PRANG1(1),CXC
|
---|
30 | *2E0(1),CXC2E1(1),CXC2P0(1),CXC2P1(1),CLXAE0(1),CLXAE1(1),CLXAP0(1)
|
---|
31 | *,CLXAP1(1), THR0(1,1),THR1(1,1),THR2(1,1),THRI0(1,1),THRI1(1,1),TH
|
---|
32 | *RI2(1,1),FSTEP(16),FSQR(16),MSMAP(200), VERT1(1000),VERT2(100,16),
|
---|
33 | *MSTEPS,JRMAX,MXV1, MXV2,NBLC,NRNTH,NRNTHI,BLC0,BLC1,RTHR0,RTHR1,RT
|
---|
34 | *HRI0,RTHRI1
|
---|
35 | *KEEP,EPCONT.
|
---|
36 | COMMON/EPCONT/ EDEP,RATIO,TSTEP,TUSTEP,USTEP,TVSTEP,VSTEP,IDISC,
|
---|
37 | * IROLD,IRNEW,RHOFAC, EOLD,ENEW,EKE,ELKE,BETA2,GLE,
|
---|
38 | * TSCAT,IAUSFL
|
---|
39 | DOUBLE PRECISION EDEP,RATIO
|
---|
40 | REAL TSTEP,TUSTEP,USTEP,TVSTEP,VSTEP,RHOFAC,EOLD,ENEW,
|
---|
41 | * EKE,ELKE,BETA2,GLE,TSCAT
|
---|
42 | INTEGER IDISC,IROLD,IRNEW,IAUSFL(29)
|
---|
43 | *KEND.
|
---|
44 | COMMON/GEOM/ZALTIT,BOUND(6),NEWOBS,OBSLVL(10)
|
---|
45 | *KEEP,LONGI.
|
---|
46 | COMMON /LONGI/ APLONG,HLONG,PLONG,SPLONG,THSTEP,THSTPI,
|
---|
47 | * NSTEP,LLONGI,FLGFIT
|
---|
48 | DOUBLE PRECISION APLONG(0:1040,9),HLONG(0:1024),PLONG(0:1040,9),
|
---|
49 | * SPLONG(0:1040,9),THSTEP,THSTPI
|
---|
50 | INTEGER NSTEP
|
---|
51 | LOGICAL LLONGI,FLGFIT
|
---|
52 | *KEEP,MAGNET.
|
---|
53 | COMMON /MAGNET/ BX,BZ,BVAL,BNORMC,BNORM,COSB,SINB,BLIMIT
|
---|
54 | DOUBLE PRECISION BX,BZ,BVAL,BNORMC
|
---|
55 | REAL BNORM,COSB,SINB,BLIMIT
|
---|
56 | *KEND.
|
---|
57 | COMMON /MEDIA/ NMED, RLC,RLDU,RLDUI,RHO,MSGE,MGE,MSEKE,MEKE,MLEKE,
|
---|
58 | *MCMFP,MRANGE,IRAYLM,HBARO(6),HBAROI(6)
|
---|
59 | CHARACTER MEDIA*24
|
---|
60 | COMMON/MEDIAC/MEDIA
|
---|
61 | COMMON/MISC/KMPI,KMPO,DUNIT,NOSCAT,MED(6),RHOR(6),IRAYLR(6)
|
---|
62 | DOUBLE PRECISION PRRMMU
|
---|
63 | COMMON/MUON/PRRMMU,RMMU,RMMUT2
|
---|
64 | *KEEP,OBSPAR.
|
---|
65 | COMMON /OBSPAR/ OBSLEV,THCKOB,XOFF,YOFF,THETAP,PHIP,
|
---|
66 | * THETPR,PHIPR,NOBSLV
|
---|
67 | DOUBLE PRECISION OBSLEV(10),THCKOB(10),XOFF(10),YOFF(10),
|
---|
68 | * THETAP,THETPR(2),PHIP,PHIPR(2)
|
---|
69 | INTEGER NOBSLV
|
---|
70 | *KEEP,PARPAR.
|
---|
71 | COMMON /PARPAR/ CURPAR,SECPAR,PRMPAR,OUTPAR,C,
|
---|
72 | * E00,E00PN,PTOT0,PTOT0N,THICKH,ITYPE,LEVL
|
---|
73 | DOUBLE PRECISION CURPAR(14),SECPAR(14),PRMPAR(14),OUTPAR(14),
|
---|
74 | * C(50),E00,E00PN,PTOT0,PTOT0N,THICKH
|
---|
75 | INTEGER ITYPE,LEVL
|
---|
76 | *KEND.
|
---|
77 | COMMON/PATHCM/NPTH,B0PTH,B1PTH,PTH0(6),PTH1(6),PTH2(6)
|
---|
78 | *KEEP,RANDPA.
|
---|
79 | COMMON /RANDPA/ FAC,U1,U2,RD,NSEQ,ISEED,KNOR
|
---|
80 | DOUBLE PRECISION FAC,U1,U2
|
---|
81 | REAL RD(3000)
|
---|
82 | INTEGER ISEED(103,10),NSEQ
|
---|
83 | LOGICAL KNOR
|
---|
84 | *KEEP,REJECT.
|
---|
85 | COMMON /REJECT/ AVNREJ,
|
---|
86 | * ALTMIN,ANEXP,THICKA,THICKD,CUTLN,EONCUT,
|
---|
87 | * FNPRIM
|
---|
88 | DOUBLE PRECISION AVNREJ(10)
|
---|
89 | REAL ALTMIN(10),ANEXP(10),THICKA(10),THICKD(10),
|
---|
90 | * CUTLN,EONCUT
|
---|
91 | LOGICAL FNPRIM
|
---|
92 | *KEEP,RUNPAR.
|
---|
93 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
---|
94 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
---|
95 | * MONIOU,MDEBUG,NUCNUC,
|
---|
96 | * CETAPE,
|
---|
97 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
98 | * N1STTR,MDBASE,
|
---|
99 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
100 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
101 | * ,GHEISH,GHESIG
|
---|
102 | COMMON /RUNPAC/ DSN,HOST,USER
|
---|
103 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
---|
104 | REAL STEPFC
|
---|
105 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
---|
106 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
107 | * N1STTR,MDBASE
|
---|
108 | INTEGER CETAPE
|
---|
109 | CHARACTER*79 DSN
|
---|
110 | CHARACTER*20 HOST,USER
|
---|
111 |
|
---|
112 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
113 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
114 | * ,GHEISH,GHESIG
|
---|
115 | *KEEP,STACKE.
|
---|
116 | COMMON/STACKE/ E,TIME,X,Y,Z,U,V,W,DNEAR,IQ,IGEN,IR,IOBS,LPCTE,NP
|
---|
117 | DOUBLE PRECISION E(60),TIME(60)
|
---|
118 | REAL X(60),Y(60),Z(60),U(60),V(60),W(60),DNEAR(60)
|
---|
119 | INTEGER IQ(60),IGEN(60),IR(60),IOBS(60),LPCTE(60),NP
|
---|
120 | *KEND.
|
---|
121 | COMMON/THRESH/RMT2,RMSQ,ESCD2,AP,API,AE,UP,UE,TE,THMOLL
|
---|
122 | COMMON/UPHIIN/SINC0,SINC1,SIN0(20002),SIN1(20002)
|
---|
123 | COMMON/UPHIOT/THETA,SINTHE,COSTHE,SINPHI, COSPHI,PI,TWOPI,PI5D2
|
---|
124 | DOUBLE PRECISION PZERO,PRM,PRMT2,RMI,VC
|
---|
125 | COMMON/USEFUL/PZERO,PRM,PRMT2,RMI,VC,RM,MEDIUM,MEDOLD,IBLOBE,ICALL
|
---|
126 | COMMON/ACLOCK/NCLOCK,JCLOCK
|
---|
127 | DOUBLE PRECISION THICK
|
---|
128 | DATA NSTPCN/0/
|
---|
129 |
|
---|
130 |
|
---|
131 |
|
---|
132 | C_____NCLOCK = NCLOCK+1
|
---|
133 | C_____IF (NCLOCK.GT.JCLOCK) THEN
|
---|
134 | C______WRITE(MDEBUG,* )' ELECTR:NP=',NP,' IR=',IR(NP),' IOBS=',IOBS(NP)
|
---|
135 | C______CALL AUSGB2
|
---|
136 | C_____END IF
|
---|
137 | NEWOBS=IOBS(NP)
|
---|
138 | IRCODE=1
|
---|
139 | IROLD=IR(NP)
|
---|
140 | IRL=IR(NP)
|
---|
141 | MEDIUM=MED(IRL)
|
---|
142 | 380 CONTINUE
|
---|
143 | 381 CONTINUE
|
---|
144 | LELEC=5-2*IQ(NP)
|
---|
145 | PEIE=E(NP)
|
---|
146 | EIE=PEIE
|
---|
147 | IF((EIE.LE.ECUT(IRL)))GO TO 390
|
---|
148 | MEDIUM=MED(IRL)
|
---|
149 | 400 CONTINUE
|
---|
150 | 401 CONTINUE
|
---|
151 | IF (MEDIUM.NE.0) THEN
|
---|
152 | EKE=EIE-RM
|
---|
153 | ELKE=LOG(EKE)
|
---|
154 | CALL RMMAR(RNNE1,1,2)
|
---|
155 | IF ((RNNE1.EQ.0.0)) THEN
|
---|
156 | RNNE1=1.E-30
|
---|
157 | END IF
|
---|
158 | DEMFP=AMAX1(-ALOG(RNNE1),1.E-6)
|
---|
159 | LELKE=EKE1*ELKE+EKE0
|
---|
160 | IF (LELEC.LT.0) THEN
|
---|
161 | SIG0=ESIG1(LELKE)*ELKE+ESIG0(LELKE)
|
---|
162 | ELSE
|
---|
163 | SIG0=PSIG1(LELKE)*ELKE+PSIG0(LELKE)
|
---|
164 | END IF
|
---|
165 | END IF
|
---|
166 | 450 CONTINUE
|
---|
167 | 451 CONTINUE
|
---|
168 | IF (MEDIUM.EQ.0) THEN
|
---|
169 | TSTEP=VACDST
|
---|
170 | USTEP=TSTEP
|
---|
171 | TUSTEP=USTEP
|
---|
172 | ELSE
|
---|
173 | RHOFAC=RHOR(IRL)/RHO
|
---|
174 | RHOFI=1./RHOFAC
|
---|
175 | SIG=SIG0*RHOFAC
|
---|
176 | IF (SIG.LE.0.0) THEN
|
---|
177 | TSTEP=VACDST
|
---|
178 | ELSE
|
---|
179 | TSTEP=DEMFP/SIG
|
---|
180 | END IF
|
---|
181 | TMXS=TMXS1(LELKE)*ELKE+TMXS0(LELKE)
|
---|
182 | TMXS=MIN(TMXS,STEPFC*200.*TEFF0)
|
---|
183 | TMXS=TMXS*RHOFI
|
---|
184 | TUSTEP=MIN(TSTEP,TMXS)
|
---|
185 | IF (LELEC.LT.0) THEN
|
---|
186 | DEDX0=EDEDX1(LELKE)*ELKE+EDEDX0(LELKE)
|
---|
187 | ELSE
|
---|
188 | DEDX0=PDEDX1(LELKE)*ELKE+PDEDX0(LELKE)
|
---|
189 | END IF
|
---|
190 | DEDX=RHOFAC*MIN(DEDX0,(86.65-Z(NP)*8.E-6)*RLDUI)
|
---|
191 | RANGE=(EIE-ECUT(IRL)+0.001)/DEDX
|
---|
192 | BETA2=MAX(1.E-8,1.-RMSQ/(EIE*EIE))
|
---|
193 | BETA3=EIE*BETA2*0.094315
|
---|
194 | TSCAT=RLDU*BETA3*BETA3
|
---|
195 | TSCAT=TSCAT*RHOFI
|
---|
196 | TUSTEP=MIN(TUSTEP,0.3*TSCAT,RANGE)
|
---|
197 | RATIO=TUSTEP/TSCAT
|
---|
198 | USTEP=TUSTEP*(1.D0-RATIO)
|
---|
199 | USTEPU=USTEP
|
---|
200 | ALTEXP=EXP(-Z(NP)*HBAROI(IRL))
|
---|
201 | USTEP=USTEP*ALTEXP
|
---|
202 | DISC=W(NP)*USTEP*HBAROI(IRL)
|
---|
203 | IF (ABS(DISC).LT.0.065) THEN
|
---|
204 | USTEP=USTEP*(1.-0.5*DISC*(1.-0.6666667*DISC* (1.-0.75*DISC *
|
---|
205 | * (1.-0.8*DISC))))
|
---|
206 | ELSE IF(DISC.LE.-1.) THEN
|
---|
207 | USTEP=VACDST
|
---|
208 | ELSE
|
---|
209 | USTEP=USTEP/DISC*LOG(DISC+1.)
|
---|
210 | END IF
|
---|
211 | TUSTPC=USTEP/(1.D0-RATIO)
|
---|
212 | END IF
|
---|
213 | IRNEW=IR(NP)
|
---|
214 | IDISC=0
|
---|
215 | USTEP0=USTEP
|
---|
216 | USTEP=MIN(USTEP,BLIMIT*EIE)
|
---|
217 | IF((USTEP.GT.DNEAR(NP) ))CALL HOWFAR
|
---|
218 | IF((IDISC.GT.0))GO TO 420
|
---|
219 | IF (USTEP.LE.0.0) THEN
|
---|
220 | IF (USTEP.LT.-1.E-4) THEN
|
---|
221 | WRITE(KMPO,460)USTEP
|
---|
222 | 460 FORMAT(' ELECTR: NEGATIVE USTEP=',G20.10,' CM')
|
---|
223 | WRITE(KMPO,470)Z(NP),DNEAR(NP),IR(NP),IRNEW,W(NP)
|
---|
224 | 470 FORMAT (' Z=',G15.7, ' DNEAR=',G15.7,' IR=',I5, ' IRNEW=',I5,
|
---|
225 | * ' W=',G15.7)
|
---|
226 | NSTPCN=NSTPCN+1
|
---|
227 | IF (NSTPCN.GE.20) THEN
|
---|
228 | CALL AUSGB2
|
---|
229 | WRITE(KMPO,480) NSTPCN
|
---|
230 | 480 FORMAT (' ELECTR: PROGRAM STOPPED BECAUSE OF FREQUENT NEGA',
|
---|
231 | * 'TIVE USTEP, COUNTER = ',I5)
|
---|
232 | STOP
|
---|
233 | END IF
|
---|
234 | END IF
|
---|
235 | USTEP=0.
|
---|
236 | END IF
|
---|
237 | IF (USTEP.EQ.0.0.OR.MEDIUM.EQ.0) THEN
|
---|
238 | IF (USTEP.NE.0.0) THEN
|
---|
239 | VSTEP=USTEP
|
---|
240 | TVSTEP=VSTEP
|
---|
241 | EDEP=PZERO
|
---|
242 | TVSTPC=TVSTEP
|
---|
243 | ALPHA=VSTEP*LELEC*BNORM/EIE
|
---|
244 | TVSTPC=TVSTPC*(1.+0.04166667*ALPHA*ALPHA)
|
---|
245 | U0=U(NP)
|
---|
246 | V0=V(NP)
|
---|
247 | W0=W(NP)
|
---|
248 | FNORM=1.-0.5*(ALPHA*ALPHA)*(1.-0.75*(ALPHA*ALPHA))
|
---|
249 | F1SIN=(1.-FNORM)*SINB
|
---|
250 | F1COS=(1.-FNORM)*COSB
|
---|
251 | V1=V0*ALPHA*FNORM
|
---|
252 | U(NP)=U0*(1.-F1SIN*SINB)+W0*F1SIN*COSB+V1*SINB
|
---|
253 | V(NP)=FNORM*(V0-ALPHA*(U0*SINB-W0*COSB))
|
---|
254 | W(NP)=W0*(1.-F1COS*COSB)+U0*F1COS*SINB-V1*COSB
|
---|
255 | RADINV=1.5-0.5*(U(NP)**2+V(NP)**2+W(NP)**2)
|
---|
256 | U(NP)=U(NP)*RADINV
|
---|
257 | V(NP)=V(NP)*RADINV
|
---|
258 | W(NP)=W(NP)*RADINV
|
---|
259 | X(NP)=X(NP)+(VSTEP*0.5)*(U0+U(NP))
|
---|
260 | Y(NP)=Y(NP)+(VSTEP*0.5)*(V0+V(NP))
|
---|
261 | ZOLD =Z(NP)
|
---|
262 | Z(NP)=Z(NP)+(VSTEP*0.5)*(W0+W(NP))
|
---|
263 | TIME(NP)=TIME(NP)+TVSTPC*VC*E(NP)/SQRT((E(NP)-PRM)*(E(NP)+PRM
|
---|
264 | * ))
|
---|
265 |
|
---|
266 |
|
---|
267 | C GENERATE CERENKOV PHOTONS
|
---|
268 | IF ( FNPRIM ) CALL CERENE(TVSTPC)
|
---|
269 | C ADD ELECTRONS TO THE LONGITUDINAL DEVELOPMENT
|
---|
270 | C FIND FIRST THE EQUIVALENT LEVELS
|
---|
271 | IF ( LLONGI ) THEN
|
---|
272 | C IF STARTING POINT BELOW LOWEST LEVEL THEN DON'T CHECK
|
---|
273 | IF ( HLONG(NSTEP) .LE. -ZOLD ) THEN
|
---|
274 | LPCT1 = LPCTE(NP)
|
---|
275 | C Z NEW IS PROBABLY ONLY LITTLE BELOW Z OLD, THEREFORE INCREMENTAL SEARCH
|
---|
276 | DO 6002 I1 = LPCT1,NSTEP
|
---|
277 | IF ( HLONG(I1) .LT. -Z(NP) ) GOTO 6003
|
---|
278 | 6002 CONTINUE
|
---|
279 | I1 = NSTEP + 1
|
---|
280 | 6003 CONTINUE
|
---|
281 | LPCT2 = I1 - 1
|
---|
282 | DO 485 I=LPCT1,LPCT2
|
---|
283 | PLONG(I,IQ(NP)) = PLONG(I,IQ(NP)) + 1.D0
|
---|
284 | 485 CONTINUE
|
---|
285 | C STORE END POINT AS POSSIBLE STARTPOINT OF NEXT TRACK
|
---|
286 | LPCTE(NP) = LPCT2 + 1
|
---|
287 | ENDIF
|
---|
288 | ENDIF
|
---|
289 | DNEAR(NP)=DNEAR(NP)-VSTEP
|
---|
290 | IROLD=IR(NP)
|
---|
291 | END IF
|
---|
292 | IR(NP)=IRNEW
|
---|
293 | IRL=IRNEW
|
---|
294 | MEDIUM=MED(IRL)
|
---|
295 | IF((EIE.LE.ECUT(IRL)))GO TO 390
|
---|
296 | IF (USTEP.NE.0.0) THEN
|
---|
297 | IF (NEWOBS.GT.IOBS(NP)) THEN
|
---|
298 | CALL AUSGAB
|
---|
299 | IOBS(NP)=NEWOBS
|
---|
300 | END IF
|
---|
301 | END IF
|
---|
302 | GO TO 401
|
---|
303 | END IF
|
---|
304 | VSTEP=USTEP
|
---|
305 | IF (USTEP.EQ.USTEP0) THEN
|
---|
306 | TVSTEP=TUSTEP
|
---|
307 | TVSTPC=TUSTPC
|
---|
308 | ELSE
|
---|
309 | VSTEPU=VSTEP
|
---|
310 | DISC=W(NP)*VSTEPU*HBAROI(IRL)
|
---|
311 | VSTEPU=VSTEPU/ALTEXP
|
---|
312 | IF (ABS(DISC).LT.0.16) THEN
|
---|
313 | VSTEPU=VSTEPU*(1.+.5*DISC*(1.+.33333333*DISC* (1.+0.25*DISC*
|
---|
314 | * (1.+0.2*DISC))))
|
---|
315 | ELSE
|
---|
316 | VSTEPU=VSTEPU/DISC*(EXP(DISC)-1.)
|
---|
317 | END IF
|
---|
318 | VSTP=VSTEPU/TSCAT
|
---|
319 | IPTH=B0PTH+B1PTH*VSTP
|
---|
320 | IF (IPTH.GT.NPTH) THEN
|
---|
321 | CALL AUSGB2
|
---|
322 | WRITE(KMPO,490) VSTP,IPTH,NPTH
|
---|
323 | 490 FORMAT (' ELECTR: OUT OF BOUNDS IPTH: VSTP,IPTH,NPTH=' , 1P ,
|
---|
324 | * G15.6,2I10)
|
---|
325 | STOP
|
---|
326 | END IF
|
---|
327 | PTH=PTH0(IPTH)+VSTP*(PTH1(IPTH)+VSTP*PTH2(IPTH))
|
---|
328 | TVSTEP=PTH*VSTEPU
|
---|
329 | TVSTPC=PTH*VSTEP
|
---|
330 | END IF
|
---|
331 | ALPHA=VSTEP*LELEC*BNORM/EIE
|
---|
332 | TVSTPC=TVSTPC*(1.+0.04166667*ALPHA*ALPHA)
|
---|
333 | DE=DEDX*TVSTEP
|
---|
334 | EDEP=DE
|
---|
335 | EKEF=EKE-DE
|
---|
336 | EOLD=EIE
|
---|
337 | ENEW=EOLD-DE
|
---|
338 | CALL MSCAT
|
---|
339 | U0=U(NP)
|
---|
340 | V0=V(NP)
|
---|
341 | W0=W(NP)
|
---|
342 | FNORM=1.-0.5*(ALPHA*ALPHA)*(1.-0.75*(ALPHA*ALPHA))
|
---|
343 | F1SIN=(1.-FNORM)*SINB
|
---|
344 | F1COS=(1.-FNORM)*COSB
|
---|
345 | V1=V0*ALPHA*FNORM
|
---|
346 | U(NP)=U0*(1.-F1SIN*SINB)+W0*F1SIN*COSB+V1*SINB
|
---|
347 | V(NP)=FNORM*(V0-ALPHA*(U0*SINB-W0*COSB))
|
---|
348 | W(NP)=W0*(1.-F1COS*COSB)+U0*F1COS*SINB-V1*COSB
|
---|
349 | RADINV=1.5-0.5*(U(NP)**2+V(NP)**2+W(NP)**2)
|
---|
350 | U(NP)=U(NP)*RADINV
|
---|
351 | V(NP)=V(NP)*RADINV
|
---|
352 | W(NP)=W(NP)*RADINV
|
---|
353 | X(NP)=X(NP)+(VSTEP*0.5)*(U0+U(NP))
|
---|
354 | Y(NP)=Y(NP)+(VSTEP*0.5)*(V0+V(NP))
|
---|
355 | ZOLD = Z(NP)
|
---|
356 | Z(NP)=Z(NP)+(VSTEP*0.5)*(W0+W(NP))
|
---|
357 | TIME(NP)=TIME(NP)+TVSTPC*VC*E(NP)/SQRT((E(NP)-PRM)*(E(NP)+PRM))
|
---|
358 |
|
---|
359 |
|
---|
360 | C GENERATE CERENKOV PHOTONS
|
---|
361 | IF ( FNPRIM ) CALL CERENE(TVSTPC)
|
---|
362 | C ADD ELECTRONS TO THE LONGITUDINAL DEVELOPMENT
|
---|
363 | C FIND FIRST THE EQUIVALENT LEVELS
|
---|
364 | IF ( LLONGI ) THEN
|
---|
365 | C IF STARTING POINT BELOW LOWEST LEVEL THEN DON'T CHECK
|
---|
366 | IF ( HLONG(NSTEP) .LE. -ZOLD ) THEN
|
---|
367 | LPCT1 = LPCTE(NP)
|
---|
368 | C Z NEW IS PROBABLY ONLY LITTLE BELOW Z OLD, THEREFORE INCREMENTAL SEARCH
|
---|
369 | DO 6102 I1 = LPCT1,NSTEP
|
---|
370 | IF ( HLONG(I1) .LT. -Z(NP) ) GOTO 6103
|
---|
371 | 6102 CONTINUE
|
---|
372 | I1 = NSTEP + 1
|
---|
373 | 6103 CONTINUE
|
---|
374 | LPCT2 = I1 - 1
|
---|
375 | DO 495 I=LPCT1,LPCT2
|
---|
376 | PLONG(I,IQ(NP)) = PLONG(I,IQ(NP)) + 1.D0
|
---|
377 | 495 CONTINUE
|
---|
378 | LPCTE(NP) = LPCT2 + 1
|
---|
379 | ENDIF
|
---|
380 | ENDIF
|
---|
381 | DNEAR(NP)=DNEAR(NP)-VSTEP
|
---|
382 | IROLD=IR(NP)
|
---|
383 | CALL RMMAR(RNNO38,1,2)
|
---|
384 | PHI=RNNO38*TWOPI
|
---|
385 | LPHI=SINC1*PHI+SINC0
|
---|
386 | SINPHI=SIN1(LPHI)*PHI+SIN0(LPHI)
|
---|
387 | CPHI=PI5D2-PHI
|
---|
388 | LCPHI=SINC1*CPHI+SINC0
|
---|
389 | COSPHI=SIN1(LCPHI)*CPHI+SIN0(LCPHI)
|
---|
390 | A=U(NP)
|
---|
391 | B=V(NP)
|
---|
392 | CC=W(NP)
|
---|
393 | SINPS2=A*A+B*B
|
---|
394 | IF (SINPS2.LT.1.0E-10) THEN
|
---|
395 | U(NP)=SINTHE*COSPHI
|
---|
396 | V(NP)=SINTHE*SINPHI
|
---|
397 | W(NP)=CC*COSTHE
|
---|
398 | ELSE
|
---|
399 | SINPSI=SQRT(SINPS2)
|
---|
400 | US=SINTHE*COSPHI
|
---|
401 | VS=SINTHE*SINPHI
|
---|
402 | SINDEL=B*(1./SINPSI)
|
---|
403 | COSDEL=A*(1./SINPSI)
|
---|
404 | U(NP)=CC*COSDEL*US-SINDEL*VS+A*COSTHE
|
---|
405 | V(NP)=CC*SINDEL*US+COSDEL*VS+B*COSTHE
|
---|
406 | W(NP)=-SINPSI*US+CC*COSTHE
|
---|
407 | END IF
|
---|
408 | RADINV=1.5-0.5*(U(NP)**2+V(NP)**2+W(NP)**2)
|
---|
409 | U(NP)=U(NP)*RADINV
|
---|
410 | V(NP)=V(NP)*RADINV
|
---|
411 | W(NP)=W(NP)*RADINV
|
---|
412 | PEIE=PEIE-EDEP
|
---|
413 | EIE=PEIE
|
---|
414 | E(NP)=PEIE
|
---|
415 | IF((EIE.LE.ECUT(IRL)))GO TO 390
|
---|
416 | MEDOLD=MEDIUM
|
---|
417 | IF (MEDIUM.NE.0) THEN
|
---|
418 | EKEOLD=EKE
|
---|
419 | EKE=EIE-RM
|
---|
420 | ELKE=LOG(EKE)
|
---|
421 | LELKE=EKE1*ELKE+EKE0
|
---|
422 | END IF
|
---|
423 | IF (IRNEW.NE.IROLD) THEN
|
---|
424 | IR(NP)=IRNEW
|
---|
425 | IRL=IRNEW
|
---|
426 | MEDIUM=MED(IRL)
|
---|
427 | END IF
|
---|
428 | IF((EIE.LE.ECUT(IRL)))GO TO 390
|
---|
429 | IF (NEWOBS.GT.IOBS(NP)) THEN
|
---|
430 | CALL AUSGAB
|
---|
431 | IOBS(NP)=NEWOBS
|
---|
432 | END IF
|
---|
433 | IF((IDISC.LT.0))GO TO 420
|
---|
434 | IF((MEDIUM.NE.MEDOLD))GO TO 401
|
---|
435 | DEMFP=MAX(0.,DEMFP-TVSTEP*SIG)
|
---|
436 | IF(((DEMFP.LT.1.E-6)))GO TO452
|
---|
437 | GO TO 451
|
---|
438 | 452 CONTINUE
|
---|
439 | IF (LELEC.LT.0) THEN
|
---|
440 | SIGF=ESIG1(LELKE)*ELKE+ESIG0(LELKE)
|
---|
441 | ELSE
|
---|
442 | SIGF=PSIG1(LELKE)*ELKE+PSIG0(LELKE)
|
---|
443 | END IF
|
---|
444 | CALL RMMAR(RFICT,1,2)
|
---|
445 | IF(((RFICT.LE.SIGF/SIG0)))GO TO402
|
---|
446 | GO TO 401
|
---|
447 | 402 CONTINUE
|
---|
448 | IF ( .NOT. FNPRIM ) THEN
|
---|
449 | X(1)=0.
|
---|
450 | Y(1)=0.
|
---|
451 | EVTH(5)=X(1)
|
---|
452 | EVTH(6)=-Y(1)
|
---|
453 | IF (FIX1I) THEN
|
---|
454 | Z(1)=-FIXHEI
|
---|
455 | NP=1
|
---|
456 | LPCTE(1)=MIN(NSTEP,INT(THICK(FIXHEI)*THSTPI)+1)
|
---|
457 | SITHET=SQRT(1.D0-SECPAR(3)**2)
|
---|
458 | U(1)=SITHET*COS(-SECPAR(4))
|
---|
459 | V(1)=SITHET*SIN(-SECPAR(4))
|
---|
460 | W(1)=SECPAR(3)
|
---|
461 | RADINV=1.5-0.5*(U(1)**2+V(1)**2+W(1)**2)
|
---|
462 | U(1)=U(1)*RADINV
|
---|
463 | V(1)=V(1)*RADINV
|
---|
464 | W(1)=W(1)*RADINV
|
---|
465 | END IF
|
---|
466 | EVTH(7)=-Z(1)
|
---|
467 | CALL TOBUF(EVTH,0)
|
---|
468 | C OUTPUT OF EVENTHEADER TO THE CERENKOV FILE
|
---|
469 | IF (LCERFI) CALL TOBUFC(EVTH,0)
|
---|
470 | CALL COORIN(DBLE(-Z(1)))
|
---|
471 | TIME(1)=0.D0
|
---|
472 | FNPRIM =.TRUE.
|
---|
473 | IF (FPRINT) THEN
|
---|
474 | WRITE(KMPO,* )' FIRST INTERACTION AT ',EVTH(7)*0.01,' M'
|
---|
475 | END IF
|
---|
476 | END IF
|
---|
477 | IF (LELEC.LT.0) THEN
|
---|
478 | EBR1=EBR11(LELKE)*ELKE+EBR10(LELKE)
|
---|
479 | CALL RMMAR(RNNO24,1,2)
|
---|
480 | IF (RNNO24.LE.EBR1) THEN
|
---|
481 | GO TO 500
|
---|
482 | ELSE
|
---|
483 | IF (E(NP).LE.THMOLL) THEN
|
---|
484 | IF((EBR1.LE.0.0))GO TO 380
|
---|
485 | GO TO 500
|
---|
486 | END IF
|
---|
487 | CALL MOLLER
|
---|
488 | END IF
|
---|
489 | GO TO 380
|
---|
490 | END IF
|
---|
491 | PBR1=PBR11(LELKE)*ELKE+PBR10(LELKE)
|
---|
492 | CALL RMMAR(RNNO25,1,2)
|
---|
493 | IF((RNNO25.LT.PBR1))GO TO 500
|
---|
494 | PBR2=PBR21(LELKE)*ELKE+PBR20(LELKE)
|
---|
495 | IF (RNNO25.LT.PBR2) THEN
|
---|
496 | CALL BHABHA
|
---|
497 | ELSE
|
---|
498 | CALL ANNIH
|
---|
499 | GO TO 382
|
---|
500 | END IF
|
---|
501 | GO TO 381
|
---|
502 | 382 CONTINUE
|
---|
503 | RETURN
|
---|
504 | 500 CONTINUE
|
---|
505 | CALL BREMS
|
---|
506 | IF (IQ(NP).EQ.1) THEN
|
---|
507 | RETURN
|
---|
508 | ELSE
|
---|
509 | GO TO 380
|
---|
510 | END IF
|
---|
511 | 390 IF (EIE.GT.AE) THEN
|
---|
512 | IDR=1
|
---|
513 | IF (LELEC.LT.0) THEN
|
---|
514 | EDEP=PEIE-PRM
|
---|
515 | ELSE
|
---|
516 | EDEP=PEIE-PRM
|
---|
517 | END IF
|
---|
518 | ELSE
|
---|
519 | IDR=2
|
---|
520 | EDEP=PEIE-PRM
|
---|
521 | END IF
|
---|
522 | IF (LELEC.GT.0) THEN
|
---|
523 | IF (EDEP.LT.PEIE) THEN
|
---|
524 | CALL RMMAR(RD,2,2)
|
---|
525 | COSTHE=RD(1)
|
---|
526 | FLIP=RD(2)
|
---|
527 | IF((FLIP.LE.0.5))COSTHE=-COSTHE
|
---|
528 | SINTHE=SQRT(MAX(0.,1.0-COSTHE*COSTHE))
|
---|
529 | E(NP)=PRM
|
---|
530 | IQ(NP)=1
|
---|
531 | U(NP)=0.
|
---|
532 | V(NP)=0.
|
---|
533 | W(NP)=1.
|
---|
534 | CALL UPHI(2,1)
|
---|
535 | NP=NP+1
|
---|
536 | E(NP)=PRM
|
---|
537 | IQ(NP)=1
|
---|
538 | X(NP)=X(NP-1)
|
---|
539 | Y(NP)=Y(NP-1)
|
---|
540 | Z(NP)=Z(NP-1)
|
---|
541 | LPCTE(NP)=LPCTE(NP-1)
|
---|
542 | IR(NP)=IR(NP-1)
|
---|
543 | DNEAR(NP)=DNEAR(NP-1)
|
---|
544 | TIME(NP)=TIME(NP-1)
|
---|
545 | IGEN(NP)=IGEN(NP-1)
|
---|
546 | IOBS(NP)=IOBS(NP-1)
|
---|
547 | U(NP)=-U(NP-1)
|
---|
548 | V(NP)=-V(NP-1)
|
---|
549 | W(NP)=-W(NP-1)
|
---|
550 | RETURN
|
---|
551 | END IF
|
---|
552 | END IF
|
---|
553 | NP=NP-1
|
---|
554 | IRCODE=2
|
---|
555 | RETURN
|
---|
556 | 420 IF (LELEC.LT.0) THEN
|
---|
557 | EDEP=PEIE-PRM
|
---|
558 | ELSE
|
---|
559 | EDEP=PEIE+PRM
|
---|
560 | END IF
|
---|
561 | IRCODE=2
|
---|
562 | NP=NP-1
|
---|
563 | RETURN
|
---|
564 | END
|
---|