C++ Interface to Tauola
tauola-F/pkorb.F
1 REAL FUNCTION PKORB(IF1,IF2)
2**********************************************************************
3*
4* This function returns a real value
5* needed in the CLEO version of KORALB/TAUOLA
6* corresponding to a mass, width, mixing amplitude, or branching fraction
7* depending on whether IF1 = 1, 2, 3, 4 respectively.
8* The idea is to make minimal mods to the 3-rd party KORALB/TAUOLA code,
9* so this function supplies all the CLEO-specific parameters.
10*
11* Alan Weinstein, ajw, 11/97
12**********************************************************************
13
14* Arguments:
15 INTEGER IF1 ! input, flag for type of data required
16 INTEGER IF2 ! input, flag for type of data required
17
18* MC info
19*#include "seq/clinc/qqpars.inc"
20*#include "seq/clinc/qqprop.inc"
21*#include "qqlib/seq/qqbrat.inc"
22
23 INTEGER JAK1,JAK2,JAKP,JAKM,KTOM
24 COMMON / jaki / jak1,jak2,jakp,jakm,ktom
25 real*4 rrr(1)
26 REAL PARM(4,100)
27 integer imixpp(300)
28 INTEGER INIT,I,J
29 REAL C1270,C1402,A1270_KSPI,A1270_KRHO,A1402_KSPI,A1402_KRHO
30 REAL CG1,CG2,R,BRA1,BRKS
31 SAVE init,parm
32 DATA init/0/
33
34**********************************************************************
35* Initialize return variable:
36 pkorb = 0.
37
38**********************************************************************
39* Initialize:
40 IF (init.EQ.0) THEN
41 init = 1
42
43C WARNING: Isospin symmetry enforced, cleo or babar were not enforcing it.
44C Simplification to be used for precision tau decay simulations.
45 bra1=0.0
46 brks=0.0
47
48C CALL VZERO(PARM,400)
49 DO i=1,4
50 DO j=1,100
51 parm(i,j) = 0
52 END DO
53 END DO
54
55C Youd better be using korb.dec, NOT decay.dec!!!!
56C masses (needed in dist/inimas, formf/form*, etc)
57 parm(1, 1) = 1.777000 ! TAU
58 parm(1, 2) = 0. ! NUTA
59 parm(1, 3) = 0.000511 ! EL
60 parm(1, 4) = 0. ! NUEL
61 parm(1, 5) = 0.105658 ! MU
62 parm(1, 6) = 0. ! NUMU
63 parm(1, 7) = 0.134976 ! PIZ
64 parm(1, 8) = 0.139570 ! PI+
65 parm(1, 9) = 0.769900 ! RHO+
66 parm(1,10) = 1.275000 ! A1+
67 parm(1,11) = 0.493677 ! K+
68 parm(1,12) = 0.497670 ! KZ
69 parm(1,13) = 0.891590 ! K*+
70 parm(1,14) = 0.781940 ! OMEG
71 parm(1,15) = 1.370000 ! RHOP+
72 parm(1,16) = 1.700000 ! K*P+
73 parm(1,17) = 1.461000 ! A1P+
74 parm(1,18) = 1.300000 ! PIP+
75 parm(1,19) = 1.270000 ! K1A+
76 parm(1,20) = 1.402000 ! K1B+
77 parm(1,21) = 1.465000 ! RHOPP+
78 parm(1,22) = 1.700000 ! RHOPPP+
79
80C widths (needed in dist/inimas, formf/form*, etc)
81 parm(2, 1) = 0. ! TAU
82 parm(2, 2) = 0. ! NUTA
83 parm(2, 3) = 0. ! EL
84 parm(2, 4) = 0. ! NUEL
85 parm(2, 5) = 0. ! MU
86 parm(2, 6) = 0. ! NUMU
87 parm(2, 7) = 0. ! PIZ
88 parm(2, 8) = 0. ! PI+
89 parm(2, 9) = 0.1512 ! RHO+
90 parm(2,10) = 0.700 ! A1+
91 parm(2,11) = 0. ! K+
92 parm(2,12) = 0. ! KZ
93 parm(2,13) = 0.0498 ! K*+
94 parm(2,14) = 0.00843 ! OMEG
95 parm(2,15) = 0.510 ! RHOP+
96 parm(2,16) = 0.235 ! K*P+
97 parm(2,17) = 0.250 ! A1P+
98 parm(2,18) = 0.400 ! PIP+
99 parm(2,19) = 0.090 ! K1A+
100 parm(2,20) = 0.174 ! K1B+
101 parm(2,21) = 0.310 ! RHOPP+
102 parm(2,22) = 0.235 ! RHOPPP+
103
104C Now store mixing parameters for 2pi and 4pi FFs
105C needed in tauola/fpik, tauola/bwigs, formf/form* , formf/curr :
106
107 parm(3,15) = -0.145
108
109 imixpp(205)=1
110 imixpp(207)=1
111 imixpp(209)=1
112 imixpp(211)=1
113 imixpp(201)=1
114 imixpp(203)=1
115 imixpp(213)=1
116 imixpp(215)=1
117
118
119 IF (imixpp(205).NE.0) parm(3,15) = -0.110
120 IF (imixpp(207).NE.0) parm(3,16) = -0.038
121 IF (imixpp(209).NE.0) parm(3,17) = 0.00
122 IF (imixpp(211).NE.0) parm(3,18) = 0.00
123 IF (imixpp(201).NE.0) parm(3,19) = 1.0
124 IF (imixpp(203).NE.0) parm(3,20) = 0.8
125 IF (imixpp(213).NE.0) parm(3,21) = -0.110
126 IF (imixpp(215).NE.0) parm(3,22) = -0.110
127
128 print *,' KORB: rho/rhop -> pi-pi0 mixing:'
129 print *,' KORB: rho =',parm(1,9) ,parm(2,9)
130 print *,' KORB: rhop =',parm(1,15),parm(2,15),parm(3,15)
131 print *,' KORB: K*/K*prime -> Kpi mixing:'
132 print *,' KORB: kstp =',parm(1,16),parm(2,16),parm(3,16)
133 print *,' KORB: a1/a1prime -> 3pi, KKpi mixing:'
134 print *,' KORB: a1 =',parm(1,10),parm(2,10)
135 print *,' KORB: a1prim=',parm(1,17),parm(2,17),parm(3,17)
136 print *,' KORB: K1A/K1B -> Kpipi mixing:'
137 print *,' KORB: K1A =',parm(1,19),parm(2,19),parm(3,19)
138 print *,' KORB: K1B =',parm(1,20),parm(2,20),parm(3,20)
139 print *,' KORB: rho/rhop/rhopp -> 4pi mixing:'
140 print *,' KORB: rho =',parm(1,9) ,parm(2,9)
141 print *,' KORB: rhopp =',parm(1,21),parm(2,21),parm(3,21)
142 print *,' KORB: rhoppp=',parm(1,22),parm(2,22),parm(3,22)
143
144C amplitudes for curr_cleo.F:
145C for (3pi)-pi0: 4pi phase space; rho0pi-pi0; rho-pi+pi-; rho+pi-pi-; pi-omega
146 parm(3,31) = 0.
147 parm(3,32) = 0.1242
148 parm(3,33) = 0.1604
149 parm(3,34) = 0.2711
150 parm(3,35) = 0.4443
151C for pi-3pi0: 4pi phase space; rho-pi0pi0
152 parm(3,36) = 0.
153 parm(3,37) = 1.0
154
155C Modify amplitudes for 4pi form-factor in formf/curr, from korb.dec:
156CCC IF (IPLIST(2,282).EQ.5) THEN
157 iplist=0
158 IF (iplist.EQ.5) THEN
159 parm(3,31) = 0.0000
160 parm(3,32) = 0.1242
161 parm(3,33) = 0.1604
162 parm(3,34) = 0.2711
163 parm(3,35) = 0.4443
164 parm(3,36) = 0.0000
165 parm(3,37) = 1.0000
166 END IF
167
168 print *,' KORB: 3PI-PI0 PARAMS:',(parm(3,i),i=31,35)
169 print *,' KORB: PI-3PI0 PARAMS:',(parm(3,i),i=36,37)
170
171C The 4pi models are the most complicated in TAUOLA.
172C If the user has not modified any parameters of the 4pi model,
173C we can use the WTMAX determined with many trials.
174 IF (abs(parm(3,31)-0.0000).GT.0.0001 .OR.
175 1 abs(parm(3,32)-0.1242).GT.0.0001 .OR.
176 1 abs(parm(3,33)-0.1604).GT.0.0001 .OR.
177 1 abs(parm(3,34)-0.2711).GT.0.0001 .OR.
178 1 abs(parm(3,35)-0.4443).GT.0.0001 ) THEN
179 parm(3,38) = -1.
180 ELSE
181 parm(3,38) = 6.9673671e-14
182 END IF
183
184 IF (abs(parm(3,36)-0.0000).GT.0.0001 .OR.
185 1 abs(parm(3,37)-1.0000).GT.0.0001 ) THEN
186 parm(3,39) = -1.
187 ELSE
188 parm(3,39) = 3.5374880e-13
189 END IF
190
191
192C phases for curr_cleo.F:
193 parm(3,42) = -0.40
194 parm(3,43) = 0.00
195 parm(3,44) = -0.20+3.1416
196 parm(3,45) = -1.50
197
198C rho' contributions to rho' -> pi-omega:
199 parm(3,51) = -0.10
200 parm(3,52) = 1.00
201 parm(3,53) = -0.10
202 parm(3,54) = -0.04
203
204C rho' contribtions to rho' -> rhopipi:
205 parm(3,55) = 1.00
206 parm(3,56) = 0.14
207 parm(3,57) = -0.05
208 parm(3,58) = -0.05
209
210C rho contributions to rhopipi, rho -> 2pi:
211 parm(3,59) = 1.000
212 parm(3,60) = -0.145
213 parm(3,61) = 0.000
214
215C Set the BRs for (A1+ -> rho+ pi0) and (K*+ -> K0 pi+)
216C needed in dist/taurdf:
217 parm(4,1) = 0.4920 ! BRA1+
218 parm(4,2) = 0.4920 ! BRA1-
219 parm(4,3) = 0.6660 ! BRKS+
220 parm(4,4) = 0.6660 ! BRKS-
221 parm(4,5) = 0.5 ! BRK0
222 parm(4,6) = 0.5 ! BRK0B
223
224C amplitude coefficients for tau -> K1(1270) / K1(1402)
225 c1270 = parm(3,19)
226 c1402 = parm(3,20)
227 IF (c1270.EQ.0.AND.c1402.EQ.0.) THEN
228 c1270 = 1.
229 c1402 = 0.6
230 END IF
231C From PDG96, square roots of branching fractions:
232 a1270_kspi = sqrt(0.16)
233 a1270_krho = sqrt(0.42)
234 a1402_kspi = sqrt(0.94)
235 a1402_krho = sqrt(0.03)
236C C-G coefficients for K1- -> CG1 * |K- pi0> + CG2 * |K0bar pi->
237 cg1 = -sqrt(2./3.)
238 cg2 = sqrt(1./3.)
239C and the resulting amplitudes (times normalized FF):
240 parm(3,81) = c1270*a1270_kspi*cg1 ! K1270 -> K*0B pi-
241 parm(3,82) = c1402*a1402_kspi*cg1 ! K1402 -> K*0B pi-
242 parm(3,83) = c1270*a1270_krho*cg1 ! K1270 -> K0B rho-
243 parm(3,84) = c1402*a1402_krho*cg1 ! K1402 -> K0B rho-
244 parm(3,85) = c1270*a1270_kspi*cg2 ! K1270 -> K*- pi0
245 parm(3,86) = c1402*a1402_kspi*cg2 ! K1402 -> K*- pi0
246 parm(3,87) = c1270*a1270_krho*cg2 ! K1270 -> K- rho0
247 parm(3,88) = c1402*a1402_krho*cg2 ! K1402 -> K- rho0
248
249 END IF
250**********************************************************************
251
252 r = 0.
253 IF (if1.GE.1 .AND. if1.LE.4 .AND. if2.GE.1 .AND. if2.LE.100) THEN
254 r = parm(if1,if2)
255
256CAJW 4/4/94 Better to decide on A1 br now, avoid DADMAA/DPHSAA problem.
257 IF (if1.EQ.4.AND.jak1.EQ.5) THEN
258 IF (if2.EQ.11) THEN
259C Return the BR used in the last call:
260 r = bra1
261 ELSE IF (if2.EQ.1) THEN
262 bra1 = r
263 CALL ranmar(rrr,1)
264 IF (rrr(1).LT.bra1) THEN
265 r = 1. ! 3pi
266 ELSE
267 r = 0. ! pi-2pi0
268 END IF
269 bra1 = r
270 END IF
271 ELSEIF (if1.EQ.4.AND.jak1.EQ.7) THEN
272 IF (if2.EQ.13) THEN
273C Return the BR used in the last call:
274 r = brks
275 ELSE IF (if2.EQ.3) THEN
276 brks = r
277 CALL ranmar(rrr,1)
278 IF (rrr(1).LT.brks) THEN
279 r = 1. ! K0 pi-
280 ELSE
281 r = 0. ! K- pi0
282 END IF
283 brks = r
284 END IF
285 END IF
286
287 END IF
288
289 pkorb = r
290 RETURN
291 END