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