1 | SUBROUTINE SHOWER
|
---|
2 | C
|
---|
3 | C*********************************************************************
|
---|
4 | C DESIGN : D. HECK IK3 FZK KARLSRUHE
|
---|
5 | C DATE : AUG 11, 1988
|
---|
6 | C*********************************************************************
|
---|
7 | C THIS ROUTINE LOOKS, WHAT IS ON TOP OF STACK, AND CALLS THE
|
---|
8 | C APPROPRIATE ROUTINE TO TREAT THIS PARTICLE.
|
---|
9 | C*********************************************************************
|
---|
10 | COMMON/MISC/KMPI,KMPO,DUNIT,NOSCAT,MED(6),RHOR(6),IRAYLR(6)
|
---|
11 | *KEEP,RUNPAR.
|
---|
12 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
---|
13 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
---|
14 | * MONIOU,MDEBUG,NUCNUC,
|
---|
15 | * CETAPE,
|
---|
16 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
17 | * N1STTR,MDBASE,
|
---|
18 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
19 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
20 | * ,GHEISH,GHESIG
|
---|
21 | COMMON /RUNPAC/ DSN,HOST,USER
|
---|
22 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
---|
23 | REAL STEPFC
|
---|
24 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
---|
25 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
26 | * N1STTR,MDBASE
|
---|
27 | INTEGER CETAPE
|
---|
28 | CHARACTER*79 DSN
|
---|
29 | CHARACTER*20 HOST,USER
|
---|
30 |
|
---|
31 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
32 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
33 | * ,GHEISH,GHESIG
|
---|
34 | *KEEP,STACKE.
|
---|
35 | COMMON/STACKE/ E,TIME,X,Y,Z,U,V,W,DNEAR,IQ,IGEN,IR,IOBS,LPCTE,NP
|
---|
36 | DOUBLE PRECISION E(60),TIME(60)
|
---|
37 | REAL X(60),Y(60),Z(60),U(60),V(60),W(60),DNEAR(60)
|
---|
38 | INTEGER IQ(60),IGEN(60),IR(60),IOBS(60),LPCTE(60),NP
|
---|
39 | *KEND.
|
---|
40 | C*** TAKE FIRST PARTICLE IN STACK
|
---|
41 | NP=1
|
---|
42 | IF((DEBUG))CALL AUSGB2
|
---|
43 | 251 CONTINUE
|
---|
44 | C *** DECIDE WHAT IS ON TOP OF STACK
|
---|
45 | 261 CONTINUE
|
---|
46 | C *** JUMP TO PARTICLE IN QUESTION
|
---|
47 | C *** THE FOLLOWING PARTICLE IDENTIFICATION IS MADE BY THE
|
---|
48 | C *** VALUE OF IQ(NP) (ACCORDING TO PROGRAM 'GEANT')
|
---|
49 | C *** IQ = 1 PHOTON
|
---|
50 | C *** = 2 POSITRON E (+)
|
---|
51 | C *** = 3 ELECTRON E (-)
|
---|
52 | C *** = 5 POSITIVE MUON (+)
|
---|
53 | C *** = 6 NEGATIVE MUON (-)
|
---|
54 | C *** = 7 NEUTRAL PION (0)
|
---|
55 | C *** = 8 POSITIVE PION (+)
|
---|
56 | C *** = 9 NEGATIVE PION (-)
|
---|
57 | C *** IF IQ = OTHER VALUE, JUMP TO ERROR MESSAGE
|
---|
58 | GO TO(270,280,280,290, 300,300,300,300,300) (IQ(NP))
|
---|
59 | C *** IQ OUT OF RANGE?
|
---|
60 | 290 WRITE(KMPO,320) IQ(NP)
|
---|
61 | 320 FORMAT(' SHOWER: PARTICLE TYPE ',I5,' NOT IDENTIFIED')
|
---|
62 | CALL AUSGB2
|
---|
63 | NP=NP-1
|
---|
64 | GO TO262
|
---|
65 | 300 CALL MPPROP
|
---|
66 | GO TO262
|
---|
67 | 270 CALL PHOTON(IRCODE)
|
---|
68 | C *** PHOTON DISCARDED ?
|
---|
69 | IF((IRCODE.EQ.2))GO TO262
|
---|
70 | IF((IQ(NP).LT.2 .OR. IQ(NP).GT.3))GO TO261
|
---|
71 | 280 CALL ELECTR(IRCODE)
|
---|
72 | C *** ELECTRON DISCARDED ?
|
---|
73 | IF((IRCODE.EQ.2))GO TO262
|
---|
74 | IF((IQ(NP).EQ.1))GO TO 270
|
---|
75 | C *** LOOP BACK UP TO PARTICLE SELECTION
|
---|
76 | GO TO 261
|
---|
77 | 262 CONTINUE
|
---|
78 | C *** CHECK TO SEE IF ANYTHING LEFT ON STACK
|
---|
79 | C *** NOTHING ON STACK, SO JUMP OUT OF LOOP
|
---|
80 | IF((NP.LE.0))GO TO252
|
---|
81 | GO TO 251
|
---|
82 | 252 CONTINUE
|
---|
83 | C*** TOP STACK LOOP END
|
---|
84 | RETURN
|
---|
85 | END
|
---|