19       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
   21       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
   22       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
   23       COMMON /haenvi/ nindep
 
   24       COMMON /haoutl/ noutl,nouter,noutco
 
   26       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
   27       COMMON /outlev/ioutpo,ioutpa,iouxev,ioucol
 
   31       CHARACTER*8 projty,targty
 
   32       CHARACTER*8 projty0,targty0
 
   33       COMMON /userla1/
title,projty,targty
 
   34       COMMON /userla2/cmener,sdfrac,ptlar,istruf ,isingd,idubld
 
   35       COMMON /user1/title0,projty0,targty0
 
   36       COMMON /user2/cmener0,sdfrac0,ptlar0,istruf0,isingd0,idubld0
 
   37       COMMON /collap/
s,ijproj,ijtar,ptthr,ptthr2,iophrd,ijprlu,ijtalu
 
   38       common/collis/ s0, ijproj0, ijtar0, ptthr0, ptthr20, iophrd0,
 
   50       COMMON /strufu/istrum,istrut
 
   54       COMMON /pomene/poen(28),poen1(28),poen2(28),nestep
 
   56       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
   82           ptthrz(iii)=2.1+0.15*(log10(poen(iii)/50.))**3
 
   83           ptthz2(iii)=ptthrz(iii)
 
   84         ELSEIF(istrut.EQ.2)
THEN 
   85           ptthrz(iii)=2.5+0.12*(log10(poen(iii)/50.))**3
 
   86           ptthz2(iii)=ptthrz(iii)
 
  103       IF((istruf.GE.16).OR.(istruf.LE.20)) 
THEN 
  109       IF ( ijproj.EQ.2 ) nha =-1
 
  112       IF ( ijtar .EQ.2 ) nhb =-1
 
  118       DO 201 indene=1,nestep
 
  124         ptini(1) = ptthrz(indene)
 
  125         ptini(2) = ptthz2(indene)
 
  147         IF ( iopt.EQ.0 ) CALL 
harini 
  153       SUBROUTINE selhrd(MHARD,IJPVAL,IJTVAL,PTTHRE)
 
  177       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  179       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  183       CHARACTER*8 projty,targty
 
  184       CHARACTER*8 projty0,targty0
 
  185       COMMON /userla1/
title,projty,targty
 
  186       COMMON /userla2/cmener,sdfrac,ptlar,istruf ,isingd,idubld
 
  187       COMMON /user1/title0,projty0,targty0
 
  188       COMMON /user2/cmener0,sdfrac0,ptlar0,istruf0,isingd0,idubld0
 
  189       COMMON /collap/
s,ijproj,ijtar,ptthr,ptthr2,iophrd,ijprlu,ijtalu
 
  190       common/collis/ s0, ijproj0, ijtar0, ptthr0, ptthr20, iophrd0,
 
  198       COMMON /abrhrd/xh1(mscahd),xh2(mscahd),ijhi1(mscahd),
 
  199      *ijhi2(mscahd),ijhf1(mscahd),ijhf2(mscahd),phard1(mscahd,4),
 
  201       COMMON /outlev/ioutpo,ioutpa,iouxev,ioucol
 
  202       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  203       COMMON /haoutl/ noutl,nouter,noutco
 
  204       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
  205       COMMON /harslt/ lscahd,lsc1hd,
 
  206      &                etahd(mscahd,2) ,pthd(mscahd),
 
  207      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
  208      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
  209      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
  211       COMMON /pomene/poen(28),poen1(28),poen2(28),nestep
 
  212       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
  213       DATA x1su/0./ , x2su/0./
 
  220     IF(cmener0.GE.poen1(ii).AND.cmener0.LT.poen2(ii))
THEN 
  227       ptini(1) = ptthrz(indene)
 
  228       ptini(2) = ptthz2(indene)
 
  232       IF (ioutpa.GE.3) 
WRITE(6,221)
 
  233      *                  mhard,ijpval,ijtval
 
  234   221 
FORMAT (
' SELHRD  ',3i10)
 
  249         IF( ioutpa.GT. 6 )
WRITE(6,*)
n,x1su,x2su,xh1(
n),xh2(
n)
 
  253         IF ( iiia.GT. 0 .AND. iiia.LT.10 ) iii    = sign(iiia+10,iii)
 
  254         IF ( iiia.GE.10                  ) iii    = sign(iiia-10,iii)
 
  255         IF ( iiia.GE.10                  ) ijpval = 1
 
  259         IF ( iiia.GT. 0 .AND. iiia.LT.10 ) iii    = sign(iiia+10,iii)
 
  260         IF ( iiia.GE.10                  ) iii    = sign(iiia-10,iii)
 
  261         IF ( iiia.GE.10                  ) ijtval = 1
 
  269         ijhf1(
n) = nouthd(
n,1)
 
  270         ijhf2(
n) = nouthd(
n,2)
 
  273           phard1(
n,j) = prec(j,i3)
 
  274 20        phard2(
n,j) = prec(j,i4)
 
  275         phard1(
n,4)   = prec(0,i3)
 
  276         phard2(
n,4)   = prec(0,i4)
 
  281       IF (ioutpa.GE.3)
WRITE (6,101)
 
  282   101 
FORMAT(
' SELHRD OUTPUT FOR INITIAL STATE SCATTERED PARTONS')
 
  285      *    
WRITE (6,103)i,ijpval,ijtval,ijhi1(i),ijhi2(i),xh1(i),xh2(i)
 
  286   103   
FORMAT (
' I,IJPVAL,IJTVAL,IJHI1,IJHI2,XH1,XH2= ',5i5,2f12.6)
 
  288       IF (ioutpa.GE.3)
WRITE (6,301)
 
  289   301 
FORMAT(
' SELHRD OUTPUT FOR FINAL STATE SCATTERED PARTONS')
 
  292      *    
WRITE (6,303)i,ijhf1(i),ijhf2(i),(phard1(i,iii),iii=1,4)
 
  294      *    
WRITE (6,303)i,ijhf1(i),ijhf2(i),(phard2(i,iii),iii=1,4)
 
  295   303   
FORMAT (
' I,IJHI1,IJHI2,PHARD1 OR PHARD2 ',3i5,4f16.6)
 
  314       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  316       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  317       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  318       COMMON /haenvi/ nindep
 
  319       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  321       pt1    = max(pt1in,ptini(1))
 
  332       IF ( nindep.EQ.1 ) CALL 
hisfil2 
  346       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  348       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  349       parameter( tiny= 1.
d-30, 
one=1.d0, zsmall=1.
d-3 )
 
  350       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  351       COMMON /hapdco/ npdcor
 
  352       COMMON /haoutl/ noutl,nouter,noutco
 
  353       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  354       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  355      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  356       COMMON /haxik / xrest,yrest,zmax,axxmax,wemax
 
  357       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
  362       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
  363      &                mxsect(0:2,-1:
maxpro,28)
 
  365       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
  368       COMMON /harslt/ lscahd,lsc1hd,
 
  369      &                etahd(mscahd,2) ,pthd(mscahd),
 
  370      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
  371      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
  372      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
  373       itype(l)      = 
mod(lrec1(l),100)-50
 
  385       IF(itry.GT.ntry) goto 301
 
  387       xrest    = xshmx-nhard*sa
 
  388       yrest    = xshmx-nhard*sa
 
  389       IF(xrest*yrest.LT.aa) 
THEN 
  390         WRITE(6,*) 
' ****************** HAMULT ****************** ' 
  391         WRITE(6,*) 
' IT IS NOT POSSIBLE TO PRODUCE ',nhard,
' POMERONS ' 
  399       wemax =
sqrt(1-axxmax)
 
  405         a        = (2.*ptwant/ecm)**2
 
  409         IF ( pt1.LT.ptini(i) .AND. i.GT.1 ) goto 50
 
  413             xsect(1,m,indene) = xsecta(1,m,i,indene)
 
  414             xsect(2,m,indene) = xsecta(2,m,i,indene)
 
  427        etahd(ihard,1) = etac
 
  428        etahd(ihard,2) = etad
 
  432        if(zmax/
a-
one.lt.zsmall) 
THEN 
  433          CALL 
xcheck(x1s,x2s,linmax)
 
  437        wemax=
sqrt(1.-axxmax)
 
  439        IF(ihard.LT.nhard) goto 10
 
  442       IF ( npdcor.EQ.1     .AND.
 
  444      &     (1.-x1s)*(1.-x2s).LT.
rndm(ai)*(1.-aa*ihard)**2 ) goto 5
 
  455           IF ( abs(it).GT.10 .AND. ival.EQ.0 ) 
THEN 
  457           ELSEIF ( abs(it).GT.10 .AND. ival.EQ.1 ) 
THEN 
  458             it         = sign(abs(it)-10,it)
 
  459             lrec1(ind) = (lrec1(ind)/100)*100+50+it
 
  463           nouthd(i,k)  = itype(ind+2)
 
  469       IF ( ihard.NE.nhard .AND. nouter.EQ.1 ) 
THEN 
  470         WRITE(6,1010) nhard,ihard
 
  471 1010    
FORMAT(
' ###### HAMULT : CANNOT PRODUCE',i3,
' HARD SCATT.',
 
  472      &         
'; ONLY',i3,
' ARE PRODUCED !!!')
 
  479       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  481       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  482       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  483       COMMON /hapdco/ npdcor
 
  484       COMMON /haoutl/ noutl,nouter,noutco
 
  485       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  486       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  487      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  488       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
  492       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
  493      &                mxsect(0:2,-1:
maxpro,28)
 
  495       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
  498       COMMON /harslt/ lscahd,lsc1hd,
 
  499      &                etahd(mscahd,2) ,pthd(mscahd),
 
  500      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
  501      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
  502      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
  508           prec(1,lp) = prec(1,l)
 
  509           prec(2,lp) = prec(2,l)
 
  510           prec(3,lp) = prec(3,l)
 
  511           prec(0,lp) = prec(0,l)
 
  512           lrec1( lp) = lrec1( l)
 
  513           lrec2( lp) = lrec2( l)
 
  517       ELSEIF( iopt.EQ.1 ) 
THEN 
  521           IF( ptest.EQ.qtest ) 
THEN 
  526         WRITE(6,*)
