]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gphys/gdeca3.F
Use TLorentzVector for position and momentum
[u/mrichter/AliRoot.git] / GEANT321 / gphys / gdeca3.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:21:23 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.21 by S.Giani
11*-- Author :
12 SUBROUTINE GDECA3(XM0,XM1,XM2,XM3,PCM)
13C.
14C. ******************************************************************
15C. * *
16C. * This routine simulates three-body decays in center-of-mass. *
17C. * Written by Jurgen Schukraft and Vincent Hedberg for R807. *
18C. * Adapted for Geant3 by Sverker Johansson (Aug-1987). *
19C. * (Quite extensive modifications; comments etc. are not always *
20C. * consistent with the code anymore. ) *
21C. * *
22C. * As it is, the decay is done according to pure phase-space. *
23C. * There is code in the routine to properly treat K decays (V-A)*
24C. * but it is not used. (Requires an additional parameter *
25C. * in the call, to tell which type of decay.) *
26C. * *
27C. * ==>Called by : GDECAY *
28C. * Author S. Johansson ********* *
29C. * *
30C. ******************************************************************
31C.
32***************************************************************
33******* original name : *******************
34******SUBROUTINE D E C 3 B (ID,IP,K1,K2,K3)*******************
35***************************************************************
36C--------------------------------------------------------
37C O B S O L E T E C O M M E N T ! ! !
38C THIS ROUTINE SIMULATES THE THREE-BODY DECAYS OF:
39C--------------------------------------------------------
40C ID = 1 : ETA INTO PI0 + PI0 + PI0 PHASE SPACE
41C ID = 2 : OMEGA INTO PI0 + PI- + PI+ - " -
42C ID = 3 : ETAPR INTO PI0 + PI0 + ETA - " -
43C ID = 4 : K+/- INTO E+/- + PI0 + NU (V-A)
44C ID = 5 : K0L INTO E+/- + PI-/+ + NU - " -
45C ID = 6 : D INTO E + K + NU PHASE SPACE
46C ID = 7 : D INTO E + K* + NU - " -
47** (** or any other decay; input is now masses
48** rather than process ID S.J.
49** But the ID parameter could someday be useful
50** since it controls the non-phase-space code. ***)
51C--------------------------------------------------------
52C THE OUTPUT COMMON BLOCK /LAB/ PLAB(20,J) IS FILLED
53* (** Not a common block anymore. S.J. **)
54C ACCORDING TO THE ORDER OF THE SECONDARY PARTICLES
55C AS THEY APPEARE IN THE COMMENTS ABOVE. FOR EXAMPLE,
56C IN THE CASE OF ID=6 (D-MESON DECAY)
57C J = K1 IN PLAB(20,J) CORRESPONDS TO ELECTRON,
58C J = K2 -- " -- " -- " -- " -- K-MESON,
59C J = K3 -- " -- " -- " -- " -- NEUTRINO
60C--------------------------------------------------------
61 DIMENSION P(20,20)
62 DIMENSION HM(4,7)
63 DIMENSION PCM(4,3)
64 DIMENSION RNDM(3)
65*
66****************************************************
67* Translation from new to old input parameters :
68* ( S.J. )
69****************************************************
70 ID = 1
71 HM(1,ID) = XM1
72 HM(2,ID) = XM2
73 HM(3,ID) = XM3
74 HM(4,ID) = XM0
75 K1 = 1
76 K2 = 2
77 K3 = 3
78 PI2 = 2. * 3.141592654
79***********************
80* Original code :
81C--------------------------------------------------------
82C SIMULATION OF SECONDARY PARTICLE MOMENTA
83C IN THE REST FRAME OF PARENT PARTICLE
84C--------------------------------------------------------
85 T0=HM(4,ID)-HM(1,ID)-HM(2,ID)-HM(3,ID)
86 10 CALL GRNDM(RNDM,2)
87 G1=RNDM(1)
88 G2=RNDM(2)
89 GMI=MIN(G1,G2)
90 GMA=MAX(G1,G2)
91 TE=GMI*T0
92 TM=(1.-GMA)*T0
93 TN=(GMA-GMI)*T0
94 PA1=SQRT(TE**2+2.*HM(1,ID)*TE)
95 PA2=SQRT(TM**2+2.*HM(2,ID)*TM)
96 PA3=SQRT(TN**2+2.*HM(3,ID)*TN)
97C--------------------------------------------------------
98C CHECK OF THE MOMENTUM CONSERVATION
99C--------------------------------------------------------
100 PMMM=MAX(PA1,PA2)
101 PMAX=MAX(PA3,PMMM)
102 SP=PA1+PA2+PA3
103 IF(PMAX.GE.SP-PMAX) GOTO 10
104 P(4,K1)=TE+HM(1,ID)
105 P(4,K2)=TM+HM(2,ID)
106 P(4,K3)=TN+HM(3,ID)
107C--------------------------------------------------------
108C ACCOUNTING FOR MATRIX ELEMENT (FOR ID=4 AND 5)
109* (** Calculates correct (V-A) decay for kaons. **)
110* (** Now inactive. Change ID to activate it. (S.J) **)
111C--------------------------------------------------------
112 IF(ID.NE.4.AND.ID.NE.5) GOTO 20
113 EEM=((HM(4,ID)-HM(2,ID))**2+HM(1,ID)**2-
114 * HM(3,ID)**2)/(2.*(HM(4,ID)-HM(2,ID)))
115 HMMAX=EEM*(HM(4,ID)-HM(2,ID)-EEM)+
116 * 0.5*(EEM**2-HM(1,ID)**2)
117 HMA=P(4,K1)*P(4,K3)+0.25*(PA1**2+PA3**2-PA2**2)
118 CALL GRNDM(RNDM,1)
119 GG=RNDM(1)
120 IF(HMA.LT.GG*HMMAX) GOTO 10
121C--------------------------------------------------------
122C CALCULATIONS OF MOMENTA
123C--------------------------------------------------------
12420 CONTINUE
125 CALL GRNDM(RNDM,3)
126 CTE=2.*RNDM(1)-1.
127 STE=SQRT(ABS(1.-CTE**2))
128 FE =PI2*RNDM(2)
129 CFE=COS(FE)
130 SFE=SIN(FE)
131 P(1,K1)=PA1*STE*CFE
132 P(2,K1)=PA1*STE*SFE
133 P(3,K1)=PA1*CTE
134 CTEN=(PA2**2-PA1**2-PA3**2)/(2.*PA1*PA3)
135 STEN=SQRT(ABS(1.-CTEN**2))
136 FEN =PI2*RNDM(3)
137 CFEN=COS(FEN)
138 SFEN=SIN(FEN)
139 P(1,K3)=PA3*(STEN*CFEN*CTE*CFE-STEN*SFEN*SFE+CTEN*STE*CFE)
140 P(2,K3)=PA3*(STEN*CFEN*CTE*SFE+STEN*SFEN*CFE+CTEN*STE*SFE)
141 P(3,K3)=PA3*(-STEN*CFEN*STE+CTEN*CTE)
142 P(1,K2)=-P(1,K1)-P(1,K3)
143 P(2,K2)=-P(2,K1)-P(2,K3)
144 P(3,K2)=-P(3,K1)-P(3,K3)
145C-------------------------------------------------------
146*** Re-translation from old to new output arrays : ***
147*** (S.J.) ***
148***--------------------------------------------------***
149 DO 37 I=1,4
150 DO 38 J=1,3
151 PCM(I,J) = P(I,J)
152 38 CONTINUE
153 37 CONTINUE
154 END