]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/dectau.F
Bug in V0A fixed (Guillermo)
[u/mrichter/AliRoot.git] / ISAJET / code / dectau.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 LOGICAL FUNCTION DECTAU(IP,NADD,MEIP,IDABS,PREST)
3C
4C Compute matrix elements for polarized tau decay.
5C Polarization determined by tau parent.
6C Auxiliary routine for DECAY.
7C
8#if defined(CERNLIB_IMPNONE)
9 IMPLICIT NONE
10#endif
11#include "isajet/itapes.inc"
12#include "isajet/wcon.inc"
13#include "isajet/partcl.inc"
14#include "isajet/dkytab.inc"
15#include "isajet/const.inc"
16#include "isajet/pjets.inc"
17#include "isajet/keys.inc"
18#include "isajet/xmssm.inc"
19#include "isajet/sspols.inc"
20#include "isajet/primar.inc"
21C
22 REAL PREST(4,6),WT,TAUHEL,S12,S12MAX,PIP,CTHNU,PSUM(4),AMV2,WT1
23 REAL DOT,DOT3,RANF,Z
24 INTEGER IP,NADD,IDABS(5),IPAR,IDPAR,JET,INU,I,K,I1,I2,IDSIB
25 INTEGER IDLV1,IFL1,IFL2,IFL3,JSPIN,INDEX,IDIP
26 INTEGER MEIP,IPX,IP1,IP2
27C
28 DOT(I1,I2)=PREST(4,I1)*PREST(4,I2)-PREST(1,I1)*PREST(1,I2)
29 $-PREST(2,I1)*PREST(2,I2)-PREST(3,I1)*PREST(3,I2)
30 DOT3(I1,I2)=PREST(1,I1)*PREST(1,I2)+PREST(2,I1)*PREST(2,I2)
31 $+PREST(3,I1)*PREST(3,I2)
32C
33 IDIP=IDENT(IP)
34 DECTAU=.TRUE.
35 IF(IABS(IDIP).NE.16) GO TO 999
36C
37C Use PREST(K,6) for spin vector
38C
39 PIP=SQRT(PPTCL(1,IP)**2+PPTCL(2,IP)**2+PPTCL(3,IP)**2)
40 DO 100 K=1,3
41 PREST(K,6)=PPTCL(K,IP)/PIP
42100 CONTINUE
43 PREST(4,6)=0.
44C
45C Take helicity TAUHEL=0 unless TAU parent is TP, W+-, H+-,
46C or some SUSY particles.
47C Take account of 1-particle decays!
48C
49
50 IPX=IP
51 TAUHEL=0.
52 IPAR=0
53 IDPAR=0
54110 IF(IORIG(IPX).GT.0) THEN
55 IPAR=MOD(IORIG(IPX),IPACK)
56 IDPAR=IDENT(IPAR)
57 IF(IDPAR.EQ.IDIP) THEN
58 IP1=IDCAY(IPAR)/IPACK
59 IP2=MOD(IDCAY(IPAR),IPACK)
60 IF(IP1.EQ.IP2) THEN
61 IPX=IPAR
62 GO TO 110
63 ENDIF
64 ENDIF
65 IDPAR=IABS(IDPAR)
66 IDSIB=0
67C W/top parent
68 IF(IDPAR.GT.100.AND.MOD(IDPAR/10,10).GE.6) THEN
69 TAUHEL=-1.
70 ELSEIF(IDPAR.EQ.80) THEN
71 TAUHEL=-1.
72C Charged Higgs parent
73 ELSEIF(IDPAR.EQ.86) THEN
74 TAUHEL=+1.
75C SUSY parent - polarization also depends on sibling IDSIB
76 ELSEIF(GOMSSM.AND.IDPAR.GT.20.AND.IDPAR.LT.80) THEN
77 I1=IDCAY(IPAR)/IPACK
78 I2=MOD(IDCAY(IPAR),IPACK)
79 DO 120 I=I1,I2
80 IF(IABS(IDENT(I)).GT.20.AND.IABS(IDENT(I)).LT.80)
81 $ IDSIB=IABS(IDENT(I))
82120 CONTINUE
83 IF (IDPAR.EQ.35) THEN
84 TAUHEL=-1.
85 ELSEIF (IDPAR.EQ.36) THEN
86 IF (IDSIB.EQ.30) TAUHEL=PTAU1(1)
87 IF (IDSIB.EQ.40) TAUHEL=PTAU1(2)
88 IF (IDSIB.EQ.50) TAUHEL=PTAU1(3)
89 IF (IDSIB.EQ.60) TAUHEL=PTAU1(4)
90 ELSEIF (IDPAR.EQ.56) THEN
91 IF (IDSIB.EQ.30) TAUHEL=PTAU2(1)
92 IF (IDSIB.EQ.40) TAUHEL=PTAU2(2)
93 IF (IDSIB.EQ.50) TAUHEL=PTAU2(3)
94 IF (IDSIB.EQ.60) TAUHEL=PTAU2(4)
95 ELSEIF (IDPAR.EQ.39) THEN
96 IF(IDSIB.EQ.35) TAUHEL=-1.
97 IF(IDSIB.EQ.30) TAUHEL=PTAUWZ
98 ELSEIF (IDPAR.EQ.49.AND.IDSIB.EQ.35) THEN
99 TAUHEL=-1.
100 ELSEIF (IDPAR.EQ.40) THEN
101 IF(IDSIB.EQ.36) TAUHEL=PTAUZ2(1)
102 IF(IDSIB.EQ.56) TAUHEL=PTAUZ2(2)
103 IF(IDSIB.EQ.30) TAUHEL=PTAUZZ
104 ELSEIF (IDPAR.EQ.50) THEN
105 IF(IDSIB.EQ.36) TAUHEL=PTAUZ3(1)
106 IF(IDSIB.EQ.56) TAUHEL=PTAUZ3(2)
107 ELSEIF (IDPAR.EQ.60) THEN
108 IF(IDSIB.EQ.36) TAUHEL=PTAUZ4(1)
109 IF(IDSIB.EQ.56) TAUHEL=PTAUZ4(2)
110 ENDIF
111 END IF
112 ELSE
113 IF(KEYS(3)) THEN
114 IF(IABS(IDENTW).EQ.80) TAUHEL=-1.
115 ELSE
116 JET=IABS(IORIG(IP))/IPACK
117 IF(JET.GT.0.AND.JET.LE.NJET) THEN
118 IF(IDJETS(JET).EQ.80) TAUHEL=-1.
119 ENDIF
120 ENDIF
121 ENDIF
122C
123C Leptonic decays. DECTAU is always called for TAU- decay
124C products, so selection is independent of IDENT(IP).
125C
126 IF(MEIP.EQ.5) THEN
127 IF(IDENT(NPTCL+1).LT.0) THEN
128 WT=PPTCL(5,IP)*(PREST(4,1)-TAUHEL*DOT(1,6))*DOT(2,3)
129 ELSEIF(IDENT(NPTCL+2).LT.0) THEN
130 WT=PPTCL(5,IP)*(PREST(4,2)-TAUHEL*DOT(2,6))*DOT(1,3)
131 ELSE
132 WT=PPTCL(5,IP)*(PREST(4,3)-TAUHEL*DOT(3,6))*DOT(1,2)
133 ENDIF
134 IF(WT.LT.RANF()*PPTCL(5,IP)**4/8.) THEN
135 DECTAU=.FALSE.
136 ELSE
137 DECTAU=.TRUE.
138 ENDIF
139 RETURN
140C
141C Decay to PI + NUT, K + NUT
142C
143 ELSEIF(MEIP.EQ.6) THEN
144 INU=1
145 IF(IDABS(2).EQ.15) INU=2
146 CTHNU=DOT3(INU,6)/SQRT(DOT3(INU,INU))
147 WT=1.-TAUHEL*CTHNU
148 IF(WT.LT.RANF()*2.) THEN
149 DECTAU=.FALSE.
150 ELSE
151 DECTAU=.TRUE.
152 ENDIF
153 RETURN
154C
155C Decay to RHO + NUT, A1 + NUT, K* + NUT
156C
157 ELSEIF(MEIP.EQ.7) THEN
158 DO 210 I=1,NADD
159210 IF(IDABS(I).EQ.15) INU=I
160 DO 220 K=1,4
161 PSUM(K)=0.
162 DO 221 I=1,NADD
163 IF(I.EQ.INU) GO TO 221
164 PSUM(K)=PSUM(K)+PREST(K,I)
165221 CONTINUE
166220 CONTINUE
167 AMV2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
168 WT1=2.*AMV2/(2.*AMV2+PPTCL(5,IP)**2)
169 CTHNU=DOT3(INU,6)/SQRT(DOT3(INU,INU))
170 WT=WT1*(1.+TAUHEL*CTHNU)+(1.-WT1)*(1-TAUHEL*CTHNU)
171 IF(WT.LT.RANF()*2.) THEN
172 DECTAU=.FALSE.
173 ELSE
174 DECTAU=.TRUE.
175 ENDIF
176 RETURN
177C
178C Ignore matrix element for all other decays
179C
180 ELSE
181 DECTAU=.TRUE.
182 RETURN
183 ENDIF
184C
185C Error
186C
187999 CALL PRTEVT(0)
188 WRITE(ITLIS,99999) IP
18999999 FORMAT(//5X,'ERROR IN DECTAU FOR PARTICLE',I6)
190 END