'  RECCHK: NO NEW LINMAX FOUND - LINMAX=',linmax
 
  529       WRITE(6,*)
'  RECCHK: IOPT OUT OF RANGE - 0 OR 1 - IOPT=',iopt
 
  534       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  536       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  537       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  538       COMMON /hapdco/ npdcor
 
  539       COMMON /haoutl/ noutl,nouter,noutco
 
  540       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  541       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  542      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  543       COMMON /haxik / xrest,yrest,zmax,axxmax,wemax
 
  544       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
  549       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
  550      &                mxsect(0:2,-1:
maxpro,28)
 
  552       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
  555       COMMON /harslt/ lscahd,lsc1hd,
 
  556      &                etahd(mscahd,2) ,pthd(mscahd),
 
  557      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
  558      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
  559      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
  560       parameter(
one=1d0, zsmall=1
d-3)
 
  564         WRITE(6,*) 
'  ERROR IN XCHECK : IHARD < 1 ',ihard
 
  571         IF(xhd(i,1).GT.
xmax) 
THEN 
  575     IF(xhd(i,2).GT.
xmax) 
THEN 
  583       xrest=xrest+xhd(imax,1)-
sqrt(
a)
 
  584       yrest=yrest+xhd(imax,2)-
sqrt(
a)
 
  587       wemax=
sqrt(1.-axxmax)
 
  595           etahd(mh,1) = etahd(i,1)
 
  596           etahd(mh,2) = etahd(i,2)
 
  598           nprohd(mh)  = nprohd(i)
 
  601       CALL 
recchk( 4*imax,xhd1,0)
 
  604       IF(zmax/
a-
one.LT.zsmall) goto 50
 
  609       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  611       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  612       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  613      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  615       COMMON /haxik / xrest,yrest,zmax,axxmax,wemax
 
  616       parameter( tiny= 1.
d-30, 
one=1.d0 ,tiny6=1.
d-06)
 
  629       if(
rndm(1.1).gt.ww) goto 12
 
  637       uu=umin*(c**2+1.)/2./c
 
  638       if(uu.gt.2.*ym.and.uu.lt.ym+
z/ym) goto 13
 
  645       if(xrest.ge.yrest) 
then 
  648          if(xrest.eq.yrest) 
then 
  649            if(
rndm(3.).gt.0.5) 
then 
  667       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  669       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  670       parameter( tiny= 1.
d-30, 
one=1.d0 ,tiny6=1.
d-06)
 
  671       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  672       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  673       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  674      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  676       COMMON /haxik / xrest,yrest,zmax,axxmax,wemax
 
  678      &          3.80, 0.65, 2.00, 0.65, 0.89, 0.45, 0.445, 0.89 /
 
  682         v  =-0.5*w1/(w1+
rndm(ai)*w)
 
  684         r  = (1.+w)*2.25*(v*v*(3.-u*v-v/(u*u))-u)
 
  685         rmax=rm(1)*wemax*(1.+wemax)
 
  687         IF(wik.GT.1.d0) 
WRITE(6,*) 
' HARKIN : WIK > 1 : ',m,
r 
  689         IF(wik.LT.
rndm(ai)) goto 10
 
  690         IF ( 
rndm(aj).LE.0.5d0 ) v = u
 
  691       ELSEIF ( m.EQ.2 .OR. m.EQ.4 ) 
THEN 
  694         v  =-
exp(-0.6931472+
rndm(ai)*wl)
 
  696         r  = (u*u+v*v)*((16./27.)/u-(4./3.)*v)*(wl/w)*axx
 
  697         IF ( 
r*w.LT.rm(m)*
rndm(ai) ) goto 20
 
  698         IF ( 
rndm(aj).LE.0.5d0 ) v = u
 
  699       ELSEIF ( m.EQ.3 ) 
THEN 
  701         v  =-0.5*w1/(w1+
rndm(ai)*w)
 
  703         r  = (1.+w)*(1.+u*u)*(1.-(4./9.)*v*v/u)
 
  704         rmax=rm(3)*wemax*(1.+wemax)
 
  706         IF(wik.GT.1.d0) 
WRITE(6,*) 
' HARKIN : WIK > 1 : ',m,
r 
  708         IF(wik.LT.
rndm(ai)) goto 30
 
  709       ELSEIF ( m.EQ.5 ) 
THEN 
  711         v  =-0.5*axx/(w1+2.*
rndm(ai)*w)
 
  713         r  = (4./9.)*(1.+u*u+v*v*(u*u+v*v))-(8./27.)*u*u*v
 
  716         IF(wik.GT.1.d0) 
WRITE(6,*) 
' HARKIN : WIK > 1 : ',m,
r 
  718         IF(wik.LT.
rndm(ai)) goto 50
 
  719       ELSEIF ( m.EQ.6 ) 
THEN 
  721         v  =-0.5*(1.+w)+
rndm(ai)*w
 
  723         r  = (4./9.)*(u*u+v*v)*axx
 
  724         IF ( 
r*w.LT.rm(6)*
rndm(ai) ) goto 60
 
  725       ELSEIF ( m.EQ.7 ) 
THEN 
  727         v  =-0.5*w1/(w1+
rndm(ai)*w)
 
  729         r  = (1.+w)*((2./9.)*(1.+u*u+(1.+v*v)*v*v/(u*u))-(4./27.)*v/u)
 
  730         rmax=rm(7)*wemax*(1.+wemax)
 
  732         IF(wik.GT.1.d0) 
WRITE(6,*) 
' HARKIN : WIK > 1 : ',m,
r 
  734         IF(wik.LT.
rndm(ai)) goto 70
 
  735         IF ( 
rndm(aj).LE.0.5d0 ) v = u
 
  736       ELSEIF ( m.EQ.8 ) 
THEN 
  738         v  =-0.5*axx/(w1+2.*
rndm(ai)*w)
 
  743         IF(wik.GT.1.d0) 
WRITE(6,*) 
' HARKIN : WIK > 1 : ',m,
r 
  745         IF(wik.LT.
rndm(ai)) goto 80
 
  746       ELSEIF ( m.EQ.-1 ) 
THEN 
  749         v  =-
exp(-0.6931472+
rndm(ai)*wl)
 
  751         r  = (1.+v*v)*(v/(u*u)-(4./9.))*(wl/w)*axx
 
  752         IF ( 
r*w.LT.rm(-1)*
rndm(ai) ) goto 90
 
  755       v    = max(min(      v,-tiny6 ),-1.+tiny6 )
 
  756       u    = max(min(-1.e0-v,-tiny6 ),-1.+tiny6 )
 
  767       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  769       COMMON /hacuts/ ptl,ptu,etacl,etacu,etadl,etadu
 
  770       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  771      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  774       IF (  
pt  .LT.ptl    .OR.  
pt  .GT.ptu
 
  775      & .OR. etac.LT.etacl  .OR.  etac.GT.etacu
 
  776      & .OR. etad.LT.etadl  .OR.  etad.GT.etadu ) iopt = 0
 
  781       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  783       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  784       parameter( tiny= 1.
d-30, 
one=1.d0 ,tiny6=1.
d-06)
 
  785       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  786       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
  787       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  788       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  789      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  790       dimension pda(-6:6),pdb(-6:6)
 
  794       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
  795      &                mxsect(0:2,-1:
maxpro,28)
 
  797       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
  803       IF     ( nqqal.EQ.1 ) 
THEN 
  805       ELSEIF ( nqqal.EQ.2 ) 
THEN 
  806         qqal = aqqal*
x1*
x2*ecm*ecm
 
  807       ELSEIF ( nqqal.EQ.3 ) 
THEN 
  808         qqal = aqqal*
x1*
x2*ecm*ecm*(u*v)**(1./3.)
 
  809       ELSEIF ( nqqal.EQ.4 ) 
THEN 
  810         qqal = aqqal*
x1*
x2*ecm*ecm*u*v/(1.+v*v+u*u)
 
  812       IF     ( nqqpd.EQ.1 ) 
THEN 
  814       ELSEIF ( nqqpd.EQ.2 ) 
THEN 
  815         qqpd = aqqpd*
x1*
x2*ecm*ecm
 
  816       ELSEIF ( nqqpd.EQ.3 ) 
THEN 
  817         qqpd = aqqpd*
x1*
x2*ecm*ecm*(u*v)**(1./3.)
 
  818       ELSEIF ( nqqpd.EQ.4 ) 
THEN 
  819         qqpd = aqqpd*
x1*
x2*ecm*ecm*u*v/(1.+v*v+u*u)
 
  821       alpha = bqcd/
log(max(qqal/alasqr,1.1*
one))
 
  822       f  = xsect(1,mspr,indene)*alpha**2
 
  828       IF ( mspr.EQ.1  .OR.  mspr.EQ.4 ) 
THEN 
  836           s2  = s2+pda(i)*pdb(-i)+pda(-i)*pdb( i)
 
  837           s3  = s3+pda(i)*pdb( i)+pda(-i)*pdb(-i)
 
  838           s4  = s4+pda(i)+pda(-i)
 
  839           s5  = s5+pdb(i)+pdb(-i)
 
  841         IF     ( mspr.EQ.2  .OR.  mspr.EQ.5  .OR.  mspr.EQ.6 ) 
THEN 
  843         ELSEIF ( mspr.EQ.3  .OR.  mspr.EQ.-1 ) 
THEN 
  844           pds = pda(0)*s5+pdb(0)*s4
 
  845         ELSEIF ( mspr.EQ.7 ) 
THEN 
  847         ELSEIF ( mspr.EQ.8 ) 
THEN 
  858       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
  860       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
  861       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
  862       COMMON /haoutl/ noutl,nouter,noutco
 
  863       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
  864       COMMON /hasca / ptwant,
a,aln,z1max,z1dif,z2max,z2dif,
 
  865      &                
pt,etac,etad,
x1,
x2,v,u,w,w1,axx,
weight,mspr,irejsc
 
  866       dimension pda(-6:6),pdb(-6:6)
 
  867       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
  871       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
  872      &                mxsect(0:2,-1:
maxpro,28)
 
  874       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
  880       mxsect(0,0,indene) = 0
 
  881       xsect(2,0,indene)  = 0.0      
 
  884          IF ( mxsect(0,m,indene).EQ.1 )
 
  885      &  xsect(2,0,indene) = xsect(2,0,indene)+xsect(2,m,indene)
 
  897       b      = 
rndm(ai)*xsect(2,0,indene)
 
  902       IF ( mxsect(0,mspr,indene).EQ.1 ) sum = sum+xsect(2,mspr,indene)
 
  904       IF ( sum.LT.b  .AND. mspr.LT.
maxpro ) goto 20
 
  909       IF ( iopt.EQ.0 ) goto 10
 
  913       IF( 
f .LE. 1.
d-15 ) 
f=0.
 
  917       xsect(3,mspr,indene) = xsect(3,mspr,indene)+
f 
  918       xsect(4,mspr,indene) = xsect(4,mspr,indene)+
f*
f 
  919       mxsect(1,mspr,indene) = mxsect(1,mspr,indene)+1
 
  923       weight = 
f/xsect(2,mspr,indene)
 
  940       mxsect(2,mspr,indene) = mxsect(2,mspr,indene)+1
 
  942       IF ( mspr.EQ.-1 ) mspr = 3
 
  945       scheck = 
rndm(ai)*pds
 
  946       IF     ( mspr.EQ.1  .OR.  mspr.EQ.4 ) 
THEN 
  949       ELSEIF ( mspr.EQ.2  .OR.  mspr.EQ.5  .OR.  mspr.EQ.6 ) 
THEN 
  951           IF ( ia.EQ.0 ) goto 610
 
  952           sum  = sum+pda(ia)*pdb(-ia)
 
  953           IF ( sum.GE.scheck ) goto 620
 
  956       ELSEIF ( mspr.EQ.3 ) 
THEN 
  959           IF ( ia.EQ.0 ) goto 630
 
  960           sum  = sum+pda(0)*pdb(ia)
 
  961           IF ( sum.GE.scheck ) goto 640
 
  962           sum  = sum+pda(ia)*pdb(0)
 
  963           IF ( sum.GE.scheck ) goto 650
 
  968       ELSEIF ( mspr.EQ.7 ) 
THEN 
  970           IF ( ia.EQ.0 ) goto 660
 
  971           sum  = sum+pda(ia)*pdb(ia)
 
  972           IF ( sum.GE.scheck ) goto 670
 
  975       ELSEIF ( mspr.EQ.8 ) 
THEN 
  977           IF ( ia.EQ.0 ) goto 690
 
  979             IF ( abs(ib).EQ.abs(ia)  .OR.  ib.EQ.0 ) goto 680
 
  980             sum = sum+pda(ia)*pdb(ib)
 
  981             IF ( sum.GE.scheck ) goto 700
 
  989       IF     ( mspr.EQ.2 ) 
THEN 
  992       ELSEIF ( mspr.EQ.4 ) 
THEN 
  993         ic = 
int(float(nf+nf)*
rndm(ai))+1
 
  994         IF ( ic.GT.nf ) ic = nf-ic
 
  996       ELSEIF ( mspr.EQ.6 ) 
THEN 
  997         ic = 
int(float(nf+nf-2)*
rndm(ai))+1
 
  998         IF ( ic.GT.nf-1 ) ic = nf-1-ic
 
  999         IF ( abs(ic).EQ.abs(ia) ) ic = sign(nf,ic)
 
 1005       IF ( ((a1*a1)+(a2*a2)).GT.1.0d0 ) goto 30
 
 1006       cosphi = ((a1*a1)-(a2*a2))/((a1*a1)+(a2*a2))
 
 1007       sinphi = sign(((a1*a2)+(a1*a2))/((a1*a1)+(a2*a2)),
rndm(ai)-0.5)
 
 1009       IF ( 
rndm(ai)*pda(ia).GT.pda(-ia) ) ia = sign(abs(ia)+10,ia)
 
 1010       IF ( 
rndm(aj)*pdb(ib).GT.pdb(-ib) ) ib = sign(abs(ib)+10,ib)
 
 1015       prec(3,line)  = 0.5*ecm*
x1 
 1016       prec(0,line)  = prec(3,line)
 
 1017       lrec1(line)   = ia+50+100*mspr
 
 1022       prec(3,line)  =-0.5*ecm*
x2 
 1023       prec(0,line)  =-prec(3,line)
 
 1027       prec(1,line)  = 
pt*cosphi
 
 1028       prec(2,line)  = 
pt*sinphi
 
 1029       prec(3,line)  =-0.5*ecm*(u*
x1-v*
x2)
 
 1030       prec(0,line)  =-0.5*ecm*(u*
x1+v*
x2)
 
 1034       prec(1,line)  =-
pt*cosphi
 
 1035       prec(2,line)  =-
pt*sinphi
 
 1036       prec(3,line)  =-0.5*ecm*(v*
x1-u*
x2)
 
 1037       prec(0,line)  =-0.5*ecm*(v*
x1+u*
x2)
 
 1044       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1046       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1047       COMMON /haoutl/ noutl,nouter,noutco
 
 1048       COMMON /haevnt/ pt1,pt2,nhard,ntry,ihard,itry,irejev
 
 1049       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
 1050       COMMON /harslt/ lscahd,lsc1hd,
 
 1051      &                etahd(mscahd,2) ,pthd(mscahd),
 
 1052      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
 1053      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
 1054      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
 1057       IF ( noutl.GE.4 ) 
THEN 
 1058       WRITE(6,1010) nhard,ihard,irejev
 
 1059 1010  
