5 * Revision 1.1.1.1 1995/10/24 10:20:01 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.44 by S.Giani
15 *=== threpd ===========================================================*
17 SUBROUTINE THREPD(UMO,ECM1,ECM2,ECM3,PCM1,PCM2,PCM3,COD1,COF1,
18 *SIF1,COD2,COF2,SIF2,COD3,COF3,SIF3,AM1,AM2,AM3)
20 #include "geant321/dblprc.inc"
21 #include "geant321/dimpar.inc"
22 #include "geant321/iounit.inc"
24 *----------------------------------------------------------------------*
25 * Threpd89: slight revision by A. Ferrari *
26 *----------------------------------------------------------------------*
29 C***THREE PARTICLE DECAY IN THE CM - SYSTEM
30 COMMON /FKGAMR/ REDU,AMO,AMM(15 )
31 COMMON/FKDREI/UUMO,AAM1,AAM2,AAM3,S22,UMO2,AM11,AM22,AM33,S2SUP
38 C***S1, S2, S3 ARE THE INVARIANT MASSES OF THE PARTICLES 1, 2, 3
39 C***J. VON NEUMANN - RANDOM - SELECTION OF S2
40 C***CALCULATION OF THE MAXIMUM OF THE S2 - DISTRIBUTION
48 UFAK=1.0000000000001D0
49 IF (GU.GT.GO) UFAK=0.9999999999999D0
64 RHO2=XLAMB(S22,UMO2,AM11)*XLAMB(S22,AM22,AM33)/(S22+EPS)
65 IF(RHO2.LT.RHO1) GO TO 125
67 125 S2SUP=(S22-S21)*.5D0+S21
68 SUPRHO=XLAMB(S2SUP,UMO2,AM11)*XLAMB(S2SUP,AM22,AM33)/(S2SUP+EPS)
71 IF (GU.LT.GO.AND.XO.LT.GU) XO=GU
72 IF (GU.GT.GO.AND.XO.GT.GU) XO=GU
78 F(1)=XLAMB(XO,UMO2,AM11)*XLAMB(XO,AM22,AM33)/(XO+EPS)
79 F(2)=XLAMB(X1,UMO2,AM11)*XLAMB(X1,AM22,AM33)/(X1+EPS)
81 X4=(XX(1)+XX(2))*0.5D0
82 X5=(XX(2)+XX(3))*0.5D0
83 F(4)=XLAMB(X4,UMO2,AM11)*XLAMB(X4,AM22,AM33)/(X4+EPS)
84 F(5)=XLAMB(X5,UMO2,AM11)*XLAMB(X5,AM22,AM33)/(X5+EPS)
90 IF (F (II).GE.F (III)) GO TO 128
103 IF (XX(II).GE.XX(III)) GO TO 129
117 IF (ITH.GT.200) REDU=-9.D0
118 IF (ITH.GT.200) GO TO 400
121 S2=AM23+C*((UMO-AM1)**2-AM23)
124 RHO=XLAMB(S2,UMO2,AM11)*XLAMB(S2,AM22,AM33)/S2
126 C***RANDOM SELECTION OF S3 AND CALCULATION OF S1
129 S1=S1*RHO+AM11+AM22-(S2-UMO2+AM11)*(S2+AM22-AM33)/(2.D0*S2)-
131 S3=UMO2+AM11+AM22+AM33-S1-S2
132 ECM1=(UMO2+AM11-S2)/UMOO
133 ECM2=(UMO2+AM22-S3)/UMOO
134 ECM3=(UMO2+AM33-S1)/UMOO
135 PCM1=SQRT((ECM1+AM1)*(ECM1-AM1))
136 PCM2=SQRT((ECM2+AM2)*(ECM2-AM2))
137 PCM3=SQRT((ECM3+AM3)*(ECM3-AM3))
139 C***TH IS THE ANGLE BETWEEN PARTICLES 1 AND 2
140 C***TH1, TH2 ARE THE ANGLES BETWEEN PARTICLES 1, 2 AND THE DIRECTION OF
141 IF ((PCM1.LE.1.D-3).OR.(PCM2.LE.1.D-3)) GO TO 200
142 COSTH=(ECM1*ECM2+0.5D0*(AM11+AM22-S1))/(PCM1*PCM2)
144 200 CALL GRNDM(RNDM,1)
148 TMPONE = 0.9999999999999999D0
149 IF(ABS(COSTH).GT.0.9999999999999999D0)
150 &COSTH=SIGN(TMPONE,COSTH)
151 IF (REDU.LT.1.D0) RETURN
152 COSTH2=(PCM3*PCM3+PCM2*PCM2-PCM1*PCM1)/(2.D0*PCM2*PCM3)
153 IF(ABS(COSTH2).GT.0.9999999999999999D0)
154 &COSTH2=SIGN(TMPONE,COSTH2)
155 SINTH2=SQRT(1.D0-COSTH2*COSTH2)
156 SINTH1=COSTH2*SQRT(1.D0-COSTH*COSTH)-COSTH*SINTH2
157 COSTH1=COSTH*COSTH2+SINTH2*SQRT(1.D0-COSTH*COSTH)
158 C***RANDOM SELECTION OF THE SPHERICAL COORDINATES OF THE DIRECTION OF PA
159 C***CFE, SFE ARE COS AND SIN OF THE ROTATION ANGLE OF THE SYSTEM 1, 2 AR
160 C***THE DIRECTION OF PARTICLE 3
161 C***CALCULATION OF THE SPHERICAL COORDINATES OF PARTICLES 1, 2
168 CALL SFECFE(SIF3,COF3)
172 SID3=SQRT(1.D0-COD3*COD3)
174 COD1=CX11*COD3+CZ11*SID3
175 IF((1.D0-COD1*COD1).LT.1.D-14)WRITE(ISYS,2)COD1,COF3,SID3,
177 SID1=SQRT(1.D0-COD1*COD1)
178 COF1=(CX11*SID3*COF3-CY11*SIF3-CZ11*COD3*COF3)/SID1
179 SIF1=(CX11*SID3*SIF3+CY11*COF3-CZ11*COD3*SIF3)/SID1
180 COD2=CX22*COD3+CZ22*SID3
181 SID2=SQRT(1.D0-COD2*COD2)
182 COF2=(CX22*SID3*COF3-CY22*SIF3-CZ22*COD3*COF3)/SID2
183 SIF2=(CX22*SID3*SIF3+CY22*COF3-CZ22*COD3*SIF3)/SID2