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