PROGRAM MAKEMRSG * This is an interface to the MRS(G) parton distribution * routine that produces a table in the standard form. * D. E. Soper and P. Anandam. 17 June 1998. DOUBLE PRECISION LAMBDA DOUBLE PRECISION X,LX,LXMIN,LXMAX,DELTALX DOUBLE PRECISION MU,LMU,LMUMIN,LMUMAX,DELTALMU DOUBLE PRECISION DBAR, UBAR, GLUON, U, D, S, C, B, T EXTERNAL MRSEB DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,GLU CHARACTER*100 HEADER DOUBLE PRECISION LAMBDA INTEGER LAMBDAFLAVORS DOUBLE PRECISION XMIN,XMAX INTEGER NX DOUBLE PRECISION MUMIN,MUMAX INTEGER NMU * Loop variables INTEGER N,M LAMBDA = 0.124D0 LAMBDAFLAVORS = 5 XMIN = 0.1000000000D-04 XMAX = 0.9500000000D0 NX = 32 MUMIN = DSQRT(5D0) MUMAX = DSQRT(1D8) NMU = 40 OPEN(UNIT = 99, FILE = 'mrsg.ptn', STATUS = 'UNKNOWN') HEADER = $'! MRS(G) FIT distribution generated by DES and PA 17 June 1998' WRITE(99,*)HEADER WRITE(99,*)'!' WRITE(99,*)'PARTON DATA' WRITE(99,*)' VERSION = 110496' WRITE(99,103)LAMBDA 103 FORMAT(' LAMBDA',' = ',G20.10) WRITE(99,104)LAMBDAFLAVORS 104 FORMAT('NFL_LAMBDA',' = ',I10) WRITE(99,105)XMIN 105 FORMAT(' XMIN',' = ',G20.10) WRITE(99,106)XMAX 106 FORMAT(' XMAX',' = ',G20.10) WRITE(99,107)NX 107 FORMAT(' N_XPOINTS',' = ',I10) WRITE(99,108)MUMIN 108 FORMAT(' MUMIN',' = ',G20.10) WRITE(99,109)MUMAX 109 FORMAT(' MUMAX',' = ',G20.10) WRITE(99,110)NMU 110 FORMAT('N_MUPOINTS',' = ',I10) * Calculate lattice info. LXMIN = DLOG(XMIN/(1.0D0 - XMIN)) LXMAX = DLOG(XMAX/(1.0D0 - XMAX)) DELTALX = (LXMAX - LXMIN)/(NX-1) LMUMIN = DLOG(MUMIN) LMUMAX = DLOG(MUMAX) DELTALMU = (LMUMAX - LMUMIN)/(NMU-1) LX = LXMIN - DELTALX DO N=1,NX LX = LX + DELTALX X = DEXP(LX)/(1.0D0+DEXP(LX)) LMU = LMUMIN - DELTALMU DO M=1,NMU LMU = LMU + DELTALMU MU = DEXP(LMU) CALL MRSEB(X,MU,21,UPV,DNV,USEA,DSEA,STR,CHM,BOT,GLU) DBAR = DSEA/X UBAR = USEA/X GLUON = GLU/X U = (UPV+USEA)/X D = (DNV+DSEA)/X S = STR/X C = CHM/X B = BOT/X IF (UBAR.LT.0D0) UBAR = 0D0 IF (DBAR.LT.0D0) DBAR = 0D0 IF (GLUON.LT.0D0) GLUON = 0D0 IF (U.LT.0D0) U = 0D0 IF (D.LT.0D0) D = 0D0 IF (S.LT.0D0) S = 0D0 IF (C.LT.0D0) C = 0D0 IF (B.LT.0D0) B = 0D0 DBAR = DLOG(1.0D-16 + DBAR) UBAR = DLOG(1.0D-16 + UBAR) GLUON = DLOG(1.0D-16 + GLUON) U = DLOG(1.0D-16 + U) D = DLOG(1.0D-16 + D) S = DLOG(1.0D-16 + S) C = DLOG(1.0D-16 + C) B = DLOG(1.0D-16 + B) T = DLOG(1.0D-16 + 0.0D0) WRITE(99,'(9G13.5)') DBAR,UBAR,GLUON,U,D,S,C,B,T ENDDO ENDDO STOP END subroutine mrseb(x,scale,mode,upv,dnv,usea,dsea,str,chm,bot,glu) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c c This program returns the fitted parton distributions for MRS(G) c c ... it is an analytic approximation to the "grid version" and c c gives much smoother distributions. It is, however, much slower. c c Full details of the fit are contained in the preprint "Pinning c c Down the Gluon in the Proton", by A.D. Martin, R.G. Roberts and c c W.J. Stirling, Phys. Lett. B354 (1995) 155-162, to which c c reference should be made if appropriate. c c c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc implicit real*8(a-h,o-z) dimension z(18,8),f(8) data z/ .1.665297, -0.590753, 0.086807, 0.676836, -0.027729, 0.006186, .3.340307, 0.260426, 0.024214, -0.787023, 1.101313, -0.302934, .6.098057, -2.645910, 0.175731, 0.557278, 0.363394, -0.001549, .0.171268, -0.086429, 0.012191, 0.388998, 0.139088, -0.014565, .4.049580, -0.495801, 0.071001, 8.829433, 0.246082, -0.319317, .5.310913, -6.033850, 1.335430, 0.391294, 0.974633, -0.026356, .1.121933, -0.980891, 0.250001, -0.279071, -0.118949, 0.001370, .5.733053, 0.962694, -0.537345, -4.338513, 4.055084, -1.249222, .11.591153, -9.385871, 2.080363, 0.233747, 0.649513, -0.033386, .0.811684, -0.732591, 0.188398, -0.146012, -0.450745, 0.162278, .10.716037, 0.423859, -0.332372, -3.347546, 1.476767, -0.164336, .10.221619, -2.432161, 0.693669, -0.372843, -0.451730, 0.548307, .0.018819, -0.019057, 0.014581, 0.473385, -0.026701, -0.191575, .8.942582, -0.562553, 2.098186, -1.302327, 29.018376,-11.868145, .105.320622,-53.953297, 1.329035, 0.878000, 0.499894, -0.971650, .0.093684, -0.074091, 0.033660, -0.107765, -0.408746, 0.100063, .9.275198, 0.692364, 0.110208, -2.787409, 0.041578, 0.488094, .10.637883, 3.815478, -4.848576, 0.184162, 0.185983, -0.186796, .0.001026, 0.015587, -0.001414, -0.111311, -0.346509, 0.094542, .5.764679, 4.958334, -2.102611, -1.341127, -2.951861, 1.855254, .12.079860, -0.297841, -3.809543, 1.480855, -0.719267, 0.175987, .-0.001533, 0.004429, -0.000718, -0.097267, -0.221771, 0.056117, .3.630148, 2.941006, -0.512863, -0.483095, 1.599856, -1.197675, .8.366443, -4.004534, 1.022508, 2.526478, -0.713666, 0.277209/ al=0.254 q2=scale*scale q0=2. arg=(dlog(scale/al)/dlog(q0/al)) s=dlog(arg) do 10 j=1,8 a=z(1,j)+z(2,j)*s+z(3,j)*s*s b=z(4,j)+z(5,j)*s+z(6,j)*s*s c=z(7,j)+z(8,j)*s+z(9,j)*s*s d=z(10,j)+z(11,j)*s+z(12,j)*s*s e=z(13,j)+z(14,j)*s+z(15,j)*s*s h=z(16,j)+z(17,j)*s+z(18,j)*s*s 10 f(j)=a*x**b*(1.-x)**c*(1.+d*sqrt(x)+e*x)*(dlog(1./x))**h upv=f(1) dnv=f(2) glu=f(3) dusum=f(4) dudif=f(5) str=f(6) chm=f(7) bot=f(8) dsea=0.5d0*(dusum+dudif) usea=0.5d0*(dusum-dudif) if(q2.lt.2.7d0) chm=0.d0 if(q2.lt.30.d0) bot=0.d0 if(chm.lt.0.d0) chm=0.d0 if(bot.lt.0.d0) bot=0.d0 return end