Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- c
- c******************************************************************************
- c
- function dsigma(e1,costheta,omega)
- c
- c.....Returns the double differential neutrino-carbon cross section
- c in units of 10^38 cm^2/GeV. The calculation is performed at
- c fxed neutrino energy and lepton scattering angle, as a function
- c of energy transfer.
- c The spectral function is normalized to (A-Z) = Z = A/2
- c
- c input variables
- c
- c e1 : beam energy [GeV]
- c costheta : cos(theta), theta being the lepton scattering angle
- c omega : lepton energy loss [GeV]
- c
- c Last revised: Roma, September 2016
- c
- c******************************************************************************
- c
- implicit none
- c
- integer nnn,nsamples,icount,iev,ig,ilept,iflag
- c
- parameter( nnn = 500000 )
- c
- real*8 e1,costheta,omega,W_MeV,e_lept,p_lept,xm_lept,zero
- $ ,xmp,xmn,xm,xmA,xmAm1,xmR_0,EA,ER,E_min,sigma_QE
- $ ,Q2,q,q_MeV,dsigma ,p0,p0_MeV,xE,costheta_p,eps
- $ ,xmRstar,pf,Ef,pf_MeV,Erec,arg2,diracdelta,e1_MeV
- $ ,omega_thr,small,arg,stepf,k_F,sigma_RES,sigma_DIS
- $ ,dsigma_QE,dsigma_RES,dsigma_DIS
- c
- real*8 x(nnn),y(nnn),z(nnn)
- c
- common / config1 / nsamples
- common / config2 / x,y,z
- c
- common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
- $ ,EA,ER,E_min,eps,k_F
- c
- common / channels / dsigma_QE,dsigma_RES,dsigma_DIS
- c
- common / flags / ig,ilept
- c
- small = 1.e-10
- c
- c.....set lepton kinematics
- c
- e1_MeV = e1*1000.
- w_MeV = omega*1000.
- e_lept = e1 - omega ! energy of charged lepton [GeV]
- arg = e_lept**2 - xm_lept**2
- if(arg.ge.zero)then
- p_lept = sqrt( e_lept**2 - xm_lept**2 ) ! momentum of charged lepton[GeV]
- else
- dsigma = zero
- return
- end if
- Q2 = 2.*e1*e_lept*(1. - (p_lept/e_lept)*costheta ) - xm_lept**2 ! Q^2 [GeV^2]
- omega_thr = Q2/2./xmA
- if(omega.le.omega_thr)then
- dsigma = zero
- return
- end if
- q = sqrt( Q2 + omega**2 ) ! three-momentum transfer [GeV]
- q_MeV = 1000.*q
- c
- c.....start loop on samples
- c
- dsigma_QE = zero
- dsigma_RES = zero
- dsigma_DIS = zero
- c
- do 1000 iev = 1,nsamples
- c
- p0 = x(iev) ! nucleon momentum [GeV]
- p0_MeV = 1000.*p0 ! change units to MeV
- xE = y(iev) ! nucleon removal energy [GeV]
- costheta_p = z(iev) ! polar angle of the nucleon momentum
- c
- xmRstar = xmR_0 + xE
- Erec = sqrt(xmRstar**2+p0**2) ! energy of the recoiling system [GeV]
- c
- c=========================================================================
- c
- c.....CCQE
- c
- c=========================================================================
- c
- c.....set argument of energy conserving delta-function
- c
- pf = sqrt( p0**2 + q**2 + 2.*p0*q*costheta_p ) ! momentum of final state proton [GeV]
- Ef = sqrt(pf**2 + xm**2) ! energy of final state proton [GeV]
- pf_MeV = 1000.*pf ! change units to MeV
- arg2 = omega + xmA - Ef - Erec ! argument of energy-conserving delta-function [GeV]
- c
- c.....elementary CCQE cross section in units of millbarn/sr
- c
- sigma_QE = zero
- call sig_nuN_CCQE(ilept,ig,q_MeV,w_MeV,p0_MeV,pf_MeV,e1_MeV
- $ ,costheta,costheta_p,sigma_QE)
- c
- c write(96,6161)q_MeV,w_MeV,sigma_QE
- c6161 format(3e15.5)
- c
- c.....change units mbarn/sr --> nbarn/sr --> 10^-38 cm^2/sr
- c
- sigma_QE = 1.e6*sigma_QE
- sigma_QE = 1.e5*sigma_QE
- c
- stepf = 1. ! step-function for Pauli blocking
- if(pf.lt.k_F)then
- stepf = 0.
- end if
- c
- c......double-differential cross section in 10^-38 cm^2/sr/GeV
- c
- dsigma_QE = dsigma_QE + sigma_QE*diracdelta(eps,arg2)*stepf
- c
- c=========================================================================
- c
- c.....RES
- c
- c=========================================================================
- c
- c.....elementary resonance production cross section in units of millbarn/sr/GeV
- c
- sigma_RES = zero
- c call sig_nuN_RES(ilept,Erec,q_MeV,w_MeV,p0_MeV,pf_MeV,e1_MeV
- c $ ,costheta,costheta_p,sigma_RES)
- c
- c.....change units mbarn/sr/GeV --> nbarn/sr/GeV --> 10^-38 cm^2/sr/GeV
- c
- sigma_RES = 1.e6*sigma_RES
- sigma_RES = 1.e5*sigma_RES
- c
- dsigma_RES = dsigma_RES + sigma_RES
- c
- c=========================================================================
- c
- c.....DIS
- c
- c=========================================================================
- c
- c.....elementary DIS cross section in units of millbarn/sr/GeV
- c
- if(iev.eq.1)then
- iflag = 0
- else
- iflag = 1
- end if
- c
- sigma_DIS = zero
- c call sig_nuN_DIS(ilept,iflag,Erec,q_MeV,w_MeV,p0_MeV,pf_MeV
- c $ ,e1_MeV,costheta,costheta_p,sigma_DIS)
- c
- c.....change units mbarn/sr/GeV --> nbarn/sr/GeV --> 10^-38 cm^2/sr/GeV
- c
- sigma_DIS = 1.e6*sigma_DIS
- sigma_DIS = 1.e5*sigma_DIS
- c
- dsigma_DIS = dsigma_DIS + sigma_DIS
- c
- 1000 continue
- c
- c.....end loop on samples
- c
- dsigma_QE = 22.*dsigma_QE /nsamples
- dsigma_RES = 22.*dsigma_RES/nsamples
- dsigma_DIS = 40.*dsigma_DIS/nsamples
- c
- dsigma = dsigma_QE + dsigma_RES + dsigma_DIS
- c
- if(dsigma.le.small)then
- dsigma = zero
- end if
- c
- return
- c
- end
- c
- c******************************************************************************
- c
- subroutine sig_nuN_CCQE(ilept,ig,xq,w,xk,xp,e_nu,cos_theta
- $ ,costheta_p,sig)
- c
- c.....returns the cross section of the process
- c nu_ell + neutron ---> ell^- + proton in units of millibarn/sr
- c all input energies and momenta are in MeV
- c
- c ilept = 1 muon neutrino beam
- c ilept = 2 electron neutrino beam
- c
- implicit none
- c
- integer ilept,ig,i
- c
- real*8 A(5),WW(5)
- c
- real*8 G_F,pi,c0,hc,xm_n,xm_p,xm_lept,e_lept,e_nu,xq,w,xk,xp
- $ ,cos_theta,sig,xk_lept,c1,c2,c3,q2,Ek,Ep,c4
- $ ,xkx2,xkz,xkz2,aux1,wt,q2t,summ,prod,diff,contr,ctot
- $ ,xm_lept_MeV,zero,xm,xmA,xmAm1,xmR_0,EA,ER,E_min,eps
- $ ,xmp,xmn,k_F,costheta_p,sinqtheta_p
- c
- common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
- $ ,EA,ER,E_min,eps,k_F
- c
- c.....Fermi constant in fm^2 (Cabibbo's angle included)
- c
- G_F = 1.14e-5*.1973**2
- c
- pi = 4.*atan(1.)
- c0 = 1./16./pi/pi
- c
- hc = 197.3
- xm_n = 1000.*xmn
- xm_p = 1000.*xmp
- xm_lept_MeV = 1000.*xm_lept
- c
- e_lept = e_nu - w ! energy of charged lepton [MeV]
- xk_lept = sqrt(e_lept**2 - xm_lept_MeV**2) ! momentum of charged lepton [MeV]
- c1 = (xk_lept/e_lept)*cos_theta
- c2 = e_nu*e_lept
- c3 = xk_lept/e_nu
- c
- q2 = w**2 - xq**2
- Ek = sqrt(xk**2 + xm_n**2) ! neutron energy [MeV]
- Ep = sqrt(xp**2 + xm_p**2) ! proton energy [MeV]
- c4 = 1./4./Ek/Ep
- sinqtheta_p = 1. - costheta_p**2
- xkx2 = .5*xk*xk*sinqtheta_p
- xkz = xk*costheta_p
- xkz2= xkz**2
- aux1 = xm_lept_MeV**2 - q2
- wt = Ep - Ek
- q2t = wt**2 - xq**2
- c
- summ = (w/xq)*( 1. + c1 + xm_lept_MeV**2/w/e_lept ) ! (p_nu)z/E_nu + (p_mu)z/E_mu
- c
- prod = (1./xq/xq)*( w*w*c1 - c2*( 1. - c1)**2
- $ + xm_lept_MeV**2*( w/e_lept + 1. - c1 ) ) ! (p_nu)z/E_nu * (p_mu)z/E_mu
- c
- diff = ( (e_nu + e_lept)/xq )*(1. - c1)
- $ - xm_lept_MeV**2/e_lept/xq ! (p_nu)z/E_nu - (p_mu)z/E_mu
- c
- A(1) = aux1/2.
- A(2) = c2*( Ek**2 - Ek*xkz*summ
- $ + xkx2*(c2/xq/xq)*( (xk_lept/e_lept)**2 - c1**2 )
- $ + xkz2*prod - (xm_n**2/2.)*( 1. - c1 ) )
- A(3) = c2*( Ek*(xkz+xq) - Ep*xkz )*diff
- A(4) = c2*(wt**2 - wt*xq*summ + xq*xq*prod - 0.5*q2t*( 1. - c1 ))
- A(5) = c2*( 2.*Ek*wt + 2.*xkz*xq*prod - ( Ek*xq + wt*xkz )*summ
- $ - ( Ek*wt - xkz*xq )*( 1. - c1 ) )
- c
- call sf_CCQE(q2t,WW)
- c
- c write(99,9999)q2t*1.e-6,WW(1),WW(2),WW(3),WW(4),WW(5)
- c9999 format(6e15.5)
- c
- c.....compute the contraction L_munu*W^munu in MeV^4 and
- c change units to fm^-4
- c
- contr = 0.
- do 1000 i = 1,5
- 1000 contr = contr + 16.*A(i)*WW(i)/hc**4
- c
- c.....calculate coefficient in units of fm^6
- c
- ctot = (G_F**2/2.)*c0*c3*(c4*hc*hc)
- c
- c.....get x-section in units of mbarn/sr
- c
- sig = 10.*ctot*contr
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine sf_CCQE(q2,W)
- c
- implicit real*8(a-h,o-z)
- c
- common / flags / ig,ilept
- c
- c.....returns the structure functions W1, W2/m^2
- c W3/m^2, W4/m^2 and W5/m^2 as a function
- c of the squared four-momentum transfer q2
- c
- dimension W(5)
- c
- xm = 939.57
- c
- q2g = q2*1.e-6
- call form_factors(ig,q2g,F1,F2,FA,FP)
- c FP = 0.
- c
- W(1) = 2.*( -(q2/2.)*( F1 + F2 )**2
- $ + ( 2.*xm**2 - q2/2. )*FA**2 )
- W(2) = 4.*( F1**2 -(q2/4./xm/xm)*F2**2 + FA**2 )
- W(3) = -4.*( F1 + F2 )*FA
- W(4) = -2.*( F1*F2 + ( 2.*xm**2 + q2/2. )*F2**2/4./xm/xm
- $ + (q2/2.)*FP**2 - 2.*xm*FP*FA )
- W(5) = W(2)/2.
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine form_factors(ig,q2,F_1,F_2,F_A,F_p)
- c
- c.....returns the form factors. The squared four momentum
- c transfer q2 is given in units of GeV^2
- implicit real*8(a-h,o-z)
- c
- integer ig
- c
- real*8 g_A,M_A,Q2fm,hc
- c
- hc = .1973
- g_A = 1.267
- M_A = 1.03
- c
- xm = .93957
- tau = q2/4./xm/xm
- Q2fm = -q2/hc/hc
- cc = 1./(1. - tau)
- c
- call nform(ig,Q2fm,G_ep,G_en,G_mp,G_mn)
- c
- F_1_p = cc*( G_ep - tau*G_mp )
- F_2_p = cc*(-G_ep + G_mp )
- F_1_n = cc*( G_en - tau*G_mn )
- F_2_n = cc*(-G_en + G_mn )
- c
- F_1 = F_1_p - F_1_n
- F_2 = F_2_p - F_2_n
- F_A = -g_A/(1. - q2/M_A/M_A)**2
- F_p = 2.*F_A*xm / ( .1396**2 + q2)*0.001
- c write(91,9191)q2,2.*F_A*xm,( .1396**2 + q2),F_p
- c9191 format(4e18.6)
- c
- return
- end
- c
- c*******************************************************************************
- c
- subroutine nform(ichoice,Q2,G_ep,G_en,G_mp,G_mn)
- c
- c.....nucleon form factors
- c
- c revised January 2014, Virginia Tech
- c
- c ichoice = 1 Dipole parametrization
- c ichoice = 2 Kelly's parametrization [PRC 70, 068282 (2004)]
- c ichoice = 3 BBBA parametrization [NPB Proc. Suppl., 159, 127 (2006)]
- c
- c Q2 is given in units of fm^-2
- c
- implicit none
- c
- integer ichoice,i,j
- c
- real*8 Q2,Q2G,G_ep,G_mp,G_en,G_mn,G_D,Lambdasq,hc,pm,zero
- $ ,mu_p,mu_n,a_ep,a_mp,a_mn,tau,a_en,b_en,num_ep,den_ep
- $ ,num_mp,den_mp,num_en,den_en,num_mn,den_mn,one,nm,xm
- real*8 b_ep(3),b_mp(3),b_mn(3),aa_ep(4),aa_mp(4),aa_en(4)
- $ ,aa_mn(4),bb_ep(4),bb_mp(4),bb_en(4),bb_mn(4)
- c
- data a_ep , a_mp ,a_mn / -0.24 , 0.12 , 2.33 /
- data b_ep / 10.89 , 12.82 , 21.97 /
- data b_mp / 10.97 , 18.86 , 6.55 /
- data b_mn / 14.72 , 24.20 , 84.1 /
- data a_en , b_en / 1.70 , 3.30 /
- c
- data aa_ep / 1.0 , -0.0578 , 0.0 , 0.0 /
- data aa_mp / 1.0 , 0.0150 , 0.0 , 0.0 /
- data aa_en / 0.0 , 1.2500 , 1.30 , 0.0 /
- data aa_mn / 1.0 , 1.8100 , 0.0 , 0.0 /
- c
- data bb_ep / 11.10 , 13.60 , 33.00 , 0.0 /
- data bb_mp / 11.10 , 19.60 , 7.54 , 0.0 /
- data bb_en / 9.86 , 305.00 , -758.00 , 802.0 /
- data bb_mn / 14.10 , 20.70 , 68.70 , 0.0 /
- c
- hc = .1973
- pm = .93828 ! proton mass in GeV
- nm = .93957 ! neutron mass in GeV
- xm = .5*(pm + nm) ! isoscalar nucleon mass in GeV
- c
- zero = 0.
- one = 1.
- mu_p = 2.79278 ! proton magnetic moment
- mu_n = -1.91315 ! neutron magnetic moment
- Q2G = Q2*hc*hc
- tau = Q2G/4./pm/pm
- c
- Lambdasq = 0.71
- G_D = 1./(1. + Q2G/Lambdasq)**2
- c
- if(ichoice.eq.1)then
- c
- G_ep = G_D
- G_en = zero
- G_mp = mu_p*G_D
- G_mn = mu_n*G_D
- else if(ichoice.eq.2)then
- G_ep = (1. + a_ep*tau)/
- $ (1. + b_ep(1)*tau + b_ep(2)*tau**2 + b_ep(3)*tau**3)
- G_en = G_D*a_en*tau/(1. + b_en*tau)
- G_mp = mu_p*(1. + a_mp*tau)/
- $ (1. + b_mp(1)*tau + b_mp(2)*tau**2 + b_mp(3)*tau**3)
- G_mn = mu_n*(1. + a_mn*tau)/
- $ (1. + b_mn(1)*tau + b_mn(2)*tau**2 + b_mn(3)*tau**3)
- else if(ichoice.eq.3)then
- num_ep = zero
- den_ep = one
- num_mp = zero
- den_mp = one
- num_en = zero
- den_en = one
- num_mn = zero
- den_mn = one
- do i = 1,4
- j = i-1
- num_ep = num_ep + aa_ep(i)*tau**j
- den_ep = den_ep + bb_ep(i)*tau**i
- num_mp = num_mp + aa_mp(i)*tau**j
- den_mp = den_mp + bb_mp(i)*tau**i
- num_en = num_en + aa_en(i)*tau**j
- den_en = den_en + bb_en(i)*tau**i
- num_mn = num_mn + aa_mn(i)*tau**j
- den_mn = den_mn + bb_mn(i)*tau**i
- end do
- G_ep = num_ep/den_ep
- G_mp = mu_p*num_mp/den_mp
- G_en = num_en/den_en
- G_mn = mu_n*num_mn/den_mn
- end if
- c
- return
- end
- c
- c******************************************************************************
- c
- c
- subroutine sig_nuN_RES(ilept,Erec,xq,w,xk,xp,e_nu,cos_theta
- $ ,costheta_p,sig)
- c
- c.....returns the cross section of the process
- c nu_ell + neutron ---> ell^- + N^* in units of millibarn/sr/GeV
- c all input energies and momenta are in MeV
- c
- c The resonances included are the P33, D13, P11 and S11
- c
- c ilept = 1 muon neutrino beam
- c ilept = 2 electron neutrino beam
- c
- c******************************************************************************
- c
- implicit none
- c
- integer ilept,i
- c
- real*8 A(5),WW(5)
- c
- real*8 G_F,pi,c0,hc,xm_n,xm_p,xm_lept,e_lept,e_nu,xq,w,xk,xp
- $ ,cos_theta,sig,xk_lept,c1,c2,c3,q2,Ek,Ep,c4,costheta_p
- $ ,xkx2,xkz,xkz2,aux1,wt,q2t,summ,prod,diff,contr,ctot
- $ ,xm_lept_MeV,zero,xm,xmA,xmAm1,xmR_0,EA,ER,E_min,eps
- $ ,xmp,xmn,xmpi,WSQ_min,WSQ_max,WSQ,s,Ek_GeV,w_GeV,q2_GeV
- $ ,xq_GeV,wt_GeV,Erec,sinqtheta_p,k_F
- c
- c common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
- c $ ,EA,ER,E_min,eps
- common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
- $ ,EA,ER,E_min,eps,k_F
- c
- common / RES / WSQ_min,WSQ_max,Ek_GeV
- c
- c.....Fermi constant in fm^2 (Cabibbo's angle included)
- c
- G_F = 1.14e-5*.1973**2
- c
- pi = 4.*atan(1.)
- c0 = 1./16./pi/pi
- c
- hc = 197.3
- xmpi = .13957 ! mass of charged pion [GeV]
- xm_n = 1000.*xmn
- xm_p = 1000.*xmp
- xm_lept_MeV = 1000.*xm_lept
- c
- e_lept = e_nu - w ! energy of charged lepton [MeV]
- xk_lept = sqrt(e_lept**2 - xm_lept_MeV**2) ! momentum of charged lepton [MeV]
- c1 = (xk_lept/e_lept)*cos_theta
- c2 = e_nu*e_lept
- c3 = xk_lept/e_nu
- c
- q2 = w**2 - xq**2
- w_GeV = w/1000.
- xq_GeV = xq/1000.
- q2_GeV = 1.e-6*q2
- Ek = sqrt(xk**2 + xm_n**2) ! initial nucleon energy [MeV]
- Ek_GeV = Ek/1000.
- Ep = sqrt(xp**2 + xm_p**2) ! final nucleon energy [MeV]
- c4 = xm_p/Ek
- sinqtheta_p = 1. - costheta_p**2
- xkx2 = .5*xk*xk*sinqtheta_p
- xkz = xk*costheta_p
- xkz2= xkz**2
- aux1 = xm_lept_MeV**2 - q2
- wt_GeV = w_GeV + xmA - Erec - Ek_GeV
- wt = 1000.*wt_GeV
- q2t = wt**2 - xq**2
- s = xmA**2 + 2.*w_GeV*xmA + q2_GeV ! squared CM energy [GeV^2]
- c
- WSQ_min = (xmp + xmpi)**2 ! squared pion production threshold [GeV^2]
- WSQ = ( xm_p**2 + q2t + 2.*(wt*Ek - xq*xk*costheta_p) )/1.e6 ! squared mass of hadronic final state [GeV^2]
- WSQ_max = ( sqrt(s) - xMA + xmp )**2
- c
- summ = (w/xq)*( 1. + c1 + xm_lept_MeV**2/w/e_lept ) ! (p_nu)z/E_nu + (p_mu)z/E_mu
- c
- prod = (1./xq/xq)*( w*w*c1 - c2*( 1. - c1)**2
- $ + xm_lept_MeV**2*( w/e_lept + 1. - c1 ) ) ! (p_nu)z/E_nu * (p_mu)z/E_mu
- c
- diff = ( (e_nu + e_lept)/xq )*(1. - c1)
- $ - xm_lept_MeV**2/e_lept/xq ! (p_nu)z/E_nu - (p_mu)z/E_mu
- c
- c.....Alll A(i) are given in [MeV^2]. Note that A(2) A(4) nd A(5)are divided by m^2,
- c A(3) is divided by 2*m^2
- c
- A(1) = aux1/2.
- A(2) = c2*( Ek**2 - Ek*xkz*summ
- $ + xkx2*(c2/xq/xq)*( (xk_lept/e_lept)**2 - c1**2 )
- $ + xkz2*prod - (xm_n**2/2.)*( 1. - c1 ) )/xm_p**2
- A(3) = c2*( Ek*(xkz+xq) - Ep*xkz )*diff/2./xm_p**2
- A(4) = c2*(wt**2 - wt*xq*summ + xq*xq*prod
- $ - 0.5*q2t*( 1. - c1) )/xm_p**2
- A(5) = c2*( 2.*Ek*wt + 2.*xkz*xq*prod - ( Ek*xq + wt*xkz )*summ
- $ - ( Ek*wt - xkz*xq )*( 1. - c1 ) )/xm_p**2
- c
- call sf_RES(q2t,WSQ,WW)
- c
- c.....compute the contraction L_munu*W^munu in MeV^2/GeV and
- c change units to fm^-2/GeV
- c
- contr = zero
- do 1000 i = 1,5
- 1000 contr = contr + 16.*A(i)*WW(i)/hc**2
- c
- c.....calculate coefficient in units of fm^4
- c
- ctot = (4./3.)*(G_F**2/2.)*c0*c3*c4
- c
- c.....get x-section in units of mbarn/sr/GeV
- c
- sig = 10.*ctot*contr
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine sf_RES(q2,WSQ,W)
- c
- implicit real*8(a-h,o-z)
- c
- common / flags / ig,ilept
- c
- common / RES / WSQ_min,WSQ_max,Ek_GeV
- c
- c.....returns the structure functions W1, W2, W3/(2m^2),
- c W4 and W5 in units of GeV^-1, as a function
- c of the squared four-momentum transfer q2
- c
- dimension W(5),V1(4),V2(4),V3(4),V4(4),V5(4)
- c
- xmP33 = 1.232 ! mass of P33 [GeV]
- gammaP33 = 0.115 ! width of P33 [GeV]
- xmD13 = 1.520 ! mass of D13 [GeV]
- gammaD13 = 0.125 ! width of D13 [GeV]
- xmP11 = 1.440 ! mass of P11 [GeV]
- gammaP11 = 0.350 ! width of P11 [GeV]
- xmS11 = 1.535 ! mass of S11 [GeV]
- gammaS11 = 0.150 ! width ofSP11 [GeV]
- c
- WW = sqrt(WSQ)
- Q2g = -q2*1.e-6
- c
- c.....initialize
- c
- do i = 1,5
- W(i) = 0.
- end do
- c
- if(WSQ_min.ge.WSQ_max)then
- return
- end if
- c
- do i = 1,4
- V1(i) = 0.
- V2(i) = 0.
- V3(i) = 0.
- V4(i) = 0.
- V5(i) = 0.
- end do
- c
- c.....P33
- c
- if(WSQ.le.WSQ_min.or.WSQ.ge.WSQ_max)then
- return
- else
- call StructFuncP33(WW,Q2g,V1(1),V2(1),V3(1),V4(1),V5(1))
- call bw(WW,xmP33,gammaP33,bw_P33)
- c
- V1(1) = V1(1)*bw_P33/2./Ek_GeV
- V2(1) = V2(1)*bw_P33/2./Ek_GeV
- V3(1) = V3(1)*bw_P33/2./Ek_GeV
- V4(1) = V4(1)*bw_P33/2./Ek_GeV
- V5(1) = V5(1)*bw_P33/2./Ek_GeV
- c
- call StructFuncD13(WW,Q2g,V1(2),V2(2),V3(2),V4(2),V5(2))
- call bw(WW,xmD13,gammaD13,bw_D13)
- c
- V1(2) = V1(2)*bw_D13/2./Ek_GeV
- V2(2) = V2(2)*bw_D13/2./Ek_GeV
- V3(2) = V3(2)*bw_D13/2./Ek_GeV
- V4(2) = V4(2)*bw_D13/2./Ek_GeV
- V5(2) = V5(2)*bw_D13/2./Ek_GeV
- c
- call StructFuncP11(WW,Q2g,V1(3),V2(3),V3(3),V4(3),V5(3))
- call bw2(WW,xmP11,gammaP11,bw_P11)
- c
- V1(3) = V1(3)*bw_P11/2./Ek_GeV
- V2(3) = V2(3)*bw_P11/2./Ek_GeV
- V3(3) = V3(3)*bw_P11/2./Ek_GeV
- V4(3) = V4(3)*bw_P11/2./Ek_GeV
- V5(3) = V5(3)*bw_P11/2./Ek_GeV
- c
- call StructFuncS11(WW,Q2g,V1(4),V2(4),V3(4),V4(4),V5(4))
- call bw2(WW,xmS11,gammaS11,bw_S11)
- c
- V1(4) = V1(4)*bw_S11/2./Ek_GeV
- V2(4) = V2(4)*bw_S11/2./Ek_GeV
- V3(4) = V3(4)*bw_S11/2./Ek_GeV
- V4(4) = V4(4)*bw_S11/2./Ek_GeV
- V5(4) = V5(4)*bw_S11/2./Ek_GeV
- c
- do i = 1,4
- c do i = 2,4
- W(1) = W(1) + V1(i)
- W(2) = W(2) + V2(i)
- W(3) = W(3) + V3(i)
- W(4) = W(4) + V4(i)
- W(5) = W(5) + V5(i)
- end do
- c
- end if
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine StructFuncP33(xw,QQ,V1,V2,V3,V4,V5)
- c
- c.....invariant mass xw and Q^2 in GeV
- c.....the functions V1 and V2 are in GeV
- c
- implicit none
- c
- real*8 xw,QQ,xm,xmr,pq,pqQ,pqQ2,V1,V2,V3,V4,V5,
- $ P3v,P4v,P5v,P4a,P5a,P6a
- c
- call coeffP33(QQ,P3v,P4v,P5v,P4a,P5a,P6a)
- c
- xm = .5*(.93828 + .93957) !GeV
- xmr = 1.232 !GeV
- pq = .5*(xw**2 + QQ - xm**2) !GeV
- pqQ = QQ - pq
- pqQ2 = 2.*pq - QQ
- c
- V1 = 4.*P3v**2/xm**2/xmr**2*(pqQ**2*(pq+xm**2)+xmr**2
- $ *(pq**2+QQ*xm**2+QQ*xm*xmr))
- $ + 4.*(P4v*pqQ - P5v*pq)**2/xm**4*(pq + xm**2 - xm*xmr)
- $ + 4.*(P3v*P4v*pqQ - P3v*P5v)/xm**3/xmr*(pqQ*
- $ (pq + xm**2 - 2.*xm*xmr) - xmr**2*pq) + 4.*(pq + xm**2
- $ + xm*xmr)*(P4a**2/xm**4*pqQ**2 + P5a**2
- $ - 2.*P4a*P5a/xm**2*pqQ)
- c
- V2 = 4.*P3v**2/xmr**2*QQ*(pq + xm**2 + xmr**2) + 4.*P4v**2/xm**2*
- $ QQ*(pq + xm**2 - xm*xmr) + 4.*P3v*P4v/xm/xmr*QQ*(pq
- $ + (xmr - xm)**2) + 4.*P3v*P5v*QQ/xm/xmr*(pq+QQ+(xmr-xm)**2) +
- $ 4.*P5v**2*QQ/xm**2/xmr**2*(xmr**2 + QQ)*(xm**2 - xm*xmr + pq)
- $ + 8.*P4v*P5v*QQ/xm**2*(xm**2 - xm*xmr + pq)
- $ + 4.*(P5a**2*xm**2/xmr**2 + P4a**2/xm**2
- $ *QQ)*(pq + xm**2 + xm*xmr)
- c
- V3 = 8.*((P4v*P4a/xm**2*pqQ - P4v*P5a)*pqQ + pq*
- $ (P5v*P5a - P5v*P4a/xm**2*pqQ) + (P3v*P5a*xm/xmr -
- $ P3v*P4a/xm/xmr*pqQ)*(2.*xmr**2+2.*xm*xmr+QQ-pq))
- c
- V4 = 4.*P3v**2/xmr**2*(pqQ2*(pq + xm**2)-xmr**2*(xm**2 + xmr*xm))
- $ + 4.*(P4v**2/xm**2*pqQ2 + P5v**2*pq**2/xm**2/xmr**2
- $ + 2.*P4v*P5v/xm**2*pq)*(pq + xm**2 - xm*xmr)
- $ + 4.*P3v*P4v/xm/xmr*(pqQ2*(pq + xm**2 - 2.*xm*xmr)+pq*xmr**2)
- $ + 4.*P3v*P5v/xm/xmr*pq*(2.*pq + xm**2 - 2.*xm*xmr)
- $ + 4.*(P5a**2*xm**2/xmr**2 + P4a**2/xm**2*pqQ2
- $ + P6a**2/xm**2/xmr**2*(pqQ**2 + QQ*xmr**2) + 2.*P4a*P5a
- $ - 2.*P4a*P6a/xm**2*pq - 2.*P5a*P6a/xmr**2*(xmr**2 + QQ - pq))
- $ *(pq + xm**2 + xm*xmr)
- c
- V5 = 4.*P3v**2/xmr**2*pq*(pq + xm**2 + xmr**2) + 4.*P3v*P5v/xm/xmr
- $ *pq*(pq + (xmr - xm)**2 + QQ) + 4.*(P4v**2/xm**2
- $ + P5v**2/xm**2/xmr**2*(QQ + xmr**2) + 2.*P4v*P5v/xm**2)*pq*
- $ (pq + xm**2 - xm*xmr) + 4.*P3v*P4v/xm/xmr*pq*(pq
- $ + (xmr-xm**2)) + 4.*(P4a**2/xm**2*pq + P5a**2*xm**2/xmr**2
- $ + P4a*P5a - P4a*P6a/xm**2*QQ + P5a*P6a/xmr**2*(pq - QQ))*
- $ (pq + xm**2 + xm*xmr)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine coeffP33(Q2,P3v,P4v,P5v,P4a,P5a,P6a)
- c
- implicit none
- real*8 Q2,xmv,xma,xm,xmpi,P3v,P4v,P5v,P4a,P5a,P6a
- c
- xmv = .84 !GeV
- xma = 1.03 !GeV
- xm = .5*(.93828 + .93957) !GeV
- xmpi = .1396 !GeV
- c
- c.....vector form factors
- c
- P3v = 2.13/((1. + Q2/xmv**2)**2*(1. + Q2/4./xmv**2))
- P4v = -1.51/(1. + Q2/xmv**2)**2/(1. + Q2/4./xmv**2)
- P5v = 0.48/(1. + Q2/xmv**2)**2/(1. + Q2/0.776/xmv**2)
- c
- c.....axial form factors
- c
- P5a = 1.2/(1. + Q2/xma**2)**2/(1. + Q2/3./xma**2)
- P4a = -P5a/4.
- P6a = P5a*xm**2/(Q2 + xmpi**2)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine StructFuncD13(xw,QQ,V1,V2,V3,V4,V5)
- c
- c...the invariant mass xw and Q^2 are in GeV
- c
- implicit none
- real*8 xw,QQ,xm,xmr,pq,pqQ,pqQ2,D3v,D4v,D5v,D4a,D5a,D6a
- $ ,V1,V2,V3,V4,V5
- c
- call coeffD13(QQ,D3v,D4v,D5v,D4a,D5a,D6a)
- c
- xm = .5*(.93828 + .93957) !GeV
- xmr = 1.520 !GeV
- pq = .5*(xw**2+QQ-xm**2) !GeV
- pqQ = QQ - pq
- pqQ2 = 2.*pq - QQ
- c
- V1 = (4.*D3v**2/xm**2/xmr**2*(pqQ**2*(pq+xm**2)+xmr**2
- $ *(pq**2+QQ*xm**2-QQ*xm*xmr))
- $ + 4.*(D4v*pqQ - D5v*pq)**2/xm**4*(pq + xm**2 + xm*xmr)
- $ + 4.*(D3v*D4v*pqQ - D3v*D5v)/xm**3/xmr*(pqQ*
- $ (pq + xm**2 + 2.*xm*xmr) - xmr**2*pq) + 4.*(pq + xm**2
- $ - xm*xmr)*(D4a**2/xm**4*pqQ**2 + D5a**2
- $ - 2.*D4a*D5a/xm**2*pqQ))/3.
- c
- V2 = (4.*D3v**2/xmr**2*QQ*(pq + xm**2 + xmr**2) + 4.*D4v**2/
- $ xm**2*QQ*(pq + xm**2 + xm*xmr) + 4.*D3v*D4v/xm/xmr*QQ*(pq
- $ +(xmr+xm)**2) + 4.*D3v*D5v*QQ/xm/xmr*(pq+QQ+(xmr+xm)**2)+
- $ 4.*D5v**2*QQ/xm**2/xmr**2*(xmr**2 + QQ)*(xm**2+xm*xmr + pq)
- $ + 8.*D4v*D5v*QQ/xm**2*(xm**2 + xm*xmr + pq)
- $ + 4.*(D5a**2*xm**2/xmr**2 + D4a**2/xm**2
- $ *QQ)*(pq + xm**2 - xm*xmr))/3.
- c
- V3 = 8.*((D4v*D4a/xm**2*pqQ - D4v*D5a)*pqQ + pq*
- $ (D5v*D5a - D5v*D4a/xm**2*pqQ) + (D3v*D5a*xm/xmr -
- $ D3v*D4a/xm/xmr*pqQ)*(2.*xmr**2+2.*xm*xmr+QQ-pq))/3.
- c
- V4 = (4.*D3v**2/xmr**2*(pqQ2*(pq+xm**2)-xmr**2*(xm**2- xmr*xm))
- $ + 4.*(D4v**2/xm**2*pqQ2 + D5v**2*pq**2/xm**2/xmr**2
- $ + 2.*D4v*D5v/xm**2*pq)*(pq + xm**2 + xm*xmr)
- $ + 4.*D3v*D4v/xm/xmr*(pqQ2*(pq+xm**2+2.*xm*xmr)+pq*xmr**2)
- $ + 4.*D3v*D5v/xm/xmr*pq*(2.*pq + xm**2 + 2.*xm*xmr)
- $ + 4.*(D5a**2*xm**2/xmr**2 + D4a**2/xm**2*pqQ2
- $ + D6a**2/xm**2/xmr**2*(pqQ**2 + QQ*xmr**2) + 2.*D4a*D5a
- $ - 2.*D4a*D6a/xm**2*pq - 2.*D5a*D6a/xmr**2*(xmr**2 + QQ - pq))
- $ *(pq + xm**2 - xm*xmr))/3.
- c
- V5 = (4.*D3v**2/xmr**2*pq*(pq + xm**2+xmr**2) + 4.*D3v*D5v
- $ /xm/xmr*pq*(pq + (xmr + xm)**2 + QQ) + 4.*(D4v**2/xm**2
- $ + D5v**2/xm**2/xmr**2*(QQ+xmr**2)+2.*D4v*D5v/xm**2)*pq*
- $ (pq + xm**2 + xm*xmr) + 4.*D3v*D4v/xm/xmr*pq*(pq
- $ + (xmr+xm**2)) + 4.*(D4a**2/xm**2*pq + D5a**2*xm**2/xmr**2
- $ + D4a*D5a - D4a*D6a/xm**2*QQ + D5a*D6a/xmr**2*(pq - QQ))*
- $ (pq + xm**2 - xm*xmr))/3.
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine StructFuncP11(xw,QQ,V1,V2,V3,V4,V5)
- c
- implicit none
- c
- real*8 xw,QQ,P1v,P2v,P1a,P3a,xm,xmr,pq,mu,V1,V2,V3,V4,V5
- c
- call coeffP11(QQ,P1v,P2v,P1a,P3a)
- c
- xm = .5*(.93828 + .93957) !GeV
- xmr = 1.440 !GeV
- pq = .5*(xw**2 + QQ - xm**2) !GeV
- mu = xm + xmr !GeV
- c
- V1 = 2.*(P1v**2/mu**4*QQ**2*(pq + xm**2 - xm*xmr) +
- $ P2v**2/mu**2*(2.*pq**2 + QQ*(xm**2 + xm*xmr - pq)) +
- $ P1v*P2v/mu**3*2.*QQ*(pq*(xmr - xm) + xm*QQ) +
- $ P1a**2*(xm**2 + xm*xmr + pq))
- c
- V2 = 2.*(2.*xm**2*(P1v**2/mu**4*QQ**2 + P2v**2/mu**2*QQ + P1a**2))
- c
- V3 = 2.*(4.*xm**2*(P1v*P1a/mu**2*QQ + P2v*P1a/mu*(xmr + xm)))
- c
- V4 = 2.*(xm**2*(P2v**2/mu**2*(pq - xm**2 - xm*xmr) +
- $ P1v**2/mu**4*(2.*pq**2 - QQ*(pq + xm**2 - xm*xmr)) -
- $ P1v*P2v/mu**3*(pq*(xmr - xm)+ xm*QQ) - 2.*P1a*P3a +
- $ P3a**2/xm**2*(pq + xm**2 - xm*xmr)))
- c
- V5 = 2.*(xm**2*(2.*P1v**2/mu**4*QQ*pq+2.*P2v**2/mu**2*pq + P1a**2+
- $ P1a*P3a/xm*(xmr - xm)))
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine StructFuncS11(xw,QQ,V1,V2,V3,V4,V5)
- c
- implicit none
- c
- real*8 xw,QQ,S1v,S2v,S1a,S3a,xm,xmr,pq,mu,V1,V2,V3,V4,V5
- c
- call coeffS11(QQ,S1v,S2v,S1a,S3a)
- c
- xm = .5*(.93828 + .93957) !GeV
- xmr = 1.535 !GeV
- pq = .5*(xw**2 + QQ - xm**2) !GeV
- mu = xm + xmr !GeV
- c
- V1 = 2.*(S1v**2/mu**4*QQ**2*(pq + xm**2 + xm*xmr) +
- $ S2v**2/mu**2*(2.*pq**2 + QQ*(xm**2 - xm*xmr - pq)) +
- $ S1v*S2v/mu**3*2.*QQ*(pq*(xmr + xm) - xm*QQ) +
- $ S1a**2*(xm**2 - xmr*xm + pq))
- c
- V2 = 2.*(2.*xm**2*(S1v**2/mu**4*QQ**2 + S2v**2/mu**2*QQ + S1a**2))
- c
- V3 = 2.*(4.*xm**2*(S1v*S1a/mu**2*QQ + S2v*S1a/mu*(xmr - xm)))
- c
- V4 = 2.*(xm**2*(S2v**2/mu**2*(pq - xm**2 + xm*xmr) +
- $ S1v**2/mu**4*(2.*pq**2 - QQ*(pq + xm**2 + xm*xmr)) -
- $ S1v*S2v/mu**3*(pq*(xmr + xm) - xm*QQ) + 2.*S1a*S3a +
- $ S3a**2/xm**2*(pq + xm**2 + xm*xmr)))
- c
- V5 = 2.*(xm**2*(2.*S1v**2/mu**4*QQ*pq + 2.*S2v**2/mu**2*pq +
- $ S1a**2 + S1a*S3a/xm*(xmr + xm)))
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine coeffD13(Q2,D3v,D4v,D5v,D4a,D5a,D6a)
- c
- implicit none
- real*8 Q2,xmv,xma,xm,xmpi,D3p_v,D4p_v,D5p_v,D3n_v,D4n_v,D5n_v
- $ ,D4a,D5a,D6a,D3v,D4v,D5v
- c
- xmv = 0.84 !GeV
- xma = 1.03 !GeV
- xm = .5*(.93828 + .93957) !GeV
- xmpi = .1396 !GeV
- c
- c...vector form factors
- c
- D3p_v = 2.95/(1.+ Q2/xmv**2)**2/(1. + Q2/(8.9*xmv**2))
- D4p_v = -1.05/(1. + Q2/xmv**2)**2/(1. + Q2/(8.9*xmv**2))
- D5p_v = -0.48/(1.+ Q2/xmv**2)**2
- c
- D3n_v = -1.13/(1.+ Q2/xmv**2)**2/(1. + Q2/(8.9*xmv**2))
- D4n_v = 0.46/(1. + Q2/xmv**2)**2/(1. + Q2/(8.9*xmv**2))
- D5n_v = -0.17/(1.+ Q2/xmv**2)**2
- c
- D3v = D3n_v - D3p_v
- D4v = D4n_v - D4p_v
- D5v = D5n_v - D5p_v
- c
- c...axial form factors
- c
- D4a = 0.
- D5a = -2.1/(1. + Q2/xma**2)**2/(1. + Q2/3./xma**2)
- D6a = xm**2*D5a/(xmpi**2 + Q2)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine coeffP11(Q2,P1v,P2v,P1a,P3a)
- c
- implicit none
- real*8 Q2,xmv,xma,xm,xmr,xmpi,P1v,P2v,P1a,P3a
- c
- xmv = 0.84 !GeV
- xma = 1.03 !GeV
- xm = .5*(.93828 + .93957) !GeV
- xmr = 1.440 !GeV
- xmpi = 0.1396 !GeV
- c
- c...vector form factors
- c
- P1v = -2.*2.3/(1. + Q2/xmv**2)**2/(1. + Q2/(4.3*xmv**2))
- P2v = -2.*(-0.76/(1. + Q2/xmv**2)**2*(1. - 2.8*log(1. + Q2)))
- c
- c...axial form factors
- c
- P1a = -0.51/(1. + Q2/xma**2)**2/(1. + Q2/3./xma**2)
- P3a = P1a*xm*(xmr + xm)/(Q2 + xmpi**2)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine coeffS11(Q2,S1v,S2v,S1a,S3a)
- c
- implicit none
- real*8 Q2,xmv,xma,xm,xmr,xmpi,S1v,S2v,S1a,S3a
- c
- xmv = 0.84 !GeV
- xma = 1.03 !GeV
- xm = .5*(.93828 + .93957) !GeV
- xmr = 1.535 !GeV
- xmpi = 0.1396 !GeV
- c
- c...vector form factors
- c
- S1v = -2.*(2./(1. + Q2/xmv**2)**2/(1. + Q2/(1.2*xmv**2))*
- $ (1. + 7.2*log(1. + Q2)))
- S2v = -2.*(0.84/(1. + Q2/xmv**2)**2*(1. + 0.11*log(1. + Q2)))
- c
- c...axial form factors
- c
- S1a = -0.21/(1. + Q2/xma**2)**2/(1. + Q2/3./xma**2)
- S3a = S1a*(xmr - xm)*xm/(Q2 + xmpi**2)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine bw(xw,xmr,gammar0,b_w)
- c
- c.....input values are in GeV
- c.....returns the Breit-Wigner function in units of 1/GeV^2
- c
- implicit none
- c
- real*8 pi,xw,gammar,xmr,b_w, xmpi,xmp,xmn,xm
- real*8 gammar0,qPi,qPiMr,qPi0,r,fact,fact2,factor
- c
- pi = 4.*atan(1.)
- xmpi = .1396
- xm = .93828
- c
- qPi0 = abs((xw**2-xm**2-xmpi**2)**2 - 4.*xm**2*xmpi**2)
- qPi = .5/xw*sqrt(qPi0)
- c
- qPiMr = 1./(2.*xmr)*sqrt((xmr**2-xm**2-xmpi**2)**2
- $ -4.*xm**2*xmpi**2)
- gammar = gammar0*(qPi/qPiMr)**3
- b_w = gammar*xmr/
- $ (pi*(xw**2-xmr**2)**2+pi*xmr**2*gammar**2)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine bw2(xw,xmr,gammar0,b_w)
- c
- c...input values are in GeV
- c...returs the Breit and Wigner in units of 1/GeV^2
- c
- implicit none
- c
- real*8 pi,xw,gammar,xmr,b_w, xmpi,xmp,xmn,xm
- real*8 gammar0,qPi,qPiMr,qPi0,factor
- c
- pi = 4.*atan(1.)
- xmpi = .1396
- xm = .93828
- c
- qPi0 = abs((xw**2-xm**2-xmpi**2)**2 - 4.*xm**2*xmpi**2)
- qPi = .5/xw*sqrt(qPi0)
- c
- qPiMr = 1./(2.*xmr)*sqrt((xmr**2-xm**2-xmpi**2)**2
- $ -4.*xm**2*xmpi**2)
- gammar = gammar0*(qPi/qPiMr)
- b_w = gammar*xmr/(pi*(xw**2-xmr**2)**2+pi*xmr**2*gammar**2)
- c
- return
- end
- c
- c******************************************************************************
- c
- function diracdelta(eps,x)
- c
- implicit none
- c
- real*8 diracdelta,x,eps,pi,const
- c
- pi = 4.*atan(1.)
- const = 1./2/sqrt(pi*eps)
- diracdelta = const*exp(-x*x/4./eps)
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine sig_nuN_DIS(ilept,iflag,Erec,xq,w,xk,xp,e_nu,cos_theta
- $ ,costheta_p,sig)
- c
- c.....returns the cross section of the process
- c nu_ell + neutron ---> ell^- + X in the deep-inelastic sector
- c the cross section is given in units of millibarn/sr/GeV
- c all input energies and momenta are in MeV
- c
- c ilept = 1 muon neutrino beam
- c ilept = 2 electron neutrino beam
- c
- c******************************************************************************
- c
- implicit none
- c
- integer ilept,i,iflag
- c
- real*8 A(5),WW(5)
- c
- real*8 G_F,pi,c0,hc,xm_n,xm_p,xm_lept,e_lept,e_nu,xq,w,xk,xp
- $ ,cos_theta,sig,xk_lept,c1,c2,c3,q2,Ek,Ep,c4,costheta_p
- $ ,xkx2,xkz,xkz2,aux1,wt,q2t,summ,prod,diff,contr,ctot
- $ ,xm_lept_MeV,zero,xm,xmA,xmAm1,xmR_0,EA,ER,E_min,eps
- $ ,xmp,xmn,xmpi,WSQ_min,WSQ_max,WSQ,s,Ek_GeV,w_GeV,q2_GeV
- $ ,xq_GeV,wt_GeV,Erec,sinqtheta_p,xm_i,k_F
- c
- c common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
- c $ ,EA,ER,E_min,eps
- common / constants / zero,xmp,xmn,xm,xmA,xmAm1,xmR_0,xm_lept
- $ ,EA,ER,E_min,eps,k_F
- c
- c common / RES / WSQ_min,WSQ_max,Ek_GeV
- c
- c.....Fermi constant in fm^2 (Cabibbo's angle included)
- c
- G_F = 1.14e-5*.1973**2
- c
- pi = 4.*atan(1.)
- c0 = 1./16./pi/pi
- c
- hc = 197.3
- xmpi = .13957 ! mass of charged pion [GeV]
- xm_n = 1000.*xmn
- xm_p = 1000.*xmp
- xm_i = (xm_p + xm_n)/2.
- xm_lept_MeV = 1000.*xm_lept
- c
- e_lept = e_nu - w ! energy of charged lepton [MeV]
- xk_lept = sqrt(e_lept**2 - xm_lept_MeV**2) ! momentum of charged lepton [MeV]
- c1 = (xk_lept/e_lept)*cos_theta
- c2 = e_nu*e_lept
- c3 = xk_lept/e_nu
- c
- q2 = w**2 - xq**2
- w_GeV = w/1000.
- xq_GeV = xq/1000.
- q2_GeV = 1.e-6*q2
- Ek = sqrt(xk**2 + xm_n**2) ! initial nucleon energy [MeV]
- Ek_GeV = Ek/1000.
- Ep = sqrt(xp**2 + xm_p**2) ! final nucleon energy [MeV]
- c4 = xm_p/Ek
- sinqtheta_p = 1. - costheta_p**2
- xkx2 = .5*xk*xk*sinqtheta_p
- xkz = xk*costheta_p
- xkz2= xkz**2
- aux1 = xm_lept_MeV**2 - q2
- wt_GeV = w_GeV + xmA - Erec - Ek_GeV
- wt = 1000.*wt_GeV
- q2t = wt**2 - xq**2
- s = xmA**2 + 2.*w_GeV*xmA + q2_GeV ! squared CM energy [GeV^2]
- c
- WSQ_min = (xmp + 2.*xmpi)**2 ! squared pion production threshold [GeV^2]
- WSQ = ( xm_p**2 + q2t + 2.*(wt*Ek - xq*xk*costheta_p) )/1.e6 ! squared mass of hadronic final state [GeV^2]
- WSQ_max = ( sqrt(s) - xMA + xmp )**2
- c
- summ = (w/xq)*( 1. + c1 + xm_lept_MeV**2/w/e_lept ) ! (p_nu)z/E_nu + (p_mu)z/E_mu
- c
- prod = (1./xq/xq)*( w*w*c1 - c2*( 1. - c1)**2
- $ + xm_lept_MeV**2*( w/e_lept + 1. - c1 ) ) ! (p_nu)z/E_nu * (p_mu)z/E_mu
- c
- diff = ( (e_nu + e_lept)/xq )*(1. - c1)
- $ - xm_lept_MeV**2/e_lept/xq ! (p_nu)z/E_nu - (p_mu)z/E_mu
- c
- c.....compute A(1) and A(i>1)/m^2 [MeV^2]
- c
- A(1) = aux1/2.
- A(2) = c2*( Ek**2 - Ek*xkz*summ
- $ + xkx2*(c2/xq/xq)*( (xk_lept/e_lept)**2 - c1**2 )
- $ + xkz2*prod - (xm_n**2/2.)*( 1. - c1 ) )/xm_i**2
- A(3) = c2*( Ek*(xkz+xq) - Ep*xkz )*diff/xm_i**2
- A(4) = c2*(wt**2 - wt*xq*summ + xq*xq*prod
- $ - 0.5*q2t*( 1. - c1) )/xm_i**2
- A(5) = c2*( 2.*Ek*wt + 2.*xkz*xq*prod - ( Ek*xq + wt*xkz )*summ
- $ - ( Ek*wt - xkz*xq )*( 1. - c1 ) )/xm_i**2
- c
- call sf_DIS(iflag,q2t,WSQ,WSQ_min,WW)
- c
- c.....compute the contraction L_munu*W^munu in MeV^2/GeV and
- c change units to fm^-2/GeV
- c
- contr = zero
- do 1000 i = 1,5
- 1000 contr = contr + 16.*A(i)*WW(i)/hc**2
- c
- c.....calculate coefficient in units of fm^4
- c
- ctot = (G_F**2/2.)*c0*c3*c4
- c
- c.....get x-section in units of mbarn/sr/GeV
- c
- sig = 10.*ctot*contr
- c
- return
- end
- c
- c******************************************************************************
- c
- subroutine sf_DIS(iflg,q2,WSQ,WSQ_min,W)
- c
- implicit real*8 (a-h,o-z)
- integer iflg
- c
- dimension W(5)
- c
- c.....INTERPOLATION PROGRAM INITIALIZATION PARAMETER
- c
- COMMON / INTINIP / IINIP
- COMMON / INTINIF / IINIF
- c
- Q2g_min = 0.8
- c
- c.....initialization
- c
- do i = 1,5
- W(i) = 0.
- end do
- c
- c.....SELECTION OF THE SET OF PARTON DISTRIBUTIONS
- c
- ISET = 2
- c
- if(iflg.eq.0)then
- IINIP = 0
- IINIF = 0
- end if
- c
- pi = 4.*atan(1.)
- amp = .93818
- amn = .93957
- am2 = ( (amp + amn)/2. )**2
- R = 0.18
- c
- c.....CALCULATE STRUCTURE FUNCTIONS FOR AN ISOSCALAR NUCLEON
- c
- w1_N = 0.
- w2_N = 0.
- w3_N = 0.
- c
- if (WSQ.LE.WSQ_min) return
- c
- Q2g = -q2*1.e-6
- xnum = Q2g
- xden = WSQ - am2 + Q2g
- x = xnum/xden
- c v = (WSQ - am2 + Q2g)/2./sqrt(am2)
- c vsq = v*v
- c
- if(Q2g.le.Q2g_min)then
- Q2g_new = Q2g_min
- else
- Q2g_new = Q2g
- end if
- c
- CALL GRV98PA (ISET, X, Q2g_new, UV, DV, US, DS, SS, GL)
- c
- F2_N = ( UV + 2.*US ) + ( DV + 2.*DS )
- F3_N = ( UV + DV )/X
- c
- c v = (WSQ - am2 + Q2g)/2./sqrt(am2)
- v = (WSQ - am2 + Q2g_new)/2./sqrt(am2)
- vsq = v*v
- w2_N = F2_N/v
- w1_N = w2_N*(1.0+vsq/Q2g)/(1.0+R)
- c w1_N = const*w2_N
- w3_N = F3_N/v
- c
- W(1) = w1_N
- W(2) = w2_N
- W(3) = w3_N
- W(4) = 0.
- W(5) = 0.
- c
- return
- end
- c
- c******************************************************************************
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * *
- * G R V - P R O T O N - P A R A M E T R I Z A T I O N S *
- * *
- * 1998 UPDATE *
- * *
- * For a detailed explanation see *
- * M. Glueck, E. Reya, A. Vogt : *
- * hep-ph/9806404 = DO-TH 98/07 = WUE-ITP-98-019 *
- * (To appear in Eur. Phys. J. C) *
- * *
- * This package contains subroutines returning the light-parton *
- * distributions in NLO (for the MSbar and DIS schemes) and LO; *
- * the respective light-parton, charm, and bottom contributions *
- * to F2(electromagnetic); and the scale dependence of alpha_s. *
- * *
- * The parton densities and F2 values are calculated from inter- *
- * polation grids covering the regions *
- * Q^2/GeV^2 between 0.8 and 1.E6 ( 1.E4 for F2 ) *
- * x between 1.E-9 and 1. *
- * Any call outside these regions stops the program execution. *
- * *
- * At Q^2 = MZ^2, alpha_s reads 0.114 (0.125) in NLO (LO); the *
- * heavy quark thresholds, QH^2 = mh^2, in the beta function are *
- * mc = 1.4 GeV, mb = 4.5 GeV, mt = 175 GeV. *
- * Note that the NLO alpha_s running is different from GRV(94). *
- * *
- * Questions, comments etc to: avogt@physik.uni-wuerzburg.de *
- * *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- *
- *
- *
- SUBROUTINE GRV98PA (ISET, X, Q2, UV, DV, US, DS, SS, GL)
- *********************************************************************
- * *
- * THE PARTON ROUTINE. *
- * __ *
- * INPUT: ISET = 1 (LO), 2 (NLO, MS), or 3 (NLO, DIS) *
- * X = Bjorken-x (between 1.E-9 and 1.) *
- * Q2 = scale in GeV**2 (between 0.8 and 1.E6) *
- * *
- * OUTPUT: UV = u - u(bar), DV = d - d(bar), US = u(bar), *
- * DS = d(bar), SS = s = s(bar), GL = gluon. *
- * Always x times the distribution is returned. *
- * *
- * COMMON: The main program or the calling routine has to have *
- * a common block COMMON / INTINIP / IINIP , and the *
- * integer variable IINIP has always to be zero when *
- * GRV98PA is called for the first time or when ISET *
- * has been changed. *
- * *
- * GRIDS: 1. grv98lo.grid, 2. grv98nlm.grid, 3. grv98nld.grid, *
- * (1+1809 lines with 6 columns, 4 significant figures) *
- * *
- *******************************************************i*************
- *
- IMPLICIT DOUBLE PRECISION (A-H, O-Z)
- PARAMETER (NPART=6, NX=68, NQ=27, NARG=2)
- C PARAMETER (NPART=6, NX=68, NQ=27, NARG=5)
- DIMENSION XUVF(NX,NQ), XDVF(NX,NQ), XDEF(NX,NQ), XUDF(NX,NQ),
- 1 XSF(NX,NQ), XGF(NX,NQ), PARTON (NPART,NQ,NX-1),
- 2 QS(NQ), XB(NX), XT(NARG), NA(NARG), ARRF(NX+NQ)
- CHARACTER*80 LINE
- COMMON / INTINIP / IINIP
- SAVE XUVF, XDVF, XDEF, XUDF, XSF, XGF, NA, ARRF
- *
- *...BJORKEN-X AND Q**2 VALUES OF THE GRID :
- DATA QS / 0.8E0,
- 1 1.0E0, 1.3E0, 1.8E0, 2.7E0, 4.0E0, 6.4E0,
- 2 1.0E1, 1.6E1, 2.5E1, 4.0E1, 6.4E1,
- 3 1.0E2, 1.8E2, 3.2E2, 5.7E2,
- 4 1.0E3, 1.8E3, 3.2E3, 5.7E3,
- 5 1.0E4, 2.2E4, 4.6E4,
- 6 1.0E5, 2.2E5, 4.6E5,
- 7 1.E6 /
- DATA XB / 1.0E-9, 1.8E-9, 3.2E-9, 5.7E-9,
- A 1.0E-8, 1.8E-8, 3.2E-8, 5.7E-8,
- B 1.0E-7, 1.8E-7, 3.2E-7, 5.7E-7,
- C 1.0E-6, 1.4E-6, 2.0E-6, 3.0E-6, 4.5E-6, 6.7E-6,
- 1 1.0E-5, 1.4E-5, 2.0E-5, 3.0E-5, 4.5E-5, 6.7E-5,
- 2 1.0E-4, 1.4E-4, 2.0E-4, 3.0E-4, 4.5E-4, 6.7E-4,
- 3 1.0E-3, 1.4E-3, 2.0E-3, 3.0E-3, 4.5E-3, 6.7E-3,
- 4 1.0E-2, 1.4E-2, 2.0E-2, 3.0E-2, 4.5E-2, 0.06, 0.08,
- 5 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275,
- 6 0.3, 0.325, 0.35, 0.375, 0.4, 0.45, 0.5, 0.55,
- 7 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1. /
- *
- *...CHECK OF X AND Q2 VALUES :
- IF ( (X.LT.0.99D-9) .OR. (X.GT.1.D0) ) THEN
- WRITE(6,91)
- 91 FORMAT (2X,'PARTON INTERPOLATION: X OUT OF RANGE')
- STOP
- ENDIF
- IF ( (Q2.LT.0.799) .OR. (Q2.GT.1.01E6) ) THEN
- WRITE(6,92)
- 92 FORMAT (2X,'PARTON INTERPOLATION: Q2 OUT OF RANGE')
- STOP
- ENDIF
- IF (IINIP .NE. 0) GOTO 16
- *
- *...INITIALIZATION, IF REQUIRED :
- *
- * SELECTION AND READING OF THE GRID :
- * (COMMENT: FIRST NUMBER IN THE FIRST LINE OF THE GRID)
- IF (ISET .EQ. 1) THEN
- OPEN (11,FILE='grv98_grids/grv98lo.grid',STATUS='old') ! 7.332E-05
- ELSE IF (ISET .EQ. 2) THEN
- OPEN (11,FILE='grv98_grids/grv98nlm.grid',STATUS='old') ! 1.015E-04
- ELSE IF (ISET .EQ. 3) THEN
- OPEN (11,FILE='grv98_grids/grv98nld.grid',STATUS='old') ! 1.238E-04
- ELSE
- WRITE(6,93)
- 93 FORMAT (2X,'NO OR INVALID PARTON SET CHOICE')
- STOP
- END IF
- IINIP = 1
- READ(11,89) LINE
- 89 FORMAT(A80)
- DO 15 M = 1, NX-1
- DO 15 N = 1, NQ
- READ(11,90) PARTON(1,N,M), PARTON(2,N,M), PARTON(3,N,M),
- 1 PARTON(4,N,M), PARTON(5,N,M), PARTON(6,N,M)
- 90 FORMAT (6(1PE10.3))
- 15 CONTINUE
- CLOSE(11)
- *
- *....ARRAYS FOR THE INTERPOLATION SUBROUTINE :
- DO 10 IQ = 1, NQ
- DO 20 IX = 1, NX-1
- XB0V = XB(IX)**0.5
- XB0S = XB(IX)**(-0.2)
- XB1 = 1.-XB(IX)
- XUVF(IX,IQ) = PARTON(1,IQ,IX) / (XB1**3 * XB0V)
- XDVF(IX,IQ) = PARTON(2,IQ,IX) / (XB1**4 * XB0V)
- XDEF(IX,IQ) = PARTON(3,IQ,IX) / (XB1**7 * XB0V)
- XUDF(IX,IQ) = PARTON(4,IQ,IX) / (XB1**7 * XB0S)
- XSF(IX,IQ) = PARTON(5,IQ,IX) / (XB1**7 * XB0S)
- XGF(IX,IQ) = PARTON(6,IQ,IX) / (XB1**5 * XB0S)
- 20 CONTINUE
- XUVF(NX,IQ) = 0.E0
- XDVF(NX,IQ) = 0.E0
- XDEF(NX,IQ) = 0.E0
- XUDF(NX,IQ) = 0.E0
- XSF(NX,IQ) = 0.E0
- XGF(NX,IQ) = 0.E0
- 10 CONTINUE
- NA(1) = NX
- NA(2) = NQ
- DO 30 IX = 1, NX
- ARRF(IX) = DLOG(XB(IX))
- 30 CONTINUE
- DO 40 IQ = 1, NQ
- ARRF(NX+IQ) = DLOG(QS(IQ))
- 40 CONTINUE
- *
- *...CONTINUATION, IF INITIALIZATION WAS DONE PREVIOUSLY.
- *
- 16 CONTINUE
- *
- *...INTERPOLATION :
- XT(1) = DLOG(X)
- XT(2) = DLOG(Q2)
- X1 = 1.- X
- XV = X**0.5
- XS = X**(-0.2)
- UV = FINT(NARG,XT,NA,ARRF,XUVF) * X1**3 * XV
- DV = FINT(NARG,XT,NA,ARRF,XDVF) * X1**4 * XV
- DE = FINT(NARG,XT,NA,ARRF,XDEF) * X1**7 * XV
- UD = FINT(NARG,XT,NA,ARRF,XUDF) * X1**7 * XS
- US = 0.5 * (UD - DE)
- DS = 0.5 * (UD + DE)
- SS = FINT(NARG,XT,NA,ARRF,XSF) * X1**7 * XS
- GL = FINT(NARG,XT,NA,ARRF,XGF) * X1**5 * XS
- *
- 60 RETURN
- END
- *
- *
- *
- *
- SUBROUTINE GRV98F2 (ISET, X, Q2, F2L, F2C, F2B, F2)
- *********************************************************************
- * *
- * THE F2 ROUTINE. *
- * *
- * INPUT : ISET = 1 (LO), 2 (NLO). *
- * X = Bjorken-x (between 1.E-9 and 1.) *
- * Q2 = scale in GeV**2 (between 0.8 and 1.E4) *
- * *
- * OUTPUT: F2L = F2(light), F2C = F2(charm), F2B = F2(bottom,) *
- * F2 = sum, all given for electromagnetic proton DIS. *
- * *
- * COMMON: The main program or the calling routine has to have *
- * a common block COMMON / INTINIF / IINIF , and the *
- * integer variable IINIF has always to be zero when *
- * GRV98F2 is called for the first time or when ISET *
- * has been changed. *
- * *
- * GRIDS: 1. grv98lof.grid, 2. grv98nlf.grid. *
- * (1+1407 lines with 3 columns, 4 significant figures) *
- * *
- *******************************************************i*************
- *
- IMPLICIT DOUBLE PRECISION (A-H, O-Z)
- PARAMETER (NSTRF=3, NX=68, NQ=21, NARG=2)
- C PARAMETER (NSTRF=3, NX=68, NQ=21, NARG=5)
- DIMENSION XF2LF(NX,NQ), XF2CF(NX,NQ), XF2BF(NX,NQ),
- 1 STRFCT (NSTRF,NQ,NX-1), QS(NQ), XB(NX),
- 3 XT(NARG), NA(NARG), ARRF(NX+NQ)
- CHARACTER*80 LINE
- COMMON / INTINIF / IINIF
- SAVE XF2LF, XF2CF, XF2BF, NA, ARRF
- *
- *...BJORKEN-X AND Q**2 VALUES OF THE GRID :
- DATA QS / 0.8E0,
- 1 1.0E0, 1.3E0, 1.8E0, 2.7E0, 4.0E0, 6.4E0,
- 2 1.0E1, 1.6E1, 2.5E1, 4.0E1, 6.4E1,
- 3 1.0E2, 1.8E2, 3.2E2, 5.7E2,
- 4 1.0E3, 1.8E3, 3.2E3, 5.7E3,
- 5 1.0E4/
- DATA XB / 1.0E-9, 1.8E-9, 3.2E-9, 5.7E-9,
- A 1.0E-8, 1.8E-8, 3.2E-8, 5.7E-8,
- B 1.0E-7, 1.8E-7, 3.2E-7, 5.7E-7,
- C 1.0E-6, 1.4E-6, 2.0E-6, 3.0E-6, 4.5E-6, 6.7E-6,
- 1 1.0E-5, 1.4E-5, 2.0E-5, 3.0E-5, 4.5E-5, 6.7E-5,
- 2 1.0E-4, 1.4E-4, 2.0E-4, 3.0E-4, 4.5E-4, 6.7E-4,
- 3 1.0E-3, 1.4E-3, 2.0E-3, 3.0E-3, 4.5E-3, 6.7E-3,
- 4 1.0E-2, 1.4E-2, 2.0E-2, 3.0E-2, 4.5E-2, 0.06, 0.08,
- 5 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275,
- 6 0.3, 0.325, 0.35, 0.375, 0.4, 0.45, 0.5, 0.55,
- 7 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1. /
- *
- *...CHECK OF X AND Q2 VALUES :
- IF ( (X.LT.0.99D-9) .OR. (X.GT.1.D0) ) THEN
- WRITE(6,91)
- 91 FORMAT (2X,'STR.FCT. INTERPOLATION: X OUT OF RANGE')
- STOP
- ENDIF
- C IF ( (Q2.LT.0.799) .OR. (Q2.GT.1.01E4) ) THEN
- C WRITE(6,92)
- C 92 FORMAT (2X,'STR.FCT. INTERPOLATION: Q2 OUT OF RANGE')
- C STOP
- IF ( Q2.LT.0.799 ) THEN
- Q2 = 0.799
- ENDIF
- IF (IINIF .NE. 0) GOTO 16
- *
- *...INITIALIZATION, IF REQUIRED :
- *
- * SELECTION AND READING OF THE GRID :
- * (COMMENT: FIRST NUMBER IN THE FIRST LINE OF THE GRID)
- IF (ISET .EQ. 1) THEN
- OPEN (11,FILE='grv98_grids/grv98lof.grid',STATUS='old') ! 7.907E-01
- ELSE IF (ISET.EQ.2) THEN
- OPEN (11,FILE='grv98_grids/grv98nlf.grid',STATUS='old') ! 9.368E-01
- ELSE
- WRITE(6,93)
- 93 FORMAT (2X,'NO OR INVALID STR.FCT. SET CHOICE')
- STOP
- END IF
- IINIF = 1
- READ(11,89) LINE
- 89 FORMAT(A80)
- DO 15 M = 1, NX-1
- DO 15 N = 1, NQ
- READ(11,90) STRFCT(1,N,M), STRFCT(2,N,M), STRFCT(3,N,M)
- 90 FORMAT (3(1PE10.3))
- 15 CONTINUE
- CLOSE(11)
- *
- *....ARRAYS FOR THE INTERPOLATION SUBROUTINE :
- DO 10 IQ = 1, NQ
- DO 20 IX = 1, NX-1
- XBS = XB(IX)**0.2
- XB1 = 1.-XB(IX)
- XF2LF(IX,IQ) = STRFCT(1,IQ,IX) / XB1**3 * XBS
- XF2CF(IX,IQ) = STRFCT(2,IQ,IX) / XB1**7 * XBS
- XF2BF(IX,IQ) = STRFCT(3,IQ,IX) / XB1**7 * XBS
- 20 CONTINUE
- XF2LF(NX,IQ) = 0.E0
- XF2CF(NX,IQ) = 0.E0
- XF2BF(NX,IQ) = 0.E0
- 10 CONTINUE
- NA(1) = NX
- NA(2) = NQ
- DO 30 IX = 1, NX
- ARRF(IX) = DLOG(XB(IX))
- 30 CONTINUE
- DO 40 IQ = 1, NQ
- ARRF(NX+IQ) = DLOG(QS(IQ))
- 40 CONTINUE
- *
- *...CONTINUATION, IF INITIALIZATION WAS DONE PREVIOUSLY.
- *
- 16 CONTINUE
- *
- *...INTERPOLATION :
- XT(1) = DLOG(X)
- XT(2) = DLOG(Q2)
- X1 = 1.- X
- XS = X**(-0.2)
- F2L = FINT(NARG,XT,NA,ARRF,XF2LF) * X1**3 * XS
- F2C = FINT(NARG,XT,NA,ARRF,XF2CF) * X1**7 * XS
- F2B = FINT(NARG,XT,NA,ARRF,XF2BF) * X1**7 * XS
- F2 = F2L + F2C + F2B
- *
- 60 RETURN
- END
- *
- *
- *
- *
- FUNCTION FINT(NARG,ARG,NENT,ENT,TABLE)
- *********************************************************************
- * *
- * THE INTERPOLATION ROUTINE (CERN LIBRARY ROUTINE E104) *
- * *
- *********************************************************************
- IMPLICIT DOUBLE PRECISION (A-H, O-Z)
- C DIMENSION ARG(5),NENT(5),ENT(10),TABLE(10)
- DIMENSION ARG(2),NENT(2),ENT(10),TABLE(10)
- DIMENSION D(5),NCOMB(5),IENT(5)
- KD=1
- M=1
- JA=1
- DO 5 I=1,NARG
- NCOMB(I)=1
- JB=JA-1+NENT(I)
- DO 2 J=JA,JB
- IF (ARG(I).LE.ENT(J)) GO TO 3
- 2 CONTINUE
- J=JB
- 3 IF (J.NE.JA) GO TO 4
- J=J+1
- 4 JR=J-1
- D(I)=(ENT(J)-ARG(I))/(ENT(J)-ENT(JR))
- IENT(I)=J-JA
- KD=KD+IENT(I)*M
- M=M*NENT(I)
- 5 JA=JB+1
- FINT=0.
- 10 FAC=1.
- IADR=KD
- IFADR=1
- DO 15 I=1,NARG
- IF (NCOMB(I).EQ.0) GO TO 12
- FAC=FAC*(1.-D(I))
- GO TO 15
- 12 FAC=FAC*D(I)
- IADR=IADR-IFADR
- 15 IFADR=IFADR*NENT(I)
- FINT=FINT+FAC*TABLE(IADR)
- IL=NARG
- 40 IF (NCOMB(IL).EQ.0) GO TO 80
- NCOMB(IL)=0
- IF (IL.EQ.NARG) GO TO 10
- IL=IL+1
- DO 50 K=IL,NARG
- 50 NCOMB(K)=1
- GO TO 10
- 80 IL=IL-1
- IF(IL.NE.0) GO TO 40
- RETURN
- END
- *
- *
- *
- *
- FUNCTION ALPHAS (Q2, NAORD)
- *********************************************************************
- * *
- * THE ALPHA_S ROUTINE. *
- * *
- * INPUT : Q2 = scale in GeV**2 (not too low, of course); *
- * NAORD = 1 (LO), 2 (NLO). *
- * *
- * OUTPUT: alphas_s/(4 pi) for use with the GRV(98) partons. *
- * *
- *******************************************************i*************
- *
- IMPLICIT DOUBLE PRECISION (A - Z)
- INTEGER NF, K, I, NAORD
- DIMENSION LAMBDAL (3:6), LAMBDAN (3:6), Q2THR (3)
- *
- *...HEAVY QUARK THRESHOLDS AND LAMBDA VALUES :
- DATA Q2THR / 1.960, 20.25, 30625. /
- DATA LAMBDAL / 0.2041, 0.1750, 0.1320, 0.0665 /
- DATA LAMBDAN / 0.2994, 0.2460, 0.1677, 0.0678 /
- *
- *...DETERMINATION OF THE APPROPRIATE NUMBER OF FLAVOURS :
- NF = 3
- DO 10 K = 1, 3
- IF (Q2 .GT. Q2THR (K)) THEN
- NF = NF + 1
- ELSE
- GO TO 20
- END IF
- 10 CONTINUE
- *
- *...LO ALPHA_S AND BETA FUNCTION FOR NLO CALCULATION :
- 20 B0 = 11.- 2./3.* NF
- B1 = 102.- 38./3.* NF
- B10 = B1 / (B0*B0)
- IF (NAORD .EQ. 1) THEN
- LAM2 = LAMBDAL (NF) * LAMBDAL (NF)
- ALP = 1./(B0 * DLOG (Q2/LAM2))
- GO TO 1
- ELSE IF (NAORD .EQ. 2) then
- LAM2 = LAMBDAN (NF) * LAMBDAN (NF)
- B1 = 102.- 38./3.* NF
- B10 = B1 / (B0*B0)
- ELSE
- WRITE (6,91)
- 91 FORMAT ('INVALID CHOICE FOR ORDER IN ALPHA_S')
- STOP
- END IF
- *
- *...START VALUE FOR NLO ITERATION :
- LQ2 = DLOG (Q2 / LAM2)
- ALP = 1./(B0*LQ2) * (1.- B10*DLOG(LQ2)/LQ2)
- *
- *...EXACT NLO VALUE, FOUND VIA NEWTON PROCEDURE :
- DO 2 I = 1, 6
- XL = DLOG (1./(B0*ALP) + B10)
- XLP = DLOG (1./(B0*ALP*1.01) + B10)
- XLM = DLOG (1./(B0*ALP*0.99) + B10)
- Y = LQ2 - 1./ (B0*ALP) + B10 * XL
- Y1 = (- 1./ (B0*ALP*1.01) + B10 * XLP
- 1 + 1./ (B0*ALP*0.99) - B10 * XLP) / (0.02D0*ALP)
- ALP = ALP - Y/Y1
- 2 CONTINUE
- *
- *...OUTPUT :
- 1 ALPHAS = ALP
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement