CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCC Subroutine to calculate the background function 'ftilde' CCCC CCCC and target mass correction for F1 and F2. CCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE SFFIT2(sf,x,q2,bgo,xval,parm2,fn) IMPLICIT NONE EXTERNAL daind DOUBLE PRECISION daind EXTERNAL fun real*8 fun EXTERNAL fun2 real*8 fun2 EXTERNAL fun3 real*8 fun3 EXTERNAL fun4 real*8 fun4 integer i,bgo,sf,kount real*8 x,q2,xval(5),parm2(5),ftilde,f1tilde,fn real*8 f10,f20,fL0,g2,h2,xi,ri,a0,a1,a2,mp,mp2 real*8 tol,est COMMON /xparm/ xval2 real*8 xval2(5) COMMON /xparm3/ xval3 real*8 xval3(5) mp = 0.9382727 mp2 = mp*mp tol = 1.d0-4 h2 = 0.d0 g2 = 0.d0 do i=1,5 !!! Make copy of xval array so it doesn't get changed !!! xval2(i) = xval(i) xval3(i) = parm2(i) enddo CCCC Get background function ftilde as parameterized in function fun(x) CCCC ri = sqrt(1.d0+4.0d0*x*x*mp2/q2) xi = 2.0d0*x/(1.0d0+ri) ftilde = fun(xi) CCCC Do convolution integrals CCCC if(x.GT.0.001) then !!! Don't do integration if very low x !!! h2 = daind(xi,1.d0,fun3,tol,2,10000,kount,est) g2 = daind(xi,1.d0,fun4,tol,2,10000,kount,est) endif CCCC Put together full Structure function including TM terms CCCCC h2 = 2.*mp2/q2*x**3/ri**4*h2 g2 = 4.*mp2*mp2/q2/q2*x**4/ri**5*g2 if(sf.EQ.1) then !!! Coefficents of terms in expansion !!! a0 = x*x/ri a1 = 2.d0*ri**2 else a0 = x*x/ri**3 a1 = 3.d0 endif fn = a0*ftilde + a1*(h2+g2) if(bgo.EQ.1) then fn = fun(x)*x*x endif return end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCC Parameterization of background function Ftilde CCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC real*8 function fun(x) COMMON /xparm/ xval2 real*8 xval2(5) real*8 x fun = xval2(5)*(x)**xval2(1)*(1.d0-x)**xval2(2)* & (1.d0+xval2(3)*sqrt(x)+xval2(4)*x) return end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCC Function needed to do double integral CCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC real*8 function fun2(xi2) IMPLICIT NONE EXTERNAL fun real*8 fun EXTERNAL daind1 real*8 daind1 real*8 xi2,tol,est integer kount tol = 1.d0-4 fun2 = daind1(xi2,1.d0,fun,tol,2,10000,kount,est) return end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCC Parameterization of background function Ftilde CCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC real*8 function fun3(x) COMMON /xparm3/ xval3 real*8 xval3(5) real*8 x fun3 = xval3(5)*(x)**xval3(1)*(1.d0-x)**xval3(2)* & (1.d0+xval3(3)*sqrt(x)+xval3(4)*x) return end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCC Function needed to do double integral CCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC real*8 function fun4(xi2) IMPLICIT NONE EXTERNAL fun3 real*8 fun3 EXTERNAL daind1 real*8 daind1 real*8 xi2,tol,est integer kount tol = 1.d0-4 fun4 = daind1(xi2,1.d0,fun3,tol,2,10000,kount,est) return end