Skip to content

Commit

Permalink
switching to openQCDrad routines for the computation of the massive c…
Browse files Browse the repository at this point in the history
…oefficient functions
  • Loading branch information
vbertone committed Apr 24, 2016
1 parent c91c1be commit 9e92f5f
Show file tree
Hide file tree
Showing 12 changed files with 12,846 additions and 63,631 deletions.
2 changes: 1 addition & 1 deletion src/DIS/ComputeDISOperators.f
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ subroutine ComputeDISOperators(Q)
xi(ihq) = Q2 / M2(ihq)
if(xi(ihq).le.xigrid(xistep))then
ixi(ihq) = 0
elseif(xi(ihq).ge.ximax)then
elseif(xi(ihq).ge.xigrid(nxi))then
ixi(ihq) = nxir
else
diff(1) = xi(ihq) - xigrid(1)
Expand Down
65 changes: 38 additions & 27 deletions src/DIS/MassiveCoefficientFunctions.f
Original file line number Diff line number Diff line change
Expand Up @@ -59,68 +59,79 @@ function MassiveCF(icoef,ixi,z)
**
* internal variables
*
integer i
double precision rho
double precision xi,rho,eta
double precision cm21g,cml1g
double precision cm22q,cml2q
double precision dcm21g,dcml1g
double precision h1
c double precision APFc2log,APFcllog
double precision APFc2nlog,APFclnlog,APFc2nlobarg,APFclnlobarg
double precision APFc2nloq,APFclnloq,APFc2nlobarq,APFclnlobarq
c double precision APFd2nloq,APFdlnloq
c double precision beta0apf
**
* output variables
*
double precision MassiveCF
*
rho = 1d0 / ( 4d0 / xigrid(ixi) + 1d0 )
xi = xigrid(ixi)
rho = 1d0 / ( 4d0 / xi + 1d0 )
eta = xi * ( 1d0 / z - 1d0 ) / 4d0 - 1d0
*
MassiveCF = 0d0
if(z.ge.rho) return
*
* Exact expressions
*
if(icoef.eq.1)then
MassiveCF = 2d0 * cm21g(xigrid(ixi),z)
return
MassiveCF = 2d0 * cm21g(xi,z)
c MassiveCF = xi * APFcllog(eta,xi) / pi / z ! From hqcoef.f
elseif(icoef.eq.2)then
MassiveCF = 2d0 * cml1g(xigrid(ixi),z)
return
MassiveCF = 2d0 * cml1g(xi,z)
c MassiveCF = xi * APFc2log(eta,xi) / pi / z ! From hqcoef.f
elseif(icoef.eq.7)then
MassiveCF = cm22q(xigrid(ixi),z)
return
MassiveCF = cm22q(xi,z)
c MassiveCF = 16d0 * pi * xi * APFd2nloq(eta,xi) / z ! From hqcoef.f
elseif(icoef.eq.8)then
MassiveCF = cml2q(xigrid(ixi),z)
return
MassiveCF = cml2q(xi,z)
c MassiveCF = 16d0 * pi * xi * APFdlnloq(eta,xi) / z ! From hqcoef.f
elseif(icoef.eq.3)then
MassiveCF = 16d0 * pi * xi * APFc2nlog(eta,xi) / z
elseif(icoef.eq.4)then
MassiveCF = 16d0 * pi * xi * APFc2nloq(eta,xi) / z
elseif(icoef.eq.5)then
MassiveCF = 16d0 * pi * xi * APFclnlog(eta,xi) / z
elseif(icoef.eq.6)then
MassiveCF = 16d0 * pi * xi * APFclnloq(eta,xi) / z
elseif(icoef.eq.9)then
MassiveCF = 16d0 * pi * xi * APFc2nlobarg(eta,xi) / z
elseif(icoef.eq.10)then
MassiveCF = 16d0 * pi * xi * APFc2nlobarq(eta,xi) / z
elseif(icoef.eq.11)then
MassiveCF = 16d0 * pi * xi * APFclnlobarg(eta,xi) / z
elseif(icoef.eq.12)then
MassiveCF = 16d0 * pi * xi * APFclnlobarq(eta,xi) / z
endif
*
do i=0,m_coef(icoef)-1
MassiveCF = MassiveCF + coef(icoef,ixi,i+1) * z**i
enddo
MassiveCF = 16d0 * pi * xigrid(ixi)
1 * z**(-coef_p1(icoef)-1)
2 * ( rho - z )**(-coef_p2(icoef))
3 * MassiveCF
*
if(icoef.eq.1.or.icoef.eq.2) MassiveCF = MassiveCF / 16d0 / pi**2
*
* If the MSbar masses are to be used, add the appropriate term to
* the NNLO gluon coefficient functions.
*
if(mass_scheme.eq."MSbar")then
if(icoef.eq.3)then
h1 = CF * 4d0
if(MassRunning) h1 = h1 + CF * 3d0 * dlog(xigrid(ixi)*krenQ)
MassiveCF = MassiveCF + 2d0 * h1 * dcm21g(xigrid(ixi),z)
if(MassRunning) h1 = h1 + CF * 3d0 * dlog(xi*krenQ)
MassiveCF = MassiveCF + 2d0 * h1 * dcm21g(xi,z)
c if(.not.MassRunning)then
c MassiveCF = MassiveCF + 2d0 * beta0apf(Nf_FF)
c 1 * cm21g(xigrid(ixi),z) * dlog(xigrid(ixi))
c 1 * cm21g(xi,z) * dlog(xi)
c endif
elseif(icoef.eq.5)then
h1 = CF * 4d0
if(MassRunning) h1 = h1 + CF * 3d0 * dlog(xigrid(ixi)*krenQ)
MassiveCF = MassiveCF + 2d0 * h1 * dcml1g(xigrid(ixi),z)
if(MassRunning) h1 = h1 + CF * 3d0 * dlog(xi*krenQ)
MassiveCF = MassiveCF + 2d0 * h1 * dcml1g(xi,z)
c if(.not.MassRunning)then
c MassiveCF = MassiveCF + 2d0 * beta0apf(Nf_FF)
c 1 * cml1g(xigrid(ixi),z) * dlog(xigrid(ixi))
c 1 * cml1g(xi,z) * dlog(xi)
c endif
endif
endif
Expand Down
29 changes: 1 addition & 28 deletions src/DIS/RSLintegralsDIS.f
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,6 @@ subroutine RSLintegralsDIS(beta,alpha)
double precision kQF2,lnkQF2,lnQ,lnF,lnQ2,lnQF
double precision lambda,Rf,Rfun
double precision h1
double precision xi,xi0,spread,sig1,sig2
c parameter(xi0=2d3,spread=2d1)
parameter(xi0=1d3,spread=2d2)
external integrandsDISzm
external integrandsDISNCm,integrandsDISNCm0
external integrandsDISCCm,integrandsDISCCm0
Expand Down Expand Up @@ -614,8 +611,7 @@ subroutine RSLintegralsDIS(beta,alpha)
* Massive zero FFNS needed for the FONLL scheme
* (and also for the FFNS)
*
if(MassScheme(1:4).eq."FFN0".or.MassScheme(1:4).eq."FFNS".or.
1 MassScheme(1:5).eq."FONLL")then
if(MassScheme(1:4).eq."FFN0".or.MassScheme(1:5).eq."FONLL")then
*
* Neutral Current
*
Expand Down Expand Up @@ -835,29 +831,6 @@ subroutine RSLintegralsDIS(beta,alpha)
enddo
enddo
*
* In order to improve the NNLO predictions of the FFNS in the large-Q region,
* the code smoothly switches to the FFN0 scheme by means of a sigma function
* centered in 'xi0'. This is also need to extend the range of the massive
* coefficient functions.
*
if(MassScheme(1:4).eq."FFNS".or.MassScheme(1:5).eq."FONLL")then
if(ipt_FF.ge.2)then
do ixi=1,nxir
xi = xigrid(ixi*xistep)
sig2 = 1d0 / ( 1d0 + dexp( - ( xi - xi0 ) / spread ) )
sig1 = 1d0 - sig2
do k=1,2
SC2mNC(igrid,ixi,k,2,beta,alpha) =
1 sig1 * SC2mNC(igrid,ixi,k,2,beta,alpha)
2 + sig2 * SC2m0NC(igrid,ixi,k,2,beta,alpha)
SCLmNC(igrid,ixi,k,2,beta,alpha) =
1 sig1 * SCLmNC(igrid,ixi,k,2,beta,alpha)
2 + sig2 * SCLm0NC(igrid,ixi,k,2,beta,alpha)
enddo
enddo
endif
endif
*
* Charged Current
*
walpha = alpha
Expand Down
Loading

0 comments on commit 9e92f5f

Please sign in to comment.