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