]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
62be6b28 | 5 | * Revision 1.1.1.1 1999/05/18 15:55:15 fca |
6 | * AliRoot sources | |
7 | * | |
fe4da5cc | 8 | * Revision 1.1.1.1 1995/10/24 10:19:59 cernlib |
9 | * Geant | |
10 | * | |
11 | * | |
12 | #include "geant321/pilot.h" | |
13 | #if defined(CERNLIB_OLDNAME) | |
14 | *CMZ : 3.21/02 29/03/94 15.41.44 by S.Giani | |
15 | *-- Author : | |
16 | *=== decay ============================================================* | |
17 | * | |
18 | SUBROUTINE DECAY(IHAD,ISTAB) | |
19 | ||
20 | #include "geant321/dblprc.inc" | |
21 | #include "geant321/dimpar.inc" | |
22 | #include "geant321/iounit.inc" | |
23 | * | |
24 | *----------------------------------------------------------------------* | |
25 | * Decay89: slight revision by A. Ferrari * | |
26 | *----------------------------------------------------------------------* | |
27 | * | |
28 | #include "geant321/finpar2.inc" | |
29 | #include "geant321/metlsp.inc" | |
30 | #include "geant321/part.inc" | |
31 | #include "geant321/decayc.inc" | |
32 | COMMON /FKDREI/ TEST(12) | |
33 | COMMON /FKGAMR/REDU,AMO,AMM(15) | |
34 | COMMON /FKPRUN/ISYS | |
35 | REAL RNDM(1) | |
36 | C | |
37 | C | |
38 | REDU=2.D0 | |
39 | DO 801 I=1,IHAD | |
40 | ITS(I) = NREF(I) | |
41 | PLS(I) = SQRT(PXF(I)**2 + PYF(I)**2 + PZF(I)**2) | |
42 | IF (PLS(I) .NE. 0.D0) THEN | |
43 | CXS(I) = PXF(I)/PLS(I) | |
44 | CYS(I) = PYF(I)/PLS(I) | |
45 | CZS(I) = PZF(I)/PLS(I) | |
46 | END IF | |
47 | ELS(I) = HEF(I) | |
48 | 801 CONTINUE | |
49 | IST = IHAD | |
50 | IR = 0 | |
51 | 200 CONTINUE | |
52 | C*****TEST STABLE OR UNSTABLE | |
53 | C$$$$$ISTAB=1/2/3 MEANS STRONG + WEAK DECAYS / ONLY STRONG DECAYS / | |
54 | C*****STRONG DECAYS + WEAK DECAYS FOR CHARMED PARTICLES AND TAU LEPTONS | |
55 | IF(ISTAB.EQ.1) GOTO 793 | |
56 | IF(ISTAB.EQ.2) GOTO 737 | |
57 | IF(ISTAB.EQ.3) GOTO 738 | |
58 | 793 IF(ITS(IST).EQ.135.OR.ITS(IST).EQ.136) GOTO 202 | |
59 | IF(ITS(IST).GE.1.AND.ITS(IST).LE.7) GOTO 202 | |
60 | GOTO 300 | |
61 | 738 IF(ITS(IST).GE.1.AND.ITS(IST).LE.23) GOTO 202 | |
62 | IF(ITS(IST).GE. 97.AND.ITS(IST).LE.103) GOTO 202 | |
63 | IF(ITS(IST).EQ.109.AND.ITS(IST).EQ.115) GOTO 202 | |
64 | IF(ITS(IST).GE.133.AND.ITS(IST).LE.136) GOTO 202 | |
65 | GOTO 300 | |
66 | 737 IF(ITS(IST).GE. 1.AND.ITS(IST).LE. 30) GOTO 202 | |
67 | IF(ITS(IST).GE. 97.AND.ITS(IST).LE.103) GOTO 202 | |
68 | IF(ITS(IST).GE.115.AND.ITS(IST).LE.122) GOTO 202 | |
69 | IF(ITS(IST).GE.131.AND.ITS(IST).LE.136) GOTO 202 | |
70 | IF(ITS(IST).EQ.109) GO TO 202 | |
71 | IF(ITS(IST).GE.137.AND.ITS(IST).LE.160) GOTO 202 | |
72 | GO TO 300 | |
73 | 202 IR = IR + 1 | |
74 | NREF(IR) = ITS(IST) | |
75 | ITT = ITS(IST) | |
76 | AMF(IR) = AM(ITT) | |
77 | ANF(IR) = ANAME(ITT) | |
78 | ICHF(IR) = ICH(ITT) | |
79 | IBARF(IR) = IBAR(ITT) | |
80 | HEF(IR) = ELS(IST) | |
81 | PXF(IR) = CXS(IST)*PLS(IST) | |
82 | PYF(IR) = CYS(IST)*PLS(IST) | |
83 | PZF(IR) = CZS(IST)*PLS(IST) | |
84 | IST = IST - 1 | |
85 | IF(IST .GE. 1) GO TO 200 | |
86 | GO TO 500 | |
87 | 300 IT = ITS(IST) | |
88 | GAM = ELS(IST)/AM(IT) | |
89 | BGAM = PLS(IST)/AM(IT) | |
90 | ECO = AM(IT) | |
91 | KZ1 = K1(IT) | |
92 | 310 CONTINUE | |
93 | CALL GRNDM(RNDM,1) | |
94 | VV = RNDM(1) - 1.D-17 | |
95 | IIK = KZ1 - 1 | |
96 | 301 IIK = IIK + 1 | |
97 | IF (VV.GT.WT(IIK)) GO TO 301 | |
98 | C IIK IS THE DECAY CHANNEL | |
99 | IT1 = NZK(IIK,1) | |
100 | IT2 = NZK(IIK,2) | |
101 | IF (IT2-1 .LT. 0) GO TO 110 | |
102 | IT3 = NZK(IIK,3) | |
103 | C IT1,IT2, IT3 ARE THE PRODUCED PARTICLES FROM IT | |
104 | IF(IT3 .EQ. 0) GO TO 400 | |
105 | CALL THREPD(ECO,ECM1,ECM2,ECM3,PCM1,PCM2,PCM3,COD1,COF1,SIF1,COD2, | |
106 | & COF2,SIF2,COD3,COF3,SIF3,AM(IT1),AM(IT2),AM(IT3)) | |
107 | GO TO 411 | |
108 | 400 CALL TWOPAD(ECO,ECM1,ECM2,PCM1,PCM2,COD1,COF1,SIF1,COD2,COF2,SIF2, | |
109 | & AM(IT1),AM(IT2)) | |
110 | 411 CONTINUE | |
111 | 110 CONTINUE | |
112 | ITS(IST) = IT1 | |
113 | IF (IT2-1 .LT. 0) GO TO 305 | |
114 | ITS(IST+1) = IT2 | |
115 | ITS(IST+2) = IT3 | |
116 | RX = CXS(IST) | |
117 | RY = CYS(IST) | |
118 | RZ = CZS(IST) | |
119 | CALL TRAFO(GAM,BGAM,RX,RY,RZ,COD1,COF1,SIF1,PCM1,ECM1, | |
120 | & PLS(IST),CXS(IST),CYS(IST),CZS(IST),ELS(IST)) | |
121 | IST = IST + 1 | |
122 | CALL TRAFO(GAM,BGAM,RX,RY,RZ,COD2,COF2,SIF2,PCM2,ECM2, | |
123 | & PLS(IST),CXS(IST),CYS(IST),CZS(IST),ELS(IST)) | |
124 | IF (IT3 .LE. 0) GO TO 305 | |
125 | IST = IST + 1 | |
126 | CALL TRAFO(GAM,BGAM,RX,RY,RZ,COD3,COF3,SIF3,PCM3,ECM3, | |
127 | & PLS(IST),CXS(IST),CYS(IST),CZS(IST),ELS(IST)) | |
128 | 305 CONTINUE | |
129 | GO TO 200 | |
130 | 500 CONTINUE | |
131 | IDAPU = IDMAX3 | |
132 | IF(IR .GT. IDMAX3) WRITE(ISYS,928)IDAPU | |
133 | 928 FORMAT(' NUMBER OF STAB. FINAL PART. IS GREATER THAN',I5) | |
134 | IHAD = IR | |
135 | RETURN | |
136 | END | |
62be6b28 | 137 | #else |
138 | SUBROUTINE DECAY_DUMMY | |
139 | END | |
fe4da5cc | 140 | #endif |