]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/iswdky.F
changes for proper protection against failed retrieval of CDB Reco object (moved...
[u/mrichter/AliRoot.git] / ISAJET / code / iswdky.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE ISWDKY
3C----------------------------------------------------------------------
4C-
5C- Purpose and Methods :
6C- decay W's and Z's as done in ISAJET
7C-
8C- Created 6-MAY-1991 Serban D. Protopopescu
9C-
10C----------------------------------------------------------------------
11#if defined(CERNLIB_IMPNONE)
12 IMPLICIT NONE
13#endif
14#include "isajet/const.inc"
15#include "isajet/frame.inc"
16#include "isajet/jetpar.inc"
17#include "isajet/jetset.inc"
18#include "isajet/jwork.inc"
19#include "isajet/pjets.inc"
20#include "isajet/partcl.inc"
21#include "isajet/primar.inc"
22#include "isajet/wcon.inc"
23 REAL X(2)
24 EQUIVALENCE (X(1),X1)
25 REAL PREST(5),PL(5),EL(3),EML(3),EMSQL(3)
26 REAL WTFAC(3)
27 REAL BRANCH(29)
28 INTEGER LISTJ(29),LISTW(4)
29 REAL RANF,SUM,PTDEN,QDEN,ETA,
30 $S12,SUMBR,BRMODE,AMASS,BRINV,TRY,PL12,
31 $COSTHL,THL,PHL,PTL,SGN,BP,PLPL,PLMN,AMINI,AMFIN,PINI,PFIN,
32 $ QPL,QMN,AM1SQ,AM2SQ,ROOT,P1PL,P1MN,P2PL,P2MN
33 INTEGER NADD,K,IQ1,IQ2,IFL1,IFL2,IQ,IFL,I
34 REAL EY
35 REAL QWPL,QWMN
36C
37 DATA LISTJ/
38 $9,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,
39 $11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
40 $10,80,-80,90/
41 DATA LISTW/10,80,-80,90/
42C----------------------------------------------------------------------
43C
44C Entry
45C
46 NPTCL=0
47C
48C Kinematics. Note that YW is the true rapidity and QW is
49C the true 3-momentum. See DRLLYN.
50C
51 QMW=QWJET(5)
52 QTW=SQRT(QWJET(1)**2+QWJET(2)**2)
53 QW=SQRT(QWJET(1)**2+QWJET(2)**2+QWJET(3)**2)
54 IF(QTW.NE.0) THEN
55 PHIW=ATAN2(QWJET(2),QWJET(1))
56 IF(PHIW.LT.0) PHIW=PHIW+2*PI
57 ELSE
58 PHIW=0
59 ENDIF
60 QWPL=QWJET(4)+QWJET(3)
61 QWMN=QWJET(4)-QWJET(3)
62 IF(QWPL.GT.0..AND.QWMN.GT.0.) THEN
63 YW=0.5*ALOG(QWPL/QWMN)
64 ELSE
65 YW=999.*SIGN(1.,QWJET(3))
66 ENDIF
67 IF(QW.NE.0.) THEN
68 THW=ACOS(QWJET(3)/QW)
69 ELSE
70 THW=0.
71 ENDIF
72C
73C Select W decay mode
74C QMW dependence neglected in branching ratios
75C BRANCH is cum. br. with heavy modes subtracted.
76C
77 S12=QMW**2
78 BRANCH(1)=0.
79 SUMBR=0.
80 DO 105 IQ1=2,25
81 IQ2=MATCH(IQ1,JWTYP)
82 IF(IQ2.EQ.0) THEN
83 BRMODE=0.
84 ELSE
85 BRMODE=WCBR(IQ1,JWTYP)-WCBR(IQ1-1,JWTYP)
86 IFL1=LISTJ(IQ1)
87 IFL2=LISTJ(IQ2)
88 IF(S12.LE.(AMASS(IFL1)+AMASS(IFL2))**2) BRMODE=0.
89 ENDIF
90 BRANCH(IQ1)=BRANCH(IQ1-1)+BRMODE
91 SUMBR=SUMBR+BRMODE
92105 CONTINUE
93 BRINV=1./SUMBR
94C
95 TRY=RANF()
96 DO 110 IQ=1,25
97 IF(TRY.LT.BRANCH(IQ)*BRINV.AND.MATCH(IQ,JWTYP).NE.0) THEN
98 JETTYP(1)=IQ
99 JETTYP(2)=MATCH(IQ,JWTYP)
100 GO TO 120
101 ENDIF
102110 CONTINUE
103C
104120 IFL1=LISTJ(JETTYP(1))
105 IFL2=LISTJ(JETTYP(2))
106C
107C Select masses of decay products.
108C
109 EML(1)=AMASS(IFL1)
110 EML(2)=AMASS(IFL2)
111C
112C Generate W decay in its rest frame
113C First set up momenta of decay products:
114C
115 EMSQL(1)=EML(1)**2
116 EMSQL(2)=EML(2)**2
117 EL(1)=(S12+EMSQL(1)-EMSQL(2))/(2.*QMW)
118 EL(2)=(S12+EMSQL(2)-EMSQL(1))/(2.*QMW)
119 PL12=SQRT((S12-(EML(1)+EML(2))**2)*(S12-(EML(1)-EML(2))**2))
120 $/(2.*QMW)
121C W momentum
122 DO 140 K=1,5
123140 PREST(K)=QWJET(K)
124C Generate next W decay
12520 CONTINUE
126 COSTHL=2.*RANF()-1.
127 THL=ACOS(COSTHL)
128 PHL=2.*PI*RANF()
129 PTL=PL12*SIN(THL)
130C
131 DO 300 I=1,2
132 SGN=3-2*I
133 PL(1)=SGN*PTL*COS(PHL)
134 PL(2)=SGN*PTL*SIN(PHL)
135 PL(3)=SGN*PL12*COSTHL
136 PL(4)=EL(I)
137 PL(5)=EML(I)
138C Boost with W momentum
139 BP=0.
140 DO 310 K=1,3
141310 BP=BP+PL(K)*PREST(K)
142 BP=BP/PREST(5)
143 DO 320 K=1,3
144320 PL(K)=PL(K)+PREST(K)*PL(4)/PREST(5)
145 $ +PREST(K)*BP/(PREST(4)+PREST(5))
146 PL(4)=PL(4)*PREST(4)/PREST(5)+BP
147C Fill common blocks
148 PT(I)=SQRT(PL(1)**2+PL(2)**2)
149 P(I)=SQRT(PT(I)**2+PL(3)**2)
150 IF(PT(I).GT.0.) THEN
151 PHI(I)=ATAN2(PL(2),PL(1))
152 ELSE
153 PHI(I)=(I-1)*PI
154 ENDIF
155 IF(PHI(I).LT.0.) PHI(I)=PHI(I)+2.*PI
156 CTH(I)=PL(3)/P(I)
157 STH(I)=PT(I)/P(I)
158 TH(I)=ACOS(CTH(I))
159 XJ(I)=PL(3)/HALFE
160 IF(CTH(I).GT.0.) THEN
161 PLPL=PL(4)+PL(3)
162 PLMN=(PT(I)**2+EMSQL(I))/PLPL
163 ELSE
164 PLMN=PL(4)-PL(3)
165 PLPL=(PT(I)**2+EMSQL(I))/PLMN
166 ENDIF
167 YJ(I)=.5*ALOG(PLPL/PLMN)
168300 CONTINUE
169C
170C Set PJETS
171C
172 DO 501 I=1,2
173 PJETS(3,I)=P(I)*CTH(I)
174 PJETS(1,I)=PT(I)*COS(PHI(I))
175 PJETS(2,I)=PT(I)*SIN(PHI(I))
176 PJETS(4,I)=SQRT(P(I)**2+EMSQL(I))
177 PJETS(5,I)=SQRT(EMSQL(I))
178 IDJETS(I)=LISTJ(JETTYP(I))
179501 CONTINUE
180 999 RETURN
181 END