C++ Interface to Tauola
wid_a1_fit.f
1 SUBROUTINE ifgfact(IKEY,ITYPE,IINIT)
2C stores and manages options for wid_a1_fit
3C ITYPE=0,1,2 means zero value, from full table, from GFACT plus table for KKpi
4C IINIT is for GFACT, whether it has to reinitialize itself or just be used
5C IKEY 0,1,2 means initialization use by GFUNCT (reini) other use
6C IKEY -1 mieans initialization with recalculation og GFUNCT constats
7
8 DATA itype0,iinit0 /1,0/
9 SAVE itype0,iinit0
10
11 IF (ikey.EQ.-1) THEN
12 itype0=itype
13 iinit0=iinit
14 ELSEIF(ikey.EQ.0) THEN
15 itype0=itype
16 ELSEIF(ikey.EQ.1) THEN
17 iinit=iinit0
18 iinit0=1
19 ELSEIF(ikey.EQ.2) THEN
20 itype= itype0
21 ENDIF
22 END
23
24 real function wid_a1_fit(qq)
25 implicit none
26 real qq
27C..............................................................
28C. Output: a1 width as function of qq (formula (29) of ref [1])
29C. but to speed up execution linear interpolation
30C. from numerical table is used. From read in table
31C. linear interpolation (extrapolation) is used.
32C. Input: qq [GeV**2]
33C. table wida1_qq_tot_table.txt prepared in
34C. ./a1-tabler directory
35C. References:[1] arXiv:0911.4436 (hep-ph) D.Gomez Dumm et al.(tau ->3pi nu)
36C. Called : files f3pi_rcht.f fkkpi.f fkk0pi0.f
37C ./demo-standalone/tautestroman.f
38C..............................................................
39
40 integer Nq
41 parameter(nq=1001)
42 integer ik
43 common /a1_width/ qmax,qmin,qk_min, w_qmin, del_qq
44 real*8 qmax,qmin,qk_min(nq),w_qmin(nq),del_qq
45 integer kq
46 character path*120
47
48 real*8 aq,bq,qk_max,w_qmax
49 real*8 xqq,gfact
50 real wid_a1_fitKKpi
51
52
53 INTEGER IFIRST,ITYPE
54 DATA ifirst,itype /0,1/
55 INTEGER IMODE,IINIT
56! DATA IMODE /0/
57
58
59C. READING TABLE AND INITIALIZATION
60C. ================================
61
62 IF (ifirst.EQ.0) THEN
63 ifirst = 1
64C Initialization from automatically created routine
65 call inita1tab(qk_min ,w_qmin )
66 qmax = qk_min(nq)
67 qmin = qk_min(1)
68 del_qq = (qmax-qmin)/float(nq-1)
69 ENDIF
70
71 CALL ifgfact(2,itype,iinit)
72C ALTERNATIVE CALCULATIONS FOR SPECIAL PURPOSES
73C. ============================================
74 IF (itype.EQ.0) THEN
75 wid_a1_fit=0
76 RETURN
77 ELSEIF (itype.EQ.2) THEN
78 xqq=qq
79 wid_a1_fit=wid_a1_fitkkpi(qq)+gfact(xqq)
80! write(*,*) 'uwaga', wid_a1_fit, wid_a1_fitKKpi(qq)
81 RETURN
82 ENDIF
83
84
85C. INTEPOLATION, for extrapolation values at ends are used
86C. =======================================================
87 if(qq.gt.qmin.and.qq.le.qmax) then
88 kq = (qq-qmin)/del_qq
89 kq = kq +1
90
91 qk_max = qk_min(kq+1)
92 w_qmax = w_qmin(kq+1)
93
94 aq = (w_qmax-w_qmin(kq))/(qk_max-qk_min(kq))
95 bq = (w_qmax*qk_min(kq) -w_qmin(kq)*qk_max)
96 $ /(qk_min(kq)-qk_max)
97 wid_a1_fit = aq*qq+bq
98
99 elseif(qq.ge.qmax) then ! above maximun
100 wid_a1_fit = w_qmin(nq)
101
102 else ! below minimum
103 wid_a1_fit = w_qmin(1)
104
105 endif
106
107 return
108 end
109
110