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 
43 C WARNING: Isospin symmetry enforced, cleo or babar were not enforcing it.
44 C Simplification to be used for precision tau decay simulations.
45  bra1=0.0
46  brks=0.0
47 C 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 
54 C Youd better be using korb.dec, NOT decay.dec!!!!
55 C 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 
79 C 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 
103 C Now store mixing parameters for 2pi and 4pi FFs
104 C 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 
143 C amplitudes for curr_cleo.F:
144 C 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
150 C for pi-3pi0: 4pi phase space; rho-pi0pi0
151  parm(3,36) = 0.
152  parm(3,37) = 1.0
153 
154 C Modify amplitudes for 4pi form-factor in formf/curr, from korb.dec:
155 CCC 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 
170 C The 4pi models are the most complicated in TAUOLA.
171 C If the user has not modified any parameters of the 4pi model,
172 C 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 
191 C 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 
197 C 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 
203 C 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 
209 C 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 
214 C Set the BRs for (A1+ -> rho+ pi0) and (K*+ -> K0 pi+)
215 C 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 
223 C 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
230 C 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)
235 C C-G coefficients for K1- -> CG1 * |K- pi0> + CG2 * |K0bar pi->
236  cg1 = -sqrt(2./3.)
237  cg2 = sqrt(1./3.)
238 C 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 
255 CAJW 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
258 C 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
272 C 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