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