C++InterfacetoTauola
wid_a1_fitKKpi.f
1  real function wid_a1_fitkkpi(qq)
2  implicit none
3  real qq
4 C..............................................................
5 C. Output: KKpi part ofa1 width as function of qq
6 C. but to speed up execution linear interpolation
7 C. from numerical table is used. From read in table
8 C. linear interpolation (extrapolation) is used.
9 C. Input: qq [GeV**2]
10 C..............................................................
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 
31 C. READING TABLE AND INITIALIZATION
32 C. ================================
33 
34  IF (ifirst.EQ.0) THEN
35  ifirst = 1
36 C 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 
44 C. INTEPOLATION, for extrapolation values at ends are used
45 C. =======================================================
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