3012 lines
109 KiB
FortranFixed
3012 lines
109 KiB
FortranFixed
C------- name of the file ----------------------------------------------
|
|
C DTULAP.FOR
|
|
C
|
|
C Modified for initializations for NESTEP values of energy C.Forti-Apr 97
|
|
C______________________________________________________________________
|
|
C
|
|
C originally: JTDTU.FOR program
|
|
C connection between DTU and JT ( hard scattering )
|
|
*
|
|
C first parameters are taken from DTU and set to the own
|
|
C parameter-commons of JT, then JT will be initialized
|
|
C
|
|
C______________________________________________________________________
|
|
* revision 3.92: adjust COMMONS,
|
|
* caraful: DTU90 was based on a older version of DTULAP
|
|
* ********************************************************************
|
|
SUBROUTINE JTDTU(IOPT)
|
|
*
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAENVI/ NINDEP
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAPADI/ NPDM
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
COMMON /OUTLEV/IOUTPO,IOUTPA,IOUXEV,IOUCOL
|
|
*
|
|
CHARACTER*80 TITLE
|
|
CHARACTER*80 TITLE0
|
|
CHARACTER*8 PROJTY,TARGTY
|
|
CHARACTER*8 PROJTY0,TARGTY0
|
|
COMMON /USERLA1/TITLE,PROJTY,TARGTY
|
|
COMMON /USERLA2/CMENER,SDFRAC,PTLAR,ISTRUF ,ISINGD,IDUBLD
|
|
COMMON /USER1/TITLE0,PROJTY0,TARGTY0
|
|
COMMON /USER2/CMENER0,SDFRAC0,PTLAR0,ISTRUF0,ISINGD0,IDUBLD0
|
|
COMMON /COLLAP/S,IJPROJ,IJTAR,PTTHR,PTTHR2,IOPHRD,IJPRLU,IJTALU
|
|
COMMON/COLLIS/ S0, IJPROJ0, IJTAR0, PTTHR0, PTTHR20, IOPHRD0,
|
|
* IJPRLU0, IJTALU0
|
|
C COMMON /USER/TITLE,PROJTY,TARGTY,CMENER,ISTRUF
|
|
C & ,ISINGD,IDUBLD,SDFRAC,PTLAR
|
|
C COMMON /USER1/TITLE,PROJTY,TARGTY
|
|
C COMMON /USER2/CMENER,SDFRAC,PTLAR,ISTRUF,ISINGD,IDUBLD
|
|
*
|
|
C
|
|
C repl. COMMON /COLLIS/ECMDTU,S,IJPROJ,IJTAR,PTTHR,IOPHRD,
|
|
C *IJPRLU,IJTALU,PTTHR2
|
|
C COMMON/COLLIS/S,IJPROJ,IJTAR,PTTHR,PTTHR2,IOPHRD,IJPRLU,IJTALU
|
|
C repl. COMMON /COLLIS/ECMDTU,S,IJPROJ,IJTAR,PTTHR,IOPHRD,IJPRLU,IJTALU,PTTHR2
|
|
COMMON /STRUFU/ISTRUM,ISTRUT
|
|
COMMON /PTLARG/XSMAX
|
|
COMMON /HAXSUM/XSHMX
|
|
C COMMON /POMENE/POEN(20),POEN1(20),POEN2(20),NESTEP
|
|
COMMON /POMENE/POEN(28),POEN1(28),POEN2(28),NESTEP
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C
|
|
C Fill COLLAP COMMON Block
|
|
S = S0
|
|
IJPROJ = IJPROJ0
|
|
IJTAR = IJTAR0
|
|
PTTHR = PTTHR0
|
|
IOPHRD = IOPHRD0
|
|
IJPRLU = IJPRLU0
|
|
IJTALU = IJTALU0
|
|
PTTHR2 = PTTHR20
|
|
C Fill USERLA COMMON Block
|
|
TITLE = TITLE0
|
|
PROJTY = PROJTY0
|
|
TARGTY = TARGTY0
|
|
CMENER = CMENER0
|
|
ISTRUF = ISTRUF0
|
|
ISINGD = ISINGD0
|
|
IDUBLD = IDUBLD0
|
|
SDFRAC = SDFRAC0
|
|
PTLAR = PTLAR0
|
|
C define NESTEP values of PTTHRZ
|
|
DO 101 III=1,NESTEP
|
|
PTTHRZ(III)=3.
|
|
PTTHZ2(III)=3.
|
|
IF(ISTRUT.EQ.1)THEN
|
|
PTTHRZ(III)=2.1+0.15*(LOG10(POEN(III)/50.))**3
|
|
PTTHZ2(III)=PTTHRZ(III)
|
|
ELSEIF(ISTRUT.EQ.2)THEN
|
|
PTTHRZ(III)=2.5+0.12*(LOG10(POEN(III)/50.))**3
|
|
PTTHZ2(III)=PTTHRZ(III)
|
|
ENDIF
|
|
101 CONTINUE
|
|
INDENE=1
|
|
C
|
|
C===read default values
|
|
C
|
|
CALL HASTRT
|
|
C
|
|
C===read parameters from DTU
|
|
C
|
|
C max. # of flavors
|
|
NF = 4
|
|
C partondistributions
|
|
NPD = ISTRUF
|
|
NPDM = ISTRUM
|
|
C correct scale for CTEQ PDFs
|
|
IF((ISTRUF.GE.16).OR.(ISTRUF.LE.20)) THEN
|
|
AQQAL = 1.D0
|
|
AQQPD = 1.D0
|
|
ENDIF
|
|
C hadron a
|
|
NHA = IJPROJ
|
|
IF ( IJPROJ.EQ.2 ) NHA =-1
|
|
C hadron b
|
|
NHB = IJTAR
|
|
IF ( IJTAR .EQ.2 ) NHB =-1
|
|
C output level
|
|
NOUTL = IOUTPA
|
|
C cms-energy ( GeV )
|
|
C repl ECM=ECMDTU
|
|
C LOOP over NESTEP Energies
|
|
DO 201 INDENE=1,NESTEP
|
|
C ECM = CMENER
|
|
ECM = POEN(INDENE)
|
|
C pt-cut ( GeV )
|
|
C PTINI(1) = PTTHR
|
|
C PTINI(2) = PTTHR2
|
|
PTINI(1) = PTTHRZ(INDENE)
|
|
PTINI(2) = PTTHZ2(INDENE)
|
|
PTINI(3) = 0.0
|
|
PTINI(4) = 0.0
|
|
C maximum sum of hard x
|
|
XSHMX = XSMAX
|
|
C
|
|
C is program called from DTU ( NINDEP=0 ) or independent ( NINDEP=1 )
|
|
NINDEP = IOPT
|
|
C ECM = CMENER
|
|
C pt-cut ( GeV )
|
|
C PTINI(1) = PTTHR
|
|
C PTINI(2) = PTTHR2
|
|
C PTINI(3) = 0.0
|
|
C PTINI(4) = 0.0
|
|
C maximum sum of hard x
|
|
C XSHMX = XSMAX
|
|
C is program called from DTU ( NINDEP=0 ) or independent ( NINDEP=1 )
|
|
C NINDEP = IOPT
|
|
C
|
|
C===initialize JT
|
|
C
|
|
CALL HISINI
|
|
IF ( IOPT.EQ.0 ) CALL HARINI
|
|
201 CONTINUE
|
|
RETURN
|
|
END
|
|
C
|
|
C******************************************************************************
|
|
SUBROUTINE SELHRD(MHARD,IJPVAL,IJTVAL,PTTHRE)
|
|
C
|
|
C select the initial parton x-fractions and flavors and the final flavors
|
|
C for an event with mhard hard or semihard scatterings
|
|
C
|
|
C IJPVAL,IJTVAL =0 valence quarks of projectile or target not involved
|
|
C in hard scattering
|
|
C IJPVAL,IJTVAL =1 valence quarks of projectile or target involved
|
|
C in hard scattering
|
|
C
|
|
C the results are in COMMON /ABRHRD/
|
|
C XH1(I),XH2(I): x-values of initial partons
|
|
C IJHI1(I),IJHI2(I): flavor of initial parton
|
|
C 0 gluon
|
|
C 1,2 valence u,d quarks
|
|
C 11,12,13,14 sea udsc-quarks
|
|
C negative anti s or v quarks
|
|
C IJHF1(I),IJHF2(I): flavor of final state partons
|
|
C PHARD1(I,J),PHARD2(I,J): final part. momentum and energy
|
|
C J=1 PX
|
|
C =2 PY
|
|
C =3 PZ
|
|
C =4 ENERGY (massless partons)
|
|
C-----------------------------------------------------------------------
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
*
|
|
CHARACTER*80 TITLE
|
|
CHARACTER*80 TITLE0
|
|
CHARACTER*8 PROJTY,TARGTY
|
|
CHARACTER*8 PROJTY0,TARGTY0
|
|
COMMON /USERLA1/TITLE,PROJTY,TARGTY
|
|
COMMON /USERLA2/CMENER,SDFRAC,PTLAR,ISTRUF ,ISINGD,IDUBLD
|
|
COMMON /USER1/TITLE0,PROJTY0,TARGTY0
|
|
COMMON /USER2/CMENER0,SDFRAC0,PTLAR0,ISTRUF0,ISINGD0,IDUBLD0
|
|
COMMON /COLLAP/S,IJPROJ,IJTAR,PTTHR,PTTHR2,IOPHRD,IJPRLU,IJTALU
|
|
COMMON/COLLIS/ S0, IJPROJ0, IJTAR0, PTTHR0, PTTHR20, IOPHRD0,
|
|
* IJPRLU0, IJTALU0
|
|
*
|
|
C COMMON /USER/TITLE,PROJTY,TARGTY,CMENER,ISTRUF
|
|
C & ,ISINGD,IDUBLD,SDFRAC,PTLAR
|
|
C COMMON /USER1/TITLE,PROJTY,TARGTY
|
|
C COMMON /USER2/CMENER,SDFRAC,PTLAR,ISTRUF,ISINGD,IDUBLD
|
|
C COMMON/COLLIS/S,IJPROJ,IJTAR,PTTHR,PTTHR2,IOPHRD,IJPRLU,IJTALU
|
|
COMMON /ABRHRD/XH1(MSCAHD),XH2(MSCAHD),IJHI1(MSCAHD),
|
|
*IJHI2(MSCAHD),IJHF1(MSCAHD),IJHF2(MSCAHD),PHARD1(MSCAHD,4),
|
|
*PHARD2(MSCAHD,4)
|
|
COMMON /OUTLEV/IOUTPO,IOUTPA,IOUXEV,IOUCOL
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
C COMMON /POMENE/POEN(20),POEN1(20),POEN2(20),NESTEP
|
|
COMMON /POMENE/POEN(28),POEN1(28),POEN2(28),NESTEP
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
DATA X1SU/0./ , X2SU/0./
|
|
C
|
|
C Calculate energy index INDENE
|
|
CMENER=CMENER0
|
|
ECM=CMENER
|
|
INDENE=1
|
|
DO 1120 II=1,NESTEP
|
|
IF(CMENER0.GE.POEN1(II).AND.CMENER0.LT.POEN2(II))THEN
|
|
INDENE=II
|
|
GO TO 1122
|
|
ENDIF
|
|
1120 CONTINUE
|
|
1122 CONTINUE
|
|
C INDENE=1
|
|
PTINI(1) = PTTHRZ(INDENE)
|
|
PTINI(2) = PTTHZ2(INDENE)
|
|
C
|
|
IJPVAL =0
|
|
IJTVAL =0
|
|
IF (IOUTPA.GE.3) WRITE(6,221)
|
|
* MHARD,IJPVAL,IJTVAL
|
|
221 FORMAT (' SELHRD ',3I10)
|
|
C call of hard scattering routines
|
|
CALL HAREVT(MHARD,PTTHR2)
|
|
C WRITE(6,*)'SELHRD:CMENER,MHARD,PTTHR2,INDENE,PTINI(1),PTINI(2)',
|
|
C * CMENER,MHARD,PTTHR2,INDENE,PTINI(1),PTINI(2)
|
|
C select information from event-record
|
|
C number of hard scatterings reached
|
|
MHARD = LSCAHD
|
|
C initial partons
|
|
DO 10 N=1,LSCAHD
|
|
C X-values
|
|
XH1(N) = XHD(N,1)
|
|
XH2(N) = XHD(N,2)
|
|
X1SU = X1SU + XH1(N)
|
|
X2SU = X2SU + XH2(N)
|
|
IF( IOUTPA.GT. 6 )WRITE(6,*)N,X1SU,X2SU,XH1(N),XH2(N)
|
|
C flavors
|
|
III = NINHD(N,1)
|
|
IIIA = ABS(III)
|
|
IF ( IIIA.GT. 0 .AND. IIIA.LT.10 ) III = SIGN(IIIA+10,III)
|
|
IF ( IIIA.GE.10 ) III = SIGN(IIIA-10,III)
|
|
IF ( IIIA.GE.10 ) IJPVAL = 1
|
|
IJHI1(N) = III
|
|
III = NINHD(N,2)
|
|
IIIA = ABS(III)
|
|
IF ( IIIA.GT. 0 .AND. IIIA.LT.10 ) III = SIGN(IIIA+10,III)
|
|
IF ( IIIA.GE.10 ) III = SIGN(IIIA-10,III)
|
|
IF ( IIIA.GE.10 ) IJTVAL = 1
|
|
IJHI2(N) = III
|
|
10 CONTINUE
|
|
C final partons
|
|
DO 30 N=1,LSCAHD
|
|
I3 = 4*N-1
|
|
I4 = 4*N
|
|
C flavors
|
|
IJHF1(N) = NOUTHD(N,1)
|
|
IJHF2(N) = NOUTHD(N,2)
|
|
C four momentum
|
|
DO 20 J=1,3
|
|
PHARD1(N,J) = PREC(J,I3)
|
|
20 PHARD2(N,J) = PREC(J,I4)
|
|
PHARD1(N,4) = PREC(0,I3)
|
|
PHARD2(N,4) = PREC(0,I4)
|
|
30 CONTINUE
|
|
C
|
|
C output ( optional )
|
|
C
|
|
IF (IOUTPA.GE.3)WRITE (6,101)
|
|
101 FORMAT(' SELHRD OUTPUT FOR INITIAL STATE SCATTERED PARTONS')
|
|
DO 102 I=1,LSCAHD
|
|
IF (IOUTPA.GE.3)
|
|
* WRITE (6,103)I,IJPVAL,IJTVAL,IJHI1(I),IJHI2(I),XH1(I),XH2(I)
|
|
103 FORMAT (' I,IJPVAL,IJTVAL,IJHI1,IJHI2,XH1,XH2= ',5I5,2F12.6)
|
|
102 CONTINUE
|
|
IF (IOUTPA.GE.3)WRITE (6,301)
|
|
301 FORMAT(' SELHRD OUTPUT FOR FINAL STATE SCATTERED PARTONS')
|
|
DO 302 I=1,LSCAHD
|
|
IF (IOUTPA.GE.3)
|
|
* WRITE (6,303)I,IJHF1(I),IJHF2(I),(PHARD1(I,III),III=1,4)
|
|
IF (IOUTPA.GE.3)
|
|
* WRITE (6,303)I,IJHF1(I),IJHF2(I),(PHARD2(I,III),III=1,4)
|
|
303 FORMAT (' I,IJHI1,IJHI2,PHARD1 OR PHARD2 ',3I5,4F16.6)
|
|
302 CONTINUE
|
|
RETURN
|
|
END
|
|
*
|
|
C______________________________________________________________________
|
|
C
|
|
C originally: JTWORK.FOR
|
|
C procedures to simulate a single event
|
|
C
|
|
C
|
|
C ( this procedures work independent to procedures in other blocks
|
|
C if initialization was done )
|
|
C
|
|
C______________________________________________________________________
|
|
*
|
|
* ********************************************************************
|
|
SUBROUTINE HAREVT(MHARD,PT1IN)
|
|
*
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAENVI/ NINDEP
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
|
|
PT1 = MAX(PT1IN,PTINI(1))
|
|
PT2 = PTINI(1)
|
|
NHARD = MHARD
|
|
IHARD = 0
|
|
C NTRY = 5
|
|
NTRY = 200
|
|
C NTRY = 1000
|
|
ITRY = 0
|
|
IREJEV = 0
|
|
CALL HAMULT
|
|
CALL HAOUTP
|
|
IF ( NINDEP.EQ.1 ) CALL HISFIL2
|
|
RETURN
|
|
END
|
|
C_______________________________________________________________________
|
|
C===========================================================================
|
|
C
|
|
C THE FOLLOWING 5 SUBROUTINES ARE REWRITTEN BY
|
|
C BY I.KAWRAKOW IN ORDER TO BE ABLE
|
|
C TO PRODUCE GREAT NUMBER OF HARD POMERONS (>100) IN A
|
|
C SHORT TIME
|
|
C VERSION IK.1 - 01.93
|
|
C--------------------------------------------------------------------
|
|
SUBROUTINE HAMULT
|
|
C--------------------------------------------------------------------
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( TINY= 1.D-30, ONE=1.D0, ZSMALL=1.D-3 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAPDCO/ NPDCOR
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
COMMON /HAXIK / XREST,YREST,ZMAX,AXXMAX,WEMAX
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
COMMON /HAXSUM/XSHMX
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
ITYPE(L) = MOD(LREC1(L),100)-50
|
|
|
|
LINE = 0
|
|
LSCAHD = 0
|
|
C WRITE(6,*)' hamult:ECM',ECM
|
|
AA = (2.*PT2/ECM)**2
|
|
SA = SQRT(AA)
|
|
C
|
|
C loop until event is accepted or too many attempts ( more then NTRY )
|
|
C
|
|
5 ITRY = 0
|
|
20 ITRY = ITRY+1
|
|
IF(ITRY.GT.NTRY) GOTO 301
|
|
LINE = 0
|
|
XREST = XSHMX-NHARD*SA
|
|
YREST = XSHMX-NHARD*SA
|
|
IF(XREST*YREST.LT.AA) THEN
|
|
WRITE(6,*) ' ****************** HAMULT ****************** '
|
|
WRITE(6,*) ' IT IS NOT POSSIBLE TO PRODUCE ',NHARD,' POMERONS '
|
|
NHARD=0
|
|
RETURN
|
|
C STOP
|
|
ENDIF
|
|
ZMAX=XREST*YREST
|
|
C WRITE(6,*)' hamult:ZMAX',ZMAX
|
|
AXXMAX=AA/ZMAX
|
|
WEMAX =SQRT(1-AXXMAX)
|
|
X1S = 0.0
|
|
X2S = 0.0
|
|
IHARD = 0
|
|
PTWANT = PT1
|
|
10 CONTINUE
|
|
A = (2.*PTWANT/ECM)**2
|
|
SA = SQRT(A)
|
|
I = 5
|
|
50 I = I-1
|
|
IF ( PT1.LT.PTINI(I) .AND. I.GT.1 ) GOTO 50
|
|
DO 60 M=-1,MAXPRO
|
|
C XSECT(1,M) = XSECTA(1,M,I)
|
|
C XSECT(2,M) = XSECTA(2,M,I)
|
|
XSECT(1,M,INDENE) = XSECTA(1,M,I,INDENE)
|
|
XSECT(2,M,INDENE) = XSECTA(2,M,I,INDENE)
|
|
60 CONTINUE
|
|
CALL HARSCA
|
|
X1S = X1S+X1
|
|
X2S = X2S+X2
|
|
xrest=xrest-x1+sa
|
|
yrest=yrest-x2+sa
|
|
zmax=xrest*yrest
|
|
IHARD=IHARD+1
|
|
LSCAHD = IHARD
|
|
XHD(IHARD,1) = X1
|
|
XHD(IHARD,2) = X2
|
|
VHD(IHARD) = V
|
|
ETAHD(IHARD,1) = ETAC
|
|
ETAHD(IHARD,2) = ETAD
|
|
PTHD(IHARD) = PT
|
|
NPROHD(IHARD) = MSPR
|
|
C WRITE(6,*)'hamult:a',A
|
|
if(zmax/a-one.lt.ZSMALL) THEN
|
|
CALL XCHECK(X1S,X2S,LINMAX)
|
|
GOTO 10
|
|
ENDIF
|
|
AXXMAX=A/ZMAX
|
|
WEMAX=SQRT(1.-AXXMAX)
|
|
PTWANT = PT2
|
|
IF(IHARD.LT.NHARD) GOTO 10
|
|
C-------------------------------------------------- NOW THE REQUIRED NUMBER
|
|
C OF POMERTONS IS CREATED
|
|
IF ( NPDCOR.EQ.1 .AND.
|
|
& IHARD .GT.1 .AND.
|
|
& (1.-X1S)*(1.-X2S).LT.RNDM(AI)*(1.-AA*IHARD)**2 ) GOTO 5
|
|
301 CONTINUE
|
|
C
|
|
C end of loop
|
|
C
|
|
C check choice of valence quarks
|
|
DO 120 K=1,2
|
|
IVAL = 0
|
|
DO 110 I=1,IHARD
|
|
IND = 4*(I-1)+K
|
|
IT = ITYPE(IND)
|
|
IF ( ABS(IT).GT.10 .AND. IVAL.EQ.0 ) THEN
|
|
IVAL = 1
|
|
ELSEIF ( ABS(IT).GT.10 .AND. IVAL.EQ.1 ) THEN
|
|
IT = SIGN(ABS(IT)-10,IT)
|
|
LREC1(IND) = (LREC1(IND)/100)*100+50+IT
|
|
ENDIF
|
|
C fill COMMON HARSLT
|
|
NINHD(I,K) = IT
|
|
NOUTHD(I,K) = ITYPE(IND+2)
|
|
110 CONTINUE
|
|
120 CONTINUE
|
|
C
|
|
C information if HAMULT is not able to produce the required # of scatt.
|
|
C
|
|
IF ( IHARD.NE.NHARD .AND. NOUTER.EQ.1 ) THEN
|
|
WRITE(6,1010) NHARD,IHARD
|
|
1010 FORMAT(' ###### HAMULT : CANNOT PRODUCE',I3,' HARD SCATT.',
|
|
& '; ONLY',I3,' ARE PRODUCED !!!')
|
|
ENDIF
|
|
RETURN
|
|
END
|
|
|
|
C______________________________________________________________________
|
|
SUBROUTINE RECCHK( LINMAX,X,IOPT )
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAPDCO/ NPDCOR
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
C
|
|
IF( IOPT.EQ.0 ) THEN
|
|
LSTART = LINMAX + 1
|
|
DO 1 L = LSTART,LINE
|
|
LP = L - 4
|
|
PREC(1,LP) = PREC(1,L)
|
|
PREC(2,LP) = PREC(2,L)
|
|
PREC(3,LP) = PREC(3,L)
|
|
PREC(0,LP) = PREC(0,L)
|
|
LREC1( LP) = LREC1( L)
|
|
LREC2( LP) = LREC2( L)
|
|
1 CONTINUE
|
|
LINE = LINE - 4
|
|
RETURN
|
|
ELSEIF( IOPT.EQ.1 ) THEN
|
|
QTEST = 0.5*ECM*X
|
|
DO 2 L=1,LINE
|
|
PTEST = PREC(0,L)
|
|
IF( PTEST.EQ.QTEST ) THEN
|
|
LINMAX = L
|
|
RETURN
|
|
ENDIF
|
|
2 CONTINUE
|
|
WRITE(6,*)' RECCHK: NO NEW LINMAX FOUND - LINMAX=',LINMAX
|
|
RETURN
|
|
ENDIF
|
|
WRITE(6,*)' RECCHK: IOPT OUT OF RANGE - 0 OR 1 - IOPT=',IOPT
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE XCHECK( X1S, X2S, LINMAX )
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAPDCO/ NPDCOR
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
COMMON /HAXIK / XREST,YREST,ZMAX,AXXMAX,WEMAX
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
COMMON /HAXSUM/XSHMX
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
PARAMETER (ONE=1D0, ZSMALL=1D-3)
|
|
C
|
|
50 CONTINUE
|
|
IF(IHARD.LT.1) THEN
|
|
WRITE(6,*) ' ERROR IN XCHECK : IHARD < 1 ',IHARD
|
|
STOP
|
|
ENDIF
|
|
C-------------------------------------- FIND PROCESS WITH THE MAX. X
|
|
IMAX=0
|
|
XMAX=0.
|
|
DO 10 I=1,IHARD
|
|
IF(XHD(I,1).GT.XMAX) THEN
|
|
IMAX=I
|
|
XMAX=XHD(I,1)
|
|
ENDIF
|
|
IF(XHD(I,2).GT.XMAX) THEN
|
|
IMAX=I
|
|
XMAX=XHD(I,2)
|
|
ENDIF
|
|
10 CONTINUE
|
|
C--------------------------------------- REJECT THIS PROCESS
|
|
X1S=X1S-XHD(IMAX,1)
|
|
X2S=X2S-XHD(IMAX,2)
|
|
XREST=XREST+XHD(IMAX,1)-SQRT(A)
|
|
YREST=YREST+XHD(IMAX,2)-SQRT(A)
|
|
ZMAX=XREST*YREST
|
|
AXXMAX=A/ZMAX
|
|
WEMAX=SQRT(1.-AXXMAX)
|
|
MH=0
|
|
DO 20 I=1,IHARD
|
|
IF(I.NE.IMAX) THEN
|
|
MH=MH+1
|
|
XHD(MH,1) = XHD(I,1)
|
|
XHD(MH,2) = XHD(I,2)
|
|
VHD(MH) = VHD(I)
|
|
ETAHD(MH,1) = ETAHD(I,1)
|
|
ETAHD(MH,2) = ETAHD(I,2)
|
|
PTHD(MH) = PTHD(I)
|
|
NPROHD(MH) = NPROHD(I)
|
|
ENDIF
|
|
20 CONTINUE
|
|
CALL RECCHK( 4*IMAX,XHD1,0)
|
|
IHARD=IHARD-1
|
|
LSCAHD=IHARD
|
|
IF(ZMAX/A-ONE.LT.ZSMALL) GOTO 50
|
|
RETURN
|
|
END
|
|
C_______________________________________________________
|
|
SUBROUTINE HAX1X2
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
C COMMON /HAXIK / XREST,YREST,ZMAX
|
|
COMMON /HAXIK / XREST,YREST,ZMAX,AXXMAX,WEMAX
|
|
PARAMETER ( TINY= 1.D-30, ONE=1.D0 ,TINY6=1.D-06)
|
|
|
|
SA=SQRT(A)
|
|
12 continue
|
|
c--------------------------------- sample z=x*y
|
|
z=a*Exp(rndm(1.)*Log(zmax/a))
|
|
xm=xrest
|
|
ym=yrest
|
|
if(xm.lt.yrest) then
|
|
xm=yrest
|
|
ym=xrest
|
|
endif
|
|
ww=Log(xm**2/z)/Log(xm**2/a)
|
|
if(rndm(1.1).gt.ww) goto 12
|
|
c--------------------------------- sample u=x+y
|
|
umin=Sqrt(4.*z)
|
|
umax=xm+z/xm
|
|
cc=umax**2-4.*z
|
|
if(cc.lt.0.) cc=0.
|
|
13 continue
|
|
c=Exp(rndm(2.)*Log((umax+Sqrt(cc))/umin))
|
|
uu=umin*(c**2+1.)/2./c
|
|
if(uu.gt.2.*ym.and.uu.lt.ym+z/ym) goto 13
|
|
c------------------------------------- x,y from u,z
|
|
c=uu**2-4.*z
|
|
if(c.lt.0.) c=0.
|
|
c=sqrt(c)
|
|
xtemp=(uu+c)/2.
|
|
ytemp=(uu-c)/2.
|
|
if(xrest.ge.yrest) then
|
|
x=xtemp
|
|
y=ytemp
|
|
if(xrest.eq.yrest) then
|
|
if(rndm(3.).gt.0.5) then
|
|
x=ytemp
|
|
y=xtemp
|
|
endif
|
|
endif
|
|
else
|
|
x=ytemp
|
|
y=xtemp
|
|
endif
|
|
X1=X
|
|
X2=Y
|
|
AXX = A/(X1*X2)
|
|
W = SQRT(MAX(TINY,ONE-AXX))
|
|
W1 = AXX/(1.+W)
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HARKIN
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( TINY= 1.D-30, ONE=1.D0 ,TINY6=1.D-06)
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
DIMENSION RM(-1:MAXPRO)
|
|
COMMON /HAXIK / XREST,YREST,ZMAX,AXXMAX,WEMAX
|
|
DATA RM / 3.31, 0.0,
|
|
& 3.80, 0.65, 2.00, 0.65, 0.89, 0.45, 0.445, 0.89 /
|
|
M = MSPR
|
|
IF ( M.EQ.1 ) THEN
|
|
10 CALL HAX1X2
|
|
V =-0.5*W1/(W1+RNDM(AI)*W)
|
|
U =-1.-V
|
|
R = (1.+W)*2.25*(V*V*(3.-U*V-V/(U*U))-U)
|
|
RMAX=RM(1)*WEMAX*(1.+WEMAX)
|
|
WIK=R*W/RMAX
|
|
IF(WIK.GT.1.D0) WRITE(6,*) ' HARKIN : WIK > 1 : ',M,R
|
|
C IF ( R*W.LT.RM(1)*RNDM(AI) ) GOTO 10
|
|
IF(WIK.LT.RNDM(AI)) GOTO 10
|
|
IF ( RNDM(AJ).LE.0.5D0 ) V = U
|
|
ELSEIF ( M.EQ.2 .OR. M.EQ.4 ) THEN
|
|
20 CALL HAX1X2
|
|
WL = LOG(W1)
|
|
V =-EXP(-0.6931472+RNDM(AI)*WL)
|
|
U =-1.-V
|
|
R = (U*U+V*V)*((16./27.)/U-(4./3.)*V)*(WL/W)*AXX
|
|
IF ( R*W.LT.RM(M)*RNDM(AI) ) GOTO 20
|
|
IF ( RNDM(AJ).LE.0.5D0 ) V = U
|
|
ELSEIF ( M.EQ.3 ) THEN
|
|
30 CALL HAX1X2
|
|
V =-0.5*W1/(W1+RNDM(AI)*W)
|
|
U =-1.-V
|
|
R = (1.+W)*(1.+U*U)*(1.-(4./9.)*V*V/U)
|
|
RMAX=RM(3)*WEMAX*(1.+WEMAX)
|
|
WIK=R*W/RMAX
|
|
IF(WIK.GT.1.D0) WRITE(6,*) ' HARKIN : WIK > 1 : ',M,R
|
|
C IF ( R*W.LT.RM(3)*RNDM(AI) ) GOTO 30
|
|
IF(WIK.LT.RNDM(AI)) GOTO 30
|
|
ELSEIF ( M.EQ.5 ) THEN
|
|
50 CALL HAX1X2
|
|
V =-0.5*AXX/(W1+2.*RNDM(AI)*W)
|
|
U =-1.-V
|
|
R = (4./9.)*(1.+U*U+V*V*(U*U+V*V))-(8./27.)*U*U*V
|
|
RMAX=RM(5)*WEMAX
|
|
WIK=R*W/RMAX
|
|
IF(WIK.GT.1.D0) WRITE(6,*) ' HARKIN : WIK > 1 : ',M,R
|
|
C IF ( R*W.LT.RM(5)*RNDM(AI) ) GOTO 50
|
|
IF(WIK.LT.RNDM(AI)) GOTO 50
|
|
ELSEIF ( M.EQ.6 ) THEN
|
|
60 CALL HAX1X2
|
|
V =-0.5*(1.+W)+RNDM(AI)*W
|
|
U =-1.-V
|
|
R = (4./9.)*(U*U+V*V)*AXX
|
|
IF ( R*W.LT.RM(6)*RNDM(AI) ) GOTO 60
|
|
ELSEIF ( M.EQ.7 ) THEN
|
|
70 CALL HAX1X2
|
|
V =-0.5*W1/(W1+RNDM(AI)*W)
|
|
U =-1.-V
|
|
R = (1.+W)*((2./9.)*(1.+U*U+(1.+V*V)*V*V/(U*U))-(4./27.)*V/U)
|
|
RMAX=RM(7)*WEMAX*(1.+WEMAX)
|
|
WIK=R*W/RMAX
|
|
IF(WIK.GT.1.D0) WRITE(6,*) ' HARKIN : WIK > 1 : ',M,R
|
|
C IF ( R*W.LT.RM(7)*RNDM(AI) ) GOTO 70
|
|
IF(WIK.LT.RNDM(AI)) GOTO 70
|
|
IF ( RNDM(AJ).LE.0.5D0 ) V = U
|
|
ELSEIF ( M.EQ.8 ) THEN
|
|
80 CALL HAX1X2
|
|
V =-0.5*AXX/(W1+2.*RNDM(AI)*W)
|
|
U =-1.-V
|
|
R = (4./9.)*(1.+U*U)
|
|
RMAX=RM(8)*WEMAX
|
|
WIK=R*W/RMAX
|
|
IF(WIK.GT.1.D0) WRITE(6,*) ' HARKIN : WIK > 1 : ',M,R
|
|
C IF ( R*W.LT.RM(8)*RNDM(AI) ) GOTO 80
|
|
IF(WIK.LT.RNDM(AI)) GOTO 80
|
|
ELSEIF ( M.EQ.-1 ) THEN
|
|
90 CALL HAX1X2
|
|
WL = LOG(W1)
|
|
V =-EXP(-0.6931472+RNDM(AI)*WL)
|
|
U =-1.-V
|
|
R = (1.+V*V)*(V/(U*U)-(4./9.))*(WL/W)*AXX
|
|
IF ( R*W.LT.RM(-1)*RNDM(AI) ) GOTO 90
|
|
ENDIF
|
|
C PARAMETER ( TINY= 1.D-30, ONE=1.D0 ,TINY6 =1.D-06)
|
|
V = MAX(MIN( V,-TINY6 ),-1.+TINY6 )
|
|
U = MAX(MIN(-1.E0-V,-TINY6 ),-1.+TINY6 )
|
|
PT = SQRT(U*V*X1*X2)*ECM
|
|
ETAC = 0.5*LOG((U*X1)/(V*X2))
|
|
ETAD = 0.5*LOG((V*X1)/(U*X2))
|
|
RETURN
|
|
END
|
|
C-------------------------------------------- END OF CHANGES BY IK 01.93
|
|
C===========================================================================
|
|
C_______________________________________________________________________
|
|
|
|
SUBROUTINE HACHEK(IOPT)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
COMMON /HACUTS/ PTL,PTU,ETACL,ETACU,ETADL,ETADU
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
|
|
IOPT = 1
|
|
IF ( PT .LT.PTL .OR. PT .GT.PTU
|
|
& .OR. ETAC.LT.ETACL .OR. ETAC.GT.ETACU
|
|
& .OR. ETAD.LT.ETADL .OR. ETAD.GT.ETADU ) IOPT = 0
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HAFDIS(PDS,PDA,PDB,FDISTR)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( TINY= 1.D-30, ONE=1.D0 ,TINY6=1.D-06)
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
DIMENSION PDA(-6:6),PDB(-6:6)
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
|
|
FDISTR = 0.0
|
|
C set hard scale QQ for alpha and partondistr.
|
|
IF ( NQQAL.EQ.1 ) THEN
|
|
QQAL = AQQAL*PT*PT
|
|
ELSEIF ( NQQAL.EQ.2 ) THEN
|
|
QQAL = AQQAL*X1*X2*ECM*ECM
|
|
ELSEIF ( NQQAL.EQ.3 ) THEN
|
|
QQAL = AQQAL*X1*X2*ECM*ECM*(U*V)**(1./3.)
|
|
ELSEIF ( NQQAL.EQ.4 ) THEN
|
|
QQAL = AQQAL*X1*X2*ECM*ECM*U*V/(1.+V*V+U*U)
|
|
ENDIF
|
|
IF ( NQQPD.EQ.1 ) THEN
|
|
QQPD = AQQPD*PT*PT
|
|
ELSEIF ( NQQPD.EQ.2 ) THEN
|
|
QQPD = AQQPD*X1*X2*ECM*ECM
|
|
ELSEIF ( NQQPD.EQ.3 ) THEN
|
|
QQPD = AQQPD*X1*X2*ECM*ECM*(U*V)**(1./3.)
|
|
ELSEIF ( NQQPD.EQ.4 ) THEN
|
|
QQPD = AQQPD*X1*X2*ECM*ECM*U*V/(1.+V*V+U*U)
|
|
ENDIF
|
|
ALPHA = BQCD/LOG(MAX(QQAL/ALASQR,1.1*ONE))
|
|
F = XSECT(1,MSPR,INDENE)*ALPHA**2
|
|
C F = XSECT(1,MSPR)*ALPHA**2
|
|
C calculate partondistributions
|
|
CALL JTPDIS(X1,QQPD,NHA,MSPR,PDA)
|
|
CALL JTPDIS(X2,QQPD,NHB,MSPR,PDB)
|
|
C calculate full distribution FDISTR
|
|
IF ( MSPR.EQ.1 .OR. MSPR.EQ.4 ) THEN
|
|
PDS = PDA(0)*PDB(0)
|
|
ELSE
|
|
S2 = 0.0
|
|
S3 = 0.0
|
|
S4 = 0.0
|
|
S5 = 0.0
|
|
DO 10 I=1,NF
|
|
S2 = S2+PDA(I)*PDB(-I)+PDA(-I)*PDB( I)
|
|
S3 = S3+PDA(I)*PDB( I)+PDA(-I)*PDB(-I)
|
|
S4 = S4+PDA(I)+PDA(-I)
|
|
S5 = S5+PDB(I)+PDB(-I)
|
|
10 CONTINUE
|
|
IF ( MSPR.EQ.2 .OR. MSPR.EQ.5 .OR. MSPR.EQ.6 ) THEN
|
|
PDS = S2
|
|
ELSEIF ( MSPR.EQ.3 .OR. MSPR.EQ.-1 ) THEN
|
|
PDS = PDA(0)*S5+PDB(0)*S4
|
|
ELSEIF ( MSPR.EQ.7 ) THEN
|
|
PDS = S3
|
|
ELSEIF ( MSPR.EQ.8 ) THEN
|
|
PDS = S4*S5-(S2+S3)
|
|
ENDIF
|
|
ENDIF
|
|
FDISTR = F*PDS
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HARSCA
|
|
C HARSCA determines the type of hard subprocess, the partons taking
|
|
C part in subprocess and the kinematic variables
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HASCA / PTWANT,A,ALN,Z1MAX,Z1DIF,Z2MAX,Z2DIF,
|
|
& PT,ETAC,ETAD,X1,X2,V,U,W,W1,AXX,WEIGHT,MSPR,IREJSC
|
|
DIMENSION PDA(-6:6),PDB(-6:6)
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
|
|
C MXSECT(0,0) = 0
|
|
C XSECT(2,0) = 0.0
|
|
MXSECT(0,0,INDENE) = 0
|
|
XSECT(2,0,INDENE) = 0.0
|
|
|
|
DO 15 M=-1,MAXPRO
|
|
IF ( MXSECT(0,M,INDENE).EQ.1 )
|
|
& XSECT(2,0,INDENE) = XSECT(2,0,INDENE)+XSECT(2,M,INDENE)
|
|
C IF ( MXSECT(0,M).EQ.1 ) XSECT(2,0) = XSECT(2,0)+XSECT(2,M)
|
|
15 CONTINUE
|
|
C
|
|
C -------------------------------------------I
|
|
C begin of iteration loop I
|
|
C I
|
|
IREJSC = 0
|
|
10 CONTINUE
|
|
IREJSC = IREJSC+1
|
|
IREJEV = IREJEV+1
|
|
C find subprocess
|
|
B = RNDM(AI)*XSECT(2,0,INDENE)
|
|
C B = RNDM(AI)*XSECT(2,0)
|
|
MSPR =-2
|
|
SUM = 0.0
|
|
20 MSPR = MSPR+1
|
|
IF ( MXSECT(0,MSPR,INDENE).EQ.1 ) SUM = SUM+XSECT(2,MSPR,INDENE)
|
|
C IF ( MXSECT(0,MSPR).EQ.1 ) SUM = SUM+XSECT(2,MSPR)
|
|
IF ( SUM.LT.B .AND. MSPR.LT.MAXPRO ) GOTO 20
|
|
C find kin. variables X1,X2 and V
|
|
CALL HARKIN
|
|
C check kin. cuts eventually given by user
|
|
CALL HACHEK(IOPT)
|
|
IF ( IOPT.EQ.0 ) GOTO 10
|
|
C calculate remaining distribution
|
|
CALL HAFDIS(PDS,PDA,PDB,F)
|
|
C actualize counter for cross-section calculation
|
|
IF( F .LE. 1.D-15 ) F=0.
|
|
C XSECT (3,MSPR) = XSECT (3,MSPR)+F
|
|
C XSECT (4,MSPR) = XSECT (4,MSPR)+F*F
|
|
C MXSECT(1,MSPR) = MXSECT(1,MSPR)+1
|
|
XSECT (3,MSPR,INDENE) = XSECT (3,MSPR,INDENE)+F
|
|
XSECT (4,MSPR,INDENE) = XSECT (4,MSPR,INDENE)+F*F
|
|
MXSECT(1,MSPR,INDENE) = MXSECT(1,MSPR,INDENE)+1
|
|
C
|
|
C check F against FMAX
|
|
C
|
|
WEIGHT = F/XSECT(2,MSPR,INDENE)
|
|
C WEIGHT = F/XSECT(2,MSPR)
|
|
IF ( WEIGHT.LT.RNDM(AI) ) GOTO 10
|
|
C-------------------------------------------------------------------
|
|
C IF(WEIGHT.GT.1.D0) WRITE(6,1234)F,XSECT(2,MSPR,INDENE),WEIGHT
|
|
C1234 FORMAT(' HARSCA: MONTE-CARLO WEIGHT FUNCTION H/HMAX GT 1 !',/
|
|
C * ' H = SUM OVER A,B FOR PROCESS M OF:',/
|
|
C * ' E(M)*ALPHAS**2*XA*FA(XA,Q**2)*XB*FB(XB,Q**2)',/
|
|
C * ' F(=H),XSECT(2,MSPR,INDENE)(=HMAX), WEIGHT = H/HMAX',3E12.5)
|
|
C-------------------------------------------------------------------
|
|
C I
|
|
C end of iteration loop I
|
|
C -------------------------------------------I
|
|
C
|
|
C the event is accepted now
|
|
C
|
|
C actualize counter for accepted events
|
|
MXSECT(2,MSPR,INDENE) = MXSECT(2,MSPR,INDENE)+1
|
|
C MXSECT(2,MSPR) = MXSECT(2,MSPR)+1
|
|
IF ( MSPR.EQ.-1 ) MSPR = 3
|
|
C find initial partons
|
|
SUM = 0.0
|
|
SCHECK = RNDM(AI)*PDS
|
|
IF ( MSPR.EQ.1 .OR. MSPR.EQ.4 ) THEN
|
|
IA = 0
|
|
IB = 0
|
|
ELSEIF ( MSPR.EQ.2 .OR. MSPR.EQ.5 .OR. MSPR.EQ.6 ) THEN
|
|
DO 610 IA=-NF,NF
|
|
IF ( IA.EQ.0 ) GOTO 610
|
|
SUM = SUM+PDA(IA)*PDB(-IA)
|
|
IF ( SUM.GE.SCHECK ) GOTO 620
|
|
610 CONTINUE
|
|
620 IB =-IA
|
|
ELSEIF ( MSPR.EQ.3 ) THEN
|
|
IB = 0
|
|
DO 630 IA=-NF,NF
|
|
IF ( IA.EQ.0 ) GOTO 630
|
|
SUM = SUM+PDA(0)*PDB(IA)
|
|
IF ( SUM.GE.SCHECK ) GOTO 640
|
|
SUM = SUM+PDA(IA)*PDB(0)
|
|
IF ( SUM.GE.SCHECK ) GOTO 650
|
|
630 CONTINUE
|
|
640 IB = IA
|
|
IA = 0
|
|
650 CONTINUE
|
|
ELSEIF ( MSPR.EQ.7 ) THEN
|
|
DO 660 IA=-NF,NF
|
|
IF ( IA.EQ.0 ) GOTO 660
|
|
SUM = SUM+PDA(IA)*PDB(IA)
|
|
IF ( SUM.GE.SCHECK ) GOTO 670
|
|
660 CONTINUE
|
|
670 IB = IA
|
|
ELSEIF ( MSPR.EQ.8 ) THEN
|
|
DO 690 IA=-NF,NF
|
|
IF ( IA.EQ.0 ) GOTO 690
|
|
DO 680 IB=-NF,NF
|
|
IF ( ABS(IB).EQ.ABS(IA) .OR. IB.EQ.0 ) GOTO 680
|
|
SUM = SUM+PDA(IA)*PDB(IB)
|
|
IF ( SUM.GE.SCHECK ) GOTO 700
|
|
680 CONTINUE
|
|
690 CONTINUE
|
|
700 CONTINUE
|
|
ENDIF
|
|
C find final partons
|
|
IC = IA
|
|
ID = IB
|
|
IF ( MSPR.EQ.2 ) THEN
|
|
IC = 0
|
|
ID = 0
|
|
ELSEIF ( MSPR.EQ.4 ) THEN
|
|
IC = INT(FLOAT(NF+NF)*RNDM(AI))+1
|
|
IF ( IC.GT.NF ) IC = NF-IC
|
|
ID =-IC
|
|
ELSEIF ( MSPR.EQ.6 ) THEN
|
|
IC = INT(FLOAT(NF+NF-2)*RNDM(AI))+1
|
|
IF ( IC.GT.NF-1 ) IC = NF-1-IC
|
|
IF ( ABS(IC).EQ.ABS(IA) ) IC = SIGN(NF,IC)
|
|
ID =-IC
|
|
ENDIF
|
|
C
|
|
30 A1 = RNDM(AI)
|
|
A2 = RNDM(AI)
|
|
IF ( ((A1*A1)+(A2*A2)).GT.1.0D0 ) GOTO 30
|
|
COSPHI = ((A1*A1)-(A2*A2))/((A1*A1)+(A2*A2))
|
|
SINPHI = SIGN(((A1*A2)+(A1*A2))/((A1*A1)+(A2*A2)),RNDM(AI)-0.5)
|
|
C
|
|
IF ( RNDM(AI)*PDA(IA).GT.PDA(-IA) ) IA = SIGN(ABS(IA)+10,IA)
|
|
IF ( RNDM(AJ)*PDB(IB).GT.PDB(-IB) ) IB = SIGN(ABS(IB)+10,IB)
|
|
C fill event record
|
|
LINE = LINE+1
|
|
PREC(1,LINE) = 0.0
|
|
PREC(2,LINE) = 0.0
|
|
PREC(3,LINE) = 0.5*ECM*X1
|
|
PREC(0,LINE) = PREC(3,LINE)
|
|
LREC1(LINE) = IA+50+100*MSPR
|
|
LREC2(LINE) = 01000
|
|
LINE = LINE+1
|
|
PREC(1,LINE) = 0.0
|
|
PREC(2,LINE) = 0.0
|
|
PREC(3,LINE) =-0.5*ECM*X2
|
|
PREC(0,LINE) =-PREC(3,LINE)
|
|
LREC1(LINE) = IB+50
|
|
LREC2(LINE) = 01000
|
|
LINE = LINE+1
|
|
PREC(1,LINE) = PT*COSPHI
|
|
PREC(2,LINE) = PT*SINPHI
|
|
PREC(3,LINE) =-0.5*ECM*(U*X1-V*X2)
|
|
PREC(0,LINE) =-0.5*ECM*(U*X1+V*X2)
|
|
LREC1(LINE) = IC+50
|
|
LREC2(LINE) = 11000
|
|
LINE = LINE+1
|
|
PREC(1,LINE) =-PT*COSPHI
|
|
PREC(2,LINE) =-PT*SINPHI
|
|
PREC(3,LINE) =-0.5*ECM*(V*X1-U*X2)
|
|
PREC(0,LINE) =-0.5*ECM*(V*X1+U*X2)
|
|
LREC1(LINE) = ID+50
|
|
LREC2(LINE) = 11000
|
|
RETURN
|
|
END
|
|
C_______________________________________________________________________
|
|
SUBROUTINE HAOUTP
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HAEVNT/ PT1,PT2,NHARD,NTRY,IHARD,ITRY,IREJEV
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
|
|
C output of data for hard scattering
|
|
IF ( NOUTL.GE.4 ) THEN
|
|
WRITE(6,1010) NHARD,IHARD,IREJEV
|
|
1010 FORMAT(' ===HARD EVENT=== NHARD,NTRUE,REJECTIONS ',3I5,/
|
|
&' IA IB IC ID XA XB PT YC YD',
|
|
&' PHI')
|
|
DO 10 N=1,LSCAHD
|
|
PHI = ATAN2(PREC(1,4*N-1),PREC(2,4*N-1))
|
|
WRITE(6,1020) NINHD(N,1),NINHD(N,2),NOUTHD(N,1),NOUTHD(N,2),
|
|
& XHD(N,1),XHD(N,2),PTHD(N),ETAHD(N,1),ETAHD(N,2),PHI
|
|
1020 FORMAT(1X,4I3,2F11.7,4F9.3)
|
|
10 CONTINUE
|
|
ENDIF
|
|
IF ( NOUTL.GE.6 ) THEN
|
|
C output of eventrecord
|
|
WRITE(6,1030)
|
|
1030 FORMAT(' EVENTRECORD')
|
|
DO 20 L=1,LINE
|
|
WRITE(6,1040) LREC1(L),LREC2(L),(PREC(I,L),I=0,3)
|
|
20 CONTINUE
|
|
1040 FORMAT(2I12,4(1PE12.4))
|
|
WRITE(6,1050)
|
|
1050 FORMAT(/)
|
|
ENDIF
|
|
RETURN
|
|
END
|
|
C_____________________________________________________________________
|
|
C
|
|
C original title: JTPADI.FOR
|
|
C_______________________________________________________________________
|
|
*
|
|
* ********************************************************************
|
|
SUBROUTINE JTPDIS(X,QQ,IHATYP,MSPR,PD)
|
|
*
|
|
* Parton distributios
|
|
* NPD=ISTRUF (elsewhere)
|
|
*
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
DIMENSION PD(-6:6)
|
|
DATA ISET / 0 /
|
|
DO 10 I=-6,6
|
|
10 PD(I) = 0.0
|
|
C SET MAXFL - THE MAX. NUMBER OF FLAVORS TO CALCULATE
|
|
MAXFL = NF
|
|
IF ( MSPR.EQ.1 .OR. MSPR.EQ.4 ) MAXFL = 0
|
|
C------------------------------------------------------
|
|
C CALL ROUTINES CALCULATING THE DISTRIBUTIONS
|
|
C EHLQ 1/2, MRS 1/2/3, GRV, HMRS 1/2, KMRS 1/2/3/4,
|
|
C WHERE HMRS 1/2, KMRS 1/2/3/4 CORRESP. TO HKMRS 1-6
|
|
C------------------------------------------------------
|
|
IF ( NPD.EQ.1 .OR. NPD.EQ.2 ) THEN
|
|
C CALL PDEHLQ(X,QQ,MAXFL,PD)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF ( NPD.GE.3 .AND. NPD.LE.5 ) THEN
|
|
C CALL PDMRS(X,QQ,MAXFL,PD)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.6)THEN
|
|
C CALL PDGRV(X,QQ,PD)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.7)THEN
|
|
C CALL PHKMRS(X,QQ,PD,1)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.8)THEN
|
|
C CALL PHKMRS(X,QQ,PD,2)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.9)THEN
|
|
C CALL PHKMRS(X,QQ,PD,3)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.10)THEN
|
|
C CALL PHKMRS(X,QQ,PD,4)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.11)THEN
|
|
C CALL PHKMRS(X,QQ,PD,5)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF(NPD.EQ.12)THEN
|
|
C CALL PHKMRS(X,QQ,PD,6)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
* updates of April 92, April 93
|
|
ELSEIF((NPD.GE.13).AND.(NPD.LE.20)) THEN
|
|
C CALL PHKMRS(X,QQ,PD,NPD-6)
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
ELSEIF((NPD.GE.21).AND.(NPD.LE.23)) THEN
|
|
CALL PHKMRS(X,QQ,PD,NPD-6)
|
|
ELSE
|
|
WRITE(6,*) ' unsupported PDF number: ',NPD
|
|
STOP
|
|
ENDIF
|
|
DO 20 I=-MAXFL,MAXFL
|
|
IF ( PD(I).LT.1.D-15 ) PD(I) = 0.0
|
|
20 CONTINUE
|
|
C IF ANTIPROTON CHANGE QUARK <---> ANTIQUARK
|
|
IF ( IHATYP.EQ.-1 ) THEN
|
|
DO 50 I=1,6
|
|
TTTT = PD(-I)
|
|
PD(-I) = PD(I)
|
|
50 PD( I) = TTTT
|
|
ENDIF
|
|
RETURN
|
|
END
|
|
|
|
C_______________________________________________________________________
|
|
SUBROUTINE PHKMRS(XQ,QQ,PD,MODE)
|
|
C***************************************************************C
|
|
C C
|
|
C ORIGINAL NAME: MRSEB( ... ) C
|
|
C C
|
|
C ----- VARIABLE QUARKS AND GLUONS AT SMALL X ---- C
|
|
C C
|
|
C NEW VERSIONS !!!! JANUARY 1990 (AS DESCRIBED IN C
|
|
C "PARTON DISTRIBUTIONS ... " P.N. HARRIMAN, A.D. MARTIN, C
|
|
C R.G. ROBERTS AND W.J. STIRLING PREPRINT DTP-90-04 ) C
|
|
C C
|
|
C NEW VERSIONS !!!! JULY 1990 C
|
|
C "........................ " J. KWIECINSKI, A.D. MARTIN, C
|
|
C R.G. ROBERTS AND W.J. STIRLING PREPRINT DTP-90-46 ) C
|
|
C
|
|
C****************************************************************
|
|
C All modes 1-14 dropped in dpmjet-II.4.2
|
|
C***************************************************************
|
|
C MODE 1 CORRESPONDS TO HARRIMAN, C
|
|
C MARTIN, ROBERTS, STIRLING (EMC FIT) WITH LAMBDA= 100 MEV C
|
|
C ORIGINAL: STRC27 NOW: PHMRS1 C
|
|
C C
|
|
C MODE 2 CORRESPONDS TO HARRIMAN, C
|
|
C MARTIN, ROBERTS, STIRLING (BCDMS FIT) WITH LAMBDA= 190 MEV C
|
|
C WITH SMALL X BEHAVIOUR DETERMINED FROM FIT "HB FIT" C
|
|
C ORIGINAL: STRC28 NOW: PHMRS2 C
|
|
C C
|
|
C MODE 3 CORRESPONDS TO KWIECINSKI, C
|
|
C MARTIN, ROBERTS, STIRLING (BCDMS FIT) WITH LAMBDA= 190 MEV C
|
|
C AND XG,XQ --> CONSTANT AS X--> 0 AT Q0**2 "B0 FIT" C
|
|
C ORIGINAL: STRC38 NOW: PKMRS1 C
|
|
C C
|
|
C MODE 4 CORRESPONDS TO KWIECINSKI, C
|
|
C MARTIN, ROBERTS, STIRLING (BCDMS FIT) WITH LAMBDA= 190 MEV C
|
|
C AND XG,XQ --> X**-1/2 AS X--> 0 AT Q0**2 "B- FIT" C
|
|
C ORIGINAL: STRC48 NOW: PKMRS2 C
|
|
C C
|
|
C MODE 5 CORRESPONDS TO KWIECINSKI, C
|
|
C MARTIN, ROBERTS, STIRLING (BCDMS FIT) WITH LAMBDA= 190 MEV C
|
|
C AND XG,XQ --> X**-1/2 AS X--> 0 AT Q0**2 "B-(5) FIT" C
|
|
C I.E. WITH WEAK (R=5 GEV-1) SHADOWING INCLUDED C
|
|
C ORIGINAL: STRC58 NOW: PKMRS3 C
|
|
C C
|
|
C MODE 6 CORRESPONDS TO KWIECINSKI, C
|
|
C MARTIN, ROBERTS, STIRLING (BCDMS FIT) WITH LAMBDA= 190 MEV C
|
|
C AND XG,XQ --> X**-1/2 AS X--> 0 AT Q0**2 "B-(2) FIT" C
|
|
C I.E. WITH STRONG (R=2 GEV-1) SHADOWING INCLUDED C
|
|
C ORIGINAL: STRC68 NOW: PKMRS4 C
|
|
C C
|
|
C****************************************************************
|
|
C All modes 1-14 dropped in dpmjet-II.4.2
|
|
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**2 IN GEV**2) C
|
|
C C
|
|
C -*- C
|
|
C C
|
|
C***************************************************************C
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
C REAL XQ,QQ,PD
|
|
C to get the same as outside
|
|
C in the D IMPLICIT DOUBLE PRECISION(A-H,O-Z) world
|
|
REAL
|
|
& *8
|
|
& XQ,QQ,PD
|
|
DIMENSION PD(-6:6)
|
|
DIMENSION PDFF(-6:2)
|
|
X=DBLE( XQ )
|
|
SCALE=DBLE( QQ )
|
|
C-------------------------------------------------------------------
|
|
C****************************************************************
|
|
C All modes 1-14 dropped in dpmjet-II.4.2
|
|
C***************************************************************
|
|
C****************************************************************
|
|
C All modes 1-14 dropped in dpmjet-II.4.2
|
|
C***************************************************************
|
|
C--------------------------------------------------------------------
|
|
C updates Oct 98 replace DOR94LO by PO_GRV98LO (R.Engel)
|
|
IF((MODE.EQ.15)) THEN
|
|
SCALE2=SCALE
|
|
C CALL DOR94LO(X,SCALE2,UV, DV, DEL, UDB, SB, GL)
|
|
CALL PO_GRV98LO(ISET,X,SCALE2,UV,DV,US,DS,SS,GL)
|
|
CB = 0.D0
|
|
BB = 0.D0
|
|
PD(-5) = BB
|
|
PD(-4) = CB
|
|
PD(-3) = SS
|
|
PD(-2) = US
|
|
PD(-1) = DS
|
|
PD(0) = GL
|
|
PD(1) = DV+DS
|
|
PD(2) = UV+US
|
|
PD(3) = SS
|
|
PD(4) = PD(-4)
|
|
PD(5) = PD(-5)
|
|
XQ= X
|
|
QQ= SCALE
|
|
C WRITE(6,*)' PD ',PD
|
|
RETURN
|
|
ENDIF
|
|
C updates Oct 98 replace DOR94LO by PO_GRV98LO (R.Engel)
|
|
IF((MODE.EQ.16)) THEN
|
|
SCALE2=SCALE
|
|
C CALL DOR94LO(X,SCALE2,UV, DV, DEL, UDB, SB, GL)
|
|
CALL PO_GRV98LO(ISET,X,SCALE2,UV,DV,US,DS,SS,GL)
|
|
CB = 0.D0
|
|
BB = 0.D0
|
|
PD(-5) = BB
|
|
PD(-4) = CB
|
|
PD(-3) = SS
|
|
PD(-2) = US
|
|
PD(-1) = DS
|
|
PD(0) = GL
|
|
PD(1) = DV+DS
|
|
PD(2) = UV+US
|
|
PD(3) = SS
|
|
PD(4) = PD(-4)
|
|
PD(5) = PD(-5)
|
|
XQ= X
|
|
QQ= SCALE
|
|
C WRITE(6,*)' PD ',PD
|
|
RETURN
|
|
ENDIF
|
|
C--------------------------------------------------------------------
|
|
C updates Feb. 97
|
|
IF((MODE.EQ.17)) THEN
|
|
CALL structm(x,SCALE,Upv,Dnv,Usea,Dsea,Str,Chm,Bot,Top,Glu)
|
|
PD(0)= GLU
|
|
PD(1)= USEA+UPV
|
|
PD(2)= DSEA+DNV
|
|
PD(3)= STR
|
|
PD(4)= CHM
|
|
PD(5)= BOT
|
|
PD(-5)= BOT
|
|
PD(-4)= CHM
|
|
PD(-3)= STR
|
|
PD(-2)= DSEA
|
|
PD(-1)= USEA
|
|
XQ= X
|
|
QQ= SCALE
|
|
RETURN
|
|
ENDIF
|
|
C--------------------------------------------------------------------
|
|
C--------------------------------------------------------------------
|
|
PD(0)= GLU
|
|
PD(1)= SEA+UPV
|
|
PD(2)= SEA+DNV
|
|
PD(3)= STR
|
|
PD(4)= CHM
|
|
PD(5)= BOT
|
|
PD(-5)= BOT
|
|
PD(-4)= CHM
|
|
PD(-3)= STR
|
|
PD(-2)= SEA
|
|
PD(-1)= SEA
|
|
XQ= X
|
|
QQ= SCALE
|
|
C--------------------------------------------------------------------
|
|
RETURN
|
|
END
|
|
C
|
|
C*********************************************************************
|
|
C-----original seperate file with the name------------------------------------------------------------------
|
|
C DTULPTPE.FOR
|
|
C
|
|
C------------------------------------------------------------------------
|
|
C_______________________________________________________________________
|
|
C
|
|
C PROGRAM FOR SIMULATION OF HARD SCATTERING OF HADRONIC PARTICLES
|
|
C
|
|
C AUTHOR K.HAHN LEIPZIG GDR
|
|
C_______________________________________________________________________
|
|
SUBROUTINE LAPTAB
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HACONS/ PI,PI2,PI4,GEVTMB
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAPADI/ NPDM
|
|
COMMON /HAPDCO/ NPDCOR
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
COMMON /HAENVI/ NINDEP
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HACUTS/ PTL,PTU,ETACL,ETACU,ETADL,ETADU
|
|
COMMON /HAGAUP/ NGAUP1,NGAUP2,NGAUET,NGAUIN
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
C & MXSECT(0:2,-1:MAXPRO,28)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
CHARACTER*8 CW
|
|
CHARACTER*79 COMMNT
|
|
CHARACTER*70 INP
|
|
DIMENSION WHAT(6)
|
|
C======================================================================
|
|
C THE AVAILABLE CODE WORDS ARE
|
|
C
|
|
C END , COMMENT , ENERGYPT, PARDISTR, CUTS
|
|
C INTPOINT, FLAVOR , PARTICLE, OUTPUT , INIT ,
|
|
C TESTINCL, TESTMC , SUBPRON , SUBPROFF, HISOUT ,
|
|
C HISINI , HARDSCAL, USER , PARDISCO
|
|
C_______________________________________________________________________
|
|
WRITE(6,2000)
|
|
2000 FORMAT('1***************************************************'
|
|
& ,/, ' MONTE-CARLO GENERATION OF HARD HADRONIC SCATTERINGS'
|
|
& ,/, ' ***************************************************',/)
|
|
CALL JTDTU(1)
|
|
C read a control card
|
|
10 CONTINUE
|
|
READ (5,1010) INP
|
|
IF ( INP(1:1).EQ.'-' ) GOTO 10
|
|
WRITE(6,1011) INP
|
|
READ(INP,1012,ERR=99) CW,WHAT
|
|
GOTO 15
|
|
99 WRITE(6,1013)
|
|
GOTO 10
|
|
1010 FORMAT(A70)
|
|
1011 FORMAT(' *********.* CONTROL.CARD*****.',4(9X,'.'),/,1X,A70,/)
|
|
1012 FORMAT(A8,2X,6E10.0)
|
|
1013 FORMAT(' CARD IS INCORRECT, IGNORE AND TRY NEXT CARD',/)
|
|
15 CONTINUE
|
|
C======================================================================
|
|
C======================================================================
|
|
IF ( CW.EQ.'END ' ) THEN
|
|
C
|
|
C STOPS THE PROGRAM
|
|
C_______________________________________________________________________
|
|
WRITE(6,1030)
|
|
1030 FORMAT(' ******** END OF PROGRAM EXECUTION ********')
|
|
RETURN
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'COMMENT ' ) THEN
|
|
C
|
|
C TO INCLUDE COMMENTS IN PROGRAM OUTPUT
|
|
C WHAT(1) - # OF CARDS FOLLOWING THE CONTROLCARD AND
|
|
C CONTAINING THE COMMENT
|
|
C_______________________________________________________________________
|
|
N = MAX(1,INT(WHAT(1)))
|
|
DO 20 I=1,N
|
|
READ(5,1040) COMMNT
|
|
20 WRITE(6,1050) COMMNT
|
|
1040 FORMAT(A79)
|
|
1050 FORMAT(1X,A79)
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'ENERGYPT' ) THEN
|
|
C
|
|
C READ CMS-ENERGY AND MIN. TRANSVERSE MOMENTUM FOR JETS
|
|
C WHAT(1) - CMS-ENERGY ( IN GEV ) DEFAULT 540.
|
|
C WHAT(2) - MIN. PT ( IN GEV ) DEFAULT 2.
|
|
C WHAT(3) - MIN. PT ( IN GEV ) DEFAULT 2.
|
|
C WHAT(4) - MIN. PT ( IN GEV ) DEFAULT 2.
|
|
C WHAT(5) - MIN. PT ( IN GEV ) DEFAULT 2.
|
|
C
|
|
C_______________________________________________________________________
|
|
IF ( WHAT(1).GT.0.0D0 ) ECM = WHAT(1)
|
|
DO 22 I=1,4
|
|
PTINI(I) = WHAT(I+1)
|
|
22 CONTINUE
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'PARDISTR' ) THEN
|
|
C
|
|
C DEFINE THE PARTON DISTRIBUTION SET
|
|
C WHAT(1) - NPD DEFAULT 3.
|
|
C NPD = 1,2 : EICHTEN,HINCHLIFFE,LANE,QUIGG
|
|
C = 3,4,5 : MARTIN,ROBERTS,STIRLING
|
|
C = 6 : GLUECK,REYA,VOGT
|
|
C = 7,8 : HARRIMAN,MARTIN,ROBERTS,STIRLING
|
|
C = 9 - 12 : KWIECINSKI,MARTIN,ROBERTS,STIRLING
|
|
C
|
|
C WHAT(2) - NPDM DEFAULT 0.
|
|
C NPDM = 0,1 : CORRECTS THE PARTON DISTRIBUTION IN CASE
|
|
C OF NPD = 10 TO THE 1/SQRT(X) BEHAVIOUR
|
|
C FOR X < XMIN=1.E-05 IF NPDM = 1 AND NOT
|
|
C IF NPDM = 0 ( M STANDS FOR MODIFICATION )
|
|
C_______________________________________________________________________
|
|
IPD = INT(WHAT(1))
|
|
IPDM = INT(WHAT(2))
|
|
NPD = 3
|
|
NPDM = 0
|
|
* IF ( IPD.GE.1 .AND. IPD.LE.12 ) NPD = IPD
|
|
IF ( IPD.GE.1 .AND. IPD.LE.15 ) NPD = IPD
|
|
IF ( IPDM.EQ.1 ) NPDM = IPDM
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'CUTS ' ) THEN
|
|
C
|
|
C set kinematic cuts on partonlevel
|
|
C WHAT(1) - PTL min. pt for parton DEFAULT 0.0
|
|
C WHAT(2) - PTU max. pt for parton DEFAULT 1.E+30
|
|
C WHAT(3) - ETACL min. rapidity for parton c DEFAULT -1.E+30
|
|
C WHAT(4) - ETACU max. rapidity for parton c DEFAULT 1.E+30
|
|
C WHAT(5) - ETADL min. rapidity for parton d DEFAULT -1.E+30
|
|
C WHAT(6) - ETADU max. rapidity for parton d DEFAULT 1.E+30
|
|
C
|
|
C this cuts are additional cuts which not affect the pt-cut given
|
|
C in the ENERGYPT card;
|
|
C this cuts are checked during event generation and events violating
|
|
C the cuts are rejected;
|
|
C the defaults are such that there is really no cutting;
|
|
C_______________________________________________________________________
|
|
PTL = WHAT(1)
|
|
PTU = WHAT(2)
|
|
ETACL = WHAT(3)
|
|
ETACU = WHAT(4)
|
|
ETADL = WHAT(5)
|
|
ETADU = WHAT(6)
|
|
IF ( PTU .LE.PTL ) PTU = PTL +1.0
|
|
IF ( ETACU.LE.ETACL ) ETACU = ETACL+1.0
|
|
IF ( ETADU.LE.ETADL ) ETADU = ETADL+1.0
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'INTPOINT' ) THEN
|
|
C
|
|
C define number of integration points
|
|
C WHAT(1) - NGAUP1 DEFAULT 8.
|
|
C WHAT(2) - NGAUP2 DEFAULT 8.
|
|
C WHAT(3) - NGAUET DEFAULT 8.
|
|
C WHAT(4) - NGAUIN DEFAULT 8.
|
|
C
|
|
C NGAUP1,NGAUP2,NGAUET : used in inclusive x-section calculation;
|
|
C first, second pt-integration and
|
|
C eta-integration respectivly
|
|
C NGAUIN : used in initialization ( SUBROUTINE HABINT )
|
|
C
|
|
C max. value allowed for integration is 32 ! - For NGAUP1,P2,ET
|
|
C max. value allowed for integration is 1000 ! - For NGAUIN.
|
|
C (4.6.91)
|
|
C_______________________________________________________________________
|
|
IF ( WHAT(1).GE.1.D0.AND.WHAT(1).LE.32.D0) NGAUP1 = INT(WHAT(1))
|
|
IF ( WHAT(2).GE.1.D0.AND. WHAT(2).LE.32.D0) NGAUP2 = INT(WHAT(2))
|
|
IF ( WHAT(3).GE.1.D0.AND. WHAT(3).LE.32.D0) NGAUET = INT(WHAT(3))
|
|
IF(WHAT(4).GE.1.D0.AND. WHAT(3).LE.1000.D0) NGAUIN = INT(WHAT(4))
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'FLAVOR ' ) THEN
|
|
C DEFINES ACTIVE FLAVORS
|
|
C WHAT(1) - # OF FLAVORS DEFAULT 4
|
|
C_______________________________________________________________________
|
|
NFF = INT(WHAT(1))
|
|
IF ( NFF.GE.0 .AND. NFF .LE.6 ) NF = NFF
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'PARTICLE' ) THEN
|
|
C
|
|
C TARGET AND BEAM PARTICLES
|
|
C WHAT(1) - BEAM ( POSITIVE Z-DIRECTION ) DEFAULT 1
|
|
C WHAT(2) - TARGET DEFAULT 1
|
|
C 1 : PROTON
|
|
C -1 : ANTIPROTON
|
|
C_______________________________________________________________________
|
|
IHA = INT(WHAT(1))
|
|
IF ( ABS(IHA).EQ.1 ) NHA = IHA
|
|
IHB = INT(WHAT(2))
|
|
IF ( ABS(IHB).EQ.1 ) NHB = IHB
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'OUTPUT ' ) THEN
|
|
C
|
|
C set output level
|
|
C WHAT(1) - NOUTL output level 0.... DEFAULT 1.
|
|
C WHAT(2) - NOUTER error messages ( 0 - no ; 1 - yes ) DEFAULT 1.
|
|
C_______________________________________________________________________
|
|
IF ( WHAT(1).GE.0.D0 ) NOUTL = INT(WHAT(1))
|
|
IF ( WHAT(2).EQ.0.D0.OR.WHAT(2).EQ.1.D0)NOUTER = INT(WHAT(2))
|
|
IF ( WHAT(3).GE.0.D0 ) NOUTCO = INT(WHAT(3))
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'INIT ' ) THEN
|
|
C
|
|
C DEMANDS A NEW INITIALIZATION
|
|
C_______________________________________________________________________
|
|
CALL HARINI
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'TESTINCL' ) THEN
|
|
C
|
|
C TEST OF INCLUSIVE JET PRODUCTION
|
|
C PLOT OF PARTONDISTRIBUTIONS USED ( GLUONS )
|
|
C PLOT OF DIFFERENTIAL JET CROSS SECTIONS
|
|
C
|
|
C_______________________________________________________________________
|
|
DO 35 I=1,6
|
|
J = INT(WHAT(I))
|
|
IF ( J.GE.1 .AND. J.LE.4 ) CALL HATEST(J)
|
|
35 CONTINUE
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'TESTMC ' ) THEN
|
|
C
|
|
C TEST OF MONTE-CARLO JET PRODUCTION
|
|
C PLOT OF DIFFERENTIAL JET CROSS SECTIONS
|
|
C WHAT(1) - # OF EVENTS TO PRODUCE IN TEST DEFAULT 100
|
|
C WHAT(2) - # OF HARD SCATTERINGS AT HARD EVENT
|
|
C WHAT(3) - MIN. PT FOR FIRST HARD SCATTERING
|
|
C
|
|
C_______________________________________________________________________
|
|
NEVT = INT(WHAT(1))
|
|
IF ( NEVT.LE.0 ) NEVT = 100
|
|
NHARD = MAX(1,INT(WHAT(2)))
|
|
PT1 = WHAT(3)
|
|
CALL TIMDAT
|
|
DO 36 I=1,NEVT
|
|
MHARD = NHARD
|
|
CALL HAREVT(MHARD,PT1)
|
|
36 CONTINUE
|
|
CALL TIMDAT
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'SUBPRON ' ) THEN
|
|
C
|
|
C SWITCH SUBPROCESSES ON
|
|
C
|
|
C______________________________________________________________________
|
|
DO 40 I=1,6
|
|
M = INT(WHAT(I))
|
|
IF ( M.GE.1 .AND. M.LE.MAXPRO ) MXSECT(0,M,INDENE) = 1
|
|
C IF ( M.GE.1 .AND. M.LE.MAXPRO ) MXSECT(0,M) = 1
|
|
40 CONTINUE
|
|
MXSECT(0,-1,INDENE) = MXSECT(0,3,INDENE)
|
|
C MXSECT(0,-1) = MXSECT(0,3)
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'SUBPROFF' ) THEN
|
|
C
|
|
C SWITCH SUBPROCESSES OFF
|
|
C
|
|
C_______________________________________________________________________
|
|
DO 50 I=1,6
|
|
M = INT(WHAT(I))
|
|
IF ( M.GE.1 .AND. M.LE.MAXPRO ) MXSECT(0,M,INDENE) = 0
|
|
C IF ( M.GE.1 .AND. M.LE.MAXPRO ) MXSECT(0,M) = 0
|
|
50 CONTINUE
|
|
MXSECT(0,-1,INDENE) = MXSECT(0,3,INDENE)
|
|
C MXSECT(0,-1) = MXSECT(0,3)
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'HISOUT ' ) THEN
|
|
C
|
|
C OUTPUT OF MC RESULTS
|
|
C WHAT()- 1 : TOTAL CROSS SECTION
|
|
C WHAT()- 2 : PT-DISTR.
|
|
C WHAT()- 3 : PT-DISTR.
|
|
C WHAT()- 4 : PT-DISTR.
|
|
C WHAT()- 5 : RAPIDITY-DISTR.
|
|
C WHAT()- 6 : RAPIDITY-DISTR.
|
|
C
|
|
C_______________________________________________________________________
|
|
DO 60 I=1,6
|
|
J = INT(WHAT(I))
|
|
IF ( J.GE.1 .AND. J.LE.6 ) CALL HISOUT(J)
|
|
60 CONTINUE
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'HISINI ' ) THEN
|
|
C
|
|
C INITIALIZE THE HISTOGRAMS FOR MC TESTING
|
|
C_______________________________________________________________________
|
|
CALL HISINI
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'HARDSCAL' ) THEN
|
|
C
|
|
C define hard scale
|
|
C WHAT(1) - NQQAL : definition of hard scale in coupling constant
|
|
C WHAT(2) - AQQAL : factor multiplied to hard scale in coupling
|
|
C WHAT(3) - NQQPD : definition of hard scale in parton distr.
|
|
C WHAT(4) - AQQPD : factor multiplied to hard scale in parton distr.
|
|
C the possible NQQAL(PD) are
|
|
C 1 : QQ = AQQAL(PD) * PT**2
|
|
C 2 : QQ = AQQAL(PD) * SP
|
|
C 3 : QQ = AQQAL(PD) * (SP*TP*UP)**(1./3.)
|
|
C 4 : QQ = AQQAL(PD) * (SP*TP*UP)/(SP**2+TP**2+UP**2)
|
|
C
|
|
C DEFAULT is NQQAL = NQQPD = 1 and AQQAL = AQQPD = 1./4.
|
|
C_______________________________________________________________________
|
|
IF ( WHAT(1).GE.1.D0.AND.WHAT(1).LE.4.D0)NQQAL = INT(WHAT(1))
|
|
IF ( WHAT(2).GT.0.D0 ) AQQAL = WHAT(2)
|
|
IF ( WHAT(3).GE.1.D0.AND.WHAT(3).LE.4.D0)NQQPD = INT(WHAT(3))
|
|
IF ( WHAT(4).GT.0.D0 ) AQQPD = WHAT(4)
|
|
C C======================================================================
|
|
C ELSEIF ( CW.EQ.'USER ' ) THEN
|
|
C C
|
|
C C_______________________________________________________________________
|
|
C WRITE(6,9050)
|
|
C 9050 FORMAT(' -----> GIVE CONTROL TO USER ROUTINE')
|
|
C CALL HAUSER(WHAT)
|
|
C WRITE(6,9060)
|
|
C 9060 FORMAT(' -----> CONTROL COMES BACK FROM USER ROUTINE')
|
|
C======================================================================
|
|
ELSEIF ( CW.EQ.'PARDISCO' ) THEN
|
|
C
|
|
C define partoncorrelationfunction
|
|
C WHAT(1) - NPDCOR : =0 no correlations, =1 correlations
|
|
C
|
|
C DEFAULT is NPDCOR = 0
|
|
C_______________________________________________________________________
|
|
IF ( WHAT(1).EQ.0.D0.OR.WHAT(1).EQ.1.D0)NPDCOR = INT(WHAT(1))
|
|
C======================================================================
|
|
ELSE
|
|
WRITE(6,9999)
|
|
9999 FORMAT(' ##### UNKNOWN CODEWORD; CARD IS IGNORED ###',/)
|
|
ENDIF
|
|
GOTO 10
|
|
END
|
|
C
|
|
C-----originally seperate file with the name ---------------------------
|
|
C JTINCL.FOR
|
|
C
|
|
C______________________________________________________________________
|
|
C
|
|
C PROCEDURES FOR CALCULATION OF INCLUSIVE CROSS SECTIONS
|
|
C
|
|
C______________________________________________________________________
|
|
C______________________________________________________________________
|
|
SUBROUTINE CSJ2M(PT,ETAC,ETAD,DSIGMM)
|
|
C CALCULATION OF DIFFERENTIAL CROSS SECTION DSIG/(DETAC*DETAD*DPT)
|
|
C FOR DIFFERENT SUBPROCESSES
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( TINY= 1.D-30, ONEP1=1.1D0 ,TINY6=1.D-06)
|
|
COMMON /HACONS/ PI,PI2,PI4,GEVTMB
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
DOUBLE PRECISION EC,ED,XA,XB,SP,TP,UP,TT,UU,
|
|
* FACTOR,DSIGM(0:MAXPRO)
|
|
DIMENSION DSIGMM(0:MAXPRO),PDA(-6:6),PDB(-6:6)
|
|
|
|
DO 10 I=0,MAXPRO
|
|
DSIGM(I) = 0.0
|
|
10 CONTINUE
|
|
EC = EXP(ETAC)
|
|
ED = EXP(ETAD)
|
|
C KINETICS
|
|
XA = PT*(EC+ED)/ECM
|
|
XB = XA/(EC*ED)
|
|
IF ( XA.GE.1.D0 .OR. XB.GE.1.D0 ) RETURN
|
|
SP = XA*XB*ECM*ECM
|
|
UP =-ECM*PT*EC*XB
|
|
UP = UP/SP
|
|
TP =-(1.+UP)
|
|
UU = UP*UP
|
|
TT = TP*TP
|
|
C set hard scale QQ for alpha and partondistr.
|
|
IF ( NQQAL.EQ.1 ) THEN
|
|
QQAL = AQQAL*PT*PT
|
|
ELSEIF ( NQQAL.EQ.2 ) THEN
|
|
QQAL = AQQAL*SP
|
|
ELSEIF ( NQQAL.EQ.3 ) THEN
|
|
QQAL = AQQAL*SP*(UP*TP)**(1./3.)
|
|
ELSEIF ( NQQAL.EQ.4 ) THEN
|
|
QQAL = AQQAL*SP*UP*TP/(1.+TT+UU)
|
|
ENDIF
|
|
IF ( NQQPD.EQ.1 ) THEN
|
|
QQPD = AQQPD*PT*PT
|
|
ELSEIF ( NQQPD.EQ.2 ) THEN
|
|
QQPD = AQQPD*SP
|
|
ELSEIF ( NQQPD.EQ.3 ) THEN
|
|
QQPD = AQQPD*SP*(UP*TP)**(1./3.)
|
|
ELSEIF ( NQQPD.EQ.4 ) THEN
|
|
QQPD = AQQPD*SP*UP*TP/(1.+TT+UU)
|
|
ENDIF
|
|
C PARAMETER ( TINY= 1.D-30, ONEP1=1.1D0 ,TINY6=1.D-06)
|
|
ALPHA = BQCD/LOG(MAX(QQAL/ALASQR,ONEP1))
|
|
FACTOR = PI2*GEVTMB*PT*(ALPHA/SP)**2
|
|
C PARTONDISTRIBUTIONS ( MULTIPLIED BY X )
|
|
X1 = XA
|
|
X2 = XB
|
|
CALL JTPDIS(X1,QQPD,NHA,0,PDA)
|
|
CALL JTPDIS(X2,QQPD,NHB,0,PDB)
|
|
S1 = PDA(0)*PDB(0)
|
|
S2 = 0.0
|
|
S3 = 0.0
|
|
S4 = 0.0
|
|
S5 = 0.0
|
|
DO 20 I=1,NF
|
|
S2 = S2+PDA(I)*PDB(-I)+PDA(-I)*PDB( I)
|
|
S3 = S3+PDA(I)*PDB( I)+PDA(-I)*PDB(-I)
|
|
S4 = S4+PDA(I)+PDA(-I)
|
|
S5 = S5+PDB(I)+PDB(-I)
|
|
20 CONTINUE
|
|
C CROSS-SECTIONS ( INCLUDING MATRIX ELEMENTS, SYMMETRY-FACTORS AND
|
|
C FACTORS FOR FINALSTATE-SUMMATION )
|
|
DSIGM(1) = 2.25*(3.-((UP*TP)+UP/TT+TP/UU))
|
|
DSIGM(6) = (4./9.)*(UU+TT)
|
|
DSIGM(8) = (4./9.)*(1.+UU)/TT
|
|
DSIGM(2) = (16./27.)*(UU+TT)/(UP*TP)-3.*DSIGM(6)
|
|
DSIGM(3) = ((1.+UU)/TT)-(4./9.)*(1.+UU)/UP
|
|
DSIGM(4) = (9./32.)*DSIGM(2)
|
|
DSIGM(5) = DSIGM(6)+DSIGM(8)-(8./27.)*UU/TP
|
|
DSIGM(7) = 0.5*(DSIGM(8)+(4./9.)*(1.+TT)/UU-(8./27.)/(UP*TP))
|
|
|
|
DSIGM(1) = FACTOR*DSIGM(1)*S1
|
|
DSIGM(2) = FACTOR*DSIGM(2)*S2
|
|
DSIGM(3) = FACTOR*DSIGM(3)*(PDA(0)*S5+PDB(0)*S4)
|
|
DSIGM(4) = FACTOR*DSIGM(4)*S1*NF
|
|
DSIGM(5) = FACTOR*DSIGM(5)*S2
|
|
DSIGM(6) = FACTOR*DSIGM(6)*S2*MAX(0,(NF-1))
|
|
DSIGM(7) = FACTOR*DSIGM(7)*S3
|
|
DSIGM(8) = FACTOR*DSIGM(8)*(S4*S5-(S2+S3))
|
|
C sum over processes
|
|
DO 40 M=1,MAXPRO
|
|
DSIGM(0) = DSIGM(0)+DSIGM(M)
|
|
40 CONTINUE
|
|
DO 50 M=0,MAXPRO
|
|
DSIGMM(M) = DSIGM(M)
|
|
50 CONTINUE
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE CSJ1M(PT,ETAC,DSIGM)
|
|
C ONE JET CROSS SECTION
|
|
C ( CSJ2M INTEGRATED OVER ETAD )
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
C PARAMETER ( TINY= 1.D-30 )
|
|
C CHANGED 14.10.92 AFTER COMPARISON WITH THE ORIGINAL
|
|
C VERSION OF DTULAP FROM 1.D-30 BACK TO THE ORIGINAL 1.D-20
|
|
PARAMETER ( TINY= 1.D-20 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAGAUP/ NGAUP1,NGAUP2,NGAUET,NGAUIN
|
|
DIMENSION DSIGM(0:MAXPRO),DSIG1(0:MAXPRO)
|
|
DIMENSION ABSZ(32),WEIG(32)
|
|
|
|
DO 10 M=0,MAXPRO
|
|
DSIGM(M) = 0.0
|
|
10 CONTINUE
|
|
EC = EXP(ETAC)
|
|
ARG = ECM/PT
|
|
IF ( ARG.LE.EC .OR. ARG.LE.1./EC ) RETURN
|
|
EDU = LOG(ARG-EC)
|
|
EDL =-LOG(ARG-1./EC)
|
|
NPOINT = NGAUET
|
|
CALL GSET(EDL,EDU,NPOINT,ABSZ,WEIG)
|
|
DO 30 I=1,NPOINT
|
|
CALL CSJ2M(PT,ETAC,ABSZ(I),DSIG1)
|
|
DO 20 M=0,MAXPRO
|
|
C PCTRL= DSIG1(M)/1.E-20
|
|
PCTRL= DSIG1(M)/TINY
|
|
PCTRL= ABS( PCTRL )
|
|
IF( PCTRL.GE.1.D0 ) THEN
|
|
DSIGM(M) = DSIGM(M)+WEIG(I)*DSIG1(M)
|
|
ENDIF
|
|
20 CONTINUE
|
|
30 CONTINUE
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE CSJ1MI(PT,DSIGM)
|
|
C ONE JET CROSS SECTION
|
|
C ( CSJ2M INTEGRATED OVER ETAD AND ETAC )
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAGAUP/ NGAUP1,NGAUP2,NGAUET,NGAUIN
|
|
DIMENSION DSIGM(0:MAXPRO),DSIG1(0:MAXPRO)
|
|
DIMENSION ABSZ(32),WEIG(32)
|
|
|
|
DO 10 M=0,MAXPRO
|
|
DSIGM(M) = 0.0
|
|
10 CONTINUE
|
|
AMT = 2.*PT/ECM
|
|
IF ( AMT.GE.1.D0 ) RETURN
|
|
ECU = LOG((SQRT(1.-AMT*AMT)+1.)/AMT)
|
|
ECL =-ECU
|
|
NPOINT = NGAUET
|
|
CALL GSET(ECL,ECU,NPOINT,ABSZ,WEIG)
|
|
DO 30 I=1,NPOINT
|
|
CALL CSJ1M(PT,ABSZ(I),DSIG1)
|
|
DO 20 M=0,MAXPRO
|
|
DSIGM(M) = DSIGM(M)+WEIG(I)*DSIG1(M)
|
|
20 CONTINUE
|
|
30 CONTINUE
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE CSHARM(DSIGM)
|
|
C
|
|
C TOTAL HARD CROSS SECTION
|
|
C ( CSJ2M INTEGRATED OVER PT, ETAD AND ETAC )
|
|
C
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAGAUP/ NGAUP1,NGAUP2,NGAUET,NGAUIN
|
|
COMMON /XSECPT/ PTCUT,SIGS,DSIGH
|
|
DIMENSION DSIGM(0:MAXPRO),DSIG1(0:MAXPRO)
|
|
DIMENSION ABSZ(32),WEIG(32)
|
|
DATA FAC / 3.0 /
|
|
|
|
DO 10 M=0,MAXPRO
|
|
DSIGM(M) = 0.0
|
|
10 CONTINUE
|
|
IF ( PTINI(1).GE.ECM/2.D0 ) RETURN
|
|
PTMIN = PTINI(1)
|
|
PTCUT = PTMIN
|
|
PTMAX = MIN(FAC*PTMIN,ECM/2.D0)
|
|
NPOINT = NGAUP1
|
|
CALL CSJ1MI(PTMIN,DSIG1)
|
|
SIG1 = DSIG1(0)
|
|
C WRITE(6,1000) SIG1
|
|
1000 FORMAT(1X,' d sigma/ p_t d p_t ',E12.5)
|
|
DSIGH = SIG1
|
|
PTMXX = 0.95*PTMAX
|
|
CALL CSJ1MI(PTMXX,DSIG1)
|
|
EX = LOG(SIG1/(DSIG1(0)+1.D-30))/LOG(FAC)
|
|
EX1 = 1.0-EX
|
|
DO 50 K=1,2
|
|
IF ( PTMIN.GE.PTMAX ) GOTO 40
|
|
RL = PTMIN**EX1
|
|
RU = PTMAX**EX1
|
|
CALL GSET(RL,RU,NPOINT,ABSZ,WEIG)
|
|
DO 30 I=1,NPOINT
|
|
R = ABSZ(I)
|
|
PT = R**(1.0/EX1)
|
|
CALL CSJ1MI(PT,DSIG1)
|
|
F = WEIG(I)*PT/(R*EX1)
|
|
DO 20 M=0,MAXPRO
|
|
DSIGM(M) = DSIGM(M)+F*DSIG1(M)
|
|
20 CONTINUE
|
|
30 CONTINUE
|
|
40 PTMIN = PTMAX
|
|
PTMAX = ECM/2.0D0
|
|
NPOINT = NGAUP2
|
|
50 CONTINUE
|
|
RETURN
|
|
END
|
|
C-------originally seperate file ----------------------------------------
|
|
C JTHIST.FOR
|
|
C
|
|
C________________________________________________________________________
|
|
|
|
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
|
|
C
|
|
C PROCEDURES TO PRINT OUT HISTOGRAMS AND INCLUSICE TESTCALCULATIONS
|
|
C ( AND TO INITIALIZE AND FILL HISTOGRAMS ALSO )
|
|
C
|
|
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
|
|
C______________________________________________________________________
|
|
SUBROUTINE HISOUT(IOUT)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( TINY= 1.D-30, ONE=1.D0 ,TINY6=1.D-06,ZERO=0.D0)
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
CHARACTER*18 PROC
|
|
CHARACTER*11 PDSET,PARTIC
|
|
COMMON /PEPROC/ PROC(0:MAXPRO),PDSET(23),PARTIC(-1:1)
|
|
C LENGTH OF HISTO : 15000 REAL*4
|
|
COMMON /HISTO / PT10,DPT1,ETA10,DETA1,PT20,DPT2,ETA20,DETA2,
|
|
& X(50,-5:5),AB(50,-5:5),HPE(50,-5:5),HEP(50,5),
|
|
& HPM(50,8),HEM(50,8),HP(50),HE(50),
|
|
& SIG(MAXPRO),STDEV(MAXPRO),
|
|
& FILL(12176)
|
|
C
|
|
XSMIN =-6.
|
|
XSSTEP= 0.1
|
|
DO 5 J=-5,5
|
|
DO 5 I=1,50
|
|
5 X(I,J) =-100.
|
|
XSECT (2,0,INDENE) = XSECT (2,-1,INDENE)
|
|
MXSECT(1,0,INDENE) = MXSECT(1,-1,INDENE)
|
|
MXSECT(2,0,INDENE) = MXSECT(2,-1,INDENE)
|
|
C XSECT (2,0) = XSECT (2,-1)
|
|
C MXSECT(1,0) = MXSECT(1,-1)
|
|
C MXSECT(2,0) = MXSECT(2,-1)
|
|
DO 7 M=1,MAXPRO
|
|
MXSECT(1,0,INDENE) = MXSECT(1,0,INDENE)+MXSECT(1,M,INDENE)
|
|
MXSECT(2,0,INDENE) = MXSECT(2,0,INDENE)+MXSECT(2,M,INDENE)
|
|
7 XSECT (2,0,INDENE) = XSECT(2,0,INDENE)+XSECT(2,M,INDENE)
|
|
C MXSECT(1,0) = MXSECT(1,0)+MXSECT(1,M)
|
|
C MXSECT(2,0) = MXSECT(2,0)+MXSECT(2,M)
|
|
C7 XSECT (2,0) = XSECT(2,0)+XSECT(2,M)
|
|
WRITE(6,1010) IOUT
|
|
1010 FORMAT(1X,20('=='),' HISTO-OUTPUT ',I2,1X,10('=='),/)
|
|
IF ( IOUT.EQ.1 ) THEN
|
|
WRITE(6,1040)
|
|
1040 FORMAT(' PROCESS',15X,'EVENTS',22X,'HARD CROSS SECTION',/,
|
|
& 25X,'TOTAL ACCEPT.',10X,'MONTE-CARLO',11X,'INCLUSIVE')
|
|
SIGSUM = 0.0
|
|
STDEVS = 0.0
|
|
DO 20 M=1,MAXPRO
|
|
SIG(M) = 0.0
|
|
STDEV(M) = 0.0
|
|
IF ( MXSECT(1,M,INDENE).GT.0 ) THEN
|
|
SIG(M) = XSECT(3,M,INDENE)/MXSECT(1,M,INDENE)
|
|
STDEV(M) = SQRT(MAX(ZERO,XSECT(4,M,INDENE)-
|
|
* XSECT(3,M,INDENE)*SIG(M)))/MXSECT(1,M,INDENE)
|
|
C IF ( MXSECT(1,M).GT.0 ) THEN
|
|
C SIG(M) = XSECT(3,M)/MXSECT(1,M)
|
|
C STDEV(M) = SQRT(MAX(ZERO,XSECT(4,M)-XSECT(3,M)*SIG(M)))/
|
|
C & MXSECT(1,M)
|
|
ENDIF
|
|
IF ( M.EQ.3 .AND. MXSECT(1,-1,INDENE).GT.0 ) THEN
|
|
SIGG = XSECT(3,-1,INDENE)/MXSECT(1,-1,INDENE)
|
|
C IF ( M.EQ.3 .AND. MXSECT(1,-1).GT.0 ) THEN
|
|
C SIGG = XSECT(3,-1)/MXSECT(1,-1)
|
|
SIG(3) = SIG(3)+SIGG
|
|
STDEV(3) = STDEV(3)
|
|
* +SQRT(MAX(ZERO,XSECT(4,-1,INDENE)-
|
|
* XSECT(3,-1,INDENE)*SIGG))/MXSECT(1,-1,INDENE)
|
|
C & +SQRT(MAX(ZERO,XSECT(4,-1)-XSECT(3,-1)*SIGG))/MXSECT(1,-1)
|
|
ENDIF
|
|
SIGSUM = SIGSUM+SIG(M)
|
|
STDEVS = STDEVS+STDEV(M)
|
|
20 CONTINUE
|
|
MXSECT(1,3,INDENE) = MXSECT(1,3,INDENE)+MXSECT(1,-1,INDENE)
|
|
MXSECT(2,3,INDENE) = MXSECT(2,3,INDENE)+MXSECT(2,-1,INDENE)
|
|
WRITE(6,1050) PROC(0),(MXSECT(L,0,INDENE),L=0,2),
|
|
& SIGSUM,STDEVS,XSECT(5,0,INDENE)
|
|
C MXSECT(1,3) = MXSECT(1,3)+MXSECT(1,-1)
|
|
C MXSECT(2,3) = MXSECT(2,3)+MXSECT(2,-1)
|
|
C WRITE(6,1050) PROC(0),(MXSECT(L,0),L=0,2),
|
|
C & SIGSUM,STDEVS,XSECT(5,0)
|
|
DO 25 M=1,MAXPRO
|
|
IF ( MXSECT(0,M,INDENE).EQ.1 ) WRITE(6,1050) PROC(M),
|
|
& (MXSECT(L,M,INDENE),L=0,2),SIG(M),STDEV(M),XSECT(5,M,INDENE)
|
|
C IF ( MXSECT(0,M).EQ.1 ) WRITE(6,1050) PROC(M),
|
|
C & (MXSECT(L,M),L=0,2),SIG(M),STDEV(M),XSECT(5,M)
|
|
25 CONTINUE
|
|
1050 FORMAT(A19,I3,2I8,E14.4,' +- ',E10.4,E14.4)
|
|
MXSECT(1,3,INDENE) = MXSECT(1,3,INDENE)-MXSECT(1,-1,INDENE)
|
|
MXSECT(2,3,INDENE) = MXSECT(2,3,INDENE)-MXSECT(2,-1,INDENE)
|
|
C MXSECT(1,3) = MXSECT(1,3)-MXSECT(1,-1)
|
|
C MXSECT(2,3) = MXSECT(2,3)-MXSECT(2,-1)
|
|
ELSEIF ( IOUT.EQ.2 ) THEN
|
|
FAC = XSECT(2,0,INDENE)/(DPT1*MXSECT(1,0,INDENE))
|
|
C FAC = XSECT(2,0)/(DPT1*MXSECT(1,0))
|
|
DO 30 I=1,50
|
|
AB(I,1) = PT10+(I-1)*DPT1
|
|
IF ( HP(I).GT.1.D-35 ) X(I,1) = LOG10(FAC*HP(I))
|
|
30 CONTINUE
|
|
WRITE(6,1060)
|
|
1060 FORMAT(' JET CROSS SECTION PT-DISTRIBUTION',/)
|
|
CALL PLOT(AB(1,1),X(1,1),50,1,50,PT10,DPT1,XSMIN,XSSTEP)
|
|
ELSEIF ( IOUT.EQ.3 ) THEN
|
|
FAC = XSECT(2,0,INDENE)/(DPT1*MXSECT(1,0,INDENE))
|
|
C FAC = XSECT(2,0)/(DPT1*MXSECT(1,0))
|
|
DO 50 I=1,50
|
|
PT = PT10+(I-1)*DPT1
|
|
DO 40 J=1,8
|
|
AB(I,J-6) = PT
|
|
IF ( HPM(I,J).GT.1.D-35 ) X(I,J-6) = LOG10(FAC*HPM(I,J))
|
|
40 CONTINUE
|
|
50 CONTINUE
|
|
WRITE(6,1070)
|
|
1070 FORMAT(' JET CROSS SECTION PT-DISTRIBUTION',/,
|
|
& ' FOR THE DIFF. SUBPROCESSES',/)
|
|
CALL PLOT(AB,X,400,8,50,PT10,DPT1,XSMIN,XSSTEP)
|
|
ELSEIF ( IOUT.EQ.4 ) THEN
|
|
FAC = XSECT(2,0,INDENE)/(DPT1*DETA1*MXSECT(1,0,INDENE))
|
|
C FAC = XSECT(2,0)/(DPT1*DETA1*MXSECT(1,0))
|
|
DO 70 I=1,50
|
|
PT = PT10+(I-1)*DPT1
|
|
DO 60 J=-5,5
|
|
AB(I,J) = PT
|
|
IF ( HPE(I,J).GT.1.D-35 ) X(I,J) = LOG10(FAC*HPE(I,J))
|
|
60 CONTINUE
|
|
70 CONTINUE
|
|
WRITE(6,1080) ETA10,-ETA10
|
|
1080 FORMAT(' JET CROSS SECTION PT-DISTRIBUTION',/,
|
|
& ' RAP.=',F5.2,'...',F4.2,/)
|
|
CALL PLOT(AB,X,550,11,50,PT10,DPT1,XSMIN,XSSTEP)
|
|
ELSEIF ( IOUT.EQ.5 ) THEN
|
|
FAC = XSECT(2,0,INDENE)/(DETA2*DPT2*MXSECT(1,0,INDENE))
|
|
C FAC = XSECT(2,0)/(DETA2*DPT2*MXSECT(1,0))
|
|
DO 80 I=1,50
|
|
ETA = ETA20+(I-1)*DETA2
|
|
DO 75 J=1,5
|
|
AB(I,J) = ETA
|
|
IF ( HEP(I,J).GT.1.D-35 ) X(I,J) = LOG10(FAC*HEP(I,J))
|
|
75 CONTINUE
|
|
80 CONTINUE
|
|
WRITE(6,1090) PT20,PT20+4.*DPT2
|
|
1090 FORMAT(' JET CROSS SECTION RAP.-DISTRIBUTION',/,
|
|
& ' PT=',F6.2,'...',F6.2,/)
|
|
CALL PLOT(AB(1,1),X(1,1),250,5,50,ETA20,DETA2,XSMIN,XSSTEP)
|
|
ELSEIF ( IOUT.EQ.6 ) THEN
|
|
FAC = XSECT(2,0,INDENE)/(DETA2*MXSECT(1,0,INDENE))
|
|
C FAC = XSECT(2,0)/(DETA2*MXSECT(1,0))
|
|
DO 100 I=1,50
|
|
ETA = ETA20+(I-1)*DETA2
|
|
DO 90 J=1,8
|
|
AB(I,J-6) = ETA
|
|
IF ( HEM(I,J).GT.1.D-35 ) X(I,J-6) = LOG10(FAC*HEM(I,J))
|
|
90 CONTINUE
|
|
100 CONTINUE
|
|
WRITE(6,1100)
|
|
1100 FORMAT(' JET CROSS SECTION RAP.-DISTRIBUTION',/,
|
|
& ' FOR THE DIFF. SUBPROCESSES',/)
|
|
CALL PLOT(AB,X,400,8,50,ETA20,DETA2,XSMIN,XSSTEP)
|
|
ENDIF
|
|
WRITE(6,1110)
|
|
1110 FORMAT(/)
|
|
RETURN
|
|
END
|
|
|
|
C______________________________________________________________________
|
|
SUBROUTINE HISINI
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
C LENGTH OF HISTO : 15000 REAL*4
|
|
COMMON /HISTO / PT10,DPT1,ETA10,DETA1,PT20,DPT2,ETA20,DETA2,
|
|
& X(50,-5:5),AB(50,-5:5),HPE(50,-5:5),HEP(50,5),
|
|
& HPM(50,8),HEM(50,8),HP(50),HE(50),
|
|
& FILL(12192)
|
|
C
|
|
C INITIALIZE HISTOGRAMS
|
|
DPT1 = 1.
|
|
DETA1 = 1.
|
|
DPT2 = 2.
|
|
DETA2 = 0.2
|
|
PT10 = 1.
|
|
ETA10 =-5.*DETA1
|
|
PT20 = 2.
|
|
ETA20 =-25.*DETA2
|
|
DO 40 I=1,50
|
|
HP(I) = 0.0
|
|
HE(I) = 0.0
|
|
DO 10 J=-5,5
|
|
10 HPE(I,J) = 0.0
|
|
DO 20 J=1,5
|
|
20 HEP(I,J) = 0.0
|
|
DO 30 J=1,8
|
|
HPM(I,J) = 0.0
|
|
30 HEM(I,J) = 0.0
|
|
40 CONTINUE
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HISFIL2
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
COMMON /HARSLT/ LSCAHD,LSC1HD,
|
|
& ETAHD(MSCAHD,2) ,PTHD(MSCAHD),
|
|
& XHD(MSCAHD,2) ,VHD(MSCAHD) ,X0HD(MSCAHD,2),
|
|
& NINHD(MSCAHD,2) ,NOUTHD(MSCAHD,2),
|
|
& N0INHD(MSCAHD,2),NBRAHD(MSCAHD,2),NPROHD(MSCAHD)
|
|
C LENGTH OF HISTO : 15000 REAL*4
|
|
COMMON /HISTO / PT10,DPT1,ETA10,DETA1,PT20,DPT2,ETA20,DETA2,
|
|
& X(50,-5:5),AB(50,-5:5),HPE(50,-5:5),HEP(50,5),
|
|
& HPM(50,8),HEM(50,8),HP(50),HE(50),
|
|
& FILL(12192)
|
|
C
|
|
C fill histogram
|
|
DO 20 N=1,LSCAHD
|
|
MSPR = NPROHD(N)
|
|
DO 10 K=1,2
|
|
IPT1 = INT((PTHD(N)-PT10)/DPT1)+1
|
|
IETA1 = INT((ETAHD(N,K)-ETA10)/DETA1+0.5)-5
|
|
IPT2 = INT((PTHD(N)-PT20)/DPT2)+1
|
|
IETA2 = INT((ETAHD(N,K)-ETA20)/DETA2+0.5)
|
|
IF ( IPT1.GE. 1 .AND. IPT1.LE.50 ) THEN
|
|
HPM(IPT1,MSPR) = HPM(IPT1,MSPR)+1.
|
|
HP(IPT1) = HP(IPT1)+1.
|
|
IF ( ABS(IETA1).LE.5 ) HPE(IPT1,IETA1) = HPE(IPT1,IETA1)+1.
|
|
ENDIF
|
|
IF ( IETA2.GE. 1 .AND. IETA2.LE.50 ) THEN
|
|
HEM(IETA2,MSPR) = HEM(IETA2,MSPR)+1.
|
|
HE(IETA2) = HE(IETA2)+1.
|
|
IF ( IPT2.GE.1 .AND. IPT2.LE.5 ) HEP(IETA2,IPT2) =
|
|
& HEP(IETA2,IPT2)+1.
|
|
ENDIF
|
|
10 CONTINUE
|
|
20 CONTINUE
|
|
RETURN
|
|
END
|
|
C_______________________________________________________________________
|
|
SUBROUTINE HATEST(IOUT)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
CHARACTER*18 PROC
|
|
CHARACTER*11 PDSET,PARTIC
|
|
COMMON /PEPROC/ PROC(0:MAXPRO),PDSET(23),PARTIC(-1:1)
|
|
C LENGTH OF HISTO : 15000 REAL*4
|
|
COMMON /HISTO / VVV(50),XS(50,6),AB(50,6),DSIG(0:MAXPRO),PD(-6:6),
|
|
& FILL(14328)
|
|
IF ( IOUT.EQ.1 ) THEN
|
|
CALL CSHARM(DSIG)
|
|
WRITE(6,1010) ECM,PTINI(1),(PROC(M),DSIG(M),M=0,MAXPRO)
|
|
1010 FORMAT(' HARD CROSS SECTIONS FOR SINGLE PROCESSES',/,
|
|
& ' AT CM-ENERGY=',E8.1,' AND PTMIN=',F5.1,/,9(A25,E14.6,/))
|
|
ELSEIF ( IOUT.EQ.2 ) THEN
|
|
C PLOT PARTON DISTRIBUTIONS
|
|
PDMIN = 0.0
|
|
PDSTEP = 0.04
|
|
YMAX = 5.0
|
|
DY = YMAX/50.
|
|
QQ = 10.0
|
|
DO 10 J=1,50
|
|
Y = FLOAT(J-1)*DY
|
|
VVV(J) = 10.0**(-Y)
|
|
DO 10 I=1,5
|
|
XS(J,I) =-1.E+30
|
|
AB(J,I) = Y
|
|
10 CONTINUE
|
|
QQ = 1.0
|
|
DO 20 I=1,5
|
|
QQ = QQ*10.
|
|
DO 20 J=1,50
|
|
CALL JTPDIS(VVV(J),QQ,1,1,PD)
|
|
IF ( PD(0).GT.1.D-30 ) XS(J,I) = LOG10(PD(0))
|
|
20 CONTINUE
|
|
WRITE(6,1020)
|
|
1020 FORMAT(' GLUONDISTRIBUTION OVER LOG10(X) ( Q**2=10**I;',
|
|
& ' I=1...5 )')
|
|
CALL PLOT(AB,XS,250,5,50,YMAX,-DY,PDMIN,PDSTEP)
|
|
ELSEIF ( IOUT.EQ.3 ) THEN
|
|
QQMIN = 1.0
|
|
QQSTEP = 0.1
|
|
DO 30 I=1,50
|
|
B = FLOAT(I-1)*QQSTEP+QQMIN
|
|
VVV(I) = 10.0**B
|
|
DO 30 J=1,5
|
|
XS(I,J) = -1.D+30
|
|
AB(I,J) = B
|
|
30 CONTINUE
|
|
X = 1.0
|
|
DO 40 I=1,50
|
|
X = 1.0
|
|
DO 40 J=1,4
|
|
X = X*0.1D0
|
|
CALL JTPDIS(X,VVV(I),1,1,PD)
|
|
IF ( PD(0).GT.1.D-30 ) XS(I,J) = LOG10(PD(0))
|
|
40 CONTINUE
|
|
WRITE(6,1030)
|
|
1030 FORMAT(' GLUONDISTRIBUTION OVER LOG10(Q**2) ( X=10**(-I)'
|
|
& ,'; I=1...4')
|
|
CALL PLOT(AB,XS,200,4,50,QQMIN,QQSTEP,PDMIN,PDSTEP)
|
|
ELSEIF ( IOUT.EQ.4 ) THEN
|
|
C PLOT DIFFERENTIAL ONE JET CROSS SECTION
|
|
XSMIN =-6.
|
|
XSSTEP = 0.1
|
|
PTMIN = 1.0
|
|
PTSTEP = 1.0
|
|
DO 50 I=1,50
|
|
PT = (I-1)*PTSTEP+PTMIN
|
|
XS(I,1) =-35.0
|
|
DO 50 J=1,6
|
|
50 AB(I,J) = PT
|
|
C DO 60 J=1,6
|
|
C ETAC = (J-1)*0.5
|
|
ETAC = 0.0
|
|
DO 60 I=1,50
|
|
PT = AB(I,1)
|
|
CALL CSJ1M(PT,ETAC,DSIG)
|
|
IF ( DSIG(0).GT.1.D-30 ) XS(I,1) = LOG10(DSIG(0))
|
|
60 CONTINUE
|
|
WRITE(6,1040)
|
|
1040 FORMAT(' DIFFERENTIAL HARD CROSS SECTION OVER PT , RAP.=0.')
|
|
CALL PLOT(AB,XS,50,1,50,PTMIN,PTSTEP,XSMIN,XSSTEP)
|
|
ENDIF
|
|
RETURN
|
|
END
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C JTINIT.FOR
|
|
C
|
|
C---------------------------------------------------------------------
|
|
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
|
|
C
|
|
C PROCEDURES TO INITIALIZE PROGRAM
|
|
C ( NONE OF THIS PROCEDURES IS USED DURING EVENT SIMULATION,
|
|
C BEFORE DEMANDING EVENT SIMULATION SUBROUTINES
|
|
C HASTRT, HARINI AND HISINI MUST BE CALLED )
|
|
C
|
|
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
|
|
C_______________________________________________________________________
|
|
SUBROUTINE HARINI
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HACONS/ PI,PI2,PI4,GEVTMB
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAPDCO/ NPDCOR
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
CHARACTER*18 PROC
|
|
CHARACTER*11 PDSET,PARTIC
|
|
COMMON /PEPROC/ PROC(0:MAXPRO),PDSET(23),PARTIC(-1:1)
|
|
DIMENSION DSIG(0:MAXPRO),ALAM(23),Q0S(23)
|
|
DATA ALAM / 0.20D0, 0.29D0, 0.107D0, 0.250D0, 0.178D0, 0.25D0,
|
|
* 0.10D0, 0.19D0, 0.190D0, 0.190D0, 0.190D0, 0.19D0,
|
|
* 0.215D0,0.215D0,0.215D0,
|
|
* 0.231D0,0.231D0,0.322D0, 0.247D0,
|
|
* 0.168D0,0.2D0,0.2D0,0.202D0 /
|
|
DATA Q0S / 5.0D0 , 5.0D0 , 5.0D0 , 5.0D0 , 5.0D0 , 0.2D0,
|
|
* 5.0D0 , 5.0D0 , 5.0D0 , 5.0D0 , 5.0D0 , 5.0D0,
|
|
* 5.0D0 , 5.0D0 , 5.0D0 , 4.0D0 , 4.0D0 , 4.0D0,
|
|
* 4.0D0 , 4.0D0 , 0.4D0 ,0.4D0 ,1.60D0 /
|
|
C
|
|
WRITE(6,*)' HARINI:NPD=',NPD
|
|
IF ( NOUTL.GE.1 )CALL TIMDAT
|
|
ALASQR = ALAM(NPD)**2
|
|
Q0SQR = Q0S(NPD)
|
|
BQCD = PI4/(11.-(2./3.)*NF)
|
|
C check and sort the min. pt values in PTINI(1..4)
|
|
INI = 0
|
|
DO 30 I=1,4
|
|
IF ( PTINI(I).LE..5D0.OR.PTINI(I).GE.ECM*.5D0)PTINI(I)=1.D+30
|
|
IF ( PTINI(I).NE.1.D+30 ) INI = INI+1
|
|
30 CONTINUE
|
|
DO 50 I=1,3
|
|
DO 40 J=I+1,4
|
|
IF ( PTINI(J).LT.PTINI(I) ) THEN
|
|
TTT = PTINI(J)
|
|
PTINI(J) = PTINI(I)
|
|
PTINI(I) = TTT
|
|
ENDIF
|
|
40 CONTINUE
|
|
50 CONTINUE
|
|
C calculate constant weights
|
|
DO 10 M=-1,MAXPRO
|
|
XSECT (3,M,INDENE) = 0.0
|
|
XSECT (4,M,INDENE) = 0.0
|
|
MXSECT(1,M,INDENE) = 0
|
|
MXSECT(2,M,INDENE) = 0
|
|
C XSECT (3,M) = 0.0
|
|
C XSECT (4,M) = 0.0
|
|
C MXSECT(1,M) = 0
|
|
C MXSECT(2,M) = 0
|
|
10 CONTINUE
|
|
DO 20 I = 1,4
|
|
DO 20 M =-1,MAXPRO
|
|
DO 20 J = 1,2
|
|
XSECTA(J,M,I,INDENE) = 0.0
|
|
C XSECTA(J,M,I) = 0.0
|
|
20 CONTINUE
|
|
DO 70 I=INI,1,-1
|
|
CALL HABINT(I)
|
|
IF ( NOUTL.GE.10 ) WRITE(6,1060) PTINI(I)
|
|
1060 FORMAT(' NORMALIZATION FOR PTMIN=',F10.4,' CALCULATED')
|
|
CALL HAMAXI(I)
|
|
IF ( NOUTL.GE.10 ) WRITE(6,1070) PTINI(I)
|
|
1070 FORMAT(' MAXIMA FOR PTMIN=',F10.4,' CALCULATED')
|
|
XSECTA(1,0,I,INDENE) = PTINI(I)
|
|
C XSECTA(1,0,I) = PTINI(I)
|
|
DO 60 M=-1,MAXPRO
|
|
XSECTA(1,M,I,INDENE) = XSECT(1,M,INDENE)
|
|
XSECTA(2,M,I,INDENE) = XSECT(2,M,INDENE)
|
|
C XSECTA(1,M,I) = XSECT(1,M)
|
|
C XSECTA(2,M,I) = XSECT(2,M)
|
|
60 CONTINUE
|
|
70 CONTINUE
|
|
C calculate inclusive cross-sections
|
|
CALL CSHARM(DSIG)
|
|
DO 80 M=0,MAXPRO
|
|
XSECT(5,M,INDENE) = DSIG(M)
|
|
C XSECT(5,M) = DSIG(M)
|
|
80 CONTINUE
|
|
C
|
|
C print results of initialization
|
|
C
|
|
IF ( NOUTL.GE.10 ) WRITE(6,'(/,1X,70(1H*))')
|
|
WRITE(6,1057) PTINI(1),PDSET(NPD),SQRT(ALASQR),Q0SQR
|
|
1057 FORMAT(/,
|
|
& ' --- parameters of the hard scattering program ---',/,
|
|
& ' MIN. PT :',F15.1,/,
|
|
& ' PARTON-DISTR. :',A15,/,
|
|
& ' LAMBDA :',F15.3,/,
|
|
& ' Q0**2 :',F15.3,/)
|
|
IF ( NOUTL.GE.1 ) THEN
|
|
WRITE(6,1050) PARTIC(NHA),PARTIC(NHB),ECM,PTINI(1),PDSET(NPD),
|
|
& SQRT(ALASQR),Q0SQR,NPDCOR,NQQAL,AQQAL,NQQPD,AQQPD
|
|
1050 FORMAT(/,1X,70('*'),/,
|
|
& ' HARD SCATTERING PROGRAM IS INITIALIZED FOR',/,
|
|
& ' PROJECTILE :',A15,/,
|
|
& ' TARGET :',A15,/,
|
|
& ' CM-ENERGY :',F15.1,/,
|
|
& ' MIN. PT :',F15.1,/,
|
|
& ' PARTON-DISTR. :',A15,/,
|
|
& ' LAMBDA :',F15.3,/,
|
|
& ' Q0**2 :',F15.3,/,
|
|
& ' NPDCOR :',I15,/,
|
|
& ' NQQAL :',I15,/,
|
|
& ' AQQAL :',F15.3,/,
|
|
& ' NQQPD :',I15,/,
|
|
& ' AQQPD :',F15.3,/)
|
|
CALL TIMDAT
|
|
ENDIF
|
|
RETURN
|
|
END
|
|
C_______________________________________________________________________
|
|
SUBROUTINE HABINT(IND)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( MXABWT = 1000 )
|
|
PARAMETER ( ZERO=0.D0, ONE=1.D0)
|
|
COMMON /HACONS/ PI,PI2,PI4,GEVTMB
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAGAUP/ NGAUP1,NGAUP2,NGAUET,NGAUIN
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
DIMENSION ABSZ(MXABWT),WEIG(MXABWT)
|
|
DIMENSION S(-1:MAXPRO),S1(-1:MAXPRO),S2(-1:MAXPRO),F124(-1:MAXPRO)
|
|
DATA F124 / 1.,0.,4.,2.,2.,2.,4.,1.,4.,4. /
|
|
|
|
A = (2.*PTINI(IND)/ECM)**2
|
|
ALN = LOG(A)
|
|
HLN = LOG(0.5)
|
|
NPOINT = NGAUIN
|
|
CALL GSET(ZERO,ONE,NPOINT,ABSZ,WEIG)
|
|
DO 10 M=-1,MAXPRO
|
|
S1(M) = 0.0
|
|
10 CONTINUE
|
|
DO 80 I1=1,NPOINT
|
|
Z1 = ABSZ(I1)
|
|
X1 = EXP(ALN*Z1)
|
|
DO 20 M=-1,MAXPRO
|
|
S2(M) = 0.0
|
|
20 CONTINUE
|
|
DO 60 I2=1,NPOINT
|
|
Z2 = (1.-Z1)*ABSZ(I2)
|
|
X2 = EXP(ALN*Z2)
|
|
FAXX = A/(X1*X2)
|
|
W = SQRT(1.-FAXX)
|
|
W1 = FAXX/(1.+W)
|
|
WLOG = LOG(W1)
|
|
FWW = FAXX*WLOG/W
|
|
DO 30 M=-1,MAXPRO
|
|
S(M) = 0.0
|
|
30 CONTINUE
|
|
DO 40 I=1,NPOINT
|
|
Z = ABSZ(I)
|
|
VA =-0.5*W1/(W1+Z*W)
|
|
UA =-1.-VA
|
|
VB =-0.5*FAXX/(W1+2.*W*Z)
|
|
UB =-1.-VB
|
|
VC =-EXP(HLN+Z*WLOG)
|
|
UC =-1.-VC
|
|
VE =-0.5*(1.+W)+Z*W
|
|
UE =-1.-VE
|
|
S(1) = S(1)+(1.+W)*2.25*(VA*VA*(3.-UA*VA-VA/(UA*UA))-UA)*
|
|
& WEIG(I)
|
|
S(2) = S(2)+(VC*VC+UC*UC)*((16./27.)/UC-(4./3.)*VC)*FWW*
|
|
& WEIG(I)
|
|
S(3) = S(3)+(1.+W)*(1.+UA*UA)*(1.-(4./9.)*VA*VA/UA)*WEIG(I)
|
|
S(5) = S(5)+((4./9.)*(1.+UB*UB+(UB*UB+VB*VB)*VB*VB)-
|
|
& (8./27.)*UA*UA*VA)*WEIG(I)
|
|
S(6) = S(6)+(4./9.)*(UE*UE+VE*VE)*FAXX*WEIG(I)
|
|
S(7) = S(7)+(1.+W)*((2./9.)*(1.+UA*UA+(1.+VA*VA)*VA*VA/
|
|
& (UA*UA))-(4./27.)*VA/UA)*WEIG(I)
|
|
S(8) = S(8)+(4./9.)*(1.+UB*UB)*WEIG(I)
|
|
S(-1) = S(-1)+(1.+VC*VC)*(VC/(UC*UC)-(4./9.))*FWW*WEIG(I)
|
|
40 CONTINUE
|
|
S(4) = S(2)*(9./32.)
|
|
DO 50 M=-1,MAXPRO
|
|
S2(M) = S2(M)+S(M)*WEIG(I2)*W
|
|
50 CONTINUE
|
|
60 CONTINUE
|
|
DO 70 M=-1,MAXPRO
|
|
S1(M) = S1(M)+S2(M)*(1.-Z1)*WEIG(I1)
|
|
70 CONTINUE
|
|
80 CONTINUE
|
|
FFF = PI*GEVTMB*ALN*ALN/(A*ECM*ECM)
|
|
DO 90 M=-1,MAXPRO
|
|
XSECT(1,M,INDENE) = FFF*F124(M)*S1(M)
|
|
C XSECT(1,M) = FFF*F124(M)*S1(M)
|
|
90 CONTINUE
|
|
XSECT(1,4,INDENE) = XSECT(1,4,INDENE)*NF
|
|
XSECT(1,6,INDENE) = XSECT(1,6,INDENE)*MAX(0,NF-1)
|
|
C XSECT(1,4) = XSECT(1,4)*NF
|
|
C XSECT(1,6) = XSECT(1,6)*MAX(0,NF-1)
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HAMAXI(IND)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( NKM = 5 )
|
|
PARAMETER ( TINY= 1.D-30 )
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
DIMENSION Z(3),D(3),FF(NKM)
|
|
|
|
DO 40 NKON=1,NKM
|
|
Z(1) = 0.99
|
|
Z(2) = 0.5
|
|
Z(3) = 0.0
|
|
D(1) =-1.0
|
|
D(2) = 2.0
|
|
D(3) = 2.5
|
|
IT = 0
|
|
CALL HAFDI1(NKON,Z,F2,IND)
|
|
10 IT = IT+1
|
|
FOLD = F2
|
|
DO 30 I=1,3
|
|
D(I) = D(I)/5.
|
|
Z(I) = Z(I)+D(I)
|
|
CALL HAFDI1(NKON,Z,F3,IND)
|
|
IF ( F2.GT.F3 ) Z(I) = Z(I)-D(I)
|
|
IF ( F2.GT.F3 ) D(I) =-D(I)
|
|
20 F1 = MIN(F2,F3)
|
|
F2 = MAX(F2,F3)
|
|
Z(I) = Z(I)+D(I)
|
|
CALL HAFDI1(NKON,Z,F3,IND)
|
|
IF ( F3.GT.F2 ) GOTO 20
|
|
ZZ = Z(I)-D(I)
|
|
Z(I) = ZZ+0.5*D(I)*(F3-F1)/MAX(TINY,F2+F2-F1-F3)
|
|
IF ( ABS(ZZ-Z(I)).GT.D(I)*0.1D0)CALL HAFDI1(NKON,Z,F1,IND)
|
|
IF ( F1.LE.F2 ) Z(I) = ZZ
|
|
F2 = MAX(F1,F2)
|
|
30 CONTINUE
|
|
IF ( ABS(FOLD-F2)/F2.GT.0.002D0.OR. IT.LT.3 ) GOTO 10
|
|
FF(NKON) = F2
|
|
40 CONTINUE
|
|
XSECT(2,1,INDENE) = FF(1)*XSECT(1,1,INDENE)
|
|
XSECT(2,2,INDENE) = FF(2)*XSECT(1,2,INDENE)
|
|
XSECT(2,3,INDENE) = FF(4)*XSECT(1,3,INDENE)
|
|
XSECT(2,4,INDENE) = FF(1)*XSECT(1,4,INDENE)
|
|
XSECT(2,5,INDENE) = FF(2)*XSECT(1,5,INDENE)
|
|
XSECT(2,6,INDENE) = FF(2)*XSECT(1,6,INDENE)
|
|
XSECT(2,7,INDENE) = FF(3)*XSECT(1,7,INDENE)
|
|
XSECT(2,8,INDENE) = FF(5)*XSECT(1,8,INDENE)
|
|
XSECT(2,-1,INDENE)= FF(4)*XSECT(1,-1,INDENE)
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HAFDI1(NKON,Z,FDIS,IND)
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
PARAMETER ( NKM = 5 )
|
|
PARAMETER ( TINY= 1.D-30, ONE=1.D0 ,TINY6=1.D-06,ZERO=0.D0)
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
DIMENSION F(NKM),PDA(-6:6),PDB(-6:6),Z(3)
|
|
|
|
FDIS = 0.0
|
|
C check input values
|
|
IF ( Z(1).LE.0.0D0 .OR. Z(1).GE.1.0D0 ) RETURN
|
|
IF ( Z(2).LE.0.0D0 .OR. Z(2).GE.1.0D0 ) RETURN
|
|
IF ( Z(3).LT.0.0D0 .OR. Z(3).GT.1.0D0 ) RETURN
|
|
A = (2.*PTINI(IND)/ECM)**2
|
|
ALN = LOG(A)
|
|
Y1 = EXP(ALN*Z(1))
|
|
Y2 =-(1.-Y1)+2.*(1.-Y1)*Z(2)
|
|
X1 = 0.5*(Y2+SQRT(Y2*Y2+4.*Y1))
|
|
X2 = X1-Y2
|
|
W = SQRT(MAX(TINY,1.-A/Y1))
|
|
V =-0.5+W*(Z(3)-0.5)
|
|
U =-(1.+V)
|
|
PT = MAX(PTINI(IND),SQRT(U*V*Y1*ECM*ECM))
|
|
C set hard scale QQ for alpha and partondistr.
|
|
IF ( NQQAL.EQ.1 ) THEN
|
|
QQAL = AQQAL*PT*PT
|
|
ELSEIF ( NQQAL.EQ.2 ) THEN
|
|
QQAL = AQQAL*Y1*ECM*ECM
|
|
ELSEIF ( NQQAL.EQ.3 ) THEN
|
|
QQAL = AQQAL*Y1*ECM*ECM*(U*V)**(1./3.)
|
|
ELSEIF ( NQQAL.EQ.4 ) THEN
|
|
QQAL = AQQAL*Y1*ECM*ECM*U*V/(1.+V*V+U*U)
|
|
ENDIF
|
|
IF ( NQQPD.EQ.1 ) THEN
|
|
QQPD = AQQPD*PT*PT
|
|
ELSEIF ( NQQPD.EQ.2 ) THEN
|
|
QQPD = AQQPD*Y1*ECM*ECM
|
|
ELSEIF ( NQQPD.EQ.3 ) THEN
|
|
QQPD = AQQPD*Y1*ECM*ECM*(U*V)**(1./3.)
|
|
ELSEIF ( NQQPD.EQ.4 ) THEN
|
|
QQPD = AQQPD*Y1*ECM*ECM*U*V/(1.+V*V+U*U)
|
|
ENDIF
|
|
FACTOR = (BQCD/LOG(MAX(QQAL/ALASQR,1.1*ONE)))**2
|
|
C calculate partondistributions
|
|
CALL JTPDIS(X1,QQPD,NHA,0,PDA)
|
|
CALL JTPDIS(X2,QQPD,NHB,0,PDB)
|
|
C calculate full distribution FDIS
|
|
DO 10 N=1,NKM
|
|
F(N) = 0.0
|
|
10 CONTINUE
|
|
DO 20 I=1,NF
|
|
F(2) = F(2)+PDA(I)*PDB(-I)+PDA(-I)*PDB( I)
|
|
F(3) = F(3)+PDA(I)*PDB( I)+PDA(-I)*PDB(-I)
|
|
F(4) = F(4)+PDA(I)+PDA(-I)
|
|
F(5) = F(5)+PDB(I)+PDB(-I)
|
|
20 CONTINUE
|
|
F(1) = PDA(0)*PDB(0)
|
|
T = PDA(0)*F(5)+PDB(0)*F(4)
|
|
F(5) = F(4)*F(5)-(F(2)+F(3))
|
|
F(4) = T
|
|
FDIS = MAX(ZERO,F(NKON)*FACTOR)
|
|
RETURN
|
|
END
|
|
C______________________________________________________________________
|
|
SUBROUTINE HASTRT
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
COMMON /HACONS/ PI,PI2,PI4,GEVTMB
|
|
COMMON /HAPARA/ ECM,PTINI(4),Q0SQR,ALASQR,BQCD,NPD,NF,NHA,NHB
|
|
COMMON /HAPADI/ NPDM
|
|
COMMON /HAPDCO/ NPDCOR
|
|
COMMON /HAQQAP/ AQQAL,AQQPD,NQQAL,NQQPD
|
|
COMMON /HAOUTL/ NOUTL,NOUTER,NOUTCO
|
|
COMMON /HACUTS/ PTL,PTU,ETACL,ETACU,ETADL,ETADU
|
|
COMMON /HAGAUP/ NGAUP1,NGAUP2,NGAUET,NGAUIN
|
|
COMMON /HAEVTR/ LINE,LIN,LREC1(MLINE),LREC2(MLINE),PREC(0:3,MLINE)
|
|
INTEGER MXSECT
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,20),XSECT(5,-1:MAXPRO,20),
|
|
C & MXSECT(0:2,-1:MAXPRO,20)
|
|
COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4,28),XSECT(5,-1:MAXPRO,28),
|
|
& MXSECT(0:2,-1:MAXPRO,28)
|
|
C COMMON /LAPENE/PTTHRZ(20),PTTHZ2(20),INDENE
|
|
COMMON /LAPENE/PTTHRZ(28),PTTHZ2(28),INDENE
|
|
C COMMON /HAXSEC/ XSECTA(2,-1:MAXPRO,4),XSECT(5,-1:MAXPRO),
|
|
C & MXSECT(0:2,-1:MAXPRO)
|
|
COMMON /HAXSUM/XSHMX
|
|
C initialize COMMON /HAXSUM/
|
|
XSHMX = 1.
|
|
C initialize COMMON /HACONS/
|
|
PI = 3.1415927
|
|
PI2 = 2.*PI
|
|
PI4 = 4.*PI
|
|
GEVTMB = 0.389365
|
|
C initialize COMMON /HAPARA/
|
|
ECM = 1800.
|
|
PTINI(1) = 2.0
|
|
PTINI(2) = 0.0
|
|
PTINI(3) = 0.0
|
|
PTINI(4) = 0.0
|
|
Q0SQR = 5.0
|
|
ALASQR = 0.107**2
|
|
NF = 4
|
|
BQCD = PI4/(11.0-(2./3.)*NF)
|
|
NPD = 3
|
|
NHA = 1
|
|
NHB =-1
|
|
C initialize COMMON /HAPADI/
|
|
NPDM = 0
|
|
C initialize COMMON /HAPDCO/
|
|
NPDCOR = 0
|
|
C initialize COMMON /HAQQAP/
|
|
NQQAL = 1
|
|
AQQAL = 0.25
|
|
NQQPD = 1
|
|
AQQPD = 0.25
|
|
C initialize COMMON /HAOUTL/
|
|
NOUTL = 1
|
|
NOUTER = 1
|
|
NOUTCO = 0
|
|
C initialize COMMON /HAGAUP/
|
|
NGAUP1 = 8
|
|
NGAUP2 = 8
|
|
NGAUET = 8
|
|
NGAUIN = 8
|
|
C initialize COMMON /HACUTS/
|
|
PTL = 0.E+00
|
|
PTU = 1.E+30
|
|
ETACL =-1.E+30
|
|
ETACU = 1.E+30
|
|
ETADL =-1.E+30
|
|
ETADU = 1.E+30
|
|
C initialize COMMON /HAEVTR/
|
|
LINE = 0
|
|
LIN = 0
|
|
DO 20 L = 1,MLINE
|
|
LREC1(L) = 0
|
|
LREC2(L) = 0
|
|
DO 10 I=0,3
|
|
PREC(I,L) = 0.0
|
|
10 CONTINUE
|
|
20 CONTINUE
|
|
C initialize COMMON /HAXSEC/
|
|
DO 40 M=-1,MAXPRO
|
|
DO 30 I=1,5
|
|
XSECT(I,M,INDENE) = 0.0
|
|
C XSECT(I,M) = 0.0
|
|
30 CONTINUE
|
|
MXSECT(1,M,INDENE) = 0
|
|
MXSECT(2,M,INDENE) = 0
|
|
MXSECT(0,M,INDENE) = 1
|
|
40 CONTINUE
|
|
RETURN
|
|
END
|
|
C----------------------------------------------------------------------
|
|
BLOCK DATA JTDATA
|
|
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
|
|
SAVE
|
|
PARAMETER ( MAXPRO = 8 , MLINE = 1000 , MSCAHD = 250 )
|
|
CHARACTER*18 PROC
|
|
CHARACTER*11 PDSET,PARTIC
|
|
COMMON /PEPROC/ PROC(0:MAXPRO),PDSET(23),PARTIC(-1:1)
|
|
|
|
DATA PROC / 'SUM OVER PROCESSES', 'G +G --> G +G ',
|
|
& 'Q +QB --> G +G ', 'G +Q --> G +Q ',
|
|
& 'G +G --> Q +QB ', 'Q +QB --> Q +QB ',
|
|
& 'Q +QB --> QS +QBS', 'Q +Q --> Q +Q ',
|
|
& 'Q +QS --> Q +QS ' /
|
|
DATA PDSET / ' EHLQ SET 1',' EHLQ SET 2',' MRS SET 1',
|
|
& ' MRS SET 2',' MRS SET 3',' GRV LO ',
|
|
& ' HMRS SET 1',' HMRS SET 2',' KMRS SET 1',
|
|
& ' KMRS SET 2',' KMRS SET 3',' KMRS SET 4',
|
|
& ' MRS(S0) ',' MRS(D0) ',' MRS(D-) ',
|
|
& ' CTEQ 1M ',' CTEQ 1MS ',' CTEQ 1ML ',
|
|
& ' CTEQ 1D ',' CTEQ 1L ',' GRV94LO1 ' ,
|
|
& ' GRV98LO ',' CTEQ96 '/
|
|
DATA PARTIC / ' ANTIPROTON',' ',' PROTON' /
|
|
END
|
|
C***********************************************************************
|
|
C
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* *
|
|
* G R V - P R O T O N - P A R A M E T R I Z A T I O N S *
|
|
* *
|
|
* 1994 UPDATE *
|
|
* *
|
|
* FOR A DETAILED EXPLANATION SEE *
|
|
* M. GLUECK, E.REYA, A.VOGT : *
|
|
* DO-TH 94/24 = DESY 94-206 *
|
|
* (TO APPEAR IN Z. PHYS. C) *
|
|
* *
|
|
* THE PARAMETRIZATIONS ARE FITTED TO THE EVOLVED PARTONS FOR *
|
|
* Q**2 / GEV**2 BETWEEN 0.4 AND 1.E6 *
|
|
* X BETWEEN 1.E-5 AND 1. *
|
|
* LARGE-X REGIONS, WHERE THE DISTRIBUTION UNDER CONSIDERATION *
|
|
* IS NEGLIGIBLY SMALL, WERE EXCLUDED FROM THE FIT. *
|
|
* *
|
|
* HEAVY QUARK THRESHOLDS Q(H) = M(H) IN THE BETA FUNCTION : *
|
|
* M(C) = 1.5, M(B) = 4.5 *
|
|
* CORRESPONDING LAMBDA(F) VALUES IN GEV FOR Q**2 > M(H)**2 : *
|
|
* LO : LAMBDA(3) = 0.232, LAMBDA(4) = 0.200, *
|
|
* LAMBDA(5) = 0.153, *
|
|
* NLO : LAMBDA(3) = 0.248, LAMBDA(4) = 0.200, *
|
|
* LAMBDA(5) = 0.131. *
|
|
* THE NUMBER OF ACTIVE QUARK FLAVOURS IS NF = 3 EVERYWHERE *
|
|
* EXCEPT IN THE BETA FUNCTION, I.E. THE HEAVY QUARKS C,B,... *
|
|
* ARE NOT PRESENT AS PARTONS IN THE Q2-EVOLUTION. *
|
|
* IF NEEDED, HEAVY QUARK DENSITIES CAN BE TAKEN FROM THE 1991 *
|
|
* GRV PARAMETRIZATION. *
|
|
* *
|
|
* NLO DISTRIBUTIONS ARE GIVEN IN MS-BAR FACTORIZATION SCHEME *
|
|
* (SUBROUTINE GRV94HO) AS WELL AS IN THE DIS SCHEME (GRV94DI), *
|
|
* THE LEADING ORDER PARAMETRIZATION IS PROVIDED BY "GRV94LO". *
|
|
* *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
*...INPUT PARAMETERS :
|
|
*
|
|
* X = MOMENTUM FRACTION
|
|
* Q2 = SCALE Q**2 IN GEV**2
|
|
*
|
|
*...OUTPUT (ALWAYS X TIMES THE DISTRIBUTION) :
|
|
*
|
|
* UV = U(VAL) = U - U(BAR)
|
|
* DV = D(VAL) = D - D(BAR)
|
|
* DEL = D(BAR) - U(BAR)
|
|
* UDB = U(BAR) + D(BAR)
|
|
* SB = S = S(BAR)
|
|
* GL = GLUON
|
|
*
|
|
*...LO PARAMETRIZATION :
|
|
*
|
|
SUBROUTINE DOR94LO (X, Q2, UV, DV, DEL, UDB, SB, GL)
|
|
IMPLICIT DOUBLE PRECISION (A - Z)
|
|
SAVE
|
|
MU2 = 0.23
|
|
LAM2 = 0.2322 * 0.2322
|
|
S = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
|
|
DS = SQRT (S)
|
|
S2 = S * S
|
|
S3 = S2 * S
|
|
*...UV :
|
|
NU = 2.284 + 0.802 * S + 0.055 * S2
|
|
AKU = 0.590 - 0.024 * S
|
|
BKU = 0.131 + 0.063 * S
|
|
AU = -0.449 - 0.138 * S - 0.076 * S2
|
|
BU = 0.213 + 2.669 * S - 0.728 * S2
|
|
CU = 8.854 - 9.135 * S + 1.979 * S2
|
|
DU = 2.997 + 0.753 * S - 0.076 * S2
|
|
UV = DOR94FV (X, NU, AKU, BKU, AU, BU, CU, DU)
|
|
*...DV :
|
|
ND = 0.371 + 0.083 * S + 0.039 * S2
|
|
AKD = 0.376
|
|
BKD = 0.486 + 0.062 * S
|
|
AD = -0.509 + 3.310 * S - 1.248 * S2
|
|
BD = 12.41 - 10.52 * S + 2.267 * S2
|
|
CD = 6.373 - 6.208 * S + 1.418 * S2
|
|
DD = 3.691 + 0.799 * S - 0.071 * S2
|
|
DV = DOR94FV (X, ND, AKD, BKD, AD, BD, CD, DD)
|
|
*...DEL :
|
|
NE = 0.082 + 0.014 * S + 0.008 * S2
|
|
AKE = 0.409 - 0.005 * S
|
|
BKE = 0.799 + 0.071 * S
|
|
AE = -38.07 + 36.13 * S - 0.656 * S2
|
|
BE = 90.31 - 74.15 * S + 7.645 * S2
|
|
CE = 0.0
|
|
DE = 7.486 + 1.217 * S - 0.159 * S2
|
|
DEL = DOR94FV (X, NE, AKE, BKE, AE, BE, CE, DE)
|
|
*...UDB :
|
|
ALX = 1.451
|
|
BEX = 0.271
|
|
AKX = 0.410 - 0.232 * S
|
|
BKX = 0.534 - 0.457 * S
|
|
AGX = 0.890 - 0.140 * S
|
|
BGX = -0.981
|
|
CX = 0.320 + 0.683 * S
|
|
DX = 4.752 + 1.164 * S + 0.286 * S2
|
|
EX = 4.119 + 1.713 * S
|
|
ESX = 0.682 + 2.978 * S
|
|
UDB=DOR94FW(X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX, DX, EX, ESX)
|
|
*...SB :
|
|
ALS = 0.914
|
|
BES = 0.577
|
|
AKS = 1.798 - 0.596 * S
|
|
AS = -5.548 + 3.669 * DS - 0.616 * S
|
|
BS = 18.92 - 16.73 * DS + 5.168 * S
|
|
DST = 6.379 - 0.350 * S + 0.142 * S2
|
|
EST = 3.981 + 1.638 * S
|
|
ESS = 6.402
|
|
SB = DOR94FS (X, S, ALS, BES, AKS, AS, BS, DST, EST, ESS)
|
|
*...GL :
|
|
ALG = 0.524
|
|
BEG = 1.088
|
|
AKG = 1.742 - 0.930 * S
|
|
BKG = - 0.399 * S2
|
|
AG = 7.486 - 2.185 * S
|
|
BG = 16.69 - 22.74 * S + 5.779 * S2
|
|
CG = -25.59 + 29.71 * S - 7.296 * S2
|
|
DG = 2.792 + 2.215 * S + 0.422 * S2 - 0.104 * S3
|
|
EG = 0.807 + 2.005 * S
|
|
ESG = 3.841 + 0.316 * S
|
|
GL =DOR94FW(X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
|
|
RETURN
|
|
END
|
|
*
|
|
*...NLO PARAMETRIZATION (MS(BAR)) :
|
|
*
|
|
SUBROUTINE DOR94HO (X, Q2, UV, DV, DEL, UDB, SB, GL)
|
|
IMPLICIT DOUBLE PRECISION (A - Z)
|
|
SAVE
|
|
MU2 = 0.34
|
|
LAM2 = 0.248 * 0.248
|
|
S = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
|
|
DS = SQRT (S)
|
|
S2 = S * S
|
|
S3 = S2 * S
|
|
*...UV :
|
|
NU = 1.304 + 0.863 * S
|
|
AKU = 0.558 - 0.020 * S
|
|
BKU = 0.183 * S
|
|
AU = -0.113 + 0.283 * S - 0.321 * S2
|
|
BU = 6.843 - 5.089 * S + 2.647 * S2 - 0.527 * S3
|
|
CU = 7.771 - 10.09 * S + 2.630 * S2
|
|
DU = 3.315 + 1.145 * S - 0.583 * S2 + 0.154 * S3
|
|
UV = DOR94FV (X, NU, AKU, BKU, AU, BU, CU, DU)
|
|
*...DV :
|
|
ND = 0.102 - 0.017 * S + 0.005 * S2
|
|
AKD = 0.270 - 0.019 * S
|
|
BKD = 0.260
|
|
AD = 2.393 + 6.228 * S - 0.881 * S2
|
|
BD = 46.06 + 4.673 * S - 14.98 * S2 + 1.331 * S3
|
|
CD = 17.83 - 53.47 * S + 21.24 * S2
|
|
DD = 4.081 + 0.976 * S - 0.485 * S2 + 0.152 * S3
|
|
DV = DOR94FV (X, ND, AKD, BKD, AD, BD, CD, DD)
|
|
*...DEL :
|
|
NE = 0.070 + 0.042 * S - 0.011 * S2 + 0.004 * S3
|
|
AKE = 0.409 - 0.007 * S
|
|
BKE = 0.782 + 0.082 * S
|
|
AE = -29.65 + 26.49 * S + 5.429 * S2
|
|
BE = 90.20 - 74.97 * S + 4.526 * S2
|
|
CE = 0.0
|
|
DE = 8.122 + 2.120 * S - 1.088 * S2 + 0.231 * S3
|
|
DEL = DOR94FV (X, NE, AKE, BKE, AE, BE, CE, DE)
|
|
*...UDB :
|
|
ALX = 0.877
|
|
BEX = 0.561
|
|
AKX = 0.275
|
|
BKX = 0.0
|
|
AGX = 0.997
|
|
BGX = 3.210 - 1.866 * S
|
|
CX = 7.300
|
|
DX = 9.010 + 0.896 * DS + 0.222 * S2
|
|
EX = 3.077 + 1.446 * S
|
|
ESX = 3.173 - 2.445 * DS + 2.207 * S
|
|
UDB=DOR94FW(X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX, DX, EX, ESX)
|
|
*...SB :
|
|
ALS = 0.756
|
|
BES = 0.216
|
|
AKS = 1.690 + 0.650 * DS - 0.922 * S
|
|
AS = -4.329 + 1.131 * S
|
|
BS = 9.568 - 1.744 * S
|
|
DST = 9.377 + 1.088 * DS - 1.320 * S + 0.130 * S2
|
|
EST = 3.031 + 1.639 * S
|
|
ESS = 5.837 + 0.815 * S
|
|
SB = DOR94FS (X, S, ALS, BES, AKS, AS, BS, DST, EST, ESS)
|
|
*...GL :
|
|
ALG = 1.014
|
|
BEG = 1.738
|
|
AKG = 1.724 + 0.157 * S
|
|
BKG = 0.800 + 1.016 * S
|
|
AG = 7.517 - 2.547 * S
|
|
BG = 34.09 - 52.21 * DS + 17.47 * S
|
|
CG = 4.039 + 1.491 * S
|
|
DG = 3.404 + 0.830 * S
|
|
EG = -1.112 + 3.438 * S - 0.302 * S2
|
|
ESG = 3.256 - 0.436 * S
|
|
GL =DOR94FW(X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
|
|
RETURN
|
|
END
|
|
*
|
|
*...NLO PARAMETRIZATION (DIS) :
|
|
*
|
|
SUBROUTINE DOR94DI (X, Q2, UV, DV, DEL, UDB, SB, GL)
|
|
IMPLICIT DOUBLE PRECISION (A - Z)
|
|
SAVE
|
|
MU2 = 0.34
|
|
LAM2 = 0.248 * 0.248
|
|
S = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
|
|
DS = SQRT (S)
|
|
S2 = S * S
|
|
S3 = S2 * S
|
|
*...UV :
|
|
NU = 2.484 + 0.116 * S + 0.093 * S2
|
|
AKU = 0.563 - 0.025 * S
|
|
BKU = 0.054 + 0.154 * S
|
|
AU = -0.326 - 0.058 * S - 0.135 * S2
|
|
BU = -3.322 + 8.259 * S - 3.119 * S2 + 0.291 * S3
|
|
CU = 11.52 - 12.99 * S + 3.161 * S2
|
|
DU = 2.808 + 1.400 * S - 0.557 * S2 + 0.119 * S3
|
|
UV = DOR94FV (X, NU, AKU, BKU, AU, BU, CU, DU)
|
|
*...DV :
|
|
ND = 0.156 - 0.017 * S
|
|
AKD = 0.299 - 0.022 * S
|
|
BKD = 0.259 - 0.015 * S
|
|
AD = 3.445 + 1.278 * S + 0.326 * S2
|
|
BD = -6.934 + 37.45 * S - 18.95 * S2 + 1.463 * S3
|
|
CD = 55.45 - 69.92 * S + 20.78 * S2
|
|
DD = 3.577 + 1.441 * S - 0.683 * S2 + 0.179 * S3
|
|
DV = DOR94FV (X, ND, AKD, BKD, AD, BD, CD, DD)
|
|
*...DEL :
|
|
NE = 0.099 + 0.019 * S + 0.002 * S2
|
|
AKE = 0.419 - 0.013 * S
|
|
BKE = 1.064 - 0.038 * S
|
|
AE = -44.00 + 98.70 * S - 14.79 * S2
|
|
BE = 28.59 - 40.94 * S - 13.66 * S2 + 2.523 * S3
|
|
CE = 84.57 - 108.8 * S + 31.52 * S2
|
|
DE = 7.469 + 2.480 * S - 0.866 * S2
|
|
DEL = DOR94FV (X, NE, AKE, BKE, AE, BE, CE, DE)
|
|
*...UDB :
|
|
ALX = 1.215
|
|
BEX = 0.466
|
|
AKX = 0.326 + 0.150 * S
|
|
BKX = 0.956 + 0.405 * S
|
|
AGX = 0.272
|
|
BGX = 3.794 - 2.359 * DS
|
|
CX = 2.014
|
|
DX = 7.941 + 0.534 * DS - 0.940 * S + 0.410 * S2
|
|
EX = 3.049 + 1.597 * S
|
|
ESX = 4.396 - 4.594 * DS + 3.268 * S
|
|
UDB=DOR94FW(X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX, DX, EX, ESX)
|
|
*...SB :
|
|
ALS = 0.175
|
|
BES = 0.344
|
|
AKS = 1.415 - 0.641 * DS
|
|
AS = 0.580 - 9.763 * DS + 6.795 * S - 0.558 * S2
|
|
BS = 5.617 + 5.709 * DS - 3.972 * S
|
|
DST = 13.78 - 9.581 * S + 5.370 * S2 - 0.996 * S3
|
|
EST = 4.546 + 0.372 * S2
|
|
ESS = 5.053 - 1.070 * S + 0.805 * S2
|
|
SB = DOR94FS (X, S, ALS, BES, AKS, AS, BS, DST, EST, ESS)
|
|
*...GL :
|
|
ALG = 1.258
|
|
BEG = 1.846
|
|
AKG = 2.423
|
|
BKG = 2.427 + 1.311 * S - 0.153 * S2
|
|
AG = 25.09 - 7.935 * S
|
|
BG = -14.84 - 124.3 * DS + 72.18 * S
|
|
CG = 590.3 - 173.8 * S
|
|
DG = 5.196 + 1.857 * S
|
|
EG = -1.648 + 3.988 * S - 0.432 * S2
|
|
ESG = 3.232 - 0.542 * S
|
|
GL = DOR94FW(X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
|
|
RETURN
|
|
END
|
|
*
|
|
*...FUNCTIONAL FORMS OF THE PARAMETRIZATIONS :
|
|
*
|
|
FUNCTION DOR94FV (X, N, AK, BK, A, B, C, D)
|
|
IMPLICIT DOUBLE PRECISION (A - Z)
|
|
SAVE
|
|
DX = SQRT (X)
|
|
DOR94FV=N * X**AK * (1.+ A*X**BK + X * (B + C*DX)) * (1.- X)**D
|
|
RETURN
|
|
END
|
|
*
|
|
FUNCTION DOR94FW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
|
|
IMPLICIT DOUBLE PRECISION (A - Z)
|
|
SAVE
|
|
LX = LOG (1./X)
|
|
DOR94FW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
|
|
1 * DEXP (-E + SQRT (ES * S**BE * LX))) * (1.- X)**D
|
|
RETURN
|
|
END
|
|
*
|
|
FUNCTION DOR94FS (X, S, AL, BE, AK, AG, B, D, E, ES)
|
|
IMPLICIT DOUBLE PRECISION (A - Z)
|
|
SAVE
|
|
DX = SQRT (X)
|
|
LX = LOG (1./X)
|
|
DOR94FS = S**AL / LX**AK * (1.+ AG*DX + B*X) * (1.- X)**D
|
|
1 * DEXP (-E + SQRT (ES * S**BE * LX))
|
|
RETURN
|
|
END
|
|
*
|
|
|
|
C---------------- end of file -----------------------------------------
|