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 
43 C 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 
50 C Youd better be using korb.dec, NOT decay.dec!!!!
51 C 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 
75 C 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 
99 C Now store mixing parameters for 2pi and 4pi FFs
100 C 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 
139 C amplitudes for curr_cleo.F:
140 C 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
146 C for pi-3pi0: 4pi phase space; rho-pi0pi0
147  parm(3,36) = 0.
148  parm(3,37) = 1.0
149 
150 C Modify amplitudes for 4pi form-factor in formf/curr, from korb.dec:
151 CCC 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 
166 C The 4pi models are the most complicated in TAUOLA.
167 C If the user has not modified any parameters of the 4pi model,
168 C 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 
187 C 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 
193 C 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 
199 C 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 
205 C 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 
210 C Set the BRs for (A1+ -> rho+ pi0) and (K*+ -> K0 pi+)
211 C 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 
219 C 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
226 C 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)
231 C C-G coefficients for K1- -> CG1 * |K- pi0> + CG2 * |K0bar pi->
232  cg1 = -sqrt(2./3.)
233  cg2 = sqrt(1./3.)
234 C 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 
251 CAJW 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
254 C 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
268 C 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