FORMAT(
' ===HARD EVENT===    NHARD,NTRUE,REJECTIONS ',3i5,/
 
 1060      &
'  IA IB IC ID     XA         XB         PT       YC       YD',
 
 1063         phi = atan2(prec(1,4*
n-1),prec(2,4*
n-1))
 
 1064         WRITE(6,1020) ninhd(
n,1),ninhd(
n,2),nouthd(
n,1),nouthd(
n,2),
 
 1065      &             xhd(
n,1),xhd(
n,2),pthd(
n),etahd(
n,1),etahd(
n,2),
phi 
 1066 1020    
FORMAT(1
x,4i3,2f11.7,4f9.3)
 
 1069       IF ( noutl.GE.6 ) 
THEN 
 1072 1030    
FORMAT(
'   EVENTRECORD')
 
 1074           WRITE(6,1040) lrec1(l),lrec2(l),(prec(i,l),i=0,3)
 
 1076 1040    
FORMAT(2i12,4(1pe12.4))
 
 1093       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1095       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1102       IF ( mspr.EQ.1 .OR. mspr.EQ.4 ) maxfl = 0
 
 1108       IF     ( npd.EQ.1 .OR.  npd.EQ.2 ) 
THEN 
 1110         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1111       ELSEIF ( npd.GE.3 .AND. npd.LE.5 ) 
THEN 
 1113         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1114       ELSEIF(npd.EQ.6)
THEN 
 1116         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1117       ELSEIF(npd.EQ.7)
THEN 
 1119         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1120       ELSEIF(npd.EQ.8)
THEN 
 1122         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1123       ELSEIF(npd.EQ.9)
THEN 
 1125         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1126       ELSEIF(npd.EQ.10)
THEN 
 1128         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1129       ELSEIF(npd.EQ.11)
THEN 
 1131         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1132       ELSEIF(npd.EQ.12)
THEN 
 1134         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1136       ELSEIF((npd.GE.13).AND.(npd.LE.20)) 
THEN 
 1138         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1139       ELSEIF((npd.GE.21).AND.(npd.LE.23)) 
THEN 
 1142         WRITE(6,*) 
' unsupported PDF number: ',npd
 
 1145       DO 20 i=-maxfl,maxfl
 
 1146         IF ( pd(i).LT.1.
d-15 ) pd(i) = 0.0
 
 1149       IF ( ihatyp.EQ.-1 ) 
THEN 
 1223       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1232       dimension pdff(-6:2)
 
 1244       IF((mode.EQ.15)) 
THEN 
 1267       IF((mode.EQ.16)) 
THEN 
 1291       IF((mode.EQ.17)) 
THEN 
 1292       CALL 
structm(
x,
scale,upv,dnv,usea,dsea,str,chm,bot,top,glu)
 
 1339       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1341       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1342       COMMON /hacons/ pi,pi2,pi4,gevtmb
 
 1343       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1344       COMMON /hapadi/ npdm
 
 1345       COMMON /hapdco/ npdcor
 
 1346       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
 1347       COMMON /haenvi/ nindep
 
 1348       COMMON /haoutl/ noutl,nouter,noutco
 
 1349       COMMON /hacuts/ ptl,ptu,etacl,etacu,etadl,etadu
 
 1350       COMMON /hagaup/ ngaup1,ngaup2,ngauet,ngauin
 
 1351       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
 1352       COMMON /harslt/ lscahd,lsc1hd,
 
 1353      &                etahd(mscahd,2) ,pthd(mscahd),
 
 1354      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
 1355      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
 1356      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
 1360       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
 1361      &                mxsect(0:2,-1:
maxpro,28)
 
 1363       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
 1379 2000  
FORMAT(
'1***************************************************' 
 1380      & ,/,   
' MONTE-CARLO GENERATION OF HARD HADRONIC SCATTERINGS' 
 1381      & ,/,   
' ***************************************************',/)
 
 1386       IF ( inp(1:1).EQ.
'-' ) goto 10
 
 1388       READ(inp,1012,err=99) cw,
what 
 1393 1011  
FORMAT(
' *********.* CONTROL.CARD*****.',4(9
x,
'.'),/,1
x,a70,/)
 
 1394 1012  
FORMAT(a8,2
x,6e10.0)
 
 1395 1013  
FORMAT(
'     CARD IS INCORRECT, IGNORE AND TRY NEXT CARD',/)
 
 1399       IF     ( cw.EQ.
'END     ' ) 
THEN 
 1404 1030    
FORMAT(
' ******** END OF PROGRAM EXECUTION ********')
 
 1407       ELSEIF ( cw.EQ.
'COMMENT ' ) 
THEN 
 1416 20        
WRITE(6,1050) commnt
 
 1420       ELSEIF ( cw.EQ.
'ENERGYPT' ) 
THEN 
 1430         IF ( 
what(1).GT.0.0d0 ) ecm = 
what(1)
 
 1432           ptini(i) = 
what(i+1)
 
 1435       ELSEIF ( cw.EQ.
'PARDISTR' ) 
THEN 
 1456         IF ( ipd.GE.1 .AND. ipd.LE.15 ) npd = ipd
 
 1457         IF ( ipdm.EQ.1 ) npdm = ipdm
 
 1459       ELSEIF ( cw.EQ.
'CUTS    ' ) 
THEN 
 1481         IF ( ptu  .LE.ptl   ) ptu   = ptl  +1.0
 
 1482         IF ( etacu.LE.etacl ) etacu = etacl+1.0
 
 1483         IF ( etadu.LE.etadl ) etadu = etadl+1.0
 
 1485       ELSEIF ( cw.EQ.
'INTPOINT' ) 
THEN 
 1507       ELSEIF ( cw.EQ.
'FLAVOR  ' ) 
THEN 
 1512         IF ( nff.GE.0  .AND.  nff .LE.6 ) nf = nff
 
 1514       ELSEIF ( cw.EQ.
'PARTICLE' ) 
THEN 
 1523         IF ( abs(iha).EQ.1 ) nha = iha
 
 1525         IF ( abs(ihb).EQ.1 ) nhb = ihb
 
 1527       ELSEIF ( cw.EQ.
'OUTPUT  ' ) 
THEN 
 1537       ELSEIF ( cw.EQ.
'INIT    ' ) 
THEN 
 1543       ELSEIF ( cw.EQ.
'TESTINCL' ) 
THEN 
 1552           IF ( j.GE.1 .AND. j.LE.4 ) CALL 
hatest(j)
 
 1555       ELSEIF ( cw.EQ.
'TESTMC  ' ) 
THEN 
 1565         IF ( nevt.LE.0 ) nevt = 100
 
 1575       ELSEIF ( cw.EQ.
'SUBPRON ' ) 
THEN 
 1582           IF ( m.GE.1  .AND.  m.LE.
maxpro ) mxsect(0,m,indene) = 1
 
 1585         mxsect(0,-1,indene) = mxsect(0,3,indene)
 
 1588       ELSEIF ( cw.EQ.
'SUBPROFF' ) 
THEN 
 1595           IF ( m.GE.1  .AND.  m.LE.
maxpro ) mxsect(0,m,indene) = 0
 
 1598         mxsect(0,-1,indene) = mxsect(0,3,indene)
 
 1601       ELSEIF ( cw.EQ.
'HISOUT  ' ) 
THEN 
 1614           IF ( j.GE.1 .AND. j.LE.6 ) CALL 
hisout(j)
 
 1617       ELSEIF ( cw.EQ.
'HISINI  ' ) 
THEN 
 1623       ELSEIF ( cw.EQ.
'HARDSCAL' ) 
THEN 
 1639         IF ( 
what(2).GT.0.d0 )                   aqqal =     
what(2)
 
 1641         IF ( 
what(4).GT.0.d0 )                   aqqpd =     
what(4)
 
 1652       ELSEIF ( cw.EQ.
'PARDISCO' ) 
THEN 
 1663 9999    
FORMAT(
' ##### UNKNOWN CODEWORD;  CARD IS IGNORED ###',/)
 
 1680       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1682       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1683       parameter( tiny= 1.
d-30, onep1=1.1d0 ,tiny6=1.
d-06)
 
 1684       COMMON /hacons/ pi,pi2,pi4,gevtmb
 
 1685       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1686       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
 1687       DOUBLE PRECISION ec,ed,xa,xb,sp,tp,up,
tt,uu,
 
 1689       dimension dsigmm(0:
maxpro),pda(-6:6),pdb(-6:6)
 
 1699       IF ( xa.GE.1.d0 .OR. xb.GE.1.d0 ) 
RETURN 
 1707       IF     ( nqqal.EQ.1 ) 
THEN 
 1709       ELSEIF ( nqqal.EQ.2 ) 
THEN 
 1711       ELSEIF ( nqqal.EQ.3 ) 
THEN 
 1712         qqal = aqqal*sp*(up*tp)**(1./3.)
 
 1713       ELSEIF ( nqqal.EQ.4 ) 
THEN 
 1714         qqal = aqqal*sp*up*tp/(1.+
tt+uu)
 
 1716       IF     ( nqqpd.EQ.1 ) 
THEN 
 1718       ELSEIF ( nqqpd.EQ.2 ) 
THEN 
 1720       ELSEIF ( nqqpd.EQ.3 ) 
THEN 
 1721         qqpd = aqqpd*sp*(up*tp)**(1./3.)
 
 1722       ELSEIF ( nqqpd.EQ.4 ) 
THEN 
 1723         qqpd = aqqpd*sp*up*tp/(1.+
tt+uu)
 
 1726       alpha  = bqcd/
log(max(qqal/alasqr,onep1))
 
 1727       factor = pi2*gevtmb*
pt*(alpha/sp)**2
 
 1739         s2  = s2+pda(i)*pdb(-i)+pda(-i)*pdb( i)
 
 1740         s3  = s3+pda(i)*pdb( i)+pda(-i)*pdb(-i)
 
 1741         s4  = s4+pda(i)+pda(-i)
 
 1742         s5  = s5+pdb(i)+pdb(-i)
 
 1746       dsigm(1) = 2.25*(3.-((up*tp)+up/
tt+tp/uu))
 
 1747       dsigm(6) = (4./9.)*(uu+
tt)
 
 1748       dsigm(8) = (4./9.)*(1.+uu)/
tt 
 1749       dsigm(2) = (16./27.)*(uu+
tt)/(up*tp)-3.*dsigm(6)
 
 1750       dsigm(3) = ((1.+uu)/
tt)-(4./9.)*(1.+uu)/up
 
 1751       dsigm(4) = (9./32.)*dsigm(2)
 
 1752       dsigm(5) = dsigm(6)+dsigm(8)-(8./27.)*uu/tp
 
 1753       dsigm(7) = 0.5*(dsigm(8)+(4./9.)*(1.+
tt)/uu-(8./27.)/(up*tp))
 
 1755       dsigm(1) = factor*dsigm(1)*s1
 
 1756       dsigm(2) = factor*dsigm(2)*s2
 
 1757       dsigm(3) = factor*dsigm(3)*(pda(0)*s5+pdb(0)*s4)
 
 1758       dsigm(4) = factor*dsigm(4)*s1*nf
 
 1759       dsigm(5) = factor*dsigm(5)*s2
 
 1760       dsigm(6) = factor*dsigm(6)*s2*max(0,(nf-1))
 
 1761       dsigm(7) = factor*dsigm(7)*s3
 
 1762       dsigm(8) = factor*dsigm(8)*(s4*s5-(s2+s3))
 
 1765         dsigm(0) = dsigm(0)+dsigm(m)
 
 1768         dsigmm(m) = dsigm(m)
 
 1776       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1778       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1782       parameter( tiny= 1.
d-20 )
 
 1783       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1784       COMMON /hagaup/ ngaup1,ngaup2,ngauet,ngauin
 
 1786       dimension absz(32),weig(32)
 
 1793       IF  ( arg.LE.ec .OR. arg.LE.1./ec ) 
RETURN 
 1795       edl =-
log(arg-1./ec)
 
 1797       CALL 
gset(edl,edu,npoint,absz,weig)
 
 1799         CALL 
csj2m(
pt,etac,absz(i),dsig1)
 
 1802           pctrl= dsig1(m)/tiny
 
 1804           IF( pctrl.GE.1.d0 ) 
THEN 
 1805             dsigm(m) = dsigm(m)+weig(i)*dsig1(m)
 
 1815       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1817       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1818       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1819       COMMON /hagaup/ ngaup1,ngaup2,ngauet,ngauin
 
 1821       dimension absz(32),weig(32)
 
 1827       IF ( amt.GE.1.d0 ) 
RETURN 
 1828       ecu = 
log((
sqrt(1.-amt*amt)+1.)/amt)
 
 1831       CALL 
gset(ecl,ecu,npoint,absz,weig)
 
 1835           dsigm(m) = dsigm(m)+weig(i)*dsig1(m)
 
 1846       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1848       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1849       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1850       COMMON /hagaup/ ngaup1,ngaup2,ngauet,ngauin
 
 1851       COMMON /xsecpt/ ptcut,sigs,dsigh
 
 1853       dimension absz(32),weig(32)
 
 1859       IF ( ptini(1).GE.ecm/2.d0 ) 
RETURN 
 1862       ptmax  = min(fac*ptmin,ecm/2.d0)
 
 1867  1000 
FORMAT(1
x,
' d sigma/ p_t d p_t ',e12.5)
 
 1871       ex     = 
log(sig1/(dsig1(0)+1.
d-30))/
log(fac)
 
 1874         IF ( ptmin.GE.ptmax ) goto 40
 
 1877         CALL 
gset(rl,ru,npoint,absz,weig)
 
 1882           f  = weig(i)*
pt/(
r*ex1)
 
 1884             dsigm(m) = dsigm(m)+
f*dsig1(m)
 
 1906       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 1908       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 1909       parameter( tiny= 1.
d-30, 
one=1.d0 ,tiny6=1.
d-06,
zero=0.d0)
 
 1910       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 1914       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
 1915      &                mxsect(0:2,-1:
maxpro,28)
 
 1917       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
 1921       CHARACTER*11 pdset,partic
 
 1922       COMMON /peproc/ proc(0:
maxpro),pdset(23),partic(-1:1)
 
 1924       COMMON /histo / pt10,dpt1,eta10,deta1,pt20,dpt2,eta20,deta2,
 
 1925      &                
x(50,-5:5),ab(50,-5:5),hpe(50,-5:5),hep(50,5),
 
 1926      &                hpm(50,8),hem(50,8),hp(50),he(50),
 
 1935       xsect(2,0,indene) = xsect(2,-1,indene)
 
 1936       mxsect(1,0,indene) = mxsect(1,-1,indene)
 
 1937       mxsect(2,0,indene) = mxsect(2,-1,indene)
 
 1942         mxsect(1,0,indene) = mxsect(1,0,indene)+mxsect(1,m,indene)
 
 1943         mxsect(2,0,indene) = mxsect(2,0,indene)+mxsect(2,m,indene)
 
 1944 7       xsect(2,0,indene) = xsect(2,0,indene)+xsect(2,m,indene)
 
 1949 1010  
FORMAT(1
x,20(
'=='),
' HISTO-OUTPUT ',i2,1
x,10(
'=='),/)
 
 1950       IF ( iout.EQ.1 ) 
THEN 
 1952 1040    
FORMAT(
'      PROCESS',15
x,
'EVENTS',22
x,
'HARD CROSS SECTION',/,
 
 1953      &         25
x,
'TOTAL  ACCEPT.',10
x,
'MONTE-CARLO',11
x,
'INCLUSIVE')
 
 1959           IF ( mxsect(1,m,indene).GT.0 ) 
THEN 
 1960             sig(m)   = xsect(3,m,indene)/mxsect(1,m,indene)
 
 1961             stdev(m) = 
sqrt(max(
zero,xsect(4,m,indene)-
 
 1962      *       xsect(3,m,indene)*sig(m)))/mxsect(1,m,indene)
 
 1968           IF ( m.EQ.3 .AND. mxsect(1,-1,indene).GT.0 ) 
THEN 
 1969             sigg     = xsect(3,-1,indene)/mxsect(1,-1,indene)
 
 1972             sig(3)   = sig(3)+sigg
 
 1974      *       +
sqrt(max(
zero,xsect(4,-1,indene)-
 
 1975      *       xsect(3,-1,indene)*sigg))/mxsect(1,-1,indene)
 
 1978           sigsum = sigsum+sig(m)
 
 1979           stdevs = stdevs+stdev(m)
 
 1981         mxsect(1,3,indene) = mxsect(1,3,indene)+mxsect(1,-1,indene)
 
 1982         mxsect(2,3,indene) = mxsect(2,3,indene)+mxsect(2,-1,indene)
 
 1983         WRITE(6,1050) proc(0),(mxsect(l,0,indene),l=0,2),
 
 1984      &                sigsum,stdevs,xsect(5,0,indene)
 
 1990           IF ( mxsect(0,m,indene).EQ.1 ) 
WRITE(6,1050) proc(m),
 
 1991      &     (mxsect(l,m,indene),l=0,2),sig(m),stdev(m),xsect(5,m,indene)
 
 1995 1050      
FORMAT(a19,i3,2i8,e14.4,
' +- ',e10.4,e14.4)
 
 1996         mxsect(1,3,indene) = mxsect(1,3,indene)-mxsect(1,-1,indene)
 
 1997         mxsect(2,3,indene) = mxsect(2,3,indene)-mxsect(2,-1,indene)
 
 2000       ELSEIF ( iout.EQ.2 ) 
THEN 
 2001         fac = xsect(2,0,indene)/(dpt1*mxsect(1,0,indene))
 
 2004           ab(i,1) = pt10+(i-1)*dpt1
 
 2005           IF ( hp(i).GT.1.
d-35 ) 
x(i,1) = log10(fac*hp(i))
 
 2008 1060    
FORMAT(
'  JET CROSS SECTION  PT-DISTRIBUTION',/)
 
 2009         CALL 
plot(ab(1,1),
x(1,1),50,1,50,pt10,dpt1,xsmin,xsstep)
 
 2010       ELSEIF ( iout.EQ.3 ) 
THEN 
 2011         fac = xsect(2,0,indene)/(dpt1*mxsect(1,0,indene))
 
 2014           pt = pt10+(i-1)*dpt1
 
 2017             IF ( hpm(i,j).GT.1.
d-35 ) 
x(i,j-6) = log10(fac*hpm(i,j))
 
 2021 1070    
FORMAT(
'  JET CROSS SECTION  PT-DISTRIBUTION',/,
 
 2022      &         
'                     FOR THE DIFF. SUBPROCESSES',/)
 
 2023         CALL 
plot(ab,
x,400,8,50,pt10,dpt1,xsmin,xsstep)
 
 2024       ELSEIF ( iout.EQ.4 ) 
THEN 
 2025         fac = xsect(2,0,indene)/(dpt1*deta1*mxsect(1,0,indene))
 
 2028           pt = pt10+(i-1)*dpt1
 
 2031             IF ( hpe(i,j).GT.1.
d-35 ) 
x(i,j) = log10(fac*hpe(i,j))
 
 2034         WRITE(6,1080) eta10,-eta10
 
 2035 1080    
FORMAT(
'  JET CROSS SECTION  PT-DISTRIBUTION',/,
 
 2036      &         
'                     RAP.=',f5.2,
'...',
f4.2,/)
 
 2037         CALL 
plot(ab,
x,550,11,50,pt10,dpt1,xsmin,xsstep)
 
 2038       ELSEIF ( iout.EQ.5 ) 
THEN 
 2039         fac = xsect(2,0,indene)/(deta2*dpt2*mxsect(1,0,indene))
 
 2042           eta = eta20+(i-1)*deta2
 
 2045             IF ( hep(i,j).GT.1.
d-35 ) 
x(i,j) = log10(fac*hep(i,j))
 
 2048         WRITE(6,1090) pt20,pt20+4.*dpt2
 
 2049 1090    
FORMAT(
'  JET CROSS SECTION   RAP.-DISTRIBUTION',/,
 
 2050      &         
'                      PT=',f6.2,
'...',f6.2,/)
 
 2051         CALL 
plot(ab(1,1),
x(1,1),250,5,50,eta20,deta2,xsmin,xsstep)
 
 2052       ELSEIF ( iout.EQ.6 ) 
THEN 
 2053         fac = xsect(2,0,indene)/(deta2*mxsect(1,0,indene))
 
 2056           eta = eta20+(i-1)*deta2
 
 2059             IF ( hem(i,j).GT.1.
d-35 ) 
x(i,j-6) = log10(fac*hem(i,j))
 
 2063 1100    
FORMAT(
'  JET CROSS SECTION  RAP.-DISTRIBUTION',/,
 
 2064      &         
'                     FOR THE DIFF. SUBPROCESSES',/)
 
 2065         CALL 
plot(ab,
x,400,8,50,eta20,deta2,xsmin,xsstep)
 
 2074       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2076       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2078       COMMON /histo / pt10,dpt1,eta10,deta1,pt20,dpt2,eta20,deta2,
 
 2079      &                
x(50,-5:5),ab(50,-5:5),hpe(50,-5:5),hep(50,5),
 
 2080      &                hpm(50,8),hem(50,8),hp(50),he(50),
 
 2107       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2109       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2110       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
 2111       COMMON /harslt/ lscahd,lsc1hd,
 
 2112      &                etahd(mscahd,2) ,pthd(mscahd),
 
 2113      &                xhd(mscahd,2)   ,vhd(mscahd) ,x0hd(mscahd,2),
 
 2114      &                ninhd(mscahd,2) ,nouthd(mscahd,2),
 
 2115      &                n0inhd(mscahd,2),nbrahd(mscahd,2),nprohd(mscahd)
 
 2117       COMMON /histo / pt10,dpt1,eta10,deta1,pt20,dpt2,eta20,deta2,
 
 2118      &                
x(50,-5:5),ab(50,-5:5),hpe(50,-5:5),hep(50,5),
 
 2119      &                hpm(50,8),hem(50,8),hp(50),he(50),
 
 2126           ipt1   = 
int((pthd(
n)-pt10)/dpt1)+1
 
 2127           ieta1  = 
int((etahd(
n,k)-eta10)/deta1+0.5)-5
 
 2128           ipt2   = 
int((pthd(
n)-pt20)/dpt2)+1
 
 2129           ieta2  = 
int((etahd(
n,k)-eta20)/deta2+0.5)
 
 2130           IF ( ipt1.GE. 1 .AND. ipt1.LE.50 ) 
THEN 
 2131             hpm(ipt1,mspr)  = hpm(ipt1,mspr)+1.
 
 2132             hp(ipt1)        = hp(ipt1)+1.
 
 2133             IF ( abs(ieta1).LE.5 ) hpe(ipt1,ieta1) = hpe(ipt1,ieta1)+1.
 
 2135           IF ( ieta2.GE. 1 .AND. ieta2.LE.50 ) 
THEN 
 2136             hem(ieta2,mspr) = hem(ieta2,mspr)+1.
 
 2137             he(ieta2)       = he(ieta2)+1.
 
 2138             IF ( ipt2.GE.1 .AND. ipt2.LE.5 ) hep(ieta2,ipt2) =
 
 2139      &                                              hep(ieta2,ipt2)+1.
 
 2147       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2149       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2150       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 2152       CHARACTER*11 pdset,partic
 
 2153       COMMON /peproc/ proc(0:
maxpro),pdset(23),partic(-1:1)
 
 2155       COMMON /histo / vvv(50),xs(50,6),ab(50,6),dsig(0:
maxpro),pd(-6:6),
 
 2157       IF ( iout.EQ.1 ) 
THEN 
 2159         WRITE(6,1010) ecm,ptini(1),(proc(m),dsig(m),m=0,
maxpro)
 
 2160 1010    
FORMAT(
'  HARD CROSS SECTIONS FOR SINGLE PROCESSES',/,
 
 2161      &   
'  AT CM-ENERGY=',e8.1,
' AND PTMIN=',f5.1,/,9(a25,e14.6,/))
 
 2162       ELSEIF ( iout.EQ.2 ) 
THEN 
 2180             CALL 
jtpdis(vvv(j),qq,1,1,pd)
 
 2181             IF ( pd(0).GT.1.
d-30 ) xs(j,i) = log10(pd(0))
 
 2184 1020    
FORMAT(
'   GLUONDISTRIBUTION OVER LOG10(X)  ( Q**2=10**I;',
 
 2186         CALL 
plot(ab,xs,250,5,50,ymax,-
dy,pdmin,pdstep)
 
 2187       ELSEIF ( iout.EQ.3 ) 
THEN 
 2191           b         = float(i-1)*qqstep+qqmin
 
 2203             IF ( pd(0).GT.1.
d-30 ) xs(i,j) = log10(pd(0))
 
 2206 1030    
FORMAT(
'   GLUONDISTRIBUTION OVER LOG10(Q**2)  ( X=10**(-I)' 
 2208         CALL 
plot(ab,xs,200,4,50,qqmin,qqstep,pdmin,pdstep)
 
 2209       ELSEIF ( iout.EQ.4 ) 
THEN 
 2216           pt        = (i-1)*ptstep+ptmin
 
 2226             IF ( dsig(0).GT.1.
d-30 ) xs(i,1) = log10(dsig(0))
 
 2229 1040    
FORMAT(
'  DIFFERENTIAL HARD CROSS SECTION OVER PT , RAP.=0.')
 
 2230         CALL 
plot(ab,xs,50,1,50,ptmin,ptstep,xsmin,xsstep)
 
 2249       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2251       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2252       COMMON /hacons/ pi,pi2,pi4,gevtmb
 
 2253       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 2254       COMMON /hapdco/ npdcor
 
 2255       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
 2256       COMMON /haoutl/ noutl,nouter,noutco
 
 2260       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
 2261      &                mxsect(0:2,-1:
maxpro,28)
 
 2263       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
 2267       CHARACTER*11 pdset,partic
 
 2268       COMMON /peproc/ proc(0:
maxpro),pdset(23),partic(-1:1)
 
 2269       dimension dsig(0:
maxpro),alam(23),q0s(23)
 
 2270       DATA alam / 0.20d0, 0.29d0, 0.107d0, 0.250d0, 0.178d0, 0.25d0,
 
 2271      *            0.10d0, 0.19d0, 0.190d0, 0.190d0, 0.190d0, 0.19d0,
 
 2272      *            0.215d0,0.215d0,0.215d0,
 
 2273      *            0.231d0,0.231d0,0.322d0, 0.247d0,
 
 2274      *            0.168d0,0.2d0,0.2d0,0.202d0 /
 
 2275       DATA q0s  / 5.0d0 , 5.0d0 , 5.0d0  , 5.0d0  , 5.0d0 , 0.2d0,
 
 2276      *            5.0d0 , 5.0d0 , 5.0d0  , 5.0d0  , 5.0d0 , 5.0d0,
 
 2277      *            5.0d0 , 5.0d0 , 5.0d0  , 4.0d0  , 4.0d0 , 4.0d0,
 
 2278      *            4.0d0 , 4.0d0 ,  0.4d0 ,0.4d0 ,1.60d0     /
 
 2280         WRITE(6,*)
' HARINI:NPD=',npd
 
 2281     IF ( noutl.GE.1 )CALL 
timdat 
 2282         alasqr = alam(npd)**2
 
 2284         bqcd   = pi4/(11.-(2./3.)*nf)
 
 2288           IF ( ptini(i).LE..5d0.OR.ptini(i).GE.ecm*.5d0)ptini(i)=1.
d+30
 
 2289           IF ( ptini(i).NE.1.
d+30 ) ini = ini+1
 
 2293             IF ( ptini(j).LT.ptini(i) ) 
THEN 
 2302            xsect(3,m,indene) = 0.0
 
 2303            xsect(4,m,indene) = 0.0
 
 2304            mxsect(1,m,indene) = 0
 
 2305            mxsect(2,m,indene) = 0
 
 2314               xsecta(j,m,i,indene) = 0.0
 
 2319           IF ( noutl.GE.10 ) 
WRITE(6,1060) ptini(i)
 
 2320 1060      
FORMAT(
' NORMALIZATION FOR PTMIN=',f10.4,
' CALCULATED')
 
 2322           IF ( noutl.GE.10 ) 
WRITE(6,1070) ptini(i)
 
 2323 1070      
FORMAT(
' MAXIMA FOR PTMIN=',f10.4,
' CALCULATED')
 
 2324           xsecta(1,0,i,indene)   = ptini(i)
 
 2327             xsecta(1,m,i,indene) = xsect(1,m,indene)
 
 2328         xsecta(2,m,i,indene) = xsect(2,m,indene)
 
 2336           xsect(5,m,indene) = dsig(m)
 
 2342         IF ( noutl.GE.10 ) 
WRITE(6,
'(/,1X,70(1H*))')
 
 2343         WRITE(6,1057) ptini(1),pdset(npd),
sqrt(alasqr),q0sqr
 
 2345      &         
' --- parameters of the hard scattering program ---',/,
 
 2346      &         
'       MIN. PT       :',f15.1,/,
 
 2347      &         
'       PARTON-DISTR. :',a15,/,
 
 2348      &         
'       LAMBDA        :',f15.3,/,
 
 2349      &         
'       Q0**2         :',f15.3,/)
 
 2350       IF ( noutl.GE.1 ) 
THEN 
 2351         WRITE(6,1050) partic(nha),partic(nhb),ecm,ptini(1),pdset(npd),
 
 2352      &                
sqrt(alasqr),q0sqr,npdcor,nqqal,aqqal,nqqpd,aqqpd
 
 2353 1050    
FORMAT(/,1
x,70(
'*'),/,
 
 2354      &         
'  HARD SCATTERING PROGRAM IS INITIALIZED FOR',/,
 
 2355      &         
'    PROJECTILE    :',a15,/,
 
 2356      &         
'    TARGET        :',a15,/,
 
 2357      &         
'    CM-ENERGY     :',f15.1,/,
 
 2358      &         
'    MIN. PT       :',f15.1,/,
 
 2359      &         
'    PARTON-DISTR. :',a15,/,
 
 2360      &         
'    LAMBDA        :',f15.3,/,
 
 2361      &         
'    Q0**2         :',f15.3,/,
 
 2362      &         
'    NPDCOR        :',i15,/,
 
 2364      &         
'    AQQAL         :',f15.3,/,
 
 2366      &         
'    AQQPD         :',f15.3,/)
 
 2373       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2375       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2376       parameter( mxabwt = 1000 )
 
 2377       parameter( 
zero=0.d0, 
one=1.d0)
 
 2378       COMMON /hacons/ pi,pi2,pi4,gevtmb
 
 2379       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 2380       COMMON /hagaup/ ngaup1,ngaup2,ngauet,ngauin
 
 2384       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
 2385      &                mxsect(0:2,-1:
maxpro,28)
 
 2387       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
 2390       dimension       absz(mxabwt),weig(mxabwt)
 
 2392       DATA f124 / 1.,0.,4.,2.,2.,2.,4.,1.,4.,4. /
 
 2394       a      = (2.*ptini(ind)/ecm)**2
 
 2409           z2 = (1.-z1)*absz(i2)
 
 2421             va  =-0.5*w1/(w1+
z*w)
 
 2423             vb  =-0.5*faxx/(w1+2.*w*
z)
 
 2425             vc  =-
exp(hln+
z*wlog)
 
 2429             s(1)  = 
s(1)+(1.+w)*2.25*(va*va*(3.-ua*va-va/(ua*ua))-ua)*
 
 2431             s(2)  = 
s(2)+(vc*vc+uc*uc)*((16./27.)/uc-(4./3.)*vc)*fww*
 
 2433             s(3)  = 
s(3)+(1.+w)*(1.+ua*ua)*(1.-(4./9.)*va*va/ua)*weig(i)
 
 2434             s(5)  = 
s(5)+((4./9.)*(1.+ub*ub+(ub*ub+vb*vb)*vb*vb)-
 
 2435      &            (8./27.)*ua*ua*va)*weig(i)
 
 2436             s(6)  = 
s(6)+(4./9.)*(ue*ue+ve*ve)*faxx*weig(i)
 
 2437             s(7)  = 
s(7)+(1.+w)*((2./9.)*(1.+ua*ua+(1.+va*va)*va*va/
 
 2438      &            (ua*ua))-(4./27.)*va/ua)*weig(i)
 
 2439             s(8)  = 
s(8)+(4./9.)*(1.+ub*ub)*weig(i)
 
 2440             s(-1) = 
s(-1)+(1.+vc*vc)*(vc/(uc*uc)-(4./9.))*fww*weig(i)
 
 2442           s(4)    = 
s(2)*(9./32.)
 
 2444             s2(m) = s2(m)+
s(m)*weig(i2)*w
 
 2448           s1(m) = s1(m)+s2(m)*(1.-z1)*weig(i1)
 
 2451       fff    = pi*gevtmb*aln*aln/(
a*ecm*ecm)
 
 2453         xsect(1,m,indene) = 
fff*f124(m)*s1(m)
 
 2456       xsect(1,4,indene) = xsect(1,4,indene)*nf
 
 2457       xsect(1,6,indene) = xsect(1,6,indene)*max(0,nf-1)
 
 2464       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2466       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2467       parameter( nkm = 5 )
 
 2468       parameter( tiny= 1.
d-30 )
 
 2469       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 2473       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
 2474      &                mxsect(0:2,-1:
maxpro,28)
 
 2476       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
 2479       dimension 
z(3),
d(3),
ff(nkm)
 
 2496             IF ( 
f2.GT.
f3 ) 
z(i) = 
z(i)-
d(i)
 
 2497             IF ( 
f2.GT.
f3 ) 
d(i) =-
d(i)
 
 2502               IF ( 
f3.GT.
f2 ) goto 20
 
 2509           IF ( abs(fold-
f2)/
f2.GT.0.002d0.OR. it.LT.3 ) goto 10
 
 2512       xsect(2,1,indene) = 
ff(1)*xsect(1,1,indene)
 
 2513       xsect(2,2,indene) = 
ff(2)*xsect(1,2,indene)
 
 2514       xsect(2,3,indene) = 
ff(4)*xsect(1,3,indene)
 
 2515       xsect(2,4,indene) = 
ff(1)*xsect(1,4,indene)
 
 2516       xsect(2,5,indene) = 
ff(2)*xsect(1,5,indene)
 
 2517       xsect(2,6,indene) = 
ff(2)*xsect(1,6,indene)
 
 2518       xsect(2,7,indene) = 
ff(3)*xsect(1,7,indene)
 
 2519       xsect(2,8,indene) = 
ff(5)*xsect(1,8,indene)
 
 2520       xsect(2,-1,indene)= 
ff(4)*xsect(1,-1,indene)
 
 2525       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2527       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2528       parameter( nkm = 5 )
 
 2529       parameter( tiny= 1.
d-30, 
one=1.d0 ,tiny6=1.
d-06,
zero=0.d0)
 
 2530       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 2531       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
 2532       dimension 
f(nkm),pda(-6:6),pdb(-6:6),
z(3)
 
 2536       IF ( 
z(1).LE.0.0d0  .OR.  
z(1).GE.1.0d0 ) 
RETURN 
 2537       IF ( 
z(2).LE.0.0d0  .OR.  
z(2).GE.1.0d0 ) 
RETURN 
 2538       IF ( 
z(3).LT.0.0d0  .OR.  
z(3).GT.1.0d0 ) 
RETURN 
 2539       a     = (2.*ptini(ind)/ecm)**2
 
 2546       v   =-0.5+w*(
z(3)-0.5)
 
 2548       pt  = max(ptini(ind),
sqrt(u*v*
y1*ecm*ecm))
 
 2550       IF     ( nqqal.EQ.1 ) 
THEN 
 2552       ELSEIF ( nqqal.EQ.2 ) 
THEN 
 2553         qqal = aqqal*
y1*ecm*ecm
 
 2554       ELSEIF ( nqqal.EQ.3 ) 
THEN 
 2555         qqal = aqqal*
y1*ecm*ecm*(u*v)**(1./3.)
 
 2556       ELSEIF ( nqqal.EQ.4 ) 
THEN 
 2557         qqal = aqqal*
y1*ecm*ecm*u*v/(1.+v*v+u*u)
 
 2559       IF     ( nqqpd.EQ.1 ) 
THEN 
 2561       ELSEIF ( nqqpd.EQ.2 ) 
THEN 
 2562         qqpd = aqqpd*
y1*ecm*ecm
 
 2563       ELSEIF ( nqqpd.EQ.3 ) 
THEN 
 2564         qqpd = aqqpd*
y1*ecm*ecm*(u*v)**(1./3.)
 
 2565       ELSEIF ( nqqpd.EQ.4 ) 
THEN 
 2566         qqpd = aqqpd*
y1*ecm*ecm*u*v/(1.+v*v+u*u)
 
 2568       factor = (bqcd/
log(max(qqal/alasqr,1.1*
one)))**2
 
 2577         f(2) = 
f(2)+pda(i)*pdb(-i)+pda(-i)*pdb( i)
 
 2578         f(3) = 
f(3)+pda(i)*pdb( i)+pda(-i)*pdb(-i)
 
 2579         f(4) = 
f(4)+pda(i)+pda(-i)
 
 2580         f(5) = 
f(5)+pdb(i)+pdb(-i)
 
 2582       f(1)   = pda(0)*pdb(0)
 
 2583       t      = pda(0)*
f(5)+pdb(0)*
f(4)
 
 2584       f(5)   = 
f(4)*
f(5)-(
f(2)+
f(3))
 
 2586       fdis   = max(
zero,
f(nkon)*factor)
 
 2591       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2593       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2594       COMMON /hacons/ pi,pi2,pi4,gevtmb
 
 2595       COMMON /hapara/ ecm,ptini(4),q0sqr,alasqr,bqcd,npd,nf,nha,nhb
 
 2596       COMMON /hapadi/ npdm
 
 2597       COMMON /hapdco/ npdcor
 
 2598       COMMON /haqqap/ aqqal,aqqpd,nqqal,nqqpd
 
 2599       COMMON /haoutl/ noutl,nouter,noutco
 
 2600       COMMON /hacuts/ ptl,ptu,etacl,etacu,etadl,etadu
 
 2601       COMMON /hagaup/ ngaup1,ngaup2,ngauet,ngauin
 
 2602       COMMON /haevtr/ line,lin,lrec1(mline),lrec2(mline),prec(0:3,mline)
 
 2606       COMMON /haxsec/ xsecta(2,-1:
maxpro,4,28),xsect(5,-1:
maxpro,28),
 
 2607      &                mxsect(0:2,-1:
maxpro,28)
 
 2609       COMMON /lapene/ptthrz(28),ptthz2(28),indene
 
 2612       COMMON /haxsum/xshmx
 
 2629       bqcd     = pi4/(11.0-(2./3.)*nf)
 
 2671           xsect(i,m,indene) = 0.0
 
 2674         mxsect(1,m,indene)  = 0
 
 2675         mxsect(2,m,indene)  = 0
 
 2676         mxsect(0,m,indene)  = 1
 
 2682       IMPLICIT DOUBLE PRECISION(
a-h,o-
z)
 
 2684       parameter( 
maxpro = 8 , mline = 1000 , mscahd = 250 )
 
 2686       CHARACTER*11 pdset,partic
 
 2687       COMMON /peproc/ proc(0:
maxpro),pdset(23),partic(-1:1)
 
 2689       DATA proc   /  
'SUM OVER PROCESSES', 
'G  +G  --> G  +G  ',
 
 2690      &               
'Q  +QB --> G  +G  ', 
'G  +Q  --> G  +Q  ',
 
 2691      &               
'G  +G  --> Q  +QB ', 
'Q  +QB --> Q  +QB ',
 
 2692      &               
'Q  +QB --> QS +QBS', 
'Q  +Q  --> Q  +Q  ',
 
 2693      &               
'Q  +QS --> Q  +QS '                       /
 
 2694       DATA pdset  / 
' EHLQ SET 1',
' EHLQ SET 2',
' MRS  SET 1',
 
 2695      &              
' MRS  SET 2',
' MRS  SET 3',
' GRV LO    ',
 
 2696      &              
' HMRS SET 1',
' HMRS SET 2',
' KMRS SET 1',
 
 2697      &              
' KMRS SET 2',
' KMRS SET 3',
' KMRS SET 4',
 
 2698      &              
' MRS(S0)   ',
' MRS(D0)   ',
' MRS(D-)   ',
 
 2699      &              
' CTEQ 1M   ',
' CTEQ 1MS  ',
' CTEQ 1ML  ',
 
 2700      &              
' CTEQ 1D   ',
' CTEQ 1L   ',
' GRV94LO1  ' ,
 
 2701      &              
' GRV98LO   ',
' CTEQ96    '/
 
 2702       DATA partic / 
' ANTIPROTON',
'           ',
'     PROTON'   /
 
 2758        SUBROUTINE dor94lo (X, Q2, UV, DV, DEL, UDB, SB, GL)
 
 2759        IMPLICIT DOUBLE PRECISION (
a - 
z)
 
 2762        lam2 = 0.2322 * 0.2322
 
 2768        nu  =  2.284 + 0.802 * 
s + 0.055 * s2
 
 2769        aku =  0.590 - 0.024 * 
s 
 2770        bku =  0.131 + 0.063 * 
s 
 2771        au  = -0.449 - 0.138 * 
s - 0.076 * s2
 
 2772        bu  =  0.213 + 2.669 * 
s - 0.728 * s2
 
 2773        cu  =  8.854 - 9.135 * 
s + 1.979 * s2
 
 2774        du  =  2.997 + 0.753 * 
s - 0.076 * s2
 
 2775        uv  = 
dor94fv(
x, nu, aku, bku, au, bu, cu, du)
 
 2777        nd  =  0.371 + 0.083 * 
s + 0.039 * s2
 
 2779        bkd =  0.486 + 0.062 * 
s 
 2780        ad  = -0.509 + 3.310 * 
s - 1.248 * s2
 
 2781        bd  =  12.41 - 10.52 * 
s + 2.267 * s2
 
 2782        cd  =  6.373 - 6.208 * 
s + 1.418 * s2
 
 2783        dd  =  3.691 + 0.799 * 
s - 0.071 * s2
 
 2784        dv  = 
dor94fv(
x, nd, akd, bkd, ad, bd, cd, dd)
 
 2786        ne  =  0.082 + 0.014 * 
s + 0.008 * s2
 
 2787        ake =  0.409 - 0.005 * 
s 
 2788        bke =  0.799 + 0.071 * 
s 
 2789        ae  = -38.07 + 36.13 * 
s - 0.656 * s2
 
 2790        be  =  90.31 - 74.15 * 
s + 7.645 * s2
 
 2792        de  =  7.486 + 1.217 * 
s - 0.159 * s2
 
 2793        del = 
dor94fv(
x, ne, ake, bke, ae, be, ce, de)
 
 2797        akx =  0.410 - 0.232 * 
s 
 2798        bkx =  0.534 - 0.457 * 
s 
 2799        agx =  0.890 - 0.140 * 
s 
 2801        cx  =  0.320 + 0.683 * 
s 
 2802        dx  =  4.752 + 1.164 * 
s + 0.286 * s2
 
 2803        ex  =  4.119 + 1.713 * 
s 
 2804        esx =  0.682 + 2.978 * 
s 
 2805        udb=
dor94fw(
x, 
s, alx, bex, akx, bkx, agx, bgx, cx, 
dx, ex, esx)
 
 2809        aks =  1.798 - 0.596 * 
s 
 2810        as  = -5.548 + 3.669 * ds - 0.616 * 
s 
 2811        bs  =  18.92 - 16.73 * ds + 5.168 * 
s 
 2812        dst =  6.379 - 0.350 * 
s  + 0.142 * s2
 
 2813        est =  3.981 + 1.638 * 
s 
 2815        sb  = 
dor94fs(
x, 
s, als, bes, aks, as, bs, dst, est, ess)
 
 2819        akg =  1.742 - 0.930 * 
s 
 2821        ag  =  7.486 - 2.185 * 
s 
 2822        bg  =  16.69 - 22.74 * 
s  + 5.779 * s2
 
 2823        cg  = -25.59 + 29.71 * 
s  - 7.296 * s2
 
 2824        dg  =  2.792 + 2.215 * 
s  + 0.422 * s2 - 0.104 * s3
 
 2825        eg  =  0.807 + 2.005 * 
s 
 2826        esg =  3.841 + 0.316 * 
s 
 2827        gl =
dor94fw(
x, 
s, alg, beg, akg, bkg, ag, bg, cg, dg, eg, esg)
 
 2833        SUBROUTINE dor94ho (X, Q2, UV, DV, DEL, UDB, SB, GL)
 
 2834        IMPLICIT DOUBLE PRECISION (
a - 
z)
 
 2837        lam2 = 0.248 * 0.248
 
 2843        nu  =  1.304 + 0.863 * 
s 
 2844        aku =  0.558 - 0.020 * 
s 
 2846        au  = -0.113 + 0.283 * 
s - 0.321 * s2
 
 2847        bu  =  6.843 - 5.089 * 
s + 2.647 * s2 - 0.527 * s3
 
 2848        cu  =  7.771 - 10.09 * 
s + 2.630 * s2
 
 2849        du  =  3.315 + 1.145 * 
s - 0.583 * s2 + 0.154 * s3
 
 2850        uv  = 
dor94fv(
x, nu, aku, bku, au, bu, cu, du)
 
 2852        nd  =  0.102 - 0.017 * 
s + 0.005 * s2
 
 2853        akd =  0.270 - 0.019 * 
s 
 2855        ad  =  2.393 + 6.228 * 
s - 0.881 * s2
 
 2856        bd  =  46.06 + 4.673 * 
s - 14.98 * s2 + 1.331 * s3
 
 2857        cd  =  17.83 - 53.47 * 
s + 21.24 * s2
 
 2858        dd  =  4.081 + 0.976 * 
s - 0.485 * s2 + 0.152 * s3
 
 2859        dv  = 
dor94fv(
x, nd, akd, bkd, ad, bd, cd, dd)
 
 2861        ne  =  0.070 + 0.042 * 
s - 0.011 * s2 + 0.004 * s3
 
 2862        ake =  0.409 - 0.007 * 
s 
 2863        bke =  0.782 + 0.082 * 
s 
 2864        ae  = -29.65 + 26.49 * 
s + 5.429 * s2
 
 2865        be  =  90.20 - 74.97 * 
s + 4.526 * s2
 
 2867        de  =  8.122 + 2.120 * 
s - 1.088 * s2 + 0.231 * s3
 
 2868        del = 
dor94fv(
x, ne, ake, bke, ae, be, ce, de)
 
 2875        bgx =  3.210 - 1.866 * 
s 
 2877        dx  =  9.010 + 0.896 * ds + 0.222 * s2
 
 2878        ex  =  3.077 + 1.446 * 
s 
 2879        esx =  3.173 - 2.445 * ds + 2.207 * 
s 
 2880        udb=
dor94fw(
x, 
s, alx, bex, akx, bkx, agx, bgx, cx, 
dx, ex, esx)
 
 2884        aks =  1.690 + 0.650 * ds - 0.922 * 
s 
 2885        as  = -4.329 + 1.131 * 
s 
 2886        bs  =  9.568 - 1.744 * 
s 
 2887        dst =  9.377 + 1.088 * ds - 1.320 * 
s + 0.130 * s2
 
 2888        est =  3.031 + 1.639 * 
s 
 2889        ess =  5.837 + 0.815 * 
s 
 2890        sb  = 
dor94fs(
x, 
s, als, bes, aks, as, bs, dst, est, ess)
 
 2894        akg =  1.724 + 0.157 * 
s 
 2895        bkg =  0.800 + 1.016 * 
s 
 2896        ag  =  7.517 - 2.547 * 
s 
 2897        bg  =  34.09 - 52.21 * ds + 17.47 * 
s 
 2898        cg  =  4.039 + 1.491 * 
s 
 2899        dg  =  3.404 + 0.830 * 
s 
 2900        eg  = -1.112 + 3.438 * 
s  - 0.302 * s2
 
 2901        esg =  3.256 - 0.436 * 
s 
 2902        gl =
dor94fw(
x, 
s, alg, beg, akg, bkg, ag, bg, cg, dg, eg, esg)
 
 2908        SUBROUTINE dor94di (X, Q2, UV, DV, DEL, UDB, SB, GL)
 
 2909        IMPLICIT DOUBLE PRECISION (
a - 
z)
 
 2912        lam2 = 0.248 * 0.248
 
 2918        nu  =  2.484 + 0.116 * 
s + 0.093 * s2
 
 2919        aku =  0.563 - 0.025 * 
s 
 2920        bku =  0.054 + 0.154 * 
s 
 2921        au  = -0.326 - 0.058 * 
s - 0.135 * s2
 
 2922        bu  = -3.322 + 8.259 * 
s - 3.119 * s2 + 0.291 * s3
 
 2923        cu  =  11.52 - 12.99 * 
s + 3.161 * s2
 
 2924        du  =  2.808 + 1.400 * 
s - 0.557 * s2 + 0.119 * s3
 
 2925        uv  = 
dor94fv(
x, nu, aku, bku, au, bu, cu, du)
 
 2927        nd  =  0.156 - 0.017 * 
s 
 2928        akd =  0.299 - 0.022 * 
s 
 2929        bkd =  0.259 - 0.015 * 
s 
 2930        ad  =  3.445 + 1.278 * 
s + 0.326 * s2
 
 2931        bd  = -6.934 + 37.45 * 
s - 18.95 * s2 + 1.463 * s3
 
 2932        cd  =  55.45 - 69.92 * 
s + 20.78 * s2
 
 2933        dd  =  3.577 + 1.441 * 
s - 0.683 * s2 + 0.179 * s3
 
 2934        dv  = 
dor94fv(
x, nd, akd, bkd, ad, bd, cd, dd)
 
 2936        ne  =  0.099 + 0.019 * 
s + 0.002 * s2
 
 2937        ake =  0.419 - 0.013 * 
s 
 2938        bke =  1.064 - 0.038 * 
s 
 2939        ae  = -44.00 + 98.70 * 
s - 14.79 * s2
 
 2940        be  =  28.59 - 40.94 * 
s - 13.66 * s2 + 2.523 * s3
 
 2941        ce  =  84.57 - 108.8 * 
s + 31.52 * s2
 
 2942        de  =  7.469 + 2.480 * 
s - 0.866 * s2
 
 2943        del = 
dor94fv(
x, ne, ake, bke, ae, be, ce, de)
 
 2947        akx =  0.326 + 0.150 * 
s 
 2948        bkx =  0.956 + 0.405 * 
s 
 2950        bgx =  3.794 - 2.359 * ds
 
 2952        dx  =  7.941 + 0.534 * ds - 0.940 * 
s + 0.410 * s2
 
 2953        ex  =  3.049 + 1.597 * 
s 
 2954        esx =  4.396 - 4.594 * ds + 3.268 * 
s 
 2955        udb=
dor94fw(
x, 
s, alx, bex, akx, bkx, agx, bgx, cx, 
dx, ex, esx)
 
 2959        aks =  1.415 - 0.641 * ds
 
 2960        as  =  0.580 - 9.763 * ds + 6.795 * 
s  - 0.558 * s2
 
 2961        bs  =  5.617 + 5.709 * ds - 3.972 * 
s 
 2962        dst =  13.78 - 9.581 * 
s  + 5.370 * s2 - 0.996 * s3
 
 2963        est =  4.546 + 0.372 * s2
 
 2964        ess =  5.053 - 1.070 * 
s  + 0.805 * s2
 
 2965        sb  = 
dor94fs(
x, 
s, als, bes, aks, as, bs, dst, est, ess)
 
 2970        bkg =  2.427 + 1.311 * 
s  - 0.153 * s2
 
 2971        ag  =  25.09 - 7.935 * 
s 
 2972        bg  = -14.84 - 124.3 * ds + 72.18 * 
s 
 2973        cg  =  590.3 - 173.8 * 
s 
 2974        dg  =  5.196 + 1.857 * 
s 
 2975        eg  = -1.648 + 3.988 * 
s  - 0.432 * s2
 
 2976        esg =  3.232 - 0.542 * 
s 
 2977        gl = 
dor94fw(
x, 
s, alg, beg, akg, bkg, ag, bg, cg, dg, eg, esg)
 
 2984        IMPLICIT DOUBLE PRECISION (
a - 
z)
 
 2991        FUNCTION dor94fw (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
 
 2992        IMPLICIT DOUBLE PRECISION (
a - 
z)
 
 2996      1      * dexp(-
e + 
sqrt(es * 
s**be * lx))) * (1.- 
x)**
d 
 3000        FUNCTION dor94fs (X, S, AL, BE, AK, AG, B, D, E, ES)
 
 3001        IMPLICIT DOUBLE PRECISION (
a - 
z)
 
 3006      1       * dexp(-
e + 
sqrt(es * 
s**be * lx))
 
DOUBLE PRECISION function rndm(RDUMMY)
 
subroutine gset(AX, BX, NX, Z, W)
 
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
 
subroutine csj1m(PT, ETAC, DSIGM)
 
subroutine selhrd(MHARD, IJPVAL, IJTVAL, PTTHRE)
 
void fill(G4double x, G4double weight=1.)
 
subroutine csj1mi(PT, DSIGM)
 
subroutine hafdis(PDS, PDA, PDB, FDISTR)
 
subroutine structm(XX, QQ, UPV, DNV, USEA, DSEA, STR, CHM, BOT, TOP, GLU)
 
G4int mod(G4int a, G4int b)
 
subroutine harevt(MHARD, PT1IN)
 
subroutine plot(X, Y, N, M, MM, XO, DX, YO, DY)
 
subroutine xcheck(X1S, X2S, LINMAX)
 
subroutine phkmrs(XQ, QQ, PD, MODE)
 
function dor94fw(X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
 
subroutine dor94ho(X, Q2, UV, DV, DEL, UDB, SB, GL)
 
subroutine dor94di(X, Q2, UV, DV, DEL, UDB, SB, GL)
 
subroutine po_grv98lo(ISET, X, Q2, UV, DV, US, DS, SS, GL)
 
subroutine csj2m(PT, ETAC, ETAD, DSIGMM)
 
const char * what(void) const 
 
subroutine title(NA, NB, NCA, NCB)
 
static c2_log_p< float_type > & log()
make a *new object 
 
function dor94fv(X, N, AK, BK, A, B, C, D)
 
subroutine hafdi1(NKON, Z, FDIS, IND)
 
static c2_sqrt_p< float_type > & sqrt()
make a *new object 
 
subroutine recchk(LINMAX, X, IOPT)
 
subroutine dor94lo(X, Q2, UV, DV, DEL, UDB, SB, GL)
 
function dor94fs(X, S, AL, BE, AK, AG, B, D, E, ES)
 
float_type xmax() const 
return the upper bound of the domain for this function as set by set_domain() 
 
subroutine jtpdis(X, QQ, IHATYP, MSPR, PD)
 
static c2_exp_p< float_type > & exp()
make a *new object