C++ Interface to Tauola
wid_a1_fitKKpi.f
1 real function wid_a1_fitKKpi(qq)
2 implicit none
3 real qq
4C..............................................................
5C. Output: KKpi part ofa1 width as function of qq
6C. but to speed up execution linear interpolation
7C. from numerical table is used. From read in table
8C. linear interpolation (extrapolation) is used.
9C. Input: qq [GeV**2]
10C..............................................................
11
12 integer Nq
13 parameter(nq=1001)
14 integer ik
15 real*8 qmax,qmin,qk_min(nq),w_qmin(nq),del_qq
16 integer kq
17 character path*120
18
19 real*8 aq,bq,qk_max,w_qmax
20
21 INTEGER IFIRST
22 DATA ifirst/0/
23 INTEGER IMODE
24! DATA IMODE /0/
25 COMMON /imode/ imode ! 0 is for calculation of G , 1 is for spectra, 2 is for use of G
26
27 IF (imode.EQ.0) THEN
28 wid_a1_fitkkpi=0
29 ENDIF
30
31C. READING TABLE AND INITIALIZATION
32C. ================================
33
34 IF (ifirst.EQ.0) THEN
35 ifirst = 1
36C Initialization from automatically created routine
37 call inita1tabkkpi(qk_min ,w_qmin )
38 qmax = qk_min(nq)
39 qmin = qk_min(1)
40 del_qq = (qmax-qmin)/float(nq-1)
41 ENDIF
42
43
44C. INTEPOLATION, for extrapolation values at ends are used
45C. =======================================================
46 if(qq.gt.qmin.and.qq.le.qmax) then
47 kq = (qq-qmin)/del_qq
48 kq = kq +1
49
50 qk_max = qk_min(kq+1)
51 w_qmax = w_qmin(kq+1)
52
53 aq = (w_qmax-w_qmin(kq))/(qk_max-qk_min(kq))
54 bq = (w_qmax*qk_min(kq) -w_qmin(kq)*qk_max)
55 $ /(qk_min(kq)-qk_max)
56 wid_a1_fitkkpi = aq*qq+bq
57
58 elseif(qq.ge.qmax) then ! above maximun
59 wid_a1_fitkkpi = w_qmin(nq)
60
61 else ! below minimum
62 wid_a1_fitkkpi = w_qmin(1)
63
64 endif
65
66 return
67 end
68
69