diff --git a/gonsalves/Cteq61Pdf.f b/gonsalves/Cteq61Pdf.f deleted file mode 100644 index 29a007d..0000000 --- a/gonsalves/Cteq61Pdf.f +++ /dev/null @@ -1,513 +0,0 @@ -C============================================================================ -C April 10, 2002, v6.01 -C February 23, 2003, v6.1 -C -C Ref[1]: "New Generation of Parton Distributions with Uncertainties from Global QCD Analysis" -C By: J. Pumplin, D.R. Stump, J.Huston, H.L. Lai, P. Nadolsky, W.K. Tung -C JHEP 0207:012(2002), hep-ph/0201195 -C -C Ref[2]: "Inclusive Jet Production, Parton Distributions, and the Search for New Physics" -C By : D. Stump, J. Huston, J. Pumplin, W.K. Tung, H.L. Lai, S. Kuhlmann, J. Owens -C hep-ph/0303013 -C -C This package contains -C (1) 4 standard sets of CTEQ6 PDF's (CTEQ6M, CTEQ6D, CTEQ6L, CTEQ6L1) ; -C (2) 40 up/down sets (with respect to CTEQ6M) for uncertainty studies from Ref[1]; -C (3) updated version of the above: CTEQ6.1M and its 40 up/down eigenvector sets from Ref[2]. -C -C The CTEQ6.1M set provides a global fit that is almost equivalent in every respect -C to the published CTEQ6M, Ref[1], although some parton distributions (e.g., the gluon) -C may deviate from CTEQ6M in some kinematic ranges by amounts that are well within the -C specified uncertainties. -C The more significant improvements of the new version are associated with some of the -C 40 eigenvector sets, which are made more symmetrical and reliable in (3), compared to (2). - -C Details about calling convention are: -C --------------------------------------------------------------------------- -C Iset PDF-set Description Alpha_s(Mz)**Lam4 Lam5 Table_File -C =========================================================================== -C Standard, "best-fit", sets: -C -------------------------- -C 1 CTEQ6M Standard MSbar scheme 0.118 326 226 cteq6m.tbl -C 2 CTEQ6D Standard DIS scheme 0.118 326 226 cteq6d.tbl -C 3 CTEQ6L Leading Order 0.118** 326** 226 cteq6l.tbl -C 4 CTEQ6L1 Leading Order 0.130** 215** 165 cteq6l1.tbl -C ============================================================================ -C For uncertainty calculations using eigenvectors of the Hessian: -C --------------------------------------------------------------- -C central + 40 up/down sets along 20 eigenvector directions -C ----------------------------- -C Original version, Ref[1]: central fit: CTEQ6M (=CTEQ6M.00) -C ----------------------- -C 1xx CTEQ6M.xx +/- sets 0.118 326 226 cteq6m1xx.tbl -C where xx = 01-40: 01/02 corresponds to +/- for the 1st eigenvector, ... etc. -C e.g. 100 is CTEQ6M.00 (=CTEQ6M), -C 101/102 are CTEQ6M.01/02, +/- sets of 1st eigenvector, ... etc. -C ----------------------- -C Updated version, Ref[2]: central fit: CTEQ6.1M (=CTEQ61.00) -C ----------------------- -C 2xx CTEQ61.xx +/- sets 0.118 326 226 ctq61.xx.tbl -C where xx = 01-40: 01/02 corresponds to +/- for the 1st eigenvector, ... etc. -C e.g. 200 is CTEQ61.00 (=CTEQ6.1M), -C 201/202 are CTEQ61.01/02, +/- sets of 1st eigenvector, ... etc. -C =========================================================================== -C ** ALL fits are obtained by using the same coupling strength -C \alpha_s(Mz)=0.118 and the NLO running \alpha_s formula, except CTEQ6L1 -C which uses the LO running \alpha_s and its value determined from the fit. -C For the LO fits, the evolution of the PDF and the hard cross sections are -C calculated at LO. More detailed discussions are given in the references. -C -C The table grids are generated for 10^-6 < x < 1 and 1.3 < Q < 10,000 (GeV). -C PDF values outside of the above range are returned using extrapolation. -C Lam5 (Lam4) represents Lambda value (in MeV) for 5 (4) flavors. -C The matching alpha_s between 4 and 5 flavors takes place at Q=4.5 GeV, -C which is defined as the bottom quark mass, whenever it can be applied. -C -C The Table_Files are assumed to be in the working directory. -C -C Before using the PDF, it is necessary to do the initialization by -C Call SetCtq6(Iset) -C where Iset is the desired PDF specified in the above table. -C -C The function Ctq6Pdf (Iparton, X, Q) -C returns the parton distribution inside the proton for parton [Iparton] -C at [X] Bjorken_X and scale [Q] (GeV) in PDF set [Iset]. -C Iparton is the parton label (5, 4, 3, 2, 1, 0, -1, ......, -5) -C for (b, c, s, d, u, g, u_bar, ..., b_bar), -C -C For detailed information on the parameters used, e.q. quark masses, -C QCD Lambda, ... etc., see info lines at the beginning of the -C Table_Files. -C -C These programs, as provided, are in double precision. By removing the -C "Implicit Double Precision" lines, they can also be run in single -C precision. -C -C If you have detailed questions concerning these CTEQ6 distributions, -C or if you find problems/bugs using this package, direct inquires to -C Pumplin@pa.msu.edu or Tung@pa.msu.edu. -C -C=========================================================================== - - Function Ctq6Pdf (Iparton, X, Q) - Implicit Double Precision (A-H,O-Z) - Logical Warn - Common - > / CtqPar2 / Nx, Nt, NfMx - > / QCDtable / Alambda, Nfl, Iorder - - Data Warn /.true./ - save Warn - - If (X .lt. 0D0 .or. X .gt. 1D0) Then - Print *, 'X out of range in Ctq6Pdf: ', X - Stop - Endif - If (Q .lt. Alambda) Then - Print *, 'Q out of range in Ctq6Pdf: ', Q - Stop - Endif - If ((Iparton .lt. -NfMx .or. Iparton .gt. NfMx)) Then - If (Warn) Then -C put a warning for calling extra flavor. - Warn = .false. - Print *, 'Warning: Iparton out of range in Ctq6Pdf! ' - Print *, 'Iparton, MxFlvN0: ', Iparton, NfMx - Endif - Ctq6Pdf = 0D0 - Return - Endif - - Ctq6Pdf = PartonX6 (Iparton, X, Q) - if(Ctq6Pdf.lt.0.D0) Ctq6Pdf = 0.D0 - - Return - -C ******************** - End - - Subroutine SetCtq6 (Iset) - Implicit Double Precision (A-H,O-Z) - Parameter (Isetmax0=5) - Character Flnm(Isetmax0)*6, nn*3, Tablefile*40 - Data (Flnm(I), I=1,Isetmax0) - > / 'cteq6m', 'cteq6d', 'cteq6l', 'cteq6l','ctq61.'/ - Data Isetold, Isetmin0, Isetmin1, Isetmax1 /-987,1,100,140/ - Data Isetmin2,Isetmax2 /200,240/ - save - -C If data file not initialized, do so. - If(Iset.ne.Isetold) then - IU= NextUn() - If (Iset.ge.Isetmin0 .and. Iset.le.3) Then - Tablefile=Flnm(Iset)//'.tbl' - Elseif (Iset.eq.4) Then - Tablefile=Flnm(Iset)//'1.tbl' - Elseif (Iset.ge.Isetmin1 .and. Iset.le.Isetmax1) Then - write(nn,'(I3)') Iset - Tablefile=Flnm(1)//nn//'.tbl' - Elseif (Iset.ge.Isetmin2 .and. Iset.le.Isetmax2) Then - write(nn,'(I3)') Iset - Tablefile=Flnm(5)//nn(2:3)//'.tbl' - Else - Print *, 'Invalid Iset number in SetCtq6 :', Iset - Stop - Endif - Open(IU, File=Tablefile, Status='OLD', Err=100) - 21 Call ReadTbl (IU) - Close (IU) - Isetold=Iset - Endif - Return - - 100 Print *, ' Data file ', Tablefile, ' cannot be opened ' - >//'in SetCtq6!!' - Stop -C ******************** - End - - Subroutine ReadTbl (Nu) - Implicit Double Precision (A-H,O-Z) - Character Line*80 - PARAMETER (MXX = 96, MXQ = 20, MXF = 5) - PARAMETER (MXPQX = (MXF + 3) * MXQ * MXX) - Common - > / CtqPar1 / Al, XV(0:MXX), TV(0:MXQ), UPD(MXPQX) - > / CtqPar2 / Nx, Nt, NfMx - > / XQrange / Qini, Qmax, Xmin - > / QCDtable / Alambda, Nfl, Iorder - > / Masstbl / Amass(6) - - Read (Nu, '(A)') Line - Read (Nu, '(A)') Line - Read (Nu, *) Dr, Fl, Al, (Amass(I),I=1,6) - Iorder = Nint(Dr) - Nfl = Nint(Fl) - Alambda = Al - - Read (Nu, '(A)') Line - Read (Nu, *) NX, NT, NfMx - - Read (Nu, '(A)') Line - Read (Nu, *) QINI, QMAX, (TV(I), I =0, NT) - - Read (Nu, '(A)') Line - Read (Nu, *) XMIN, (XV(I), I =0, NX) - - Do 11 Iq = 0, NT - TV(Iq) = Log(Log (TV(Iq) /Al)) - 11 Continue -C -C Since quark = anti-quark for nfl>2 at this stage, -C we Read out only the non-redundent data points -C No of flavors = NfMx (sea) + 1 (gluon) + 2 (valence) - - Nblk = (NX+1) * (NT+1) - Npts = Nblk * (NfMx+3) - Read (Nu, '(A)') Line - Read (Nu, *, IOSTAT=IRET) (UPD(I), I=1,Npts) - - Return -C **************************** - End - - Function NextUn() -C Returns an unallocated FORTRAN i/o unit. - Logical EX -C - Do 10 N = 10, 300 - INQUIRE (UNIT=N, OPENED=EX) - If (.NOT. EX) then - NextUn = N - Return - Endif - 10 Continue - Stop ' There is no available I/O unit. ' -C ************************* - End -C - - SUBROUTINE POLINT (XA,YA,N,X,Y,DY) - - IMPLICIT DOUBLE PRECISION (A-H, O-Z) -C Adapted from "Numerical Recipes" - PARAMETER (NMAX=10) - DIMENSION XA(N),YA(N),C(NMAX),D(NMAX) - NS=1 - DIF=ABS(X-XA(1)) - DO 11 I=1,N - DIFT=ABS(X-XA(I)) - IF (DIFT.LT.DIF) THEN - NS=I - DIF=DIFT - ENDIF - C(I)=YA(I) - D(I)=YA(I) -11 CONTINUE - Y=YA(NS) - NS=NS-1 - DO 13 M=1,N-1 - DO 12 I=1,N-M - HO=XA(I)-X - HP=XA(I+M)-X - W=C(I+1)-D(I) - DEN=HO-HP - IF(DEN.EQ.0.)PAUSE - DEN=W/DEN - D(I)=HP*DEN - C(I)=HO*DEN -12 CONTINUE - IF (2*NS.LT.N-M)THEN - DY=C(NS+1) - ELSE - DY=D(NS) - NS=NS-1 - ENDIF - Y=Y+DY -13 CONTINUE - RETURN - END - - Function PartonX6 (IPRTN, XX, QQ) - -c Given the parton distribution function in the array U in -c COMMON / PEVLDT / , this routine interpolates to find -c the parton distribution at an arbitray point in x and q. -c - Implicit Double Precision (A-H,O-Z) - - Parameter (MXX = 96, MXQ = 20, MXF = 5) - Parameter (MXQX= MXQ * MXX, MXPQX = MXQX * (MXF+3)) - - Common - > / CtqPar1 / Al, XV(0:MXX), TV(0:MXQ), UPD(MXPQX) - > / CtqPar2 / Nx, Nt, NfMx - > / XQrange / Qini, Qmax, Xmin - - Dimension fvec(4), fij(4) - Dimension xvpow(0:mxx) - Data OneP / 1.00001 / - Data xpow / 0.3d0 / !**** choice of interpolation variable - Data nqvec / 4 / - Data ientry / 0 / - Save ientry,xvpow - -c store the powers used for interpolation on first call... - if(ientry .eq. 0) then - ientry = 1 - - xvpow(0) = 0D0 - do i = 1, nx - xvpow(i) = xv(i)**xpow - enddo - endif - - X = XX - Q = QQ - tt = log(log(Q/Al)) - -c ------------- find lower end of interval containing x, i.e., -c get jx such that xv(jx) .le. x .le. xv(jx+1)... - JLx = -1 - JU = Nx+1 - 11 If (JU-JLx .GT. 1) Then - JM = (JU+JLx) / 2 - If (X .Ge. XV(JM)) Then - JLx = JM - Else - JU = JM - Endif - Goto 11 - Endif -C Ix 0 1 2 Jx JLx Nx-2 Nx -C |---|---|---|...|---|-x-|---|...|---|---| -C x 0 Xmin x 1 -C - If (JLx .LE. -1) Then - Print '(A,1pE12.4)', 'Severe error: x <= 0 in PartonX6! x = ', x - Stop - ElseIf (JLx .Eq. 0) Then - Jx = 0 - Elseif (JLx .LE. Nx-2) Then - -C For interrior points, keep x in the middle, as shown above - Jx = JLx - 1 - Elseif (JLx.Eq.Nx-1 .or. x.LT.OneP) Then - -C We tolerate a slight over-shoot of one (OneP=1.00001), -C perhaps due to roundoff or whatever, but not more than that. -C Keep at least 4 points >= Jx - Jx = JLx - 2 - Else - Print '(A,1pE12.4)', 'Severe error: x > 1 in PartonX6! x = ', x - Stop - Endif -C ---------- Note: JLx uniquely identifies the x-bin; Jx does not. - -C This is the variable to be interpolated in - ss = x**xpow - - If (JLx.Ge.2 .and. JLx.Le.Nx-2) Then - -c initiation work for "interior bins": store the lattice points in s... - svec1 = xvpow(jx) - svec2 = xvpow(jx+1) - svec3 = xvpow(jx+2) - svec4 = xvpow(jx+3) - - s12 = svec1 - svec2 - s13 = svec1 - svec3 - s23 = svec2 - svec3 - s24 = svec2 - svec4 - s34 = svec3 - svec4 - - sy2 = ss - svec2 - sy3 = ss - svec3 - -c constants needed for interpolating in s at fixed t lattice points... - const1 = s13/s23 - const2 = s12/s23 - const3 = s34/s23 - const4 = s24/s23 - s1213 = s12 + s13 - s2434 = s24 + s34 - sdet = s12*s34 - s1213*s2434 - tmp = sy2*sy3/sdet - const5 = (s34*sy2-s2434*sy3)*tmp/s12 - const6 = (s1213*sy2-s12*sy3)*tmp/s34 - - EndIf - -c --------------Now find lower end of interval containing Q, i.e., -c get jq such that qv(jq) .le. q .le. qv(jq+1)... - JLq = -1 - JU = NT+1 - 12 If (JU-JLq .GT. 1) Then - JM = (JU+JLq) / 2 - If (tt .GE. TV(JM)) Then - JLq = JM - Else - JU = JM - Endif - Goto 12 - Endif - - If (JLq .LE. 0) Then - Jq = 0 - Elseif (JLq .LE. Nt-2) Then -C keep q in the middle, as shown above - Jq = JLq - 1 - Else -C JLq .GE. Nt-1 case: Keep at least 4 points >= Jq. - Jq = Nt - 3 - - Endif -C This is the interpolation variable in Q - - If (JLq.GE.1 .and. JLq.LE.Nt-2) Then -c store the lattice points in t... - tvec1 = Tv(jq) - tvec2 = Tv(jq+1) - tvec3 = Tv(jq+2) - tvec4 = Tv(jq+3) - - t12 = tvec1 - tvec2 - t13 = tvec1 - tvec3 - t23 = tvec2 - tvec3 - t24 = tvec2 - tvec4 - t34 = tvec3 - tvec4 - - ty2 = tt - tvec2 - ty3 = tt - tvec3 - - tmp1 = t12 + t13 - tmp2 = t24 + t34 - - tdet = t12*t34 - tmp1*tmp2 - - EndIf - - -c get the pdf function values at the lattice points... - - If (Iprtn .GE. 3) Then - Ip = - Iprtn - Else - Ip = Iprtn - EndIf - jtmp = ((Ip + NfMx)*(NT+1)+(jq-1))*(NX+1)+jx+1 - - Do it = 1, nqvec - - J1 = jtmp + it*(NX+1) - - If (Jx .Eq. 0) Then -C For the first 4 x points, interpolate x^2*f(x,Q) -C This applies to the two lowest bins JLx = 0, 1 -C We can not put the JLx.eq.1 bin into the "interrior" section -C (as we do for q), since Upd(J1) is undefined. - fij(1) = 0 - fij(2) = Upd(J1+1) * XV(1)**2 - fij(3) = Upd(J1+2) * XV(2)**2 - fij(4) = Upd(J1+3) * XV(3)**2 -C -C Use Polint which allows x to be anywhere w.r.t. the grid - - Call Polint (XVpow(0), Fij(1), 4, ss, Fx, Dfx) - - If (x .GT. 0D0) Fvec(it) = Fx / x**2 -C Pdf is undefined for x.eq.0 - ElseIf (JLx .Eq. Nx-1) Then -C This is the highest x bin: - - Call Polint (XVpow(Nx-3), Upd(J1), 4, ss, Fx, Dfx) - - Fvec(it) = Fx - - Else -C for all interior points, use Jon's in-line function -C This applied to (JLx.Ge.2 .and. JLx.Le.Nx-2) - sf2 = Upd(J1+1) - sf3 = Upd(J1+2) - - g1 = sf2*const1 - sf3*const2 - g4 = -sf2*const3 + sf3*const4 - - Fvec(it) = (const5*(Upd(J1)-g1) - & + const6*(Upd(J1+3)-g4) - & + sf2*sy3 - sf3*sy2) / s23 - - Endif - - enddo -C We now have the four values Fvec(1:4) -c interpolate in t... - - If (JLq .LE. 0) Then -C 1st Q-bin, as well as extrapolation to lower Q - Call Polint (TV(0), Fvec(1), 4, tt, ff, Dfq) - - ElseIf (JLq .GE. Nt-1) Then -C Last Q-bin, as well as extrapolation to higher Q - Call Polint (TV(Nt-3), Fvec(1), 4, tt, ff, Dfq) - Else -C Interrior bins : (JLq.GE.1 .and. JLq.LE.Nt-2) -C which include JLq.Eq.1 and JLq.Eq.Nt-2, since Upd is defined for -C the full range QV(0:Nt) (in contrast to XV) - tf2 = fvec(2) - tf3 = fvec(3) - - g1 = ( tf2*t13 - tf3*t12) / t23 - g4 = (-tf2*t34 + tf3*t24) / t23 - - h00 = ((t34*ty2-tmp2*ty3)*(fvec(1)-g1)/t12 - & + (tmp1*ty2-t12*ty3)*(fvec(4)-g4)/t34) - - ff = (h00*ty2*ty3/tdet + tf2*ty3 - tf3*ty2) / t23 - EndIf - - PartonX6 = ff - - Return -C ******************** - End diff --git a/gonsalves/README.md b/gonsalves/README.md deleted file mode 100644 index 5a84ad1..0000000 --- a/gonsalves/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Gonsalves, Pawlowski, Wai calculation of dsigma/dqt -Phys. Rev. D40, 2245 (1989) -Code from -http://www.physics.buffalo.edu/gonsalves/ewbqt/public.tar.gz diff --git a/gonsalves/alphas.f b/gonsalves/alphas.f deleted file mode 100644 index 4b8f004..0000000 --- a/gonsalves/alphas.f +++ /dev/null @@ -1,151 +0,0 @@ -* Extracted from the MRST demonstration program ggh.f - FUNCTION ALPHAS(SCALE,LAMBDA,IORDER) -C. -C. The QCD coupling used in the MRS analysis. -C. Automatically corrects for NF=3,4,5 with thresholds at m_Q. -C. The following parameters must be supplied: -C. SCALE = the QCD scale in GeV (real) -C. LAMBDA = the 4 flavour MSbar Lambda parameter in GeV (real) -C. IORDER = 0 for LO, 1 for NLO and 2 for NNLO -C. - IMPLICIT REAL*8 (A-H,O-Z) - REAL*8 LAMBDA - DATA TOL,QSCT,QSDT/5D-4,74D0,8.18D0/ - PI=4D0*DATAN(1D0) - IORD=IORDER - ITH=0 - FLAV=4D0 - AL=LAMBDA - AL2=LAMBDA*LAMBDA - QS=SCALE*SCALE - T=DLOG(QS/AL2) - TT=T -C. - qsctt=qsct/4. - qsdtt=qsdt/4. - if(qs.lt.0.5d0) then !! running stops below 0.5 - qs=0.5d0 - t=dlog(qs/al2) - tt=t - endif - - IF(QS.gt.QSCTT) GO TO 12 - IF(QS.lt.QSDTT) GO TO 312 - 11 CONTINUE - B0=11-2.*FLAV/3. - X1=4.*PI/B0 - 5 continue - IF(IORD.eq.0) then - ALPHAS=X1/T - ELSEIF(IORD.eq.1) then - B1=102.-38.*FLAV/3. - X2=B1/B0**2 - AS2=X1/T*(1.-X2*dlog(T)/T) - 95 AS=AS2 - F=-T+X1/AS-X2*dlog(X1/AS+X2) - FP=-X1/AS**2*(1.-X2/(X1/AS+X2)) - AS2=AS-F/FP - DEL=ABS(F/FP/AS) - IF((DEL-TOL).GT.0.) go to 95 - ALPHAS=AS2 - ELSEIF(IORD.eq.2) then - ALPHAS=qwikalf(t,2,flav) - ENDIF - IF(ITH.EQ.0) RETURN - GO TO (13,14,15) ITH - print *, 'here' - GO TO 5 - 12 ITH=1 - T=dlog(QSCTT/AL2) - GO TO 11 - 13 ALFQC4=ALPHAS - FLAV=5. - ITH=2 - GO TO 11 - 14 ALFQC5=ALPHAS - ITH=3 - T=TT - GO TO 11 - 15 ALFQS5=ALPHAS - ALFINV=1./ALFQS5+1./ALFQC4-1./ALFQC5 - ALPHAS=1./ALFINV - RETURN - - 311 CONTINUE - B0=11-2.*FLAV/3. - X1=4.*PI/B0 - IF(IORD.eq.0) then - ALPHAS=X1/T - ELSEIF(IORD.eq.1) then - B1=102.-38.*FLAV/3. - X2=B1/B0**2 - AS2=X1/T*(1.-X2*dlog(T)/T) - 35 AS=AS2 - F=-T+X1/AS-X2*dlog(X1/AS+X2) - FP=-X1/AS**2*(1.-X2/(X1/AS+X2)) - AS2=AS-F/FP - DEL=ABS(F/FP/AS) - IF((DEL-TOL).GT.0.) go to 35 - ELSEIF(IORD.eq.2) then - ALPHAS=qwikalf(t,2,flav) - ENDIF - IF(ITH.EQ.0) RETURN - GO TO (313,314,315) ITH - 312 ITH=1 - T=dlog(QSDTT/AL2) - GO TO 311 - 313 ALFQC4=ALPHAS - FLAV=3. - ITH=2 - GO TO 311 - 314 ALFQC3=ALPHAS - ITH=3 - T=TT - GO TO 311 - 315 ALFQS3=ALPHAS - ALFINV=1./ALFQS3+1./ALFQC4-1./ALFQC3 - ALPHAS=1./ALFINV - RETURN - END - function qwikalf(t,iord,flav) - implicit real*8(a-h,o-z) - dimension z3(6),z4(6),z5(6),zz3(6),zz4(6),zz5(6) - data z3/ -.161667E+01,0.954244E+01, - .0.768623E+01,0.101523E+00,-.360127E-02,0.457867E-04/ - data z4/ -.172239E+01,0.831185E+01, - .0.721463E+01,0.835531E-01,-.285436E-02,0.349129E-04/ - data z5/ -.872190E+00,0.572816E+01, - .0.716119E+01,0.195884E-01,-.300199E-03,0.151741E-05/ - data zz3/-.155611E+02,0.168406E+02, - .0.603014E+01,0.257682E+00,-.970217E-02,0.127628E-03/ - data zz4/-.106762E+02,0.118497E+02,0.664964E+01, - .0.112996E+00,-.317551E-02,0.302434E-04/ - data zz5/-.531860E+01,0.708503E+01,0.698352E+01, - .0.274170E-01,-.426894E-03,0.217591E-05/ - data pi/3.14159/ - nfm2=flav-2. - x=dsqrt(t) - x2=x*x - x3=x*x2 - x4=x*x3 - x5=x*x4 - go to (1,2) iord !!iord change!! - 1 go to (3,4,5) nfm2 - 3 y=z3(1)+z3(2)*x+z3(3)*x2+z3(4)*x3+z3(5)*x4+z3(6)*x5 - go to 10 - 4 y=z4(1)+z4(2)*x+z4(3)*x2+z4(4)*x3+z4(5)*x4+z4(6)*x5 - go to 10 - 5 y=z5(1)+z5(2)*x+z5(3)*x2+z5(4)*x3+z5(5)*x4+z5(6)*x5 - go to 10 - 2 go to (6,7,8) nfm2 - 6 y=zz3(1)+zz3(2)*x+zz3(3)*x2+zz3(4)*x3+zz3(5)*x4+zz3(6)*x5 - go to 10 - 7 y=zz4(1)+zz4(2)*x+zz4(3)*x2+zz4(4)*x3+zz4(5)*x4+zz4(6)*x5 - go to 10 - 8 y=zz5(1)+zz5(2)*x+zz5(3)*x2+zz5(4)*x3+zz5(5)*x4+zz5(6)*x5 - go to 10 - 10 qwikalf=4.*pi/y - return - end - - diff --git a/gonsalves/cteq.f b/gonsalves/cteq.f deleted file mode 100644 index d25549d..0000000 --- a/gonsalves/cteq.f +++ /dev/null @@ -1,25 +0,0 @@ -* CTEQ Parton Densities - SUBROUTINE cteq(nset,x,qsq,pden) - IMPLICIT NONE - INTEGER nset,mode,i - DOUBLE PRECISION x,qsq,pden(-6:6) - DOUBLE PRECISION q,upv,dnv,usea,dsea,str,chm,bot,glu - DOUBLE PRECISION Ctq6Pdf - EXTERNAL Ctq6Pdf - - q=dsqrt(qsq) - IF (nset.EQ.1) THEN - mode=1 - CALL SetCtq6(mode) - DO i=-5,5 - pden(i) = Ctq6Pdf(i,x,q) - ENDDO - pden(6) = 0d0 - pden(-6) = 0d0 - ELSE - PRINT *,' bad CTEQ mode number',nset - STOP - ENDIF - - RETURN - END diff --git a/gonsalves/dat.tar.gz b/gonsalves/dat.tar.gz deleted file mode 100644 index 6b69f83..0000000 Binary files a/gonsalves/dat.tar.gz and /dev/null differ diff --git a/gonsalves/dopden.f b/gonsalves/dopden.f deleted file mode 100644 index c308c83..0000000 --- a/gonsalves/dopden.f +++ /dev/null @@ -1,206 +0,0 @@ -C----------------------------------------------------------------------- -C Duke-Owens' Q**2 dependent parton densities -C Phys. Rev. D 30, 49 (1984) -C - SUBROUTINE dopden (nset,x,qsq,pden) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION pden(-6:6) - -C--- Q for start of evolution - q0=2. - -C--- The output distributions for the proton are -C pden(0) = gluon -C pden(1) = valence up quark + up sea -C pden(2) = valence down quark + down sea -C pden(3) = strange sea -C pden(4) = charm sea -C pden(5) = bottom sea -C pden(6) = top sea -C pden(-1) = anti-up sea -C pden(-2) = anti-down sea -C pden(-3) = anti-strange sea -C pden(-4) = anti-charm sea -C pden(-5) = anti-bottom sea -C pden(-6) = anti-top sea - - IF (nset.LT.1.OR.nset.GT.2) THEN - PRINT *,'Bad Duke Owens Set ',nset - STOP - ENDIF - GOTO (1,2) nset -1 CONTINUE -C--- nset = 1 : set 1 Lambda = 0.2 GeV/c - - xlambd=0.2 - s=dlog(qsq/xlambd**2) - s=s/(2.*dlog(q0/xlambd)) - s=dlog(s) - -C valence quark parameters - - eta1=0.419+0.004*s-0.007*s**2 - eta2=3.46+0.724*s-0.066*s**2 - gamud=4.40-4.86*s+1.33*s**2 - eta3=0.763-0.237*s+0.026*s**2 - eta4=4.00+0.627*s-0.019*s**2 - gamd=-0.421*s+0.033*s**2 - -C up-down-strange sea quark parameters - - saa=1.265-1.132*s+0.293*s**2 - sa=-0.372*s-0.029*s**2 - sb=8.05+1.59*s-0.153*s**2 - salp=6.31*s-0.273*s**2 - sbet=-10.5*s-3.17*s**2 - sgam=14.7*s+9.80*s**2 - -C charmed quark parameters - - chaa=0.135*s-0.075*s**2 - cha=-0.036-0.222*s-0.058*s**2 - chb=6.35+3.26*s-0.909*s**2 - chalp=-3.03*s+1.50*s**2 - chbet=17.4*s-11.3*s**2 - chgam=-17.9*s+15.6*s**2 - -C gluon parameters - - glaa=1.56-1.71*s+0.638*s**2 - gla=-0.949*s+0.325*s**2 - glb=6.0+1.44*s-1.05*s**2 - glalp=9.0-7.19*s+0.255*s**2 - glbet=-16.5*s+10.9*s**2 - glgam=15.3*s-10.1*s**2 - - GOTO 3 - -2 CONTINUE -C--- nset = 2 : set 2 Lambda = 0.4 GeV/c - - xlambd=0.4 - s=dlog(qsq/xlambd**2) - s=s/(2.*dlog(q0/xlambd)) - s=dlog(s) - -C valence quark parameters - - eta1=0.374+0.014*s - eta2=3.33+0.753*s-0.076*s**2 - gamud=6.03-6.22*s+1.56*s**2 - eta3=0.761-0.232*s+0.023*s**2 - eta4=3.83+0.627*s-0.019*s**2 - gamd=-0.418*s+0.036*s**2 - -C up-down-strange sea quark parameters - - saa=1.67-1.92*s+0.582*s**2 - sa=-0.273*s-0.164*s**2 - sb=9.15+0.530*s-0.763*s**2 - salp=15.7*s-2.83*s**2 - sbet=-101.*s+44.7*s**2 - sgam=223.*s-117.*s**2 - -C charmed quark parameters - - chaa=0.067*s-0.031*s**2 - cha=-0.120-0.233*s-0.023*s**2 - chb=3.51+3.66*s-0.453*s**2 - chalp=-0.474*s+0.358*s**2 - chbet=9.50*s-5.43*s**2 - chgam=-16.6*s+15.5*s**2 - -C gluon parameters - - glaa=0.879-0.971*s+0.434*s**2 - gla=-1.16*s+0.476*s**2 - glb=4.0+1.23*s-0.254*s**2 - glalp=9.0-5.64*s-0.817*s**2 - glbet=-7.54*s+5.50*s**2 - glgam=-0.596*s+0.126*s**2 - -3 CONTINUE - -C gluon density - - xglu=glaa*x**gla*(1.-x)**glb*(1.+glalp*x+glbet*x**2+glgam*x**3) - pden(0)=xglu/x - -C valence quark densities - - xnud=3./beta(eta1,eta2+1.) - xnud=xnud/(1.+gamud*eta1/(eta1+eta2+1.)) - xnd=1./beta(eta3,eta4+1.) - xnd=xnd/(1.+gamd*eta3/(eta3+eta4+1.)) - - xuvdv=xnud*x**eta1*(1.-x)**eta2*(1.+gamud*x) - xdv=xnd*x**eta3*(1.-x)**eta4*(1.+gamd*x) - pden(1)=(xuvdv-xdv)/x - pden(2)=xdv/x - -C up-down-strange sea quark densities - - xsea=saa*x**sa*(1.-x)**sb*(1.+salp*x+sbet*x**2+sgam*x**3) - pden(-1)=xsea/x/6.0 - pden(-2)=pden(3) - pden(-3)=pden(3) - -C charmed quark density - - xchm=chaa*x**cha*(1.-x)**chb*(1.+chalp*x+chbet*x**2+chgam*x**3) - pden(-4)=xchm/x - -C--- top and bottom are not implemented - return 0 - pden(-5)=0. - pden(-6)=0. - -C--- rearrange - pden(1)=pden(1)+pden(-1) - pden(2)=pden(2)+pden(-2) - do i=3,6 - pden(i)=pden(-i) - enddo - - RETURN - END -C----------------------------------------------------------------------- -C Logarithm of the gamma function - numerical recipes -C - DOUBLE PRECISION FUNCTION gammln (xx) -C--- Routine supposed to be accurate for xx > 1. - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION cof(6) - DATA cof,stp /76.18009173d0,-86.50532033d0,24.01409822d0, - & -1.231739516d0,.120858003d-2,-.536382d-5,2.50662827465d0/ - DATA half,one,fpf /0.5d0,1.0d0,5.5d0/ - x=xx-one - tmp=x+fpf - tmp=(x+half)*dlog(tmp)-tmp - ser=one - DO 11 j=1,6 - x=x+one - ser=ser+cof(j)/x -11 CONTINUE - gammln=tmp+dlog(stp*ser) - RETURN - END -C----------------------------------------------------------------------- -C The beta function : both arguments positive -C - DOUBLE PRECISION FUNCTION beta (xx,yy) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DATA one /1.0d0/ - x=xx - y=yy - IF (xx.LT.one) x=x+one - IF (yy.LT.one) y=y+one - beta=gammln(x)+gammln(y)-gammln(x+y) - beta=dexp(beta) - IF (xx.LT.one) THEN - beta=beta*(one+yy/xx) - IF (yy.LT.one) beta=beta*(one+x/yy) - ELSE - IF (yy.LT.one) beta=beta*(one+xx/yy) - ENDIF - RETURN - END diff --git a/gonsalves/ehlq.f b/gonsalves/ehlq.f deleted file mode 100644 index 988ebb8..0000000 --- a/gonsalves/ehlq.f +++ /dev/null @@ -1,522 +0,0 @@ -C----------------------------------------------------------------------- - SUBROUTINE ehlq (mode,x,qsq,pden) - IMPLICIT NONE - INTEGER mode - DOUBLE PRECISION x,qsq,pden(-6:6) - DOUBLE PRECISION q,upv,dnv,sea,str,chm,bot,top,glu - - q=dsqrt(qsq) - IF (mode.EQ.1) THEN - CALL sfehlq1(x,q,upv,dnv,sea,str,chm,bot,top,glu) - ELSEIF (mode.EQ.2) THEN - CALL sfehlq2(x,q,upv,dnv,sea,str,chm,bot,top,glu) - ELSE - PRINT *,' bad EHLQ mode number' - STOP - ENDIF - pden(0) = glu/x - pden(1) = (upv+sea)/x - pden(-1) = sea/x - pden(2) = (dnv+sea)/x - pden(-2) = sea/x - pden(3) = str/x - pden(-3) = pden(3) - pden(4) = chm/x - pden(-4) = pden(4) - pden(5) = bot/x - pden(-5) = pden(5) - pden(6) = top - pden(-6) = pden(6) - - RETURN - END -C----------------------------------------------------------------------- -* $Id: sfehlq1.F,v 1.1.1.2 1996/10/30 08:29:46 cernlib Exp $ -* -* $Log: sfehlq1.F,v $ -* Revision 1.1.1.2 1996/10/30 08:29:46 cernlib -* Version 7.04 -* -* Revision 1.1.1.1 1996/04/12 15:29:35 plothow -* Version 7.01 -* -* -* #include "pdf/pilot.h" -C----------------------------------------------------------------------- - SUBROUTINE SFEHLQ1(DX,DSCALE,DUP,DDN,DSEA,DSTR,DCHM,DBOT,DTOP,DGL) -C ::::::: EHLQ SET 1 SUPERFAST DOUBLE PRECISION ::::::: -C -* #include "pdf/expdp.inc" - DOUBLE PRECISION - + DX,DSCALE,DUP,DDN,DSEA,DSTR,DCHM,DBOT,DTOP,DGL - PARAMETER (ALAM=0.2, Q02=5.0) -* #include "pdf/w50511.inc" - PARAMETER (BMAS=4.25,TMAS=178.1) - DIMENSION XQ(9),TX(6),TT(6),TS(6),NEHLQ(8),CEHLQ(6,6,2,8) -C -C...The following data lines are coefficients needed in the -C...Eichten, Hinchliffe, Lane, Quigg proton structure function -C...parametrizations, see below. -C...Powers of 1-x in different cases. - DATA NEHLQ/3,4,7,5,7,7,7,7/ -C...Expansion coefficients for up valence quark distribution. - DATA (((CEHLQ(IX,IT,NX,1),IX=1,6),IT=1,6),NX=1,2)/ - 1 7.677E-01,-2.087E-01,-3.303E-01,-2.517E-02,-1.570E-02,-1.000E-04, - 2-5.326E-01,-2.661E-01, 3.201E-01, 1.192E-01, 2.434E-02, 7.620E-03, - 3 2.162E-01, 1.881E-01,-8.375E-02,-6.515E-02,-1.743E-02,-5.040E-03, - 4-9.211E-02,-9.952E-02, 1.373E-02, 2.506E-02, 8.770E-03, 2.550E-03, - 5 3.670E-02, 4.409E-02, 9.600E-04,-7.960E-03,-3.420E-03,-1.050E-03, - 6-1.549E-02,-2.026E-02,-3.060E-03, 2.220E-03, 1.240E-03, 4.100E-04, - 1 2.395E-01, 2.905E-01, 9.778E-02, 2.149E-02, 3.440E-03, 5.000E-04, - 2 1.751E-02,-6.090E-03,-2.687E-02,-1.916E-02,-7.970E-03,-2.750E-03, - 3-5.760E-03,-5.040E-03, 1.080E-03, 2.490E-03, 1.530E-03, 7.500E-04, - 4 1.740E-03, 1.960E-03, 3.000E-04,-3.400E-04,-2.900E-04,-1.800E-04, - 5-5.300E-04,-6.400E-04,-1.700E-04, 4.000E-05, 6.000E-05, 4.000E-05, - 6 1.700E-04, 2.200E-04, 8.000E-05, 1.000E-05,-1.000E-05,-1.000E-05/ -C...Expansion coefficients for down valence quark distribution. - DATA (((CEHLQ(IX,IT,NX,2),IX=1,6),IT=1,6),NX=1,2)/ - 1 3.813E-01,-8.090E-02,-1.634E-01,-2.185E-02,-8.430E-03,-6.200E-04, - 2-2.948E-01,-1.435E-01, 1.665E-01, 6.638E-02, 1.473E-02, 4.080E-03, - 3 1.252E-01, 1.042E-01,-4.722E-02,-3.683E-02,-1.038E-02,-2.860E-03, - 4-5.478E-02,-5.678E-02, 8.900E-03, 1.484E-02, 5.340E-03, 1.520E-03, - 5 2.220E-02, 2.567E-02,-3.000E-05,-4.970E-03,-2.160E-03,-6.500E-04, - 6-9.530E-03,-1.204E-02,-1.510E-03, 1.510E-03, 8.300E-04, 2.700E-04, - 1 1.261E-01, 1.354E-01, 3.958E-02, 8.240E-03, 1.660E-03, 4.500E-04, - 2 3.890E-03,-1.159E-02,-1.625E-02,-9.610E-03,-3.710E-03,-1.260E-03, - 3-1.910E-03,-5.600E-04, 1.590E-03, 1.590E-03, 8.400E-04, 3.900E-04, - 4 6.400E-04, 4.900E-04,-1.500E-04,-2.900E-04,-1.800E-04,-1.000E-04, - 5-2.000E-04,-1.900E-04, 0.000E+00, 6.000E-05, 4.000E-05, 3.000E-05, - 6 7.000E-05, 8.000E-05, 2.000E-05,-1.000E-05,-1.000E-05,-1.000E-05/ -C...Expansion coefficients for up and down sea quark distributions. - DATA (((CEHLQ(IX,IT,NX,3),IX=1,6),IT=1,6),NX=1,2)/ - 1 6.870E-02,-6.861E-02, 2.973E-02,-5.400E-03, 3.780E-03,-9.700E-04, - 2-1.802E-02, 1.400E-04, 6.490E-03,-8.540E-03, 1.220E-03,-1.750E-03, - 3-4.650E-03, 1.480E-03,-5.930E-03, 6.000E-04,-1.030E-03,-8.000E-05, - 4 6.440E-03, 2.570E-03, 2.830E-03, 1.150E-03, 7.100E-04, 3.300E-04, - 5-3.930E-03,-2.540E-03,-1.160E-03,-7.700E-04,-3.600E-04,-1.900E-04, - 6 2.340E-03, 1.930E-03, 5.300E-04, 3.700E-04, 1.600E-04, 9.000E-05, - 1 1.014E+00,-1.106E+00, 3.374E-01,-7.444E-02, 8.850E-03,-8.700E-04, - 2 9.233E-01,-1.285E+00, 4.475E-01,-9.786E-02, 1.419E-02,-1.120E-03, - 3 4.888E-02,-1.271E-01, 8.606E-02,-2.608E-02, 4.780E-03,-6.000E-04, - 4-2.691E-02, 4.887E-02,-1.771E-02, 1.620E-03, 2.500E-04,-6.000E-05, - 5 7.040E-03,-1.113E-02, 1.590E-03, 7.000E-04,-2.000E-04, 0.000E+00, - 6-1.710E-03, 2.290E-03, 3.800E-04,-3.500E-04, 4.000E-05, 1.000E-05/ -C...Expansion coefficients for gluon distribution. - DATA (((CEHLQ(IX,IT,NX,4),IX=1,6),IT=1,6),NX=1,2)/ - 1 9.482E-01,-9.578E-01, 1.009E-01,-1.051E-01, 3.456E-02,-3.054E-02, - 2-9.627E-01, 5.379E-01, 3.368E-01,-9.525E-02, 1.488E-02,-2.051E-02, - 3 4.300E-01,-8.306E-02,-3.372E-01, 4.902E-02,-9.160E-03, 1.041E-02, - 4-1.925E-01,-1.790E-02, 2.183E-01, 7.490E-03, 4.140E-03,-1.860E-03, - 5 8.183E-02, 1.926E-02,-1.072E-01,-1.944E-02,-2.770E-03,-5.200E-04, - 6-3.884E-02,-1.234E-02, 5.410E-02, 1.879E-02, 3.350E-03, 1.040E-03, - 1 2.948E+01,-3.902E+01, 1.464E+01,-3.335E+00, 5.054E-01,-5.915E-02, - 2 2.559E+01,-3.955E+01, 1.661E+01,-4.299E+00, 6.904E-01,-8.243E-02, - 3-1.663E+00, 1.176E+00, 1.118E+00,-7.099E-01, 1.948E-01,-2.404E-02, - 4-2.168E-01, 8.170E-01,-7.169E-01, 1.851E-01,-1.924E-02,-3.250E-03, - 5 2.088E-01,-4.355E-01, 2.239E-01,-2.446E-02,-3.620E-03, 1.910E-03, - 6-9.097E-02, 1.601E-01,-5.681E-02,-2.500E-03, 2.580E-03,-4.700E-04/ -C...Expansion coefficients for strange sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,5),IX=1,6),IT=1,6),NX=1,2)/ - 1 4.968E-02,-4.173E-02, 2.102E-02,-3.270E-03, 3.240E-03,-6.700E-04, - 2-6.150E-03,-1.294E-02, 6.740E-03,-6.890E-03, 9.000E-04,-1.510E-03, - 3-8.580E-03, 5.050E-03,-4.900E-03,-1.600E-04,-9.400E-04,-1.500E-04, - 4 7.840E-03, 1.510E-03, 2.220E-03, 1.400E-03, 7.000E-04, 3.500E-04, - 5-4.410E-03,-2.220E-03,-8.900E-04,-8.500E-04,-3.600E-04,-2.000E-04, - 6 2.520E-03, 1.840E-03, 4.100E-04, 3.900E-04, 1.600E-04, 9.000E-05, - 1 9.235E-01,-1.085E+00, 3.464E-01,-7.210E-02, 9.140E-03,-9.100E-04, - 2 9.315E-01,-1.274E+00, 4.512E-01,-9.775E-02, 1.380E-02,-1.310E-03, - 3 4.739E-02,-1.296E-01, 8.482E-02,-2.642E-02, 4.760E-03,-5.700E-04, - 4-2.653E-02, 4.953E-02,-1.735E-02, 1.750E-03, 2.800E-04,-6.000E-05, - 5 6.940E-03,-1.132E-02, 1.480E-03, 6.500E-04,-2.100E-04, 0.000E+00, - 6-1.680E-03, 2.340E-03, 4.200E-04,-3.400E-04, 5.000E-05, 1.000E-05/ -C...Expansion coefficients for charm sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,6),IX=1,6),IT=1,6),NX=1,2)/ - 1 9.270E-03,-1.817E-02, 9.590E-03,-6.390E-03, 1.690E-03,-1.540E-03, - 2 5.710E-03,-1.188E-02, 6.090E-03,-4.650E-03, 1.240E-03,-1.310E-03, - 3-3.960E-03, 7.100E-03,-3.590E-03, 1.840E-03,-3.900E-04, 3.400E-04, - 4 1.120E-03,-1.960E-03, 1.120E-03,-4.800E-04, 1.000E-04,-4.000E-05, - 5 4.000E-05,-3.000E-05,-1.800E-04, 9.000E-05,-5.000E-05,-2.000E-05, - 6-4.200E-04, 7.300E-04,-1.600E-04, 5.000E-05, 5.000E-05, 5.000E-05, - 1 8.098E-01,-1.042E+00, 3.398E-01,-6.824E-02, 8.760E-03,-9.000E-04, - 2 8.961E-01,-1.217E+00, 4.339E-01,-9.287E-02, 1.304E-02,-1.290E-03, - 3 3.058E-02,-1.040E-01, 7.604E-02,-2.415E-02, 4.600E-03,-5.000E-04, - 4-2.451E-02, 4.432E-02,-1.651E-02, 1.430E-03, 1.200E-04,-1.000E-04, - 5 1.122E-02,-1.457E-02, 2.680E-03, 5.800E-04,-1.200E-04, 3.000E-05, - 6-7.730E-03, 7.330E-03,-7.600E-04,-2.400E-04, 1.000E-05, 0.000E+00/ -C...Expansion coefficients for bottom sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,7),IX=1,6),IT=1,6),NX=1,2)/ - 1 9.010E-03,-1.401E-02, 7.150E-03,-4.130E-03, 1.260E-03,-1.040E-03, - 2 6.280E-03,-9.320E-03, 4.780E-03,-2.890E-03, 9.100E-04,-8.200E-04, - 3-2.930E-03, 4.090E-03,-1.890E-03, 7.600E-04,-2.300E-04, 1.400E-04, - 4 3.900E-04,-1.200E-03, 4.400E-04,-2.500E-04, 2.000E-05,-2.000E-05, - 5 2.600E-04, 1.400E-04,-8.000E-05, 1.000E-04, 1.000E-05, 1.000E-05, - 6-2.600E-04, 3.200E-04, 1.000E-05,-1.000E-05, 1.000E-05,-1.000E-05, - 1 8.029E-01,-1.075E+00, 3.792E-01,-7.843E-02, 1.007E-02,-1.090E-03, - 2 7.903E-01,-1.099E+00, 4.153E-01,-9.301E-02, 1.317E-02,-1.410E-03, - 3-1.704E-02,-1.130E-02, 2.882E-02,-1.341E-02, 3.040E-03,-3.600E-04, - 4-7.200E-04, 7.230E-03,-5.160E-03, 1.080E-03,-5.000E-05,-4.000E-05, - 5 3.050E-03,-4.610E-03, 1.660E-03,-1.300E-04,-1.000E-05, 1.000E-05, - 6-4.360E-03, 5.230E-03,-1.610E-03, 2.000E-04,-2.000E-05, 0.000E+00/ -C...Expansion coefficients for top sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,8),IX=1,6),IT=1,6),NX=1,2)/ - 1 4.410E-03,-7.480E-03, 3.770E-03,-2.580E-03, 7.300E-04,-7.100E-04, - 2 3.840E-03,-6.050E-03, 3.030E-03,-2.030E-03, 5.800E-04,-5.900E-04, - 3-8.800E-04, 1.660E-03,-7.500E-04, 4.700E-04,-1.000E-04, 1.000E-04, - 4-8.000E-05,-1.500E-04, 1.200E-04,-9.000E-05, 3.000E-05, 0.000E+00, - 5 1.300E-04,-2.200E-04,-2.000E-05,-2.000E-05,-2.000E-05,-2.000E-05, - 6-7.000E-05, 1.900E-04,-4.000E-05, 2.000E-05, 0.000E+00, 0.000E+00, - 1 6.623E-01,-9.248E-01, 3.519E-01,-7.930E-02, 1.110E-02,-1.180E-03, - 2 6.380E-01,-9.062E-01, 3.582E-01,-8.479E-02, 1.265E-02,-1.390E-03, - 3-2.581E-02, 2.125E-02, 4.190E-03,-4.980E-03, 1.490E-03,-2.100E-04, - 4 7.100E-04, 5.300E-04,-1.270E-03, 3.900E-04,-5.000E-05,-1.000E-05, - 5 3.850E-03,-5.060E-03, 1.860E-03,-3.500E-04, 4.000E-05, 0.000E+00, - 6-3.530E-03, 4.460E-03,-1.500E-03, 2.700E-04,-3.000E-05, 0.000E+00/ -C -C -C...Proton structure functions from Eichten, Hinchliffe, Lane, Quigg. -C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1 -C -*...Set number of flavors - modify CERNLIB routine - NFL=4 - IF (DSCALE.GT.BMAS) NFL=5 - IF (DSCALE.GT.TMAS) NFL=6 -C...Determine Lamdba and x and t expansion variables. - X = DX - SCALE = DSCALE - KF = ABS(NFL) - Q2 =SCALE**2 - TMIN=LOG(Q02/ALAM**2) - TMAX=LOG(1E8/ALAM**2) - T=LOG(MAX(1.,Q2/ALAM**2)) - VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN))) - NX=1 - IF(X.LE.0.1) NX=2 - IF(NX.EQ.1) VX=(2.*X-1.1)/0.9 - IF(NX.EQ.2) VX=MAX(-1.,(2.*LOG(X)+11.51293)/6.90776) - CXS=1. - -C...Chebyshev polynomials for x and t expansion. - TX(1)=1. - TX(2)=VX - TX(3)=2.*VX**2-1. - TX(4)=4.*VX**3-3.*VX - TX(5)=8.*VX**4-8.*VX**2+1. - TX(6)=16.*VX**5-20.*VX**3+5.*VX - TT(1)=1. - TT(2)=VT - TT(3)=2.*VT**2-1. - TT(4)=4.*VT**3-3.*VT - TT(5)=8.*VT**4-8.*VT**2+1. - TT(6)=16.*VT**5-20.*VT**3+5.*VT - -C...Calculate structure functions. - DO 120 KFL=1,6 - XQSUM=0. - DO 110 IT=1,6 - DO 110 IX=1,6 - 110 XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL)*TX(IX)*TT(IT) - 120 XQ(KFL)=XQSUM*(1.-X)**NEHLQ(KFL)*CXS -C -C...Put into output variables - DUP = XQ(1) - DDN = XQ(2) - DSEA = XQ(3) - DGL = XQ(4) - DSTR = XQ(5) - DCHM = XQ(6) - DBOT = 0.D0 - DTOP = 0.D0 -C - IF (KF.GE.5) THEN -C -C...Special expansion for bottom (threshold effects). - BOT = 0. - TMIN=8.1905 - IF(T.LE.TMIN) GOTO 140 - VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN))) - TT(1)=1. - TT(2)=VT - TT(3)=2.*VT**2-1. - TT(4)=4.*VT**3-3.*VT - TT(5)=8.*VT**4-8.*VT**2+1. - TT(6)=16.*VT**5-20.*VT**3+5.*VT - XQSUM=0. - DO 130 IT=1,6 - DO 130 IX=1,6 - 130 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7)*TX(IX)*TT(IT) - BOT=XQSUM*(1.-X)**NEHLQ(7)*CXS - 140 CONTINUE - ENDIF - DBOT = BOT -C-- - IF (KF.GE.6) THEN -C -C...Special expansion for top (threshold effects). - TOP = 0. - TMIN=11.5528 - TMIN=TMIN+2.*LOG(TMAS/30.) - TMAX=TMAX+2.*LOG(TMAS/30.) - IF(T.LE.TMIN) GOTO 160 - VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN))) - TT(1)=1. - TT(2)=VT - TT(3)=2.*VT**2-1. - TT(4)=4.*VT**3-3.*VT - TT(5)=8.*VT**4-8.*VT**2+1. - TT(6)=16.*VT**5-20.*VT**3+5.*VT - XQSUM=0. - DO 150 IT=1,6 - DO 150 IX=1,6 - 150 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8)*TX(IX)*TT(IT) - TOP=XQSUM*(1.-X)**NEHLQ(8)*CXS - 160 CONTINUE - ENDIF - DTOP = TOP -C - RETURN - END -C----------------------------------------------------------------------- -* $Id: sfehlq2.F,v 1.1.1.2 1996/10/30 08:29:47 cernlib Exp $ -* -* $Log: sfehlq2.F,v $ -* Revision 1.1.1.2 1996/10/30 08:29:47 cernlib -* Version 7.04 -* -* Revision 1.1.1.1 1996/04/12 15:29:35 plothow -* Version 7.01 -* -* -* #include "pdf/pilot.h" -C----------------------------------------------------------------------- - SUBROUTINE SFEHLQ2(DX,DSCALE,DUP,DDN,DSEA,DSTR,DCHM,DBOT,DTOP,DGL) -C ::::::: EHLQ SET 2 SUPERFAST DOUBLE PRECISION ::::::: -C -* #include "pdf/expdp.inc" - DOUBLE PRECISION - + DX,DSCALE,DUP,DDN,DSEA,DSTR,DCHM,DBOT,DTOP,DGL - PARAMETER (ALAM=0.29, Q02=5.0) -* #include "pdf/w50511.inc" - PARAMETER (BMAS=4.25,TMAS=178.1) - DIMENSION XQ(9),TX(6),TT(6),TS(6),NEHLQ(8),CEHLQ(6,6,2,8) -C -C...The following data lines are coefficients needed in the -C...Eichten, Hinchliffe, Lane, Quigg proton structure function -C...parametrizations, see below. -C...Powers of 1-x in different cases. - DATA NEHLQ/3,4,7,6,7,7,7,7/ -C...Expansion coefficients for up valence quark distribution. - DATA (((CEHLQ(IX,IT,NX,1),IX=1,6),IT=1,6),NX=1,2)/ - 1 7.237E-01,-2.189E-01,-2.995E-01,-1.909E-02,-1.477E-02, 2.500E-04, - 2-5.314E-01,-2.425E-01, 3.283E-01, 1.119E-01, 2.223E-02, 7.070E-03, - 3 2.289E-01, 1.890E-01,-9.859E-02,-6.900E-02,-1.747E-02,-5.080E-03, - 4-1.041E-01,-1.084E-01, 2.108E-02, 2.975E-02, 9.830E-03, 2.830E-03, - 5 4.394E-02, 5.116E-02,-1.410E-03,-1.055E-02,-4.230E-03,-1.270E-03, - 6-1.991E-02,-2.539E-02,-2.780E-03, 3.430E-03, 1.720E-03, 5.500E-04, - 1 2.410E-01, 2.884E-01, 9.369E-02, 1.900E-02, 2.530E-03, 2.400E-04, - 2 1.765E-02,-9.220E-03,-3.037E-02,-2.085E-02,-8.440E-03,-2.810E-03, - 3-6.450E-03,-5.260E-03, 1.720E-03, 3.110E-03, 1.830E-03, 8.700E-04, - 4 2.120E-03, 2.320E-03, 2.600E-04,-4.900E-04,-3.900E-04,-2.300E-04, - 5-6.900E-04,-8.200E-04,-2.000E-04, 7.000E-05, 9.000E-05, 6.000E-05, - 6 2.400E-04, 3.100E-04, 1.100E-04, 0.000E+00,-2.000E-05,-2.000E-05/ -C...Expansion coefficients for down valence quark distribution. - DATA (((CEHLQ(IX,IT,NX,2),IX=1,6),IT=1,6),NX=1,2)/ - 1 3.578E-01,-8.622E-02,-1.480E-01,-1.840E-02,-7.820E-03,-4.500E-04, - 2-2.925E-01,-1.304E-01, 1.696E-01, 6.243E-02, 1.353E-02, 3.750E-03, - 3 1.318E-01, 1.041E-01,-5.486E-02,-3.872E-02,-1.038E-02,-2.850E-03, - 4-6.162E-02,-6.143E-02, 1.303E-02, 1.740E-02, 5.940E-03, 1.670E-03, - 5 2.643E-02, 2.957E-02,-1.490E-03,-6.450E-03,-2.630E-03,-7.700E-04, - 6-1.218E-02,-1.497E-02,-1.260E-03, 2.240E-03, 1.120E-03, 3.500E-04, - 1 1.263E-01, 1.334E-01, 3.732E-02, 7.070E-03, 1.260E-03, 3.400E-04, - 2 3.660E-03,-1.357E-02,-1.795E-02,-1.031E-02,-3.880E-03,-1.280E-03, - 3-2.100E-03,-3.600E-04, 2.050E-03, 1.920E-03, 9.800E-04, 4.400E-04, - 4 7.700E-04, 5.400E-04,-2.400E-04,-3.900E-04,-2.400E-04,-1.300E-04, - 5-2.600E-04,-2.300E-04, 2.000E-05, 9.000E-05, 6.000E-05, 4.000E-05, - 6 9.000E-05, 1.000E-04, 2.000E-05,-2.000E-05,-2.000E-05,-1.000E-05/ -C...Expansion coefficients for up and down sea quark distributions. - DATA (((CEHLQ(IX,IT,NX,3),IX=1,6),IT=1,6),NX=1,2)/ - 1 1.008E-01,-7.100E-02, 1.973E-02,-5.710E-03, 2.930E-03,-9.900E-04, - 2-5.271E-02,-1.823E-02, 1.792E-02,-6.580E-03, 1.750E-03,-1.550E-03, - 3 1.220E-02, 1.763E-02,-8.690E-03,-8.800E-04,-1.160E-03,-2.100E-04, - 4-1.190E-03,-7.180E-03, 2.360E-03, 1.890E-03, 7.700E-04, 4.100E-04, - 5-9.100E-04, 2.040E-03,-3.100E-04,-1.050E-03,-4.000E-04,-2.400E-04, - 6 1.190E-03,-1.700E-04,-2.000E-04, 4.200E-04, 1.700E-04, 1.000E-04, - 1 1.081E+00,-1.189E+00, 3.868E-01,-8.617E-02, 1.115E-02,-1.180E-03, - 2 9.917E-01,-1.396E+00, 4.998E-01,-1.159E-01, 1.674E-02,-1.720E-03, - 3 5.099E-02,-1.338E-01, 9.173E-02,-2.885E-02, 5.890E-03,-6.500E-04, - 4-3.178E-02, 5.703E-02,-2.070E-02, 2.440E-03, 1.100E-04,-9.000E-05, - 5 8.970E-03,-1.392E-02, 2.050E-03, 6.500E-04,-2.300E-04, 2.000E-05, - 6-2.340E-03, 3.010E-03, 5.000E-04,-3.900E-04, 6.000E-05, 1.000E-05/ -C...Expansion coefficients for gluon distribution. - DATA (((CEHLQ(IX,IT,NX,4),IX=1,6),IT=1,6),NX=1,2)/ - 1 2.367E+00, 4.453E-01, 3.660E-01, 9.467E-02, 1.341E-01, 1.661E-02, - 2-3.170E+00,-1.795E+00, 3.313E-02,-2.874E-01,-9.827E-02,-7.119E-02, - 3 1.823E+00, 1.457E+00,-2.465E-01, 3.739E-02, 6.090E-03, 1.814E-02, - 4-1.033E+00,-9.827E-01, 2.136E-01, 1.169E-01, 5.001E-02, 1.684E-02, - 5 5.133E-01, 5.259E-01,-1.173E-01,-1.139E-01,-4.988E-02,-2.021E-02, - 6-2.881E-01,-3.145E-01, 5.667E-02, 9.161E-02, 4.568E-02, 1.951E-02, - 1 3.036E+01,-4.062E+01, 1.578E+01,-3.699E+00, 6.020E-01,-7.031E-02, - 2 2.700E+01,-4.167E+01, 1.770E+01,-4.804E+00, 7.862E-01,-1.060E-01, - 3-1.909E+00, 1.357E+00, 1.127E+00,-7.181E-01, 2.232E-01,-2.481E-02, - 4-2.488E-01, 9.781E-01,-8.127E-01, 2.094E-01,-2.997E-02,-4.710E-03, - 5 2.506E-01,-5.427E-01, 2.672E-01,-3.103E-02,-1.800E-03, 2.870E-03, - 6-1.128E-01, 2.087E-01,-6.972E-02,-2.480E-03, 2.630E-03,-8.400E-04/ -C...Expansion coefficients for strange sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,5),IX=1,6),IT=1,6),NX=1,2)/ - 1 6.478E-02,-4.537E-02, 1.643E-02,-3.490E-03, 2.710E-03,-6.700E-04, - 2-2.223E-02,-2.126E-02, 1.247E-02,-6.290E-03, 1.120E-03,-1.440E-03, - 3-1.340E-03, 1.362E-02,-6.130E-03,-7.900E-04,-9.000E-04,-2.000E-04, - 4 5.080E-03,-3.610E-03, 1.700E-03, 1.830E-03, 6.800E-04, 4.000E-04, - 5-3.580E-03, 6.000E-05,-2.600E-04,-1.050E-03,-3.800E-04,-2.300E-04, - 6 2.420E-03, 9.300E-04,-1.000E-04, 4.500E-04, 1.700E-04, 1.100E-04, - 1 9.868E-01,-1.171E+00, 3.940E-01,-8.459E-02, 1.124E-02,-1.250E-03, - 2 1.001E+00,-1.383E+00, 5.044E-01,-1.152E-01, 1.658E-02,-1.830E-03, - 3 4.928E-02,-1.368E-01, 9.021E-02,-2.935E-02, 5.800E-03,-6.600E-04, - 4-3.133E-02, 5.785E-02,-2.023E-02, 2.630E-03, 1.600E-04,-8.000E-05, - 5 8.840E-03,-1.416E-02, 1.900E-03, 5.800E-04,-2.500E-04, 1.000E-05, - 6-2.300E-03, 3.080E-03, 5.500E-04,-3.700E-04, 7.000E-05, 1.000E-05/ -C...Expansion coefficients for charm sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,6),IX=1,6),IT=1,6),NX=1,2)/ - 1 9.980E-03,-1.945E-02, 1.055E-02,-6.870E-03, 1.860E-03,-1.560E-03, - 2 5.700E-03,-1.203E-02, 6.250E-03,-4.860E-03, 1.310E-03,-1.370E-03, - 3-4.490E-03, 7.990E-03,-4.170E-03, 2.050E-03,-4.400E-04, 3.300E-04, - 4 1.470E-03,-2.480E-03, 1.460E-03,-5.700E-04, 1.200E-04,-1.000E-05, - 5-9.000E-05, 1.500E-04,-3.200E-04, 1.200E-04,-6.000E-05,-4.000E-05, - 6-4.200E-04, 7.600E-04,-1.400E-04, 4.000E-05, 7.000E-05, 5.000E-05, - 1 8.698E-01,-1.131E+00, 3.836E-01,-8.111E-02, 1.048E-02,-1.300E-03, - 2 9.626E-01,-1.321E+00, 4.854E-01,-1.091E-01, 1.583E-02,-1.700E-03, - 3 3.057E-02,-1.088E-01, 8.022E-02,-2.676E-02, 5.590E-03,-5.600E-04, - 4-2.845E-02, 5.164E-02,-1.918E-02, 2.210E-03,-4.000E-05,-1.500E-04, - 5 1.311E-02,-1.751E-02, 3.310E-03, 5.100E-04,-1.200E-04, 5.000E-05, - 6-8.590E-03, 8.380E-03,-9.200E-04,-2.600E-04, 1.000E-05,-1.000E-05/ -C...Expansion coefficients for bottom sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,7),IX=1,6),IT=1,6),NX=1,2)/ - 1 8.980E-03,-1.459E-02, 7.510E-03,-4.410E-03, 1.310E-03,-1.070E-03, - 2 5.970E-03,-9.440E-03, 4.800E-03,-3.020E-03, 9.100E-04,-8.500E-04, - 3-3.050E-03, 4.440E-03,-2.100E-03, 8.500E-04,-2.400E-04, 1.400E-04, - 4 5.300E-04,-1.300E-03, 5.600E-04,-2.700E-04, 3.000E-05,-2.000E-05, - 5 2.000E-04, 1.400E-04,-1.100E-04, 1.000E-04, 0.000E+00, 0.000E+00, - 6-2.600E-04, 3.200E-04, 0.000E+00,-3.000E-05, 1.000E-05,-1.000E-05, - 1 8.672E-01,-1.174E+00, 4.265E-01,-9.252E-02, 1.244E-02,-1.460E-03, - 2 8.500E-01,-1.194E+00, 4.630E-01,-1.083E-01, 1.614E-02,-1.830E-03, - 3-2.241E-02,-5.630E-03, 2.815E-02,-1.425E-02, 3.520E-03,-4.300E-04, - 4-7.300E-04, 8.030E-03,-5.780E-03, 1.380E-03,-1.300E-04,-4.000E-05, - 5 3.460E-03,-5.380E-03, 1.960E-03,-2.100E-04, 1.000E-05, 1.000E-05, - 6-4.850E-03, 5.950E-03,-1.890E-03, 2.600E-04,-3.000E-05, 0.000E+00/ -C...Expansion coefficients for top sea quark distribution. - DATA (((CEHLQ(IX,IT,NX,8),IX=1,6),IT=1,6),NX=1,2)/ - 1 4.260E-03,-7.530E-03, 3.830E-03,-2.680E-03, 7.600E-04,-7.300E-04, - 2 3.640E-03,-6.050E-03, 3.030E-03,-2.090E-03, 5.900E-04,-6.000E-04, - 3-9.200E-04, 1.710E-03,-8.200E-04, 5.000E-04,-1.200E-04, 1.000E-04, - 4-5.000E-05,-1.600E-04, 1.300E-04,-9.000E-05, 3.000E-05, 0.000E+00, - 5 1.300E-04,-2.100E-04,-1.000E-05,-2.000E-05,-2.000E-05,-1.000E-05, - 6-8.000E-05, 1.800E-04,-5.000E-05, 2.000E-05, 0.000E+00, 0.000E+00, - 1 7.146E-01,-1.007E+00, 3.932E-01,-9.246E-02, 1.366E-02,-1.540E-03, - 2 6.856E-01,-9.828E-01, 3.977E-01,-9.795E-02, 1.540E-02,-1.790E-03, - 3-3.053E-02, 2.758E-02, 2.150E-03,-4.880E-03, 1.640E-03,-2.500E-04, - 4 9.200E-04, 4.200E-04,-1.340E-03, 4.600E-04,-8.000E-05,-1.000E-05, - 5 4.230E-03,-5.660E-03, 2.140E-03,-4.300E-04, 6.000E-05, 0.000E+00, - 6-3.890E-03, 5.000E-03,-1.740E-03, 3.300E-04,-4.000E-05, 0.000E+00/ -C -C -C...Proton structure functions from Eichten, Hinchliffe, Lane, Quigg. -C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1 -C -*...Set number of flavors - modify CERNLIB routine - NFL=4 - IF (DSCALE.GT.BMAS) NFL=5 - IF (DSCALE.GT.TMAS) NFL=6 -C...Determine Lamdba and x and t expansion variables. - X = DX - SCALE = DSCALE - KF = ABS(NFL) - Q2 =SCALE*SCALE - TMIN=LOG(Q02/ALAM**2) - TMAX=LOG(1E8/ALAM**2) - T=LOG(MAX(1.,Q2/ALAM**2)) - VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN))) - NX=1 - IF(X.LE.0.1) NX=2 - IF(NX.EQ.1) VX=(2.*X-1.1)/0.9 - IF(NX.EQ.2) VX=MAX(-1.,(2.*LOG(X)+11.51293)/6.90776) - CXS=1. - -C...Chebyshev polynomials for x and t expansion. - TX(1)=1. - TX(2)=VX - TX(3)=2.*VX**2-1. - TX(4)=4.*VX**3-3.*VX - TX(5)=8.*VX**4-8.*VX**2+1. - TX(6)=16.*VX**5-20.*VX**3+5.*VX - TT(1)=1. - TT(2)=VT - TT(3)=2.*VT**2-1. - TT(4)=4.*VT**3-3.*VT - TT(5)=8.*VT**4-8.*VT**2+1. - TT(6)=16.*VT**5-20.*VT**3+5.*VT - -C...Calculate structure functions. - DO 120 KFL=1,6 - XQSUM=0. - DO 110 IT=1,6 - DO 110 IX=1,6 - 110 XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL)*TX(IX)*TT(IT) - 120 XQ(KFL)=XQSUM*(1.-X)**NEHLQ(KFL)*CXS -C -C...Put into output variables - DUP = XQ(1) - DDN = XQ(2) - DSEA = XQ(3) - DGL = XQ(4) - DSTR = XQ(5) - DCHM = XQ(6) - DBOT = 0.D0 - DTOP = 0.D0 -C - IF (KF.GE.5) THEN -C -C...Special expansion for bottom (threshold effects). - BOT = 0. - TMIN=7.4474 - IF(T.LE.TMIN) GOTO 140 - VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN))) - TT(1)=1. - TT(2)=VT - TT(3)=2.*VT**2-1. - TT(4)=4.*VT**3-3.*VT - TT(5)=8.*VT**4-8.*VT**2+1. - TT(6)=16.*VT**5-20.*VT**3+5.*VT - XQSUM=0. - DO 130 IT=1,6 - DO 130 IX=1,6 - 130 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7)*TX(IX)*TT(IT) - BOT=XQSUM*(1.-X)**NEHLQ(7)*CXS - 140 CONTINUE - ENDIF - DBOT = BOT -C-- - IF (KF.GE.6) THEN -C -C...Special expansion for top (threshold effects). - TOP = 0. - TMIN=10.8097 - TMIN=TMIN+2.*LOG(TMAS/30.) - TMAX=TMAX+2.*LOG(TMAS/30.) - IF(T.LE.TMIN) GOTO 160 - VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN))) - TT(1)=1. - TT(2)=VT - TT(3)=2.*VT**2-1. - TT(4)=4.*VT**3-3.*VT - TT(5)=8.*VT**4-8.*VT**2+1. - TT(6)=16.*VT**5-20.*VT**3+5.*VT - XQSUM=0. - DO 150 IT=1,6 - DO 150 IX=1,6 - 150 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8)*TX(IX)*TT(IT) - TOP=XQSUM*(1.-X)**NEHLQ(8)*CXS - 160 CONTINUE - ENDIF - DTOP = TOP -C - RETURN - END diff --git a/gonsalves/mrs.f b/gonsalves/mrs.f deleted file mode 100644 index 2bfa9e3..0000000 --- a/gonsalves/mrs.f +++ /dev/null @@ -1,459 +0,0 @@ -C----------------------------------------------------------------------- -C Martin-Roberts-Stirling Parton Distributions -C - SUBROUTINE mrs (nset,x,qsq,pden) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION pden(-6:6) - scale = dsqrt(qsq) - mode = nset - IF (mode.LE.3) THEN - CALL mrs123 (x,scale,mode,upv,dnv,sea,str,chm,bot,glu) - ELSEIF (mode.EQ.4.OR.mode.EQ.5) THEN - CALL mrseb (x,scale,mode,upv,dnv,sea,str,chm,bot,glu) - ELSE - PRINT *,'Bad MRS mode ',nset - STOP - ENDIF - pden(0) = glu/x - pden(1) = (upv+sea)/x - pden(2) = (dnv+sea)/x - pden(-1) = sea/x - pden(-2) = pden(-1) - pden(3) = str/x - pden(-3) = pden(3) - pden(4) = chm/x - pden(-4) = pden(4) - pden(5) = bot/x - pden(-5) = pden(5) - pden(6) = 0d0 - pden(-6) = pden(6) - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE MRS123(X,SCALE,MODE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C***************************************************************C -C C -C MODE 1 CORRESPONDS TO C -C MARTIN, ROBERTS, STIRLING (SOFT GLUE) WITH LAMBDA=.107 GEV C -C C -C MODE 2 CORRESPONDS TO C -C MARTIN, ROBERTS, STIRLING (HARD GLUE) WITH LAMBDA=.250 GEV C -C C -C MODE 3 CORRESPONDS TO C -C MARTIN, ROBERTS, STIRLING (1/RTX GLUE) WITH LAMBDA=.178 GEV C -C C -C -*- C -C C -C (NOTE THAT X TIMES THE PARTON DISTRIBUTION FUNCTION C -C IS RETURNED I.E. G(X) = GLU/X ETC, AND THAT "SEA" C -C IS THE LIGHT QUARK SEA I.E. UBAR(X)=DBAR(X)= ... C -C = SEA/X FOR A PROTON. IF IN DOUBT, CHECK THE C -C MOMENTUM SUM RULE! NOTE ALSO THAT SCALE=Q IN GEV) C -C C -C -*- C -C C -C (THE RANGE OF APPLICABILITY IS CURRENTLY: C -C 10**-4 < X < 1 AND 5 < Q**2 < 1.31 * 10**6 C -C HIGHER Q**2 VALUES CAN BE SUPPLIED ON REQUEST C -C - PROBLEMS, COMMENTS ETC TO SRG$T3@GEN C -C C -C C -C***************************************************************C - IMPLICIT REAL*8(A-H,O-Z) - IF(MODE.EQ.1) CALL STRUC1(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) - IF(MODE.EQ.2) CALL STRUC2(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) - IF(MODE.EQ.3) CALL STRUC3(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) - RETURN - END -C - SUBROUTINE STRUC1(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C :::::::::::: MARTIN ROBERTS STIRLING :::::SOFT GLUE::::107 MEV:::: - IMPLICIT REAL*8(A-H,O-Z) - DIMENSION F(6,42,19),G(6),XX(42),N0(6) - SAVE - DATA XX/1.D-4,2.D-4,4.D-4,6.D-4,8.D-4, - . 1.D-3,2.D-3,4.D-3,6.D-3,8.D-3, - . 1.D-2,2.D-2,4.D-2,6.D-2,8.D-2, - . .1D0,.125D0,.15D0,.175D0,.2D0,.225D0,.25D0,.275D0, - . .3D0,.325D0,.35D0,.375D0,.4D0,.425D0,.45D0,.475D0, - . .5D0,.525D0,.55D0,.575D0,.6D0,.65D0,.7D0,.75D0, - . .8D0,.9D0,1.D0/ - DATA XMIN,XMAX,QSQMIN,QSQMAX/1.D-4,1.D0,5.D0,1310720.D0/ - DATA N0/2,5,4,5,0,0/ - DATA INIT/0/ - IF(INIT.NE.0) GOTO 10 - OPEN(UNIT=31,FILE='mrs1.dat' - & ,STATUS='OLD') !,READONLY) - READ(31,*) - INIT=1 - DO 20 N=1,41 - DO 20 M=1,19 - READ(31,50)F(1,N,M),F(2,N,M),F(3,N,M),F(4,N,M),F(5,N,M),F(6,N,M) - DO 25 I=1,6 - 25 F(I,N,M)=F(I,N,M)/(1.D0-XX(N))**N0(I) - 20 CONTINUE - DO 30 J=1,15 - XX(J)=DLOG10(XX(J))+1.1D0 - DO 30 I=1,5 - DO 30 K=1,19 - 30 F(I,J,K)=DLOG(F(I,J,K))*F(I,16,K)/DLOG(F(I,16,K)) - 50 FORMAT(6F10.5) - DO 40 I=1,6 - DO 40 M=1,19 - 40 F(I,42,M)=0.D0 - CLOSE(31) - 10 CONTINUE - IF(X.LT.XMIN) X=XMIN - IF(X.GT.XMAX) X=XMAX - QSQ=SCALE**2 - IF(QSQ.LT.QSQMIN) QSQ=QSQMIN - IF(QSQ.GT.QSQMAX) QSQ=QSQMAX - XXX=X - IF(X.LT.1.D-1) XXX=DLOG10(X)+1.1D0 - N=0 - 70 N=N+1 - IF(XXX.GT.XX(N+1)) GOTO 70 - A=(XXX-XX(N))/(XX(N+1)-XX(N)) - RM=DLOG(QSQ/QSQMIN)/DLOG(2.D0) - B=RM-DINT(RM) - M=1+IDINT(RM) - DO 60 I=1,6 - G(I)= (1.D0-A)*(1.D0-B)*F(I,N,M)+(1.D0-A)*B*F(I,N,M+1) - . + A*(1.D0-B)*F(I,N+1,M) + A*B*F(I,N+1,M+1) - IF(N.GE.16) GOTO 65 - IF(I.EQ.6) GOTO 65 - FAC=(1.D0-B)*F(I,16,M)+B*F(I,16,M+1) - - G(I)=FAC**(G(I)/FAC) - 65 CONTINUE - G(I)=G(I)*(1.D0-X)**N0(I) - 60 CONTINUE - UPV=G(1) - DNV=G(2) - SEA=G(4) - STR=G(4) - CHM=G(5) - GLU=G(3) - BOT=G(6) - RETURN - END - SUBROUTINE STRUC2(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C :::::::::::: MARTIN ROBERTS STIRLING :::::HARD GLUE::::250 MEV:::: - IMPLICIT REAL*8(A-H,O-Z) - DIMENSION F(6,42,19),G(6),XX(42),N0(6) - SAVE - DATA XX/1.D-4,2.D-4,4.D-4,6.D-4,8.D-4, - . 1.D-3,2.D-3,4.D-3,6.D-3,8.D-3, - . 1.D-2,2.D-2,4.D-2,6.D-2,8.D-2, - . .1D0,.125D0,.15D0,.175D0,.2D0,.225D0,.25D0,.275D0, - . .3D0,.325D0,.35D0,.375D0,.4D0,.425D0,.45D0,.475D0, - . .5D0,.525D0,.55D0,.575D0,.6D0,.65D0,.7D0,.75D0, - . .8D0,.9D0,1.D0/ - DATA XMIN,XMAX,QSQMIN,QSQMAX/1.D-4,1.D0,5.D0,1310720.D0/ - DATA N0/2,5,4,5,0,0/ - DATA INIT/0/ - IF(INIT.NE.0) GOTO 10 - OPEN(UNIT=32,FILE='mrs2.dat' - & ,STATUS='OLD') !,READONLY) - READ(32,*) - INIT=1 - DO 20 N=1,41 - DO 20 M=1,19 - READ(32,50)F(1,N,M),F(2,N,M),F(3,N,M),F(4,N,M),F(5,N,M),F(6,N,M) - DO 25 I=1,6 - 25 F(I,N,M)=F(I,N,M)/(1.D0-XX(N))**N0(I) - 20 CONTINUE - DO 30 J=1,15 - XX(J)=DLOG10(XX(J))+1.1D0 - DO 30 I=1,5 - DO 30 K=1,19 - 30 F(I,J,K)=DLOG(F(I,J,K))*F(I,16,K)/DLOG(F(I,16,K)) - 50 FORMAT(6F10.5) - DO 40 I=1,6 - DO 40 M=1,19 - 40 F(I,42,M)=0.D0 - CLOSE(32) - 10 CONTINUE - IF(X.LT.XMIN) X=XMIN - IF(X.GT.XMAX) X=XMAX - QSQ=SCALE**2 - IF(QSQ.LT.QSQMIN) QSQ=QSQMIN - IF(QSQ.GT.QSQMAX) QSQ=QSQMAX - XXX=X - IF(X.LT.1.D-1) XXX=DLOG10(X)+1.1D0 - N=0 - 70 N=N+1 - IF(XXX.GT.XX(N+1)) GOTO 70 - A=(XXX-XX(N))/(XX(N+1)-XX(N)) - RM=DLOG(QSQ/QSQMIN)/DLOG(2.D0) - B=RM-DINT(RM) - M=1+IDINT(RM) - DO 60 I=1,6 - G(I)= (1.D0-A)*(1.D0-B)*F(I,N,M)+(1.D0-A)*B*F(I,N,M+1) - . + A*(1.D0-B)*F(I,N+1,M) + A*B*F(I,N+1,M+1) - IF(N.GE.16) GOTO 65 - IF(I.EQ.6) GOTO 65 - FAC=(1.D0-B)*F(I,16,M)+B*F(I,16,M+1) - - G(I)=FAC**(G(I)/FAC) - 65 CONTINUE - G(I)=G(I)*(1.D0-X)**N0(I) - 60 CONTINUE - UPV=G(1) - DNV=G(2) - SEA=G(4) - STR=G(4) - CHM=G(5) - GLU=G(3) - BOT=G(6) - RETURN - END - SUBROUTINE STRUC3(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C :::::::::::: MARTIN ROBERTS STIRLING :::::1/RX GLUE::::178 MEV:::: - IMPLICIT REAL*8(A-H,O-Z) - DIMENSION F(6,42,19),G(6),XX(42),N0(6) - SAVE - DATA XX/1.D-4,2.D-4,4.D-4,6.D-4,8.D-4, - . 1.D-3,2.D-3,4.D-3,6.D-3,8.D-3, - . 1.D-2,2.D-2,4.D-2,6.D-2,8.D-2, - . .1D0,.125D0,.15D0,.175D0,.2D0,.225D0,.25D0,.275D0, - . .3D0,.325D0,.35D0,.375D0,.4D0,.425D0,.45D0,.475D0, - . .5D0,.525D0,.55D0,.575D0,.6D0,.65D0,.7D0,.75D0, - . .8D0,.9D0,1.D0/ - DATA XMIN,XMAX,QSQMIN,QSQMAX/1.D-4,1.D0,5.D0,1310720.D0/ - DATA N0/3,4,5,5,0,0/ - DATA INIT/0/ - IF(INIT.NE.0) GOTO 10 - OPEN(UNIT=33,FILE='mrs3.dat' - & ,STATUS='OLD') !,READONLY) - READ(33,*) - INIT=1 - DO 20 N=1,41 - DO 20 M=1,19 - READ(33,50)F(1,N,M),F(2,N,M),F(3,N,M),F(4,N,M),F(5,N,M),F(6,N,M) - DO 25 I=1,6 - 25 F(I,N,M)=F(I,N,M)/(1.D0-XX(N))**N0(I) - 20 CONTINUE - DO 30 J=1,15 - XX(J)=DLOG10(XX(J))+1.1D0 - DO 30 I=1,5 - DO 30 K=1,19 - 30 F(I,J,K)=DLOG(F(I,J,K))*F(I,16,K)/DLOG(F(I,16,K)) - 50 FORMAT(6F10.5) - DO 40 I=1,6 - DO 40 M=1,19 - 40 F(I,42,M)=0.D0 - CLOSE(33) - 10 CONTINUE - IF(X.LT.XMIN) X=XMIN - IF(X.GT.XMAX) X=XMAX - QSQ=SCALE**2 - IF(QSQ.LT.QSQMIN) QSQ=QSQMIN - IF(QSQ.GT.QSQMAX) QSQ=QSQMAX - XXX=X - IF(X.LT.1.D-1) XXX=DLOG10(X)+1.1D0 - N=0 - 70 N=N+1 - IF(XXX.GT.XX(N+1)) GOTO 70 - A=(XXX-XX(N))/(XX(N+1)-XX(N)) - RM=DLOG(QSQ/QSQMIN)/DLOG(2.D0) - B=RM-DINT(RM) - M=1+IDINT(RM) - DO 60 I=1,6 - G(I)= (1.D0-A)*(1.D0-B)*F(I,N,M)+(1.D0-A)*B*F(I,N,M+1) - . + A*(1.D0-B)*F(I,N+1,M) + A*B*F(I,N+1,M+1) - IF(N.GE.16) GOTO 65 - IF(I.EQ.6) GOTO 65 - FAC=(1.D0-B)*F(I,16,M)+B*F(I,16,M+1) - - G(I)=FAC**(G(I)/FAC) - 65 CONTINUE - G(I)=G(I)*(1.D0-X)**N0(I) - 60 CONTINUE - UPV=G(1) - DNV=G(2) - SEA=G(4) - STR=G(4) - CHM=G(5) - GLU=G(3) - BOT=G(6) - RETURN - END -C Received from J. Stirling February 1989 - SUBROUTINE MRSEB(X,SCALE,MODE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C***************************************************************C -C C -C C -C NEW VERSIONS !!!! JANUARY 1989 (AS DESCRIBED IN C -C "IMPROVED PARTON DISTRIBUTIONS ... " A.D. MARTIN, C -C R.G. ROBERTS AND W.J. STIRLING PREPRINT RAL-88-113 ) C -C C -C MODE 1 CORRESPONDS TO C -C MARTIN, ROBERTS, STIRLING (EMC FIT) WITH LAMBDA= 100 MEV C -C C -C MODE 2 CORRESPONDS TO C -C MARTIN, ROBERTS, STIRLING (BCDMS FIT) WITH LAMBDA= 200 MEV C -C C -C ( SOFT GLUE : X G(X,Q0) = A (1-X)**4.4 ) C -C C -C -*- C -C C -C (NOTE THAT X TIMES THE PARTON DISTRIBUTION FUNCTION C -C IS RETURNED I.E. G(X) = GLU/X ETC, AND THAT "SEA" C -C IS THE LIGHT QUARK SEA I.E. UBAR(X)=DBAR(X)= ... C -C = SEA/X FOR A PROTON. IF IN DOUBT, CHECK THE C -C MOMENTUM SUM RULE! NOTE ALSO THAT SCALE=Q IN GEV) C -C C -C -*- C -C C -C (THE RANGE OF APPLICABILITY IS CURRENTLY: C -C 10**-4 < X < 1 AND 5 < Q**2 < 1.31 * 10**6 C -C HIGHER Q**2 VALUES CAN BE SUPPLIED ON REQUEST C -C - PROBLEMS, COMMENTS ETC TO SRG$T3@GEN C -C C -C C -C***************************************************************C - IMPLICIT REAL*8(A-H,O-Z) - IF(MODE.EQ.4) CALL STRUCE(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) - IF(MODE.EQ.5) CALL STRUCB(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) - RETURN - END -C - SUBROUTINE STRUCE(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C :::::::::::: MARTIN ROBERTS STIRLING :::::SOFT GLUE:::: 91 MEV::: - IMPLICIT REAL*8(A-H,O-Z) - DIMENSION F(6,42,19),G(6),XX(42),N0(6) - DATA XX/1.D-4,2.D-4,4.D-4,6.D-4,8.D-4, - . 1.D-3,2.D-3,4.D-3,6.D-3,8.D-3, - . 1.D-2,2.D-2,4.D-2,6.D-2,8.D-2, - . .1D0,.125D0,.15D0,.175D0,.2D0,.225D0,.25D0,.275D0, - . .3D0,.325D0,.35D0,.375D0,.4D0,.425D0,.45D0,.475D0, - . .5D0,.525D0,.55D0,.575D0,.6D0,.65D0,.7D0,.75D0, - . .8D0,.9D0,1.D0/ - DATA XMIN,XMAX,QSQMIN,QSQMAX/1.D-4,1.D0,5.D0,1310720.D0/ - DATA N0/2,5,4,5,0,0/ - DATA INIT/0/ - IF(INIT.NE.0) GOTO 10 - OPEN(UNIT=34,FILE='mrse.dat' - & ,STATUS='OLD') !,READONLY) - READ(34,*) - INIT=1 - DO 20 N=1,41 - DO 20 M=1,19 - READ(34,50)F(1,N,M),F(2,N,M),F(3,N,M),F(4,N,M),F(5,N,M),F(6,N,M) - DO 25 I=1,6 - 25 F(I,N,M)=F(I,N,M)/(1.D0-XX(N))**N0(I) - 20 CONTINUE - DO 30 J=1,15 - XX(J)=DLOG10(XX(J))+1.1D0 - DO 30 I=1,5 - DO 30 K=1,19 - 30 F(I,J,K)=DLOG(F(I,J,K))*F(I,16,K)/DLOG(F(I,16,K)) - 50 FORMAT(6F10.5) - DO 40 I=1,6 - DO 40 M=1,19 - 40 F(I,42,M)=0.D0 - CLOSE (34) - 10 CONTINUE - IF(X.LT.XMIN) X=XMIN - IF(X.GT.XMAX) X=XMAX - QSQ=SCALE**2 - IF(QSQ.LT.QSQMIN) QSQ=QSQMIN - IF(QSQ.GT.QSQMAX) QSQ=QSQMAX - XXX=X - IF(X.LT.1.D-1) XXX=DLOG10(X)+1.1D0 - N=0 - 70 N=N+1 - IF(XXX.GT.XX(N+1)) GOTO 70 - A=(XXX-XX(N))/(XX(N+1)-XX(N)) - RM=DLOG(QSQ/QSQMIN)/DLOG(2.D0) - B=RM-DINT(RM) - M=1+IDINT(RM) - DO 60 I=1,6 - G(I)= (1.D0-A)*(1.D0-B)*F(I,N,M)+(1.D0-A)*B*F(I,N,M+1) - . + A*(1.D0-B)*F(I,N+1,M) + A*B*F(I,N+1,M+1) - IF(N.GE.16) GOTO 65 - IF(I.EQ.6) GOTO 65 - FAC=(1.D0-B)*F(I,16,M)+B*F(I,16,M+1) - G(I)=FAC**(G(I)/FAC) - 65 CONTINUE - G(I)=G(I)*(1.D0-X)**N0(I) - 60 CONTINUE - UPV=G(1) - DNV=G(2) - SEA=G(4) - STR=G(4) - CHM=G(5) - GLU=G(3) - BOT=G(6) - RETURN - END - SUBROUTINE STRUCB(X,SCALE,UPV,DNV,SEA,STR,CHM,BOT,GLU) -C :::::::::::: MARTIN ROBERTS STIRLING :::::SOFT GLUE::::228 MEV::: - IMPLICIT REAL*8(A-H,O-Z) - DIMENSION F(6,42,19),G(6),XX(42),N0(6) - DATA XX/1.D-4,2.D-4,4.D-4,6.D-4,8.D-4, - . 1.D-3,2.D-3,4.D-3,6.D-3,8.D-3, - . 1.D-2,2.D-2,4.D-2,6.D-2,8.D-2, - . .1D0,.125D0,.15D0,.175D0,.2D0,.225D0,.25D0,.275D0, - . .3D0,.325D0,.35D0,.375D0,.4D0,.425D0,.45D0,.475D0, - . .5D0,.525D0,.55D0,.575D0,.6D0,.65D0,.7D0,.75D0, - . .8D0,.9D0,1.D0/ - DATA XMIN,XMAX,QSQMIN,QSQMAX/1.D-4,1.D0,5.D0,1310720.D0/ - DATA N0/2,5,4,5,0,0/ - DATA INIT/0/ - IF(INIT.NE.0) GOTO 10 - OPEN(UNIT=35,FILE='mrsb.dat' - & ,STATUS='OLD') !,READONLY) - READ(35,*) - INIT=1 - DO 20 N=1,41 - DO 20 M=1,19 - READ(35,50)F(1,N,M),F(2,N,M),F(3,N,M),F(4,N,M),F(5,N,M),F(6,N,M) - DO 25 I=1,6 - 25 F(I,N,M)=F(I,N,M)/(1.D0-XX(N))**N0(I) - 20 CONTINUE - DO 30 J=1,15 - XX(J)=DLOG10(XX(J))+1.1D0 - DO 30 I=1,5 - DO 30 K=1,19 - 30 F(I,J,K)=DLOG(F(I,J,K))*F(I,16,K)/DLOG(F(I,16,K)) - 50 FORMAT(6F10.5) - DO 40 I=1,6 - DO 40 M=1,19 - 40 F(I,42,M)=0.D0 - CLOSE (35) - 10 CONTINUE - IF(X.LT.XMIN) X=XMIN - IF(X.GT.XMAX) X=XMAX - QSQ=SCALE**2 - IF(QSQ.LT.QSQMIN) QSQ=QSQMIN - IF(QSQ.GT.QSQMAX) QSQ=QSQMAX - XXX=X - IF(X.LT.1.D-1) XXX=DLOG10(X)+1.1D0 - N=0 - 70 N=N+1 - IF(XXX.GT.XX(N+1)) GOTO 70 - A=(XXX-XX(N))/(XX(N+1)-XX(N)) - RM=DLOG(QSQ/QSQMIN)/DLOG(2.D0) - B=RM-DINT(RM) - M=1+IDINT(RM) - DO 60 I=1,6 - G(I)= (1.D0-A)*(1.D0-B)*F(I,N,M)+(1.D0-A)*B*F(I,N,M+1) - . + A*(1.D0-B)*F(I,N+1,M) + A*B*F(I,N+1,M+1) - IF(N.GE.16) GOTO 65 - IF(I.EQ.6) GOTO 65 - FAC=(1.D0-B)*F(I,16,M)+B*F(I,16,M+1) - G(I)=FAC**(G(I)/FAC) - 65 CONTINUE - G(I)=G(I)*(1.D0-X)**N0(I) - 60 CONTINUE - UPV=G(1) - DNV=G(2) - SEA=G(4) - STR=G(4) - CHM=G(5) - GLU=G(3) - BOT=G(6) - RETURN - END diff --git a/gonsalves/mrst.f b/gonsalves/mrst.f deleted file mode 100644 index 364c408..0000000 --- a/gonsalves/mrst.f +++ /dev/null @@ -1,34 +0,0 @@ -* Martin Roberts Stirling Thorne Parton Densities - SUBROUTINE mrst(nset,x,qsq,pden) - IMPLICIT NONE - INTEGER nset,mode - DOUBLE PRECISION x,qsq,pden(-6:6) - DOUBLE PRECISION q,upv,dnv,usea,dsea,str,chm,bot,glu - - q=dsqrt(qsq) - IF (nset.EQ.0) THEN - mode = 1 - CALL mrstlo(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu) - ELSEIF (nset.EQ.1.OR.nset.EQ.2) THEN - mode=nset - CALL mrst2002(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu) - ELSE - PRINT *,' bad MRST mode number',nset - STOP - ENDIF - pden(0) = glu/x - pden(1) = (upv+usea)/x - pden(-1) = usea/x - pden(2) = (dnv+dsea)/x - pden(-2) = dsea/x - pden(3) = str/x - pden(-3) = pden(3) - pden(4) = chm/x - pden(-4) = pden(4) - pden(5) = bot/x - pden(-5) = pden(5) - pden(6) = 0d0 - pden(-6) = pden(6) - - RETURN - END diff --git a/gonsalves/mrst2001lo.f b/gonsalves/mrst2001lo.f deleted file mode 100644 index 7a162c5..0000000 --- a/gonsalves/mrst2001lo.f +++ /dev/null @@ -1,307 +0,0 @@ - subroutine mrstlo(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu) -C***************************************************************C -C C -C This is a package for the new MRST 2001 LO parton C -C distributions. C -C Reference: A.D. Martin, R.G. Roberts, W.J. Stirling and C -C R.S. Thorne, hep-ph/0201xxx C -C C -C There is 1 pdf set corresponding to mode = 1 C -C C -C Mode=1 gives the default set with Lambda(MSbar,nf=4) = 0.220 C -C corresponding to alpha_s(M_Z) of 0.130 C -C This set reads a grid whose first number is 0.02868 C -C C -C This subroutine uses an improved interpolation procedure C -C for extracting values of the pdf's from the grid C -C C -C Comments to : W.J.Stirling@durham.ac.uk C -C C -C***************************************************************C - implicit real*8(a-h,o-z) - data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ - q2=q*q - if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2 - if(x.lt.xmin.or.x.gt.xmax) print 98,x - if(mode.eq.1) then - call mrst1lo(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) - endif - 99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ','q2= ',e10.5) - 98 format(' WARNING: X VALUE IS OUT OF RANGE ','x= ',e10.5) - return - end - - subroutine mrst1lo(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) - implicit real*8(a-h,o-z) - parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26) - real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq), - .f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb) - real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4), - .cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4), - .ccc(nx,nqc,4,4),ccb(nx,nqb,4,4) - real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb) - data xx/1d-5,2d-5,4d-5,6d-5,8d-5, - . 1d-4,2d-4,4d-4,6d-4,8d-4, - . 1d-3,2d-3,4d-3,6d-3,8d-3, - . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, - . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, - . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, - . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, - . .8d0,.9d0,1d0/ - data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, - . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, - . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, - . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, - . 1.8d6,3.2d6,5.6d6,1d7/ - data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ - data init/0/ - save - xsave=x - q2save=qsq - if(init.ne.0) goto 10 - open(unit=33,file='lo2002.dat',status='old') - do 20 n=1,nx-1 - do 20 m=1,nq - read(33,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m), - . f5(n,m),f7(n,m),f6(n,m),f8(n,m) -c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea - 20 continue - do 40 m=1,nq - f1(nx,m)=0.d0 - f2(nx,m)=0.d0 - f3(nx,m)=0.d0 - f4(nx,m)=0.d0 - f5(nx,m)=0.d0 - f6(nx,m)=0.d0 - f7(nx,m)=0.d0 - f8(nx,m)=0.d0 - 40 continue - do n=1,nx - xxl(n)=dlog(xx(n)) - enddo - do m=1,nq - qql(m)=dlog(qq(m)) - enddo - - call jeppe1lo(nx,nq,xxl,qql,f1,cc1) - call jeppe1lo(nx,nq,xxl,qql,f2,cc2) - call jeppe1lo(nx,nq,xxl,qql,f3,cc3) - call jeppe1lo(nx,nq,xxl,qql,f4,cc4) - call jeppe1lo(nx,nq,xxl,qql,f6,cc6) - call jeppe1lo(nx,nq,xxl,qql,f8,cc8) - - emc2=2.045 - emb2=18.5 - - do 44 m=1,nqc - qqlc(m)=qql(m+nqc0) - do 44 n=1,nx - fc(n,m)=f5(n,m+nqc0) - 44 continue - qqlc(1)=dlog(emc2) - call jeppe1lo(nx,nqc,xxl,qqlc,fc,ccc) - - do 45 m=1,nqb - qqlb(m)=qql(m+nqb0) - do 45 n=1,nx - fb(n,m)=f7(n,m+nqb0) - 45 continue - qqlb(1)=dlog(emb2) - call jeppe1lo(nx,nqb,xxl,qqlb,fb,ccb) - - - init=1 - 10 continue - - xlog=dlog(x) - qsqlog=dlog(qsq) - - call jeppe2lo(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv) - call jeppe2lo(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv) - call jeppe2lo(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu) - call jeppe2lo(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea) - call jeppe2lo(xlog,qsqlog,nx,nq,xxl,qql,cc6,str) - call jeppe2lo(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea) - - chm=0.d0 - if(qsq.gt.emc2) then - call jeppe2lo(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm) - endif - - bot=0.d0 - if(qsq.gt.emb2) then - call jeppe2lo(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot) - endif - - x=xsave - qsq=q2save - return - 50 format(8f10.5) - end - -c subroutine jeppe1lo(nx,my,xx,yy,ff,cc) -c implicit real*8(a-h,o-z) -c dimension xx(nx),yy(my),ff(nx,my),ff1(nx,my),ff2(nx,my), -c xff12(nx,my),yy0(4),yy1(4),yy2(4),yy12(4),z(16),wt(16,16), -c xcl(16),cc(nx,my,4,4),iwt(16,16) - - subroutine jeppe1lo(nx,my,xx,yy,ff,cc) - implicit real*8(a-h,o-z) - PARAMETER(NNX=49,MMY=37) - dimension xx(nx),yy(my),ff(nx,my),ff1(NNX,MMY),ff2(NNX,MMY), - xff12(NNX,MMY),yy0(4),yy1(4),yy2(4),yy12(4),z(16),wt(16,16), - xcl(16),cc(nx,my,4,4),iwt(16,16) - - data iwt/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, - x -3,0,0,3,0,0,0,0,-2,0,0,-1,0,0,0,0, - x 2,0,0,-2,0,0,0,0,1,0,0,1,0,0,0,0, - x 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - x 0,0,0,0,-3,0,0,3,0,0,0,0,-2,0,0,-1, - x 0,0,0,0,2,0,0,-2,0,0,0,0,1,0,0,1, - x -3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0, - x 9,-9,9,-9,6,3,-3,-6,6,-6,-3,3,4,2,1,2, - x -6,6,-6,6,-4,-2,2,4,-3,3,3,-3,-2,-1,-1,-2, - x 2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0, - x -6,6,-6,6,-3,-3,3,3,-4,4,2,-2,-2,-2,-1,-1, - x 4,-4,4,-4,2,2,-2,-2,2,-2,-2,2,1,1,1,1/ - - - do 42 m=1,my - dx=xx(2)-xx(1) - ff1(1,m)=(ff(2,m)-ff(1,m))/dx - dx=xx(nx)-xx(nx-1) - ff1(nx,m)=(ff(nx,m)-ff(nx-1,m))/dx - do 41 n=2,nx-1 - ff1(n,m)=polderivlo(xx(n-1),xx(n),xx(n+1),ff(n-1,m),ff(n,m), - xff(n+1,m)) - 41 continue - 42 continue - - do 44 n=1,nx - dy=yy(2)-yy(1) - ff2(n,1)=(ff(n,2)-ff(n,1))/dy - dy=yy(my)-yy(my-1) - ff2(n,my)=(ff(n,my)-ff(n,my-1))/dy - do 43 m=2,my-1 - ff2(n,m)=polderivlo(yy(m-1),yy(m),yy(m+1),ff(n,m-1),ff(n,m), - xff(n,m+1)) - 43 continue - 44 continue - - do 46 m=1,my - dx=xx(2)-xx(1) - ff12(1,m)=(ff2(2,m)-ff2(1,m))/dx - dx=xx(nx)-xx(nx-1) - ff12(nx,m)=(ff2(nx,m)-ff2(nx-1,m))/dx - do 45 n=2,nx-1 - ff12(n,m)=polderivlo(xx(n-1),xx(n),xx(n+1),ff2(n-1,m),ff2(n,m), - xff2(n+1,m)) - 45 continue - 46 continue - - do 53 n=1,nx-1 - do 52 m=1,my-1 - d1=xx(n+1)-xx(n) - d2=yy(m+1)-yy(m) - d1d2=d1*d2 - - yy0(1)=ff(n,m) - yy0(2)=ff(n+1,m) - yy0(3)=ff(n+1,m+1) - yy0(4)=ff(n,m+1) - - yy1(1)=ff1(n,m) - yy1(2)=ff1(n+1,m) - yy1(3)=ff1(n+1,m+1) - yy1(4)=ff1(n,m+1) - - yy2(1)=ff2(n,m) - yy2(2)=ff2(n+1,m) - yy2(3)=ff2(n+1,m+1) - yy2(4)=ff2(n,m+1) - - yy12(1)=ff12(n,m) - yy12(2)=ff12(n+1,m) - yy12(3)=ff12(n+1,m+1) - yy12(4)=ff12(n,m+1) - - do 47 k=1,4 - z(k)=yy0(k) - z(k+4)=yy1(k)*d1 - z(k+8)=yy2(k)*d2 - z(k+12)=yy12(k)*d1d2 - 47 continue - - do 49 l=1,16 - xxd=0. - do 48 k=1,16 - xxd=xxd+iwt(k,l)*z(k) - 48 continue - cl(l)=xxd - 49 continue - l=0 - do 51 k=1,4 - do 50 j=1,4 - l=l+1 - cc(n,m,k,j)=cl(l) - 50 continue - 51 continue - 52 continue - 53 continue - return - end - - subroutine jeppe2lo(x,y,nx,my,xx,yy,cc,z) - implicit real*8(a-h,o-z) - dimension xx(nx),yy(my),cc(nx,my,4,4) - - n=locxlo(xx,nx,x) - m=locxlo(yy,my,y) - - t=(x-xx(n))/(xx(n+1)-xx(n)) - u=(y-yy(m))/(yy(m+1)-yy(m)) - - z=0. - do 1 l=4,1,-1 - z=t*z+((cc(n,m,l,4)*u+cc(n,m,l,3))*u - . +cc(n,m,l,2))*u+cc(n,m,l,1) - 1 continue - return - end - - integer function locxlo(xx,nx,x) - implicit real*8(a-h,o-z) - dimension xx(nx) - if(x.le.xx(1)) then - locxlo=1 - return - endif - if(x.ge.xx(nx)) then - locxlo=nx-1 - return - endif - ju=nx+1 - jl=0 - 1 if((ju-jl).le.1) go to 2 - jm=(ju+jl)/2 - if(x.ge.xx(jm)) then - jl=jm - else - ju=jm - endif - go to 1 - 2 locxlo=jl - return - end - - - real*8 function polderivlo(x1,x2,x3,y1,y2,y3) - implicit real*8(a-h,o-z) - polderivlo=(x3*x3*(y1-y2)-2.0*x2*(x3*(y1-y2)+x1* - .(y2-y3))+x2*x2*(y1-y3)+x1*x1*(y2-y3))/((x1-x2)*(x1-x3)*(x2-x3)) - return - end diff --git a/gonsalves/mrst2002.f b/gonsalves/mrst2002.f deleted file mode 100644 index 8ccef09..0000000 --- a/gonsalves/mrst2002.f +++ /dev/null @@ -1,409 +0,0 @@ - subroutine mrst2002(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu) -C***************************************************************C -C C -C This is a package for the new MRST 2002 updated NLO and C -C NNLO parton distributions. C -C Reference: A.D. Martin, R.G. Roberts, W.J. Stirling and C -C R.S. Thorne, hep-ph/0211080 C -C C -C There are 2 pdf sets corresponding to mode = 1, 2 C -C C -C Mode=1 gives the NLO set with alpha_s(M_Z,NLO) = 0.1197 C -C This set reads a grid whose first number is 0.00949 C -C C -C Mode=2 gives the NNLO set with alpha_s(M_Z,NNLO) = 0.1154 C -C This set reads a grid whose first number is 0.00685 C -C C -C Comments to : W.J.Stirling@durham.ac.uk C -C C -C***************************************************************C - implicit real*8(a-h,o-z) - data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ - q2=q*q - if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2 - if(x.lt.xmin.or.x.gt.xmax) print 98,x - if(mode.eq.1) then - call mrst1(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) - elseif(mode.eq.2) then - call mrst2(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) - endif - 99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ','q2= ',e10.5) - 98 format(' WARNING: X VALUE IS OUT OF RANGE ','x= ',e10.5) - return - end - - subroutine mrst1(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) - implicit real*8(a-h,o-z) - parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26) - real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq), - .f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb) - real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4), - .cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4), - .ccc(nx,nqc,4,4),ccb(nx,nqb,4,4) - real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb) - data xx/1d-5,2d-5,4d-5,6d-5,8d-5, - . 1d-4,2d-4,4d-4,6d-4,8d-4, - . 1d-3,2d-3,4d-3,6d-3,8d-3, - . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, - . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, - . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, - . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, - . .8d0,.9d0,1d0/ - data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, - . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, - . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, - . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, - . 1.8d6,3.2d6,5.6d6,1d7/ - data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ - data init/0/ - save - xsave=x - q2save=qsq - if(init.ne.0) goto 10 - open(unit=33,file='mrst2002nlo.dat',status='old') - do 20 n=1,nx-1 - do 20 m=1,nq - read(33,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m), - . f5(n,m),f7(n,m),f6(n,m),f8(n,m) -c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea - 20 continue - do 40 m=1,nq - f1(nx,m)=0.d0 - f2(nx,m)=0.d0 - f3(nx,m)=0.d0 - f4(nx,m)=0.d0 - f5(nx,m)=0.d0 - f6(nx,m)=0.d0 - f7(nx,m)=0.d0 - f8(nx,m)=0.d0 - 40 continue - do n=1,nx - xxl(n)=dlog(xx(n)) - enddo - do m=1,nq - qql(m)=dlog(qq(m)) - enddo - - call jeppe1(nx,nq,xxl,qql,f1,cc1) - call jeppe1(nx,nq,xxl,qql,f2,cc2) - call jeppe1(nx,nq,xxl,qql,f3,cc3) - call jeppe1(nx,nq,xxl,qql,f4,cc4) - call jeppe1(nx,nq,xxl,qql,f6,cc6) - call jeppe1(nx,nq,xxl,qql,f8,cc8) - - emc2=2.045 - emb2=18.5 - - do 44 m=1,nqc - qqlc(m)=qql(m+nqc0) - do 44 n=1,nx - fc(n,m)=f5(n,m+nqc0) - 44 continue - qqlc(1)=dlog(emc2) - call jeppe1(nx,nqc,xxl,qqlc,fc,ccc) - - do 45 m=1,nqb - qqlb(m)=qql(m+nqb0) - do 45 n=1,nx - fb(n,m)=f7(n,m+nqb0) - 45 continue - qqlb(1)=dlog(emb2) - call jeppe1(nx,nqb,xxl,qqlb,fb,ccb) - - - init=1 - 10 continue - - xlog=dlog(x) - qsqlog=dlog(qsq) - - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc6,str) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea) - - chm=0.d0 - if(qsq.gt.emc2) then - call jeppe2(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm) - endif - - bot=0.d0 - if(qsq.gt.emb2) then - call jeppe2(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot) - endif - - x=xsave - qsq=q2save - return - 50 format(8f10.5) - end - - subroutine mrst2(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu) - implicit real*8(a-h,o-z) - parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26) - real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq), - .f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb) - real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4), - .cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4), - .ccc(nx,nqc,4,4),ccb(nx,nqb,4,4) - real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb) - data xx/1d-5,2d-5,4d-5,6d-5,8d-5, - . 1d-4,2d-4,4d-4,6d-4,8d-4, - . 1d-3,2d-3,4d-3,6d-3,8d-3, - . 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2, - . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0, - . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0, - . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0, - . .8d0,.9d0,1d0/ - data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1, - . 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2, - . 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4, - . 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6, - . 1.8d6,3.2d6,5.6d6,1d7/ - data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/ - data init/0/ - save - xsave=x - q2save=qsq - if(init.ne.0) goto 10 - open(unit=33,file='mrst2002nnlo.dat',status='old') - do 20 n=1,nx-1 - do 20 m=1,nq - read(33,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m), - . f5(n,m),f7(n,m),f6(n,m),f8(n,m) -c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea - 20 continue - do 40 m=1,nq - f1(nx,m)=0.d0 - f2(nx,m)=0.d0 - f3(nx,m)=0.d0 - f4(nx,m)=0.d0 - f5(nx,m)=0.d0 - f6(nx,m)=0.d0 - f7(nx,m)=0.d0 - f8(nx,m)=0.d0 - 40 continue - do n=1,nx - xxl(n)=dlog(xx(n)) - enddo - do m=1,nq - qql(m)=dlog(qq(m)) - enddo - - call jeppe1(nx,nq,xxl,qql,f1,cc1) - call jeppe1(nx,nq,xxl,qql,f2,cc2) - call jeppe1(nx,nq,xxl,qql,f3,cc3) - call jeppe1(nx,nq,xxl,qql,f4,cc4) - call jeppe1(nx,nq,xxl,qql,f6,cc6) - call jeppe1(nx,nq,xxl,qql,f8,cc8) - - emc2=2.045 - emb2=18.5 - - do 44 m=1,nqc - qqlc(m)=qql(m+nqc0) - do 44 n=1,nx - fc(n,m)=f5(n,m+nqc0) - 44 continue - qqlc(1)=dlog(emc2) - call jeppe1(nx,nqc,xxl,qqlc,fc,ccc) - - do 45 m=1,nqb - qqlb(m)=qql(m+nqb0) - do 45 n=1,nx - fb(n,m)=f7(n,m+nqb0) - 45 continue - qqlb(1)=dlog(emb2) - call jeppe1(nx,nqb,xxl,qqlb,fb,ccb) - - - init=1 - 10 continue - - xlog=dlog(x) - qsqlog=dlog(qsq) - - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc6,str) - call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea) - - chm=0.d0 - if(qsq.gt.emc2) then - call jeppe2(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm) - endif - - bot=0.d0 - if(qsq.gt.emb2) then - call jeppe2(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot) - endif - - x=xsave - qsq=q2save - return - 50 format(8f10.5) - end - subroutine jeppe1(nx,my,xx,yy,ff,cc) - implicit real*8(a-h,o-z) - parameter(nnx=49,mmy=37) - dimension xx(nx),yy(my),ff(nnx,mmy),ff1(nnx,mmy),ff2(nnx,mmy), - xff12(nnx,mmy),yy0(4),yy1(4),yy2(4),yy12(4),z(16),wt(16,16), - xcl(16),cc(nx,my,4,4),iwt(16,16) - - data iwt/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, - x -3,0,0,3,0,0,0,0,-2,0,0,-1,0,0,0,0, - x 2,0,0,-2,0,0,0,0,1,0,0,1,0,0,0,0, - x 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - x 0,0,0,0,-3,0,0,3,0,0,0,0,-2,0,0,-1, - x 0,0,0,0,2,0,0,-2,0,0,0,0,1,0,0,1, - x -3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0, - x 9,-9,9,-9,6,3,-3,-6,6,-6,-3,3,4,2,1,2, - x -6,6,-6,6,-4,-2,2,4,-3,3,3,-3,-2,-1,-1,-2, - x 2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0, - x 0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0, - x -6,6,-6,6,-3,-3,3,3,-4,4,2,-2,-2,-2,-1,-1, - x 4,-4,4,-4,2,2,-2,-2,2,-2,-2,2,1,1,1,1/ - - - do 42 m=1,my - dx=xx(2)-xx(1) - ff1(1,m)=(ff(2,m)-ff(1,m))/dx - dx=xx(nx)-xx(nx-1) - ff1(nx,m)=(ff(nx,m)-ff(nx-1,m))/dx - do 41 n=2,nx-1 - ff1(n,m)=polderiv(xx(n-1),xx(n),xx(n+1),ff(n-1,m),ff(n,m), - xff(n+1,m)) - 41 continue - 42 continue - - do 44 n=1,nx - dy=yy(2)-yy(1) - ff2(n,1)=(ff(n,2)-ff(n,1))/dy - dy=yy(my)-yy(my-1) - ff2(n,my)=(ff(n,my)-ff(n,my-1))/dy - do 43 m=2,my-1 - ff2(n,m)=polderiv(yy(m-1),yy(m),yy(m+1),ff(n,m-1),ff(n,m), - xff(n,m+1)) - 43 continue - 44 continue - - do 46 m=1,my - dx=xx(2)-xx(1) - ff12(1,m)=(ff2(2,m)-ff2(1,m))/dx - dx=xx(nx)-xx(nx-1) - ff12(nx,m)=(ff2(nx,m)-ff2(nx-1,m))/dx - do 45 n=2,nx-1 - ff12(n,m)=polderiv(xx(n-1),xx(n),xx(n+1),ff2(n-1,m),ff2(n,m), - xff2(n+1,m)) - 45 continue - 46 continue - - do 53 n=1,nx-1 - do 52 m=1,my-1 - d1=xx(n+1)-xx(n) - d2=yy(m+1)-yy(m) - d1d2=d1*d2 - - yy0(1)=ff(n,m) - yy0(2)=ff(n+1,m) - yy0(3)=ff(n+1,m+1) - yy0(4)=ff(n,m+1) - - yy1(1)=ff1(n,m) - yy1(2)=ff1(n+1,m) - yy1(3)=ff1(n+1,m+1) - yy1(4)=ff1(n,m+1) - - yy2(1)=ff2(n,m) - yy2(2)=ff2(n+1,m) - yy2(3)=ff2(n+1,m+1) - yy2(4)=ff2(n,m+1) - - yy12(1)=ff12(n,m) - yy12(2)=ff12(n+1,m) - yy12(3)=ff12(n+1,m+1) - yy12(4)=ff12(n,m+1) - - do 47 k=1,4 - z(k)=yy0(k) - z(k+4)=yy1(k)*d1 - z(k+8)=yy2(k)*d2 - z(k+12)=yy12(k)*d1d2 - 47 continue - - do 49 l=1,16 - xxd=0. - do 48 k=1,16 - xxd=xxd+iwt(k,l)*z(k) - 48 continue - cl(l)=xxd - 49 continue - l=0 - do 51 k=1,4 - do 50 j=1,4 - l=l+1 - cc(n,m,k,j)=cl(l) - 50 continue - 51 continue - 52 continue - 53 continue - return - end - - subroutine jeppe2(x,y,nx,my,xx,yy,cc,z) - implicit real*8(a-h,o-z) - dimension xx(nx),yy(my),cc(nx,my,4,4) - - n=locx(xx,nx,x) - m=locx(yy,my,y) - - t=(x-xx(n))/(xx(n+1)-xx(n)) - u=(y-yy(m))/(yy(m+1)-yy(m)) - - z=0. - do 1 l=4,1,-1 - z=t*z+((cc(n,m,l,4)*u+cc(n,m,l,3))*u - . +cc(n,m,l,2))*u+cc(n,m,l,1) - 1 continue - return - end - - integer function locx(xx,nx,x) - implicit real*8(a-h,o-z) - dimension xx(nx) - if(x.le.xx(1)) then - locx=1 - return - endif - if(x.ge.xx(nx)) then - locx=nx-1 - return - endif - ju=nx+1 - jl=0 - 1 if((ju-jl).le.1) go to 2 - jm=(ju+jl)/2 - if(x.ge.xx(jm)) then - jl=jm - else - ju=jm - endif - go to 1 - 2 locx=jl - return - end - - - real*8 function polderiv(x1,x2,x3,y1,y2,y3) - implicit real*8(a-h,o-z) - polderiv=(x3*x3*(y1-y2)-2.0*x2*(x3*(y1-y2)+x1* - .(y2-y3))+x2*x2*(y1-y3)+x1*x1*(y2-y3))/((x1-x2)*(x1-x3)*(x2-x3)) - return - end diff --git a/gonsalves/qt.f b/gonsalves/qt.f deleted file mode 100644 index 306dcd1..0000000 --- a/gonsalves/qt.f +++ /dev/null @@ -1,1739 +0,0 @@ -************************************************************************ -* Numerical Program for Inclusive gamma*, W & Z production * -* at large transverse momentum in hadron-hadron collisions * -* Includes next-to-leading order QCD corrections given in * -* R.J. Gonsalves, J. Pawlowski, C.-F. Wai, Phys. Rev. D40, * -* 2245 (1989). * -*----------------------------------------------------------------------* -* UBVM FILE : QT FORTRAN * -* Created : 1989 * -* Revised : June 30, 1990 * -* Updated : July-August 2004: * -* Renamed qt.f * -* Updated for latest MRST, CTEQ parton distributions * -* Changed alpha 1/137 -> alpha(M_Z) * -* Updated top quark mass * -* September 2011: * -* Corrected xlu,xld in setcon * -* Corrected triangle loop code in plumin * -*----------------------------------------------------------------------* -* Example input file "qt.inp" * -* computes dsigma/dQ_T**2 in p-pbar collisions at 1.8 TeV * -* for W+ + W- production using MRST2002 NLO parton densities * -* factorization/renormalization scales are set to Q_T * -* Q_T values: 10,30,50,70,90,110,130,150,170,190 GeV * -*---- Begin: Cut here and remove leading and trailing * ---------------* -* Input parameters for qt.f: Inclusive gamma*, W, Z production * -* Hadrons: lppb lns e pdset * -* t f 1800 mrs02nlo * -* Bosons: npwz lwpm q qt y * -* 2 t 80 50 0 * -* Partons: lallpr 1 2 3 4 5 6 7 8 9 10 11 12 * -* t f t t f f f f f f f f f * -* QCD: nscale nalpha lord1 lord2 * -* 1 1 t t * -* Scales: lscaleq lscalm lscalmu scalm scalmu * -* t f f 0.0 0.0 * -* Thresholds: linctri * -* f * -* Integrate: ndim ntot begin step npoints * -* 3 0 10.0 20.0 10 * -* Vegas: ncall itmx0 itmx ndev nprn alph0 alph * -* 40000 3 7 2 -1 1.5 1.5 * -* Ran Seed: iseed * -* 13579 * -* Output: lterm lauto ofname comment * -* t f qt.out # * -*---- End: Example input file -----------------------------------------* -* Input file parameters: * -* ------ line 3 ------ * -* lppb: t = proton proton, f = proton antiproton * -* lns: t = non-singlet, f = non-singlet and singlet * -* e = hadron-hadron center of mass energy in GeV * -* pdset: parton density set (8 character string) * -* See BLOCK DATA pddata for sets implemented * -* ----- line 5 ------ * -* npwz: vector boson V produced * -* 1 = gamma*, 2 = W-, 3 = W+, 4 = Z * -* lwpm: t = sum W+ and W- f = single W- (npwz=2) or W+ (npwz=3) * -* q = virtual photon mass in GeV [program sets q=M_(W/Z) for W/Z] * -* qt = vector boson transverse momentum in GeV * -* y = vector boson rapidity * -* ------ line 7 ------ * -* lallpr: t = include all subprocesses * -* f = include subprocesses marked t * -* nproc: 1 2 3 4 5 6 7 8 9 10 11 12 in function xcfin * -* ------ line 9 ------ * -* linctri: t = include virtual triangle diagram, f = exclude * -* ------ line 11 ------ * -* nscale: energy scale used for renormalization/factorization * -* 1 = q_transverse, 2 = Q=M_V, 3 = sqrt(q_t**2 + Q**2) * -* nalpha: use of NLO and LO QCD coupling alpha_s * -* 1 = NLO + NLO**2, 2 = NLO + LO*NLO, 3 = NLO + LO**2 * -* lord1: t = include, f = exclude leading order * -* lord2: t = include, f = exclude next-leading order * -* ------ line 13 ------ * -* lscaleq: t = set renormalization factorization scales equal * -* lscalm: t = cross section as function of factorization scale * -* lscalmu: t = cross section as function of renormalization scale * -* scalm: factorization scale is multiplied by sqrt(10**scalm) * -* scalmu: renormalization scale is multiplied by sqrt(10**scalmu) * -* ------ line 15 ------ * -* ndim: dimension of phase space integration * -* 2 = dsigma/dq_t**2/dy * -* 3 = dsigma/dq_t**2 * -* 4 = sigma_total with (q_t > q_t_min) * -* ntot: normalize by total cross section * -* 1 = compute and divide by total cross section * -* begin: starting value for chosen variable * -* step: step in chosen variable * -* npoints: number of points in chosen variable * -* ------ line 17 ------ * -* ncall = number of integrand evaluations * -* itmx0 = maximum number of warmup (discarded) iterations * -* itmx = maximum number of iterations * -* ndev = Fortran device for output from Vegas * -* nprn : Vegas prints following on ndev for each iteration * -* > 0 : integral, std dev, chi^2, grid information * -* = 0 : integral, std dev, chi^2 * -* < 0 : nothing * -* alph0 = rate at which grid is modified during warmup * -* alph = rate at which grid is modified during data taking * -* ------ line 19 ------ * -* iseed = random number seed for ran2 * -* ------ line 21 ------ * -* lterm: t = write numerical values on term, f = don't write * -* lauto: t = derive output file name from input file name * -* by replacing .inp with .out * -* f = use ofname for output file * -* ofname: name of output file * -* comment: comment character for output file * -************************************************************************ -C----------------------------------------------------------------------- - BLOCK DATA pddata - IMPLICIT NONE - INTEGER maxset,i - PARAMETER (maxset=13) - CHARACTER pdset(maxset)*8,pdname(maxset)*45 - COMMON /pdsets/ pdset,pdname - DOUBLE PRECISION lambda(maxset) - COMMON /lambdas/ lambda - DATA (pdset(i),i=1,maxset)/ - & 'do84set1', - & 'do84set2', - & 'ehlqset1', - & 'ehlqset2', - & 'mrs123m1', - & 'mrs123m2', - & 'mrs123m3', - & 'mrs89em1', - & 'mrs89bm2', - & 'mrs01lo1', - & 'mrs02nlo', - & 'mrs02nnl', - & 'ctq61nlo' - & / - DATA (pdname(i),i=1,maxset)/ - & 'Duke-Owens 1984 Set 1 Lambda=0.2 GeV ', - & 'Duke-Owens 1984 Set 2 Lambda=0.4 GeV ', - & 'EHLQ Set 1 Lambda=0.2 GeV ', - & 'EHLQ Set 2 Lambda=0.29 GeV ', - & 'MRS123 Mode 1 (soft glue) Lambda=0.107 GeV ', - & 'MRS123 Mode 2 (hard glue) Lambda=0.250 GeV ', - & 'MRS123 Mode 3 (1/RTX glue) Lambda=0.178 GeV ', - & 'MRSEB Mode 1 (EMC FIT) Lambda=0.091 GeV ', - & 'MRSEB Mode 2 (BCDMS FIT) Lambda=0.228 GeV ', - & 'MRST2001 Mode 1 LO Lambda_4=0.220 GeV ', - & 'MRST2002 Mode 1 NLO Lambda_4=0.323 GeV ', - & 'MRST2002 Mode 2 NNLO Lambda_4=0.234 GeV ', - & 'Cteq61 Mode 1 NLO Lambda_4=0.326 GeV ' - & / - DATA (lambda(i),i=1,maxset)/ - & 0.200d0, 0.400d0, 0.200d0, 0.290d0, - & 0.107d0, 0.250d0, 0.178d0, 0.091d0, 0.228d0, - & 0.220d0, 0.323d0, 0.234d0, 0.326d0 - & / - END -C----------------------------------------------------------------------- - PROGRAM qtmain - IMPLICIT DOUBLE PRECISION (a-h,o-z) - CHARACTER today*30,proces*50,numb(12)*3,string*50,ifname*50 - & ,ofname*50 - LOGICAL yes,no,lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - & ,lscaleq,lscalm,lscalmu - PARAMETER (yes=.true.,no=.false.) - DIMENSION result(5,1000) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - LOGICAL lasnnlo - COMMON /nnlo/ asnnlo,lasnnlo - COMMON /bveg1/ ncall,itmx,nprn,ndev,xl(10),xu(10),acc - COMMON /bveg3/ alph,ndmx,mds - COMMON /counter/ iread - COMMON /iquad/ alph0,itmx0 - DATA (numb(i),i=1,12) /' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ', - & ' 7 ',' 8 ',' 9 ','10 ','11 ','12 '/ - INTEGER maxset,i - PARAMETER (maxset=13) - CHARACTER pdset(maxset)*8,pdname(maxset)*45 - COMMON /pdsets/ pdset,pdname - DOUBLE PRECISION lambda(maxset) - COMMON /lambdas/ lambda - CHARACTER pdsetname*8,comment*2 - COMMON /pdsetn/ pdsetname - LOGICAL lterm,lauto - LOGICAL linctri - COMMON /triangle/ linctri - - CALL ctime(time(),today) -* use iargc and getarg to get input file name from command line - IF (iargc().GT.0) THEN - CALL getarg(1,ifname) - ELSE - ifname='qt.inp' - ENDIF - - ninput=1 - OPEN (unit=ninput,file=ifname,status='old') - PRINT *,'Reading input from file ',ifname - READ (ninput,*) - READ (ninput,*) - READ (ninput,*) lppb,lns,e,string - READ (ninput,*) - READ (ninput,*) npwz,lwpm,q,qt,y - READ (ninput,*) - READ (ninput,*) lallpr,(lproc(i),i=1,12) - READ (ninput,*) - READ (ninput,*) nscale,nalpha,lord1,lord2 - READ (ninput,*) - READ (ninput,*) lscaleq,lscalm,lscalmu,scalm,scalmu - READ (ninput,*) - READ (ninput,*) linctri - READ (ninput,*) - READ (ninput,*) ndim,ntot,begin,step,npoints - READ (ninput,*) - READ (ninput,*) ncall,itmx0,itmx,ndev,nprn,alph0,alph - READ (ninput,*) - READ (ninput,*) iseed - READ (ninput,*) - READ (ninput,*) lterm,lauto,ofname,comment - - nset=0 - DO i=1,maxset - IF (string(1:8).EQ.pdset(i)) THEN - nset=i - xlambd=lambda(i) - pdsetname=pdset(i) - ENDIF - ENDDO - IF (pdsetname.EQ.'mrs02nnl') THEN - lasnnlo=.TRUE. - ELSE - lasnnlo=.FALSE. - ENDIF - IF (nset.EQ.0) THEN - PRINT *,'Bad parton density set ',string - STOP - ENDIF - IF (lallpr) THEN - DO i=1,12 - lproc(i)=yes - ENDDO - ENDIF - scalm=10d0**scalm - scalmu=10d0**scalmu - idum=iseed - CALL setseed(idum) - IF (lauto) THEN - i=index(ifname,'.inp') - IF (i.EQ.0) i=index(ifname,' ') - ofname=ifname(1:i-1)//'.out' - ENDIF - OPEN (unit=2,file=ofname,status='unknown') - IF (lterm) PRINT *,'Output will go to file ',ofname - - IF (npwz.EQ.1) lproc(12)=no - IF (npwz.EQ.2.OR.npwz.EQ.3) THEN - lproc(10)=no - lproc(11)=no - lproc(12)=no - ENDIF - IF (lwpm.AND.npwz.EQ.3) npwz=2 - IF (lns) THEN - lproc(2)=no - lproc(3)=no - lproc(5)=no - ENDIF - IF (lord1.AND..NOT.lord2) THEN - DO i=3,12 - lproc(i)=no - ENDDO - ENDIF - proces=' ' - DO i=1,12 - IF (lproc(13-i)) proces=(numb(13-i)//proces) - ENDDO - IF (lord2) proces=('nlo '//proces) - IF (lord1) proces=('lo '//proces) - - CALL setcon - IF (ntot.EQ.1) THEN - CALL settot (totxc,totsd,totchi) - ENDIF - nres=0 - IF (lscalm.OR.lscalmu) THEN - IF (lscalm.AND.lscalmu.AND..NOT.lscaleq) THEN - DO i=1,npoints - scalm=10d0**(begin+step*(i-1)) - DO j=1,npoints - scalmu=10d0**(begin+step*(j-1)) - nres=nres+1 - result(1,nres)=scalm - result(2,nres)=scalmu - CALL setup(result(3,nres),result(4,nres) - & ,result(5,nres)) - IF (ntot.EQ.1) THEN - result(3,nres)=result(3,nres)/totxc*2. - result(4,nres)=result(4,nres)/totxc*2. - ENDIF - IF (lterm) WRITE (6,105) (result(k,nres),k=1,5) - ENDDO - ENDDO - ELSE - DO i=1,npoints - scale=10d0**(begin+step*(i-1)) - nres=nres+1 - result(1,nres)=scale - IF (lscalm.OR.lscaleq) scalm=scale - IF (lscalmu.OR.lscaleq) scalmu=scale - CALL setup (result(2,nres),result(3,nres) - & ,result(4,nres)) - IF (ntot.EQ.1) THEN - result(2,nres)=result(2,nres)/totxc*2. - result(3,nres)=result(3,nres)/totxc*2. - ENDIF - IF (lterm) WRITE (6,100) (result(j,nres),j=1,4) - ENDDO - ENDIF - ELSE - DO qtp=begin,begin+step*(npoints-1),step - qt=qtp - nres=nres+1 - result(1,nres)=qt - CALL setup (result(2,nres),result(3,nres),result(4,nres)) - IF (ntot.EQ.1) THEN - result(2,nres)=result(2,nres)/totxc*2. - result(3,nres)=result(3,nres)/totxc*2. - ENDIF - IF (lterm) WRITE (6,100) (result(j,nres),j=1,4) - ENDDO - ENDIF - - WRITE (ndev,110) comment,today,ifname - WRITE (ndev,120) comment - IF (lppb) string='p pbar collision' - IF (.NOT. lppb) string='p p collision' - IF (lns) string='Non-singlet: ppb - pp' - WRITE (ndev,130) comment,string,e - WRITE (ndev,140) comment,pdname(nset) - IF (npwz.EQ.1) string='Virtual photon' - IF (npwz.EQ.2) THEN - string='W^- Production' - IF (lwpm) string=' (W^-) + (W^+)' - ENDIF - IF (npwz.EQ.3) string='W^+ Production' - IF (npwz.EQ.4) string='Z_0 Production' - WRITE (ndev,150) comment,string,q - WRITE (ndev,160) comment,proces - WRITE (ndev,170) comment,nscale,nalpha - IF (lscalm.OR.lscalmu) THEN - IF (lscalm) WRITE (ndev,180) comment,qt,scalmu - IF (lscalmu) WRITE (ndev,190) comment,qt,scalm - ELSE - WRITE (ndev,200) comment,scalm,scalmu - ENDIF - IF (npwz.EQ.4) THEN - IF (linctri) THEN - WRITE (ndev,205) comment,' included' - ELSE - WRITE (ndev,205) comment,' not included' - ENDIF - ENDIF - IF (ndim.EQ.2) string='d sigma/(dqt**2 dy)' - IF (ndim.EQ.3) string='d sigma/dqt**2' - IF (ndim.EQ.4) string='sigma(qt > qtmin)' - WRITE (ndev,210) comment,string - IF (ntot.EQ.1) WRITE (ndev,220) comment,totxc,totsd,totchi - WRITE (ndev,230) comment,ncall,itmx0,itmx,alph0,alph - WRITE (ndev,240) comment,iseed - WRITE (ndev,250) comment - IF (lscalm.AND.lscalmu.AND..NOT.lscaleq) THEN - DO i=1,nres - IF (i.GT.1.AND.MOD(i-1,npoints).EQ.0) WRITE(ndev,106) - WRITE (ndev,105) (result(j,i),j=1,5) - ENDDO - ELSE - DO i=1,nres - WRITE (ndev,100) (result(j,i),j=1,4) - ENDDO - ENDIF - - CLOSE (UNIT=ninput) - CLOSE (UNIT=2) - - 100 FORMAT (1x,4(g9.3,3x)) - 105 FORMAT (1x,5(g9.3,3x)) - 106 FORMAT (1x) - 110 FORMAT (a2,a30,'Input file: ',a30) - 120 FORMAT (a2,'Electroweak Boson Production at Large Q_T') - 130 FORMAT (a2,a30,'sqrt(S) = ',f7.1,' GeV') - 140 FORMAT (a2,'Parton Densities: ',a45) - 150 FORMAT (a2,'Vector Boson: ',a20,'Q = ',f7.2,' GeV') - 160 FORMAT (a2,'Parton Processes: ',a50) - 170 FORMAT (a2,'QCD: nscale = ',i2,2x,'nalpha = ',i2) - 180 FORMAT (a2,'Scalm dependence at Q_T = ',f7.2,' scalmu = ',f7.2) - 190 FORMAT (a2,'Scalmu dependence at Q_T = ',f7.2,' scalm = ',f7.2) - 200 FORMAT (a2,'scalm = ',f7.2,' scalmu = ',f7.2) - 205 FORMAT (a2,'Z_0 virtual triangle diagrams',a14) - 210 FORMAT (a2,'Cross section computed: ',a30) - 220 FORMAT (a2,'Divided by totxc/2 = ',3(g9.3,3x)) - 230 FORMAT (a2,'Vegas: ncall = ',i8,' itmx0 = ',i4,' itmx = ',i4, - & ' alph0 = ',f4.2,' alph = ',f4.2) - 240 FORMAT (a2,'Seed for random number generator = ',i12) - 250 FORMAT (a2,'Variable Integral Std. Dev. ChiSqd/dof') - END -C----------------------------------------------------------------------- - SUBROUTINE setcon - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - - pi=3.141592654 - tonbs=.389386d6 -* alpha=1./137.0360 - alpha=1./127.918 - sin2tw=0.2312 - sw=dsqrt(sin2tw) - cw=dsqrt(1.d0-sin2tw) - cf=4./3. - ca=3. - xnc=3. - xmz=91.1876 -* xmw=xmz*cw - xmw=80.425 - xmc=1.25 - xmb=4.25 -* xmt=178.1 - xmt=1e6 - qu=2./3. - qd=-1./3. - qw=1./dsqrt(2.d0)/sw - xlu=1./2./sw/cw-qu*sw/cw - xld=-1./2./sw/cw-qd*sw/cw - xru=-qu*sw/cw - xrd=-qd*sw/cw - v2(1,1)=(0.9738)**2 - v2(1,2)=(0.2200)**2 - v2(1,3)=1.-v2(1,1)-v2(1,2) - v2(2,1)=(0.224)**2 - v2(2,2)=(0.996)**2 - v2(2,3)=1.-v2(2,1)-v2(2,2) - v2(3,1)=1.-v2(1,1)-v2(2,1) - v2(3,2)=1.-v2(1,2)-v2(2,2) - v2(3,3)=1.-v2(1,3)-v2(2,3) - RETURN - END -C---------------------------------------------------------------------- - SUBROUTINE setup (ans,sd,chi2a) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - LOGICAL lasnnlo - COMMON /nnlo/ asnnlo,lasnnlo - COMMON /bveg1/ ncall,itmx,nprn,ndev,xl(10),xu(10),acc - COMMON /bveg3/ alph,ndmx,mds - COMMON /iquad/ alph0,itmx0 - EXTERNAL f2veg,f2dim,f3veg,f3dim,s2lims,s2llim,s2ulim - EXTERNAL f4dim,f4veg - - sh=e**2 - IF (npwz.EQ.2.OR.npwz.EQ.3) q=xmw - IF (npwz.EQ.4) q=xmz - qq=q**2 - qt2=qt**2 - eqt=dsqrt(qt2+qq) - IF (nscale.EQ.1) escal2=qt2 - IF (nscale.EQ.2) escal2=qq - IF (nscale.EQ.3) escal2=qt2+qq - fm=dlog(scalm*escal2/qq) - fmu=dlog(scalmu*escal2/qq) - CALL flavor - IF (nset.LE.9) THEN - aslo=alphas_old(1)/2./pi - ELSE - scale=dsqrt(escal2*scalmu) - aslo=alphas(scale,xlambd,0)/2d0/pi - ENDIF - asnlo=aslo - asnnlo=aslo - IF (lord2) THEN - IF (nset.LE.9) THEN - asnlo=alphas_old(2)/2./pi - ELSE - scale=dsqrt(escal2*scalmu) - asnlo=alphas(scale,xlambd,1)/2d0/pi - asnnlo=alphas(scale,xlambd,2)/2d0/pi - ENDIF - ENDIF - surd=dsqrt((sh-qq)**2-4.*sh*qt2) - ymax=1./2.*dlog((sh+qq+surd)/(sh+qq-surd)) - qtmax=(sh-qq)/2d0/e - qtmin=qt - xl(1)=0d0 - xu(1)=sh-qq - xl(2)=dlog(qq/sh) - xu(2)=0d0 - xl(3)=-ymax - xu(3)=ymax - xl(4)=dlog(qtmin**2/sh) - xu(4)=dlog(qtmax**2/sh) - npr=nprn - itm=itmx - alp=alph - nprn=-1 - itmx=itmx0 - alph=alph0 - IF (ndim.EQ.2) CALL vegas (2,f2veg,ans,sd,chi2a) - IF (ndim.EQ.3) CALL vegas (3,f3veg,ans,sd,chi2a) - IF (ndim.EQ.4) CALL vegas (4,f4veg,ans,sd,chi2a) - nprn=npr - itmx=itm - alph=alp - IF (ndim.EQ.2) CALL vegas1 (2,f2veg,ans,sd,chi2a) - IF (ndim.EQ.3) CALL vegas (3,f3veg,ans,sd,chi2a) - IF (ndim.EQ.4) CALL vegas1 (4,f4veg,ans,sd,chi2a) - omult=4.*pi*alpha*cf*xnc*tonbs - ans=ans*omult - sd=sd*omult - IF (npwz.EQ.1) THEN - emult=alpha/3./pi/qq - ans=ans*emult - sd=sd*emult - ENDIF - ans=ans*pi - sd=sd*pi - RETURN - END -C---------------------------------------------------------------------- - SUBROUTINE settot (ans,sd,chi2a) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - COMMON /bveg1/ ncall,itmx,nprn,ndev,xl(10),xu(10),acc - COMMON /bveg3/ alph,ndmx,mds - COMMON /iquad/ alph0,itmx0 - EXTERNAL totveg - - sh=e**2 - IF (npwz.EQ.2.OR.npwz.EQ.3) q=xmw - IF (npwz.EQ.4) q=xmz - qq=q**2 - escal2=qq - CALL flavor - saveit=scalmu - scalmu=1. - IF (nset.LE.9) THEN - aslo=alphas_old(1)/2./pi - ELSE - aslo=alphas(q,xlambd,1)/2d0/pi - ENDIF - scalmu=saveit - ymax=1./2.*dlog(sh/qq) - xl(1)=0d0 - xu(1)=1. - xl(2)=-ymax - xu(2)=ymax - npr=nprn - itm=itmx - alp=alph - nprn=-1 - itmx=itmx0 - alph=alph0 - CALL vegas (2,totveg,ans,sd,chi2a) - nprn=npr - itmx=itm - alph=alp - CALL vegas1 (2,totveg,ans,sd,chi2a) - omult=4.*pi**2*alpha*xnc*tonbs - ans=ans*omult - sd=sd*omult - IF (npwz.EQ.1) THEN - emult=alpha/3./pi/qq - ans=ans*emult - sd=sd*emult - ENDIF - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE flavor - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - CHARACTER pdsetname*8 - COMMON /pdsetn/ pdsetname - - qsq=escal2 - xnf=3. - sqf2=qu**2+2.*qd**2 - sxrml=xrd-xld - DO 1 i=1,3 - sv2u(i)=v2(i,1)+v2(i,2) - sv2d(i)=v2(1,i) -1 CONTINUE - sv2=sv2u(1) - szf2=(xlu**2+xru**2)/2.+xld**2+xrd**2 - IF (qsq.GT.4*xmc**2) THEN - xnf=4. - sqf2=sqf2+qu**2 - DO 2 i=1,3 - sv2d(i)=sv2d(i)+v2(2,i) -2 CONTINUE - sv2=sv2u(1)+sv2u(2) - szf2=szf2+(xlu**2+xru**2)/2. - sxrml=0d0 - ENDIF - IF (pdsetname(1:4).EQ.'do84') RETURN - IF (qsq.GT.4*xmb**2) THEN - xnf=5. - sqf2=sqf2+qd**2 - DO 3 i=1,3 - sv2u(i)=sv2u(i)+v2(i,3) -3 CONTINUE - sv2=sv2u(1)+sv2u(2) - szf2=szf2+(xld**2+xrd**2)/2. - sxrml=xrd-xld - ENDIF - IF (pdsetname(1:4).NE.'ehlq') RETURN - IF (qsq.GT.4*xmt**2) THEN - xnf=6. - sqf2=sqf2+qu**2 - DO 4 i=1,3 - sv2d(i)=sv2d(i)+v2(3,i) -4 CONTINUE - sv2=sv2u(1)+sv2u(2)+sv2u(3) - szf2=szf2+(xlu**2+xru**2)/2. - sxrml=0d0 - ENDIF - RETURN - END -C----------------------------------------------------------------------- -C QCD Effective coupling - Bardeen et al. definition -C - DOUBLE PRECISION FUNCTION alphas_old (norder) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lproc(12) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - qsq=escal2*scalmu - t=dlog(qsq/xlambd**2) - b1=12.*pi/(33.-2.*xnf) - alphas=b1/t - IF (norder.EQ.2) THEN - b2=24.*pi**2/(153.-19.*xnf) - alphas=alphas*(1.-b1**2*dlog(t)/b2/t) - ENDIF - alphas_old=alphas - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f2dim (xlogx1,s2p) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - x1=dexp(xlogx1) - s2=s2p - f2dim=preigd () - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f3dim (yp,xlogx1,s2p) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - y=yp - x1=dexp(xlogx1) - s2=s2p - f3dim=preigd () - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f4dim (xlqt2,yp,xlogx1,s2p) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - qt=e*dexp(xlqt2/2.) - qt2=qt*qt - eqt=dsqrt(qt2+qq) - y=yp - x1=dexp(xlogx1) - s2=s2p - f4dim=qt2*preigd () - RETURN - END -C---------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f2tot (y,z) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - f2tot=pretot(y,z) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f2veg (x,wgt) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION x(2) - f2veg=f2dim(x(2),x(1)) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f3veg (x,wgt) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION x(3) - f3veg=f3dim(x(3),x(2),x(1)) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION f4veg (x,wgt) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION x(4) - f4veg=f4dim(x(4),x(3),x(2),x(1)) - RETURN - END -C---------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION totveg (x,wgt) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION x(2) - totveg=f2tot(x(2),x(1)) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION s2lims (xlogx1) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - ENTRY s2ulim (xlogx1) - s2ulim = uh+dexp(xlogx1)*(sh+th-qq) - RETURN - ENTRY s2llim (xlogx1) - s2llim = 0d0 - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION preigd () - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - DIMENSION pdd(13,2),pdd0(13,2) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - LOGICAL lasnnlo - COMMON /nnlo/ asnnlo,lasnnlo - LOGICAL linctri - COMMON /triangle/ linctri - - th=dexp(y) - uh=qq-e*eqt*th - th=qq-e*eqt/th - -C Phase space boundaries for Vegas - IF (ndim.EQ.4) THEN - surd=dsqrt((sh-qq)**2-4.*sh*qt2) - ymax=1./2.*dlog((sh+qq+surd)/(sh+qq-surd)) - IF(dabs(y).GT.ymax) GOTO 100 - ENDIF - b=-uh/(sh+th-qq) - IF (x1.LT.b) GOTO 100 - a=uh+x1*(sh+th-qq) - IF (s2.GT.a) GOTO 100 - - xjac=x1*sh+uh-qq - x20=(-x1*th-qq*(1.-x1))/xjac - x2=s2/xjac+x20 - fs2=dlog(s2/qq) - fa=dlog(a/qq) - fscale=escal2*scalm - CALL compdd (x1,x2,x20,fscale,pdd,pdd0) - alow=0d0 - ads2=0d0 - as2a=0d0 - afin=0d0 - CALL comvar (0,x20) - check=(x1+x20)/2.*e-eqt*dcosh(y) - IF (check.LT.0.D0) STOP 'PREIGD error: Insufficient Energy' - DO 2 i=1,2 - IF (lord1) THEN - IF (lproc(1).AND.i.EQ.1) alow=alow+xclow(1)*pdd0(1,i) - IF (lproc(2)) alow=alow+xclow(2)*pdd0(2,i) - ENDIF - IF (lord2) THEN - IF (lproc(1).AND.i.EQ.1) THEN - ads2=ads2+xcds2(1)*pdd0(1,i) - IF (linctri) THEN - ads2=ads2+triang(1)*pdd0(12,i) - ENDIF - as2a=as2a-xcs2a(1)*pdd0(1,i) - ENDIF - IF (lproc(2)) THEN - ads2=ads2+xcds2(2)*pdd0(2,i) - IF (linctri) THEN - ads2=ads2+triang(2)*pdd0(13,i) - ENDIF - as2a=as2a-xcs2a(2)*pdd0(2,i) - ENDIF - ENDIF - CALL exchtu -2 CONTINUE - alow=alow/s - ads2=ads2/s - as2a=as2a/s - IF (.NOT.lord2) GOTO 5 - CALL comvar (1,x2) - DO 3 i=1,2 - IF (lproc(1).AND.i.EQ.1) as2a=as2a+xcs2a(1)*pdd(1,i)/s - IF (lproc(2)) as2a=as2a+xcs2a(2)*pdd(2,i)/s - DO 4 j=1,12 - IF (lproc(j)) afin=afin+xcfin(j)*pdd(j,i) -4 CONTINUE - CALL exchtu -3 CONTINUE - afin=afin/s+as2a -5 CONTINUE - IF (lasnnlo) THEN - as23=asnnlo - ELSE - as23=asnlo - ENDIF - IF (nalpha.EQ.1) preigd=as23*alow/a+as23**2*(ads2/a+afin) - IF (nalpha.EQ.2) preigd=as23*((alow+aslo*ads2)/a+aslo*afin) - IF (nalpha.EQ.3) preigd=as23*alow/a+aslo**2*(ads2/a+afin) - preigd=preigd*x1/xjac - RETURN -100 preigd=0d0 - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION pretot (yq,z) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - DIMENSION pdd(13,2),pdd0(13,2),pdd1(13,2) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - tau=qq/sh - -C Phase space boundary for Vegas - zmin=tau*dexp(2.*dabs(yq)) - IF (z.LT.zmin) GOTO 100 - - x11=dsqrt(tau) - x21=x11 - dexpyq=dexp(yq) - x11=x11*dexpyq - x21=x21/dexpyq - x2=dsqrt(z) - x1=x11/x2 - x2=x21/x2 - CALL compdd (x11,x21,x21,qq,pdd1,pdd0) - CALL compdd (x1,x2,x2,qq,pdd,pdd0) - - pretot=0d0 - IF (lproc(1)) THEN - qqb=1./(1.-zmin)*(1.+aslo*cf*(2.*pi**2/3.-8.))*pdd1(1,1) - & +aslo*cf*(4.*dlog(1.-z)/(1.-z)*((1.+z**2)/z - & *pdd(1,1)-2.*pdd1(1,1)) - & -2.*(1.+z**2)/z*dlog(z)*pdd(1,1)) - pretot=pretot+qqb - ENDIF - IF (lproc(2)) THEN - qg=aslo*cf*((z**2+(1.-z)**2)*(dlog((1.-z)**2/z)-3./2.) - & +2.-z**2/2.)*(pdd(2,1)+pdd(2,2)) - pretot=pretot+qg - ENDIF - pretot=pretot/sh - RETURN -100 pretot=0d0 - END -C----------------------------------------------------------------------- - SUBROUTINE comvar (ns2,x2) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - s=x1*x2*sh - t=x1*th+(1.-x1)*qq - u=x2*uh+(1.-x2)*qq - s2p=s2*ns2 - d1=1./(s2p-t) - d2=1./(s2p-u) - d3=1./(s+t-s2p) - d4=1./(s+u-s2p) - d5=1./(s+qq-s2p) - d6=1./(u*t-s2p*qq) - d10=1./((u+t)**2-4.*s2p*qq) - d9=dsqrt(d10) - fs=dlog(s/qq) - ft=dlog(-t/qq) - fu=dlog(-u/qq) - fst=fs-2.*dlog(-1./d1/t) - fsu=fs-2.*dlog(-1./d2/u) - ftu=dlog(d1*d2/d6) - fstu=dlog(s*qq*d1*d2) - fla=dlog((d9+d5)/(d9-d5)) - flt=dlog(s*qq*(1./(s2p*(2.*qq-u)-qq*t)/d1)**2) - flu=dlog(s*qq*(1./(s2p*(2.*qq-t)-qq*u)/d2)**2) - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE exchtu - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - CALL exch (t,u) - CALL exch (d1,d2) - CALL exch (d3,d4) - CALL exch (ft,fu) - CALL exch (fst,fsu) - CALL exch (flt,flu) - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE exch (a,b) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - temp=a - a=b - b=temp - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE compdd (x1,x2,x20,qsq,pdd,pdd0) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns,lwpm,lord1,lord2,lallpr,lproc(12) - DIMENSION pdd(13,2), pdd0(13,2), a(-6:6), b(-6:6), b0(-6:6) - DIMENSION qdd(13,2), qdd0(13,2) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /switch/ npwz,nscale,nalpha,nset,ndim,ntot - & ,lppb,lns,lwpm,lord1,lord2,lproc - COMMON /counter/ iread - CHARACTER pdsetname*8 - COMMON /pdsetn/ pdsetname - - IF (pdsetname(1:4).EQ.'do84') THEN - IF (pdsetname(8:8).EQ.'1') mode=1 - IF (pdsetname(8:8).EQ.'2') mode=2 - CALL dopden (mode,x1,qsq,a) - CALL dopden (mode,x2,qsq,b) - CALL dopden (mode,x20,qsq,b0) - ELSEIF (pdsetname(1:4).EQ.'ehlq') THEN - IF (pdsetname(8:8).EQ.'1') mode=1 - IF (pdsetname(8:8).EQ.'2') mode=2 - CALL ehlq (mode,x1,qsq,a) - CALL ehlq (mode,x2,qsq,b) - CALL ehlq (mode,x20,qsq,b0) - ELSEIF (pdsetname(1:6).EQ.'mrs123') THEN - IF (pdsetname(8:8).EQ.'1') mode=1 - IF (pdsetname(8:8).EQ.'2') mode=2 - IF (pdsetname(8:8).EQ.'3') mode=3 - CALL mrs (mode,x1,qsq,a) - CALL mrs (mode,x2,qsq,b) - CALL mrs (mode,x20,qsq,b0) - ELSEIF (pdsetname(1:5).EQ.'mrs89') THEN - IF (pdsetname(6:6).EQ.'e') mode=4 - IF (pdsetname(6:6).EQ.'b') mode=5 - CALL mrs (mode,x1,qsq,a) - CALL mrs (mode,x2,qsq,b) - CALL mrs (mode,x20,qsq,b0) - ELSEIF (pdsetname(1:5).EQ.'mrs01') THEN - IF (pdsetname(6:8).EQ.'lo1') mode=0 - CALL mrst (mode,x1,qsq,a) - CALL mrst (mode,x2,qsq,b) - CALL mrst (mode,x20,qsq,b0) - ELSEIF (pdsetname(1:5).EQ.'mrs02') THEN - IF (pdsetname(6:8).EQ.'nlo') mode=1 - IF (pdsetname(6:8).EQ.'nnl') mode=2 - CALL mrst (mode,x1,qsq,a) - CALL mrst (mode,x2,qsq,b) - CALL mrst (mode,x20,qsq,b0) - ELSEIF (pdsetname(1:5).EQ.'ctq61') THEN - IF (pdsetname(6:8).EQ.'nlo') mode=1 - CALL cteq (mode,x1,qsq,a) - CALL cteq (mode,x2,qsq,b) - CALL cteq (mode,x20,qsq,b0) - ENDIF -C Initial color averages - DO 1 i=-6,6 - a(i) = a(i)/xnc - b(i) = b(i)/xnc - b0(i) = b0(i)/xnc -1 CONTINUE - glue = xnc/(xnc**2-1d0) - a(0) = a(0)*glue - b(0) = b(0)*glue - b0(0) = b0(0)*glue -C - CALL plumin (lppb,lns,npwz,a,b,pdd) - CALL plumin (lppb,lns,npwz,a,b0,pdd0) - IF (lwpm.AND.npwz.EQ.2.AND..NOT.lns) THEN - CALL plumin (lppb,lns,3,a,b,qdd) - CALL plumin (lppb,lns,3,a,b0,qdd0) - DO 2 i=1,13 - DO 2 j=1,2 - pdd(i,j)=pdd(i,j)+qdd(i,j) -2 pdd0(i,j)=pdd0(i,j)+qdd0(i,j) - ENDIF - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE plumin (lppb,lns,npwz,a,b,pdd) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - LOGICAL lppb,lns - DIMENSION a(-6:6),b(-6:6),pdd(13,2),h1u(3),h1ub(3),h2u(3),h2ub(3) - & ,h1d(3),h1db(3),h2d(3),h2db(3) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - EXTERNAL sum - - qu2=qu**2 - qd2=qd**2 - w2=qw**2/2. - zu2=(xlu**2+xru**2)/2. - zd2=(xld**2+xrd**2)/2. - - CALL vector (a(1),a(4),a(6),h1u) - CALL vector (a(-1),a(-4),a(-6),h1ub) - CALL vector (a(2),a(3),a(5),h1d) - CALL vector (a(-2),a(-3),a(-5),h1db) - IF (lppb) THEN - CALL vector (b(1),b(4),b(6),h2ub) - CALL vector (b(-1),b(-4),b(-6),h2u) - CALL vector (b(2),b(3),b(5),h2db) - CALL vector (b(-2),b(-3),b(-5),h2d) - ELSE - CALL vector (b(1),b(4),b(6),h2u) - CALL vector (b(-1),b(-4),b(-6),h2ub) - CALL vector (b(2),b(3),b(5),h2d) - CALL vector (b(-2),b(-3),b(-5),h2db) - ENDIF - sh1u=sum(h1u)+sum(h1ub) - sh2u=sum(h2u)+sum(h2ub) - sh1d=sum(h1d)+sum(h1db) - sh2d=sum(h2d)+sum(h2db) - sh1=sh1u+sh1d - sh2=sh2u+sh2d - - IF (lns) THEN - pdd(2,1)=0d0 - pdd(3,1)=0d0 - pdd(5,1)=0d0 - pdd(13,1)=0d0 - uv1=a(1)-a(-1) - dv1=a(2)-a(-2) - uv2=b(1)-b(-1) - dv2=b(2)-b(-2) - IF (npwz.EQ.1) THEN - pdd(1,1)=qu2*uv1*uv2+qd2*dv1*dv2 - pdd(4,1)=sqf2*(uv1*uv2+dv1*dv2) - pdd(7,1)=pdd(1,1) - pdd(10,1)=2.*(qu*uv1+qd*dv1)*(qu*uv2+qd*dv2) - pdd(12,1)=0d0 - ELSEIF (npwz.EQ.2.OR.npwz.EQ.3) THEN - pdd(1,1)=w2*v2(1,1)*(uv1*dv2+dv1*uv2) - pdd(4,1)=w2*sv2*(uv1*uv2+dv1*dv2) - pdd(7,1)=w2*(sv2u(1)*dv1*dv2+sv2d(1)*uv1*uv2) - pdd(10,1)=0d0 - pdd(12,1)=0d0 - ELSEIF (npwz.EQ.4) THEN - pdd(1,1)=zu2*uv1*uv2+zd2*dv1*dv2 - pdd(4,1)=szf2*(uv1*uv2+dv1*dv2) - pdd(7,1)=pdd(1,1) - pdd(10,1)=((xlu+xru)*uv1+(xld+xrd)*dv1)/2. - pdd(10,1)=pdd(10,1)*((xlu+xru)*uv2+(xld+xrd)*dv2) - pdd(12,1)=(uv1*uv2+dv1*dv2)*(xru-xlu)*sxrml/2. - ENDIF - pdd(6,1)=pdd(1,1) - pdd(8,1)=-pdd(1,1)/2. - pdd(9,1)=-pdd(7,1)/2. - pdd(11,1)=pdd(10,1) - DO 55 i=1,13 -55 pdd(i,2)=pdd(i,1) - RETURN - ENDIF - -C 1. ann + qqb12 - IF (npwz.EQ.1) THEN - pdd(1,1)=qu2*(dot(h1u,h2ub)+dot(h1ub,h2u)) - & +qd2*(dot(h1d,h2db)+dot(h1db,h2d)) - ELSEIF (npwz.EQ.2) THEN - pdd(1,1)=w2*(prod(h2ub,v2,h1d)+prod(h1ub,v2,h2d)) - ELSEIF (npwz.EQ.3) THEN - pdd(1,1)=w2*(prod(h1u,v2,h2db)+prod(h2u,v2,h1db)) - ELSEIF (npwz.EQ.4) THEN - pdd(1,1)=zu2*(dot(h1u,h2ub)+dot(h1ub,h2u)) - & +zd2*(dot(h1d,h2db)+dot(h1db,h2d)) - ENDIF - pdd(1,2)=pdd(1,1) - -C 2. com - IF (npwz.EQ.1) THEN - pdd(2,1)=qu2*sh1u+qd2*sh1d - pdd(2,2)=qu2*sh2u+qd2*sh2d - ELSEIF (npwz.EQ.2) THEN - pdd(2,1)=w2*(dot(sv2u,h1d)+dot(h1ub,sv2d)) - pdd(2,2)=w2*(dot(sv2u,h2d)+dot(h2ub,sv2d)) - ELSEIF (npwz.EQ.3) THEN - pdd(2,1)=w2*(dot(h1u,sv2d)+dot(sv2u,h1db)) - pdd(2,2)=w2*(dot(h2u,sv2d)+dot(sv2u,h2db)) - ELSEIF (npwz.EQ.4) THEN - pdd(2,1)=zu2*sh1u+zd2*sh1d - pdd(2,2)=zu2*sh2u+zd2*sh2d - ENDIF - pdd(2,1)=pdd(2,1)*b(0) - pdd(2,2)=a(0)*pdd(2,2) - -C 3. fus - IF (npwz.EQ.1) pdd(3,1)=sqf2 - IF (npwz.EQ.2.OR.npwz.EQ.3) pdd(3,1)=w2*sv2 - IF (npwz.EQ.4) pdd(3,1)=szf2 - pdd(3,1)=pdd(3,1)*a(0)*b(0) - pdd(3,2)=pdd(3,1) - -C 4. qqb34 squared - dd=dot(h1u,h2ub)+dot(h1d,h2db)+dot(h1ub,h2u)+dot(h1db,h2d) - IF (npwz.EQ.1) pdd(4,1)=sqf2*dd - IF (npwz.EQ.2.OR.npwz.EQ.3) pdd(4,1)=w2*sv2*dd - IF (npwz.EQ.4) pdd(4,1)=szf2*dd - pdd(4,2)=pdd(4,1) - -C 5. qqb56, qqb78, qq12, qq34, qq56, qq78, squared - IF (npwz.EQ.1) THEN - pdd(5,1)=qu2*sh1u+qd2*sh1d - pdd(5,2)=qu2*sh2u+qd2*sh2d - ELSEIF (npwz.EQ.2) THEN - pdd(5,1)=w2*(dot(sv2u,h1d)+dot(h1ub,sv2d)) - pdd(5,2)=w2*(dot(sv2u,h2d)+dot(h2ub,sv2d)) - ELSEIF (npwz.EQ.3) THEN - pdd(5,1)=w2*(dot(h1u,sv2d)+dot(sv2u,h1db)) - pdd(5,2)=w2*(dot(h2u,sv2d)+dot(sv2u,h2db)) - ELSEIF (npwz.EQ.4) THEN - pdd(5,1)=zu2*sh1u+zd2*sh1d - pdd(5,2)=zu2*sh2u+zd2*sh2d - ENDIF - pdd(5,1)=pdd(5,1)*sh2 - pdd(5,2)=sh1*pdd(5,2) - -C 6. qqb1256 and qqb1278 - pdd(6,1)=pdd(1,1) - pdd(6,2)=pdd(1,2) - -C 7. qqb3456 and qqb3478 - IF (npwz.EQ.1.OR.npwz.EQ.4) THEN - pdd(7,1)=pdd(1,1) - pdd(7,2)=pdd(1,2) - ELSEIF (npwz.EQ.2) THEN - pdd(7,1)=w2*(dot3(sv2u,h1d,h2db)+dot3(h1ub,h2u,sv2d)) - pdd(7,2)=w2*(dot3(sv2u,h1db,h2d)+dot3(h1u,h2ub,sv2d)) - ELSEIF (npwz.EQ.3) THEN - pdd(7,1)=w2*(dot3(sv2u,h1db,h2d)+dot3(h1u,h2ub,sv2d)) - pdd(7,2)=w2*(dot3(sv2u,h1d,h2db)+dot3(h1ub,h2u,sv2d)) - ENDIF - -C 8. qq1256 and qq3478 - IF (npwz.EQ.1) THEN - pdd(8,1)=(qu2*(dot(h1u,h2u)+dot(h1ub,h2ub)) - & +qd2*(dot(h1d,h2d)+dot(h1db,h2db)))/2. - pdd(8,2)=pdd(8,1) - ELSEIF (npwz.EQ.2) THEN - pdd(8,1)=w2*(prod(h2u,v2,h1d)+prod(h1ub,v2,h2db))/2. - pdd(8,2)=w2*(prod(h1u,v2,h2d)+prod(h2ub,v2,h1db))/2. - ELSEIF (npwz.EQ.3) THEN - pdd(8,1)=w2*(prod(h1u,v2,h2d)+prod(h2ub,v2,h1db))/2. - pdd(8,2)=w2*(prod(h2u,v2,h1d)+prod(h1ub,v2,h2db))/2. - ELSEIF (npwz.EQ.4) THEN - pdd(8,1)=(zu2*(dot(h1u,h2u)+dot(h1ub,h2ub)) - & +zd2*(dot(h1d,h2d)+dot(h1db,h2db)))/2. - pdd(8,2)=pdd(8,1) - ENDIF - -C 9. qq1278 and qq3456 - IF (npwz.EQ.1.OR.npwz.EQ.4) THEN - pdd(9,1)=pdd(8,1) - ELSEIF (npwz.EQ.2) THEN - pdd(9,1)=w2*(dot3(sv2u,h1d,h2d)+dot3(h1ub,h2ub,sv2d))/2. - ELSEIF (npwz.EQ.3) THEN - pdd(9,1)=w2*(dot3(h1u,h2u,sv2d)+dot3(sv2u,h1db,h2db))/2. - ENDIF - pdd(9,2)=pdd(9,1) - -C 10. qqb5678LL and qq1234LR - IF (npwz.EQ.1) THEN - tmp1=qu*(sum(h1u)-sum(h1ub))+qd*(sum(h1d)-sum(h1db)) - tmp2=qu*(sum(h2ub)-sum(h2u))+qd*(sum(h2db)-sum(h2d)) - pdd(10,1)=tmp1*tmp2 - ELSEIF (npwz.EQ.2.OR.npwz.EQ.3) THEN - pdd(10,1)=0d0 - ELSEIF (npwz.EQ.4) THEN - tmp1=xlu*sum(h1u)+xld*sum(h1d)-xru*sum(h1ub)-xrd*sum(h1db) - tmp2=xlu*sum(h2ub)+xld*sum(h2db)-xru*sum(h2u)-xrd*sum(h2d) - pdd(10,1)=tmp1*tmp2/2. - tmp1=xlu*sum(h1ub)+xld*sum(h1db)-xru*sum(h1u)-xrd*sum(h1d) - tmp2=xlu*sum(h2u)+xld*sum(h2d)-xru*sum(h2ub)-xrd*sum(h2db) - pdd(10,1)=pdd(10,1)+tmp1*tmp2/2. - ENDIF - pdd(10,2)=pdd(10,1) - -C 11. qqb5678LR and qq1234LL - IF (npwz.LT.4) THEN - pdd(11,1)=pdd(10,1) - ELSEIF (npwz.EQ.4) THEN - tmp1=xlu*sum(h1u)+xld*sum(h1d)-xru*sum(h1ub)-xrd*sum(h1db) - tmp2=xru*sum(h2ub)+xrd*sum(h2db)-xlu*sum(h2u)-xld*sum(h2d) - pdd(11,1)=tmp1*tmp2/2. - tmp1=xlu*sum(h1ub)+xld*sum(h1db)-xru*sum(h1u)-xrd*sum(h1d) - tmp2=xru*sum(h2u)+xrd*sum(h2d)-xlu*sum(h2ub)-xld*sum(h2db) - pdd(11,1)=pdd(11,1)+tmp1*tmp2/2. - ENDIF - pdd(11,2)=pdd(11,1) - -C 12. qqb1234 - IF (npwz.LT.4) THEN - pdd(12,1)=0d0 - ELSEIF (npwz.EQ.4) THEN - pdd(12,1)=dot(h1u,h2ub)+dot(h1ub,h2u) - pdd(12,1)=pdd(12,1)-dot(h1d,h2db)-dot(h1db,h2d) - pdd(12,1)=pdd(12,1)*(xru-xlu)*sxrml/2. - ENDIF - pdd(12,2)=pdd(12,1) - -C 13. COM -- triangle loop contributions -- corrected 2011 - IF (npwz.LT.4) THEN - pdd(13,1)=0d0 - pdd(13,2)=0d0 - ELSEIF (npwz.EQ.4) THEN - pdd(13,1)=sum(h1u)+sum(h1ub)-sum(h1d)-sum(h1db) - pdd(13,1)=pdd(13,1)*(xru-xlu)*sxrml*b(0)/2. - pdd(13,2)=sum(h2u)+sum(h2ub)-sum(h2d)-sum(h2db) - pdd(13,2)=a(0)*pdd(13,2)*(xru-xlu)*sxrml/2. - ENDIF - - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE vector (a,b,c,vec) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION vec(3) - vec(1)=a - vec(2)=b - vec(3)=c - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION sum (a) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION a(3) - sum=a(1)+a(2)+a(3) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION dot (a,b) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION a(3),b(3) - dot=a(1)*b(1)+a(2)*b(2)+a(3)*b(3) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION dot3 (a,b,c) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION a(3),b(3),c(3) - dot3=a(1)*b(1)*c(1)+a(2)*b(2)*c(2)+a(3)*b(3)*c(3) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION prod (a,b,c) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION a(3),b(3,3),c(3) - prod=0d0 - DO 1 i=1,3 - DO 1 j=1,3 -1 prod=prod+a(i)*b(i,j)*c(j) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION xclow (nproc) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - GOTO (1,2) nproc -C q qbar -> v G -1 xclow=u/t+t/u+2.*s*qq/t/u - RETURN -C q G -> V q -2 xclow=-s/t-t/s-2.*u*qq/s/t - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION xcds2 (nproc) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - sti=d3 - sui=d4 - tui=-d9 - GOTO (1,2) nproc -1 CONTINUE -C q qbar -> v G - t0ut = u/t+t/u+2.*qq*s/u/t - realp = - & t0ut*(-(11./6.*ca-xnf/3.)*fa+67./18.*ca-5./9.*xnf - & +ca*fa**2+2.*cf*(ft+fu-2.*fa)*fm - & +(cf-ca/2.)*(pi**2./3.+(2.*fa+fs-fu-ft)**2)-3.*cf*fm) - virtp = - & t0ut*(-8.*cf-cf*fs**2+(2.*cf/3.-ca/6.)*pi**2 - & +ca/2.*(fs**2-(ft+fu)**2)+(11./6.*ca-xnf/3.)*fmu) - & +cf*(s*(sti+sui)+(s+t)/u+(s+u)/t) - & +ft*(cf*(4.*s**2+2.*s*t+4.*s*u+u*t)*sui**2+ca*t*sui) - & +fu*(cf*(4.*s**2+2.*s*u+4.*s*t+t*u)*sti**2+ca*u*sti) - & +(2.*cf-ca)*(2.*fs*(s**2*tui**2+2.*s*tui) - & -qq*(u**2+t**2)/u/t*tui) - & -(2.*cf-ca)*((s**2+(s+u)**2.)/u/t*fr1(qq,s,t) - & +(s**2+(s+t)**2)/t/u*fr1(qq,s,u)) - & +ca*t0ut*fr2(qq,t,u) + 0.0 - xcds2 = realp + virtp - RETURN -2 CONTINUE -C q G -> v G - t0st = s/t+t/s+2.*qq*u/s/t - realp = - & -t0st*(cf*(7./2.+2*fm*(fu-fa)+fa**2-3./2.*(fm+fa)) - & +ca*(pi**2/6.+(fs-ft-fu)**2/2.+2.*ft*(fm-fa) - & +2.*fa*(fs-fu+fa-fm))-fm*(11./6.*ca-xnf/3.)) - virtp = - & t0st*(-8.*cf-cf*fu**2-1./3.*(cf-ca)*pi**2 - & +ca/2.*(fu**2-fs**2-ft**2)+(11./6.*ca-xnf/3.)*fmu) - & +cf*(u*(tui+sui)+(u+t)/s+(s+u)/t) - & +ft*(cf*(4.*u**2+2.*u*t+4.*s*u+s*t)*sui**2+ca*t*sui) - & +fs*(cf*(4.*u**2+2.*s*u+4.*u*t+t*s)*tui**2+ca*s*tui) - & +(2.*cf-ca)*(2.*fu*(u**2*sti**2+2.*u*sti) - & -qq*(s**2+t**2)/s/t*sti) - & -(2.*cf-ca)*((u**2+(u+s)**2)/s/t*(ft*fu-pi**2 - & +pi**2/2.-fr2(qq,t,u))+(u**2+(t+u)**2)/s/t*fr1(qq,s,u)) - & -ca*t0st*fr1(qq,s,t) - virtp = - virtp - xcds2 = realp + virtp - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION triang (nproc) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - GOTO (1,2) nproc -1 CONTINUE -C q qbar -> v G - triang = -(s+qq)/(s-qq)*(1.-qq/(s-qq)*fs) - RETURN - -2 CONTINUE -C q G -> v G - triang = (u+qq)/(u-qq)*(1.-qq/(u-qq)*fu) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION fr1 (qq,s,t) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - fr1 = dlog(s/qq)*dlog(t/(qq-s))+0.5*dlog(qq/s)**2 - & -0.5*dlog((qq-t)/qq)**2+dilog(qq/s)-dilog(qq/(qq-t)) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION fr2 (qq,t,u) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - fr2 = 0.5*dlog((qq-t)/qq)**2+0.5*dlog((qq-u)/qq)**2 - & +dilog(qq/(qq-t))+dilog(qq/(qq-u)) - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION xcs2a (nproc) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - GOTO (1,2) nproc -1 CONTINUE - t0ut = u/t+t/u+2.*qq*s/u/t - anns2a = - & t0ut*(xnf/3.-11./6.*ca+2.*cf*(ftu-2.*fm) - & +(cf-ca/2.)*(4.*fstu-2.*ftu) - & +fs2*(8.*cf-2.*ca)) - xcs2a = anns2a/s2 - RETURN -2 CONTINUE - t0st = s/t+t/s+2.*qq*u/s/t - coms2a = - & -t0st*(cf*(-3./2.+fsu+2.*ftu-2.*fm+(t+u)*fla*d9) - & +ca*(2.*fstu+(fst-fsu)/2.-ftu-2.*fm)) - & -fs2*t0st*(2.*cf+4.*ca) - & +(cf-ca/2)*((fla*(t+u)*d9+fsu)*(s+2.*u)/t - & +2.*ftu*(t+2.*u)/s) - xcs2a = coms2a/s2 - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION xcfin (nproc) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - COMMON /const/ pi,tonbs,alpha,sin2tw,cf,ca,xnc,qw - & ,xmw,xmz,xmc,xmb,xmt,qu,qd,xlu,xld,xru,xrd,v2(3,3) - COMMON /variab/ e,q,qt,y,scalm,scalmu,qq,qt2,eqt,xlambd,escal2 - & ,sh,th,uh,aslo,asnlo,xnf,sqf2,sv2,sxrml,szf2,sv2d(3),sv2u(3) - & ,x1,s2,s,t,u,d1,d2,d3,d4,d5,d6,d9,d10 - & ,fa,fm,fmu,fs,ft,fu,fs2,fst,fsu,ftu,fstu,fla,flt,flu - - GOTO (1,2,3,4,5,6,7,8,9,10,11,12) nproc - -1 CONTINUE -C 1. ann and qqb12 - xcfin = - & cf*(s*d1**2+2.*d1-s/u/t+(2.*qq*u+t*s2-2.*qq*s2)*d6/t - & -2.*qq*(t-u)*d1/t/u) - & +ca*(-11./6.*s/u/t+s**2*(3.*s2-4.*t)*d1**2/2./t/u - & +2.*s*d1/u+qq/3./t**2) - & +xnf/3.*(s/u/t-qq/t**2) - & +2.*(cf-ca/2.)*(fstu+fs2-ftu) - & *(qq-u)**2*d1/u*(d2-1/t) - & +2.*(cf-ca/2)*(fstu+fs2)*(s-qq)/t/u - & +cf*ftu*(4.*qq*(qq-t)**2*d6/u/t+(2.*(qq+s)-s2)*d6 - & +(s2-2.*s)/u/t) - & -ca*ftu*qq/u/t - & +cf*(fm-fs2)*(d6/u/t*(4.*u*t*(u-qq)-4.*qq*(u-qq)**2 - & -u*t*s2)+(qq-u)*d1**2-(2.*qq-u)*d1/t-2./t+qq/t**2 - & +4.*qq/u/t) + 0.0 - RETURN - -2 CONTINUE -C 2. com - xcfin = - & fla*d9*d10*(d10*3./4.*cf*s*(s+qq-s2)*(u**2-t**2)*(1-u/t) - & +cf*((u**2-t**2)*((qq-s2)/4./s+11./4.+s2/t-u/2./t) - & -2.*s*(t+u**2/t)-s*(s-s2)*(u/t-3.)/2.+4.*s2*(t-u)+5.*s*u) - & +ca*(1.-u/t)*((t+u)*(s+qq-s2)/4.+s*(s-s2))) - & +fla*d9*(cf*((t-u-2.*s2)/4./s+(11.*s-2.*u-4.*s2)/4./t - & +(2.*(1.+u/t)*(5.*qq+s2)-16.*qq*s2/t)/s) - & -ca/2.*((1.+u/t)/2.+5.*(u/s-(u+s2)/t)-7.*(s+u*s2/s)/t - & +3.*(t-3.*s2)/s+2.*(u**2+3.*s2**2)/s/t)) - & +d10*(cf*(3./2.*d10*s*(1.+u/t)*(t-u)**2+s*(u-3.*t)/2./t - & +(1.-u/t)*(s2-7.*u/4.)+(t-u)*(11./4.+(3./2.*(t+u)-2.*s2)/s)) - & +ca*(u/t-1.)*(s+s2)) - & +2.*d1**3*s*t*(4.*cf-3.*ca-(fs2-fm)*(cf-ca)) - & +d1**2*(cf*(3.*s-8.*t-4.*u)-ca*(9.*s-4.*(t-u)) - & +2.*(fs2-fm)*(cf*(t+u)+ca*(3.*s+2.*u))) - xcfin=xcfin - & +d1*((cf*(fs2-fm)-ca*(fs2-fm+1./2.*(fstu+fs2 - & -ftu+(fst+flt)/2.)))*(4.*(1.+u/s)*(1.-u/t)-2.*(s/t+t/s)) - & -cf*(fs2-fm)*(s+2.*u)/t - & +ca*((2.*flt+2.*fst)*(u+s)/t+2.*(fs2-fm)*((5.*s+4.*u)/t-2.)) - & -cf*(4.+(s-2.*u)/t+(2.*u-3.*t)/s-u**2/s/t) - & +ca*(7.-(3.*s+2.*u)/t)) - & +d2*(2.*cf*(fm-fs2-s/t)+ca*(s/t-1.)) - & +d3*cf*(fsu-2.*ftu-flt)*(1.-s2/t)*(s2**2-2.*u*(s2-u))/s**2 - & +d6*cf*(2.*(fm-fs2-ftu)*(2.*s/t*(qq+2.*u)+t-s2+4.*u/t*(2.*u-s2) - & +2.*(u-s2)*(t-2.*u+2.*u**2/t)/s) - & +s2-t+4.*u*(qq/t+(1.-u/t)*(t-qq)/s)) - xcfin=xcfin - & +cf*((fsu-2.*ftu-flt)*((2.*u*(s2-u)-s2**2)/s-s2)/s/t - & -2.*ftu*(1./t-2./s+4.*u/s/t)+flt*(u-3.*s2+5.*qq)/s/t - & +fsu*(5./s+(1.+2.*t/s-3.*s2/s)/u-s2*qq/s/u**2) - & +(fs2-fm)*(8./s+3./t+1./u-4.*u/s/t+(2.*t-3.*s2)/s/u - & -qq*(1./t**2+s2/s/u**2))-2./s+3./4./t-1./u+3.*u/s/t - & -(t+s2)/s/u+qq*(s2/s/u**2-1./2./t**2)) - & +ca*(2.*(fs2-fm)*(6./s-2./t-2.*qq/s/t-3.*s2/s/t) - & -2.*fst*(-15./4./s+9.*s2/4./s/t+qq/t**2) - & +2.*(fs2-fm+fst)*((s+s2**2/s)/t**2 - & +2.*s2*qq/t**3-4.*qq/t*(1.-qq/t)/s - & +2.*s2/s/t*qq/t*(1.-s2/t)*(1.-qq/t)) - & +(fs2+fstu-(fst+fsu)/2.)*(4.-2.*u/t-s2/t)/s+fsu*(1.-u/t)/s - & +ftu*(2.*u/t-1.)/s-2.*flt*(3./t+1./s+2.*(u-s2)/s/t) - & -1./s-1./t+2.*s2/s/t+(3.*qq+4.*s2*(1.-3.*qq/t))/t**2 - & -2.*(s+s2**2./s)/t**2-12.*s2/s/t*qq/t*(1.-s2/t)*(1.-qq/t) - & +2./s*qq/t*(1.-qq/t)) + 0.0 - RETURN - -3 CONTINUE -C 3. fus - xcfin = - & ca*d5*d9*fla*(d10*t**2*(3./2.*d10*(2.*s-t-u)*(u**2-t**2) - & +(2.*s-3.*t+u+(t**2-u**2)/s))-3.*s/2.-t*(9./2.+5.*t/s+3.*u/s)) - &+ca*d9*fla*(d10*t**2*(3./2.*d10*(u**2-t**2)+1.)*(qq-s2)/s - & -11.*(qq-s2)/s/4.-4.*(1.+t/s)) - &+cf*d9*fla*(2.*d5*(t+u-2.*s)+6.) - &+ca*d10*t*(3.*d10*(t-u)**2*(1.+(t+u)/2./s-2.*s*d5) - & +d5*(2.*s-3.*t+3.*u)-1.-u/s+s2*(t-u)/s**2 - & +(d5-1./2./s)*(t-u)**2/s) - &+cf*4.*d6*((fs2-fm+ftu)*(s/2.+2.*t*(1.+t/s))-t*(1.+(t+u)/s)) - &+d5*2*(d1*(ca-2.*cf)*t**2*(fst+flt)/s - & +d3*cf*(fsu-flt-2.*ftu)*(s+2.*u*(1.+u/s))) - &+d5*(2.*cf*(fst-(3.+4.*(t+u)/s)*flt-(4.+8.*t/s)*ftu) - & +ca/2.*((fst+flt)*(2.+(u+3.*t)/s)+1.+t*(t-u)/s**2)) - xcfin = xcfin - &+2.*cf*d3*(2.*ftu+flt-fsu)*(2.+(t+u)/s) - &+8.*t*d1**2*(cf*(1.-fs2+fm)+ca) - &+4.*(cf-ca/2.)*d1*d2*(fs2-ftu+fstu)*t*u/s - &+d1*((ca-2.*cf)*((2.+(t+u)/s)*(fst+flt)+2.*(u-t)/s - & *(fs2+fstu-ftu))-8.*cf*(fs2-fm-1.)+4.*ca*(2.+(u-t)/s)) - &+cf*(2.*(fs2-fm)*(2./s-2./t-(u+s2*qq/t)/s/t) - & +4.*(fs2+fstu)/s-2.*fst/t*(2.+(u+s2*qq/t)/s) - & +(4.*qq*(1.+s2/t)-2.*u)/s/t) - &-ca/s*(2.*(fs2+fstu)+fst/2.+5./2.*flt+15./4.) + 0.0 - RETURN - -4 CONTINUE -C 4. qqb34 - xcfin = - & d5/2.*(u/s-1.)-5./4./s - & +d10*(u*d5*(-2.*s+3./2.*u/s*(t-u)+4.*u-2.*t) - & +u/2./s*(2.*s+2.*s2+t-u)) - & +d10**2*3.*u**2*(u-t)*(d5*(2.*s-u-t)-(s+s2)/s) - & +d9*fla*(d5*(2.*u**2/s+5./2.*u+3./2.*s)+(3./4.*s+u-s2/2.)/s) - & +d9*d10*fla*(u**2*d5*(3.*u-t-u**2/s+t**2/s-2.*s) - & +u/s*(2.*s2*t-u*t-2.*s2**2+4.*u*s2-3.*u**2+2.*s*s2-u*s)) - & +d9*d10**2*fla*(3.*d5*(u**2-t**2)*u**2*(s-qq) - & +3.*u**2*qq/s*(u-t)*(u+t-2.*s2)) + 0.0 - xcfin=xcfin/2. - RETURN - -5 CONTINUE -C 5. qqb56 - xcfin = - & d9*d10*s*fla*(u**2-t**2)/t - & +d9/t*fla*(3.*s+2.*u) - & +d10*(t+u-2.*s2)*(1.-u/t) - & +(fs2-fm)*d1*(s*d1+4.*s/t+2.*u/t) - & +(fst-fm+fs2)*((s+s2-qq)**2/s/t**2 - & +(u/t-2.*s2*qq/t**2)**2/s+4.*(qq/t-1.)/t) - & +fst*2*(1.-qq/t)/t - & -d1*(s*d1-1.-u/t)+2.*(u/t+s2*(1./t+1./s-s2/t/s))/t - & +(qq/t-1.)/t+12.*s2*qq*(u-s2*qq/t)/s/t**3 + 0.0 - xcfin=xcfin/2. - RETURN - -6 CONTINUE -C 6. qqb1256 - xcfin = - & d9*fla*(d10**2*3.*s**2*qq*(t-u)**2*(1./t+1./u) - & +d10*s*qq*(5.*s/t-7.*s/u+4.*u/t-4.) - & +(2.*s**2/u+(qq*(2.*s+u)-u*s)/t)/s2+(2.*s2-u)/t-2.) - & +d10**2*3.*s*qq*(2.*s2-u-t)*(t-u)**2/u/t - & +d10*(s*(s-s2)*(7./u-5./t)+(t/u-u/t)*(7.*s+t+3.*u-2.*s2)/2. - & +3.*s*(t/u-u/t)/2.+2.*s-2.*s2*(1.-u/t)) - & +d1*s**2*(d1+3./t)/u+fst*((2.*s*(1.+s/u)+u)/s2-2.*qq/t)/t - & -1./2./u+3./2./t-3.*qq/t**2 - xcfin=xcfin*(cf-ca/2.) - RETURN - -7 CONTINUE -C 7. qqb3456 - xcfin = - & d9*fla*(6.*s*s2*qq*d10**2*(t-u)**2/t - & +d10*(2.*s*u+(s2*(1.+t/s)-t*(t+u)/2./s) - & *(t+u)*(1.-u/t)+3.*s/2.*(t-u)*(1.-u/t) - & -4.*s2*qq*(1.+(s-u)/t)) - & +d5*(6.*s+2.*u+(t**2-u**2)/2./s) - & -1.+(s/2.+2.*u-s2)/t+(3.*t+2.*u-6.*s2)/s - & +(u**2-2*u*s2+4.*s2**2)/s/t) - & +d10**2*3.*s2*(t-u)**2*(1.+u/t-2.*qq/t) - & +d10*(-t/2.+3.*u+s2+(t**2-u**2)/s-u*(u+6.*s2)/2/t) - & +d5*(fst+flt)*(2.*(s+u)/t+(t+u**2/t)/2./s) +2.*d1 - & +fst/2.*(2./t+3./s+(u-2.*s2)/s/t) - & +flt/2.*(-2./t+1./s-(u+2.*s2)/s/t) - & +1./2./t-1./s+(2.*u-4.*s2*qq/t)/s/t + 0.0 - xcfin=xcfin*(cf-ca/2.) - RETURN - -8 CONTINUE -C 8. qq1256 - xcfin = - & (fst+flt)*(4.*d1*d5*s**2/t-2.*d1*(1.-u/t)-4./t) - & +4.*qq*fst/t**2 + 0.0 - xcfin=xcfin*(cf-ca/2.) - RETURN - -9 CONTINUE -C 9. qq1278 - xcfin = - & (2.*fs2-fst-fsu+2.*fstu)*(-2.-u/t-t/u+2.*s2*(1./u+1./t - & -s2/u/t))/s - & -4.*(1.+(u/t+t/u)/2.-s2*qq*(1./t**2+1./u**2))/s - xcfin=xcfin*(cf-ca/2.) - RETURN - -10 CONTINUE -C 10. qqb5678LL - xcfin = - & d9*fla*(-d10*s/t*(t-u)**2+2.*d5*(s-t)+3.*s/t+2.*s2/t-1.) - & +d10*(u/t-1.)*(u-2.*s2) - & +d3*d5*(fsu-flt-2.*ftu)*(2.*s*(s+u)+u**2)/t - & +d5*((fst-ftu)*(1.+u/t+2.*t/u+4.*s*(1./t+1./u+s/t/u)) - & -(flt+ftu)*(1+u/t)) - & +d3*(2.*ftu-fsu+flt)*(1.+2.*s/t+u/t) + 2.*d1*s/u - & +ftu*(s+s2)/t/u-(fst+flt+1.-s/u)/t - xcfin = xcfin/2. - RETURN - -11 CONTINUE -C 11. qqb5678LR - xcfin = - & 2.*d5*(d3*(fsu-flt-2.*ftu)+2.*(fst-ftu)/u)*s**2/t - & +d3*(1.+2.*s/t-u/t)*(2.*ftu-fsu+flt) - & +2.*(ftu-fsu)*(s+s2-u)/t/u - 2.*(ftu+flt)/t - xcfin = xcfin/2. - RETURN - -12 CONTINUE -C 12. qqb1234 - xcfin = - & d9*fla*(d10*(d10*3.*s*qq*(2.*s+t+u)*(t-u)**2/t - & +qq*(2.*s+t+u)*(u-t-s)/t) - qq/t) - & +d10*(-d10*3./2./t*(s+qq-s2)*(2.*s+t+u)*(t-u)**2 - & +(2.*s+t+u)*(3./2.+(s-s2)/t-u/2./t)) - xcfin = xcfin/2. - RETURN - - END -C----------------------------------------------------------------------- -C Dilogarithm Li2(x) for -1 <= x <= 1 -C - DOUBLE PRECISION FUNCTION dilog (x) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - EXTERNAL dilitg - pi=3.141592654 - IF (DABS(x).GT.1.d0) PAUSE - & 'Dilog: Argument outside range [-1,1]' - IF (x.EQ.1.d0) THEN - dilog = pi**2/6. - RETURN - ENDIF - IF (x.EQ.0.d0) THEN - dilog=0. - RETURN - ENDIF - xx=x - IF (x.GT..5d0) xx=1.d0-x - IF (x.LT.0.d0) xx=-x/(1.-x) - CALL dilgau (dilitg,0.d0,xx,dilog) - IF (x.GT..5d0) THEN - dilog=-dilog+pi**2/6.-dlog(x)*dlog(xx) - ELSEIF (x.LT.0.d0) THEN - dilog=-dilog-.5d0*(dlog(1.-x))**2 - ENDIF - RETURN - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION dilitg (x) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - dilitg = -dlog(1.d0-x)/x - RETURN - END -C----------------------------------------------------------------------- -C Gaussian Integrator - from Numerical Recipes - page 122 -C - SUBROUTINE dilgau (func,a,b,ss) - IMPLICIT DOUBLE PRECISION (a-h,o-z) - DIMENSION x(5), w(5) - DATA x /.1488743389d0,.4333953941d0,.6794095682d0, - & .8650633666d0,.9739065285d0/ - DATA w /.2955242247d0,.2692667193d0,.2190863625d0, - & .1494513491d0,.0666713443d0/ - xm=0.5d0*(b+a) - xr=0.5d0*(b-a) - ss=0.d0 - DO 11 j=1,5 - dx=xr*x(j) - ss=ss+w(j)*(func(xm+dx)+func(xm-dx)) -11 CONTINUE - ss=xr*ss - RETURN - END diff --git a/gonsalves/qt.inp b/gonsalves/qt.inp deleted file mode 100644 index 0cad6d3..0000000 --- a/gonsalves/qt.inp +++ /dev/null @@ -1,21 +0,0 @@ - Input parameters for qt.f: Inclusive gamma*, W, Z production - Hadrons: lppb lns e pdset - t f 1800 mrs02nlo - Bosons: npwz lwpm q qt y - 2 t 80 50 0 - Partons: lallpr 1 2 3 4 5 6 7 8 9 10 11 12 - t f t t f f f f f f f f f - QCD: nscale nalpha lord1 lord2 - 1 1 t t - Scales: lscaleq lscalm lscalmu scalm scalmu - t f f 0.0 0.0 - Thresholds: linctri - f - Integrate: ndim ntot begin step npoints - 3 0 10.0 20.0 10 - Vegas: ncall itmx0 itmx ndev nprn alph0 alph - 40000 3 7 2 -1 1.5 1.5 - Ran Seed: iseed - 13579 - Output: lterm lauto ofname comment - t f qt.out # diff --git a/gonsalves/vegas.f b/gonsalves/vegas.f deleted file mode 100644 index 094db7e..0000000 --- a/gonsalves/vegas.f +++ /dev/null @@ -1,328 +0,0 @@ -C----------------------------------------------------------------------- -C Vegas -C - BLOCK DATA vegdat -C -C makes default parameter assignments for vegas - IMPLICIT DOUBLE PRECISION(a-h,o-z) - COMMON/bveg1/ncall,itmx,nprn,ndev,xl(10),xu(10),acc - COMMON/bveg2/it,ndo,si,swgt,schi,xi(50,10) - COMMON/bveg3/alph,ndmx,mds - COMMON/rnsd/iseed - DATA ncall/5000/,itmx/5/,nprn/5/,acc/-1./, - 1 xl/0.,0.,0.,0.,0.,0.,0.,0.,0.,0./, - 2 xu/1.,1.,1.,1.,1.,1.,1.,1.,1.,1./, - 3 alph/1.5/,ndmx/50/,mds/1/,ndev/6/, - 4 ndo/1/,xi/500*1./,it/0/,si,swgt,schi/3*0./ - - END -C----------------------------------------------------------------------- - SUBROUTINE VEGAS(ndim,fxn,avgi,sd,chi2a) -C -C Subroutine performs ndim-dimensional Monte Carlo integ'n -C - by G.P. Lepage Sept 1976/(rev)Aug 1979 -C - algorithm described in J Comp Phys 27,192(1978) -C - IMPLICIT DOUBLE PRECISION(a-h,o-z) - COMMON/bveg1/ncall,itmx,nprn,ndev,xl(10),xu(10),acc - COMMON/bveg2/it,ndo,si,swgt,schi,xi(50,10) - COMMON/bveg3/alph,ndmx,mds - COMMON/bveg4/calls,ti,tsi - DIMENSION d(50,10),di(50,10),xin(50),r(50),dx(10),ia(10), - 1 kg(10),dt(10),x(10) -C DIMENSION rand(10) - double precision rand(10) - DATA one/1d0/ - sqrt(a)=dsqrt(a) - alog(a)=dlog(a) - abs(a)=dabs(a) -C - ndo=1 - DO 1 j=1,ndim -1 xi(1,j)=one -C - ENTRY vegas1(ndim,fxn,avgi,sd,chi2a) -C - initializes cumulative variables, but not grid - it=0 - si=0d0 - swgt=si - schi=si -C - ENTRY vegas2(ndim,fxn,avgi,sd,chi2a) -C - no initialization - nd=ndmx - ng=1 - IF(mds.EQ.0) GO TO 2 - ng=(ncall/2d0)**(1d0/ndim) - mds=1 - IF((2*ng-ndmx).LT.0) GO TO 2 - mds=-1 - npg=ng/ndmx+1 - nd=ng/npg - ng=npg*nd -2 k=ng**ndim - npg=ncall/k - IF(npg.LT.2) npg=2 - calls=npg*k - dxg=one/ng - dv2g=(calls*dxg**ndim)**2/npg/npg/(npg-one) - xnd=nd - ndm=nd-1 - dxg=dxg*xnd - xjac=one/calls - DO 3 j=1,ndim - dx(j)=xu(j)-xl(j) -3 xjac=xjac*dx(j) -C -C rebin, preserving bin density - IF(nd.EQ.ndo) GO TO 8 - rc=ndo/xnd - DO 7 j=1, ndim - k=0 - xn=0. - dr=xn - i=k -4 k=k+1 - dr=dr+one - xo=xn - xn=xi(k,j) -5 IF(rc.GT.dr) GO TO 4 - i=i+1 - dr=dr-rC - xin(i)=xn-(xn-xo)*dr - IF(i.LT.ndm) GO TO 5 - DO 6 i=1,ndm -6 xi(i,j)=xin(i) -7 xi(nd,j)=one - ndo=nd -C -8 IF(nprn.ge.0) WRITE(ndev,200) ndim,calls,it,itmx,acc,nprn, - 1 alph,mds,nd,(xl(j),xu(j),j=1,ndim) - IF(nprn.ge.0) WRITE(ndev,222) -C - ENTRY vegas3(ndim,fxn,avgi,sd,chi2a) -C - main integration loop -9 it=it+1 - ti=0d0 - tsi=ti - DO 10 j=1,ndim - kg(j)=1 - DO 10 i=1,nd - d(i,j)=ti -10 di(i,j)=ti -C -11 fb=0d0 - f2b=fb - k=0 -12 k=k+1 - CALL randa(ndim,rand) - wgt=xjaC - DO 15 j=1,ndim - xn=(kg(j)-rand(j))*dxg+one - ia(j)=xn - IF(ia(j).GT.1) GO TO 13 - xo=xi(ia(j),j) - rc=(xn-ia(j))*xo - GO TO 14 -13 xo=xi(ia(j),j)-xi(ia(j)-1,j) - rc=xi(ia(j)-1,j)+(xn-ia(j))*xo -14 x(j)=xl(j)+rc*dx(j) -15 wgt=wgt*xo*xnd -C - f=wgt - f=f*fxn(x,wgt) - f2=f*f - fb=fb+f - f2b=f2b+f2 - DO 16 j=1,ndim - di(ia(j),j)=di(ia(j),j)+f -16 IF(mds.ge.0) d(ia(j),j)=d(ia(j),j)+f2 - IF(k.LT.npg) GO TO 12 -C - f2b=sqrt(f2b*npg) - f2b=(f2b-fb)*(f2b+fb) - ti=ti+fb - tsi=tsi+f2b - IF(mds.ge.0) GO TO 18 - DO 17 j=1,ndim -17 d(ia(j),j)=d(ia(j),j)+f2b -18 k=ndim -19 kg(k)=mod(kg(k),ng)+1 - IF(kg(k).ne.1) GO TO 11 - k=k-1 - IF(k.GT.0) GO TO 19 -C -C compute final results for this iteration - tsi=tsi*dv2g - ti2=ti*ti - wgt=one/tsi - si=si+ti*wgt - swgt=swgt+wgt - schi=schi+ti2*wgt - avgi=si/swgt - chi2a=(schi-si*avgi)/(it-.9999d0) - sd=sqrt(one/swgt) -C - IF(nprn.LT.0) GO TO 21 - tsi=sqrt(tsi) - WRITE(ndev,201) it,ti,tsi,avgi,sd,chi2a - IF(nprn.EQ.0) GO TO 21 - DO 20 j=1,ndim -20 WRITE(ndev,202) j,(xi(i,j),di(i,j),i=1+nprn/2,nd,nprn) -C -c refine grid -21 DO 23 j=1,ndim - xo=d(1,j) - xn=d(2,j) - d(1,j)=(xo+xn)/2. - dt(j)=d(1,j) - DO 22 i=2,ndm - d(i,j)=xo+xn - xo=xn - xn=d(i+1,j) - d(i,j)=(d(i,j)+xn)/3. -22 dt(j)=dt(j)+d(i,j) - d(nd,j)=(xo+xn)/2. -23 dt(j)=dt(j)+d(nd,j) -C - DO 28 j=1,ndim - rc=0. - DO 24 i=1,nd - r(i)=0d0 - IF(d(i,j).le.0.) GO TO 24 - xo=dt(j)/d(i,j) - r(i)=((xo-one)/xo/alog(xo))**alph -24 rc=rc+r(i) - rc=rc/xnd - k=0 - xn=0d0 - dr=xn - i=k -25 k=k+1 - dr=dr+r(k) - xo=xn - xn=xi(k,j) -26 IF(rc.GT.dr) GO TO 25 - i=i+1 - dr=dr-rC - xin(i)=xn-(xn-xo)*dr/r(k) - IF(i.LT.ndm) GO TO 26 - DO 27 i=1,ndm -27 xi(i,j)=xin(i) -28 xi(nd,j)=one -C - IF(it.LT.itmx.AND.acc*abs(avgi).LT.sd) GO TO 9 -200 FORMAT(/35h Input parameters for Vegas: ndim=,i3,8h ncall=,f8.0 - 1 /28x,5h it+,i5,7h itmx=,i5/28x,6h acc=,g9.3 - 2 /28x,7h nprn=,i3,7h alph=,f5.2/28x,6h mds=,i3,6h nd=,i4 - 3 /28x,10h (xl,xu)=,(t40,2h( ,g12.6,3h , ,g12.6,2h ))) -222 FORMAT( - 4 //1x,'Iter.#. Integral Std.-Dev. Accum.-Int. Std.-Dev. ', - 5 'Chi2a',/) -201 FORMAT(1x,i3,5x,5(g9.3,3x)) -*201 FORMAT(///21h integration by vegas//14h iteration no.,i3, -* 1 14h: integral =,g14.8/24x,10hstd dev =,g10.4/ -* 2 34h accumulated results: integral =,g14.8/ -* 3 24x,10hstd dev =,g10.4/24x,17hchi**2 per it'n =,g10.4) -202 FORMAT(/15h DATA for axis ,i2/25h x delta i , - 1 24h x delta i ,18h x delta i, - 2 /(1h ,f7.6,1x,g11.4,5x,f7.6,1x,g11.4,5x,f7.6,1x,g11.4)) - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE randa(n,rand) -C subroutine generates uniformly distributed random no's x(i),i=1,n - IMPLICIT NONE - INTEGER n - DOUBLE PRECISION rand(n),ran2,ranf - EXTERNAL ran2 - INTEGER i,idum - COMMON /ranseed/ idum - DO i=1,n -C rand(i)=ran2(idum) - rand(i)=ranf(idum) - ENDDO - RETURN - END -C----------------------------------------------------------------------- - BLOCK DATA seeddata - IMPLICIT NONE - INTEGER idum - COMMON /ranseed/ idum - DATA idum /-123456789/ - END -C----------------------------------------------------------------------- - SUBROUTINE getseed(seed) - IMPLICIT NONE - INTEGER seed,idum - COMMON /ranseed/ idum - seed=idum - RETURN - END -C----------------------------------------------------------------------- - SUBROUTINE setseed(seed) - IMPLICIT NONE - INTEGER seed,idum - COMMON /ranseed/ idum - IF (seed.GT.0) THEN - idum=-seed - ELSE - idum=seed - ENDIF - RETURN - END -C----------------------------------------------------------------------- - double precision FUNCTION ran2(idum) -* from Numerical recipes -* converted to double precision - implicit none - INTEGER idum,IM1,IM2,IMM1,IA1,IA2,IQ1,IQ2,IR1,IR2,NTAB,NDIV - double precision AM,EPS,RNMX - PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1,IMM1=IM1-1, - *IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211,IR2=3791, - *NTAB=32,NDIV=1+IMM1/NTAB,EPS=3d-16,RNMX=1d0-EPS) - INTEGER idum2,j,k,iv(NTAB),iy - SAVE iv,iy,idum2 - DATA idum2/123456789/, iv/NTAB*0/, iy/0/ - if (idum.le.0) then - idum=max(-idum,1) - idum2=idum - do 11 j=NTAB+8,1,-1 - k=idum/IQ1 - idum=IA1*(idum-k*IQ1)-k*IR1 - if (idum.lt.0) idum=idum+IM1 - if (j.le.NTAB) iv(j)=idum -11 continue - iy=iv(1) - endif - k=idum/IQ1 - idum=IA1*(idum-k*IQ1)-k*IR1 - if (idum.lt.0) idum=idum+IM1 - k=idum2/IQ2 - idum2=IA2*(idum2-k*IQ2)-k*IR2 - if (idum2.lt.0) idum2=idum2+IM2 - j=1+iy/NDIV - iy=iv(j)-idum2 - iv(j)=idum - if(iy.lt.1)iy=iy+IMM1 - ran2=min(AM*iy,RNMX) - return - END -C----------------------------------------------------------------------- - DOUBLE PRECISION FUNCTION RANF(ISEED) -C Park-Miller generator using Schrage's algorithm - IMPLICIT NONE - INTEGER ISEED - INTEGER IA,IC,IQ,IR - PARAMETER (IA=16807,IC=2147483647,IQ=127773,IR=2836) - INTEGER IH,IL,IT - IH=ISEED/IQ - IL=MOD(ISEED,IQ) - IT=IA*IL-IR*IH - IF(IT.GT.0) THEN - ISEED=IT - ELSE - ISEED=IC+IT - ENDIF - RANF=ISEED/DBLE(IC) - END