Files
geant4/examples/extended/hadronic/Hadr02/dpmjet2_5/dpm25diff.f
T
2016-06-09 16:46:55 +02:00

4001 lines
130 KiB
FortranFixed

*
*===sdiff================================================================*
*
SUBROUTINE SDIFF(EPROJ,PPROJ,KPROJ,NHKKH1,IQQDD)
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine calls one single-diffractive event depending on the *
* single-diffractive cross section for a given hadron-hadron interaction.*
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998,INTMX=2488)
CHARACTER*8 ANAME,ANC
COMMON /DIQI/ IPVQ(248), IPPV1(248), IPPV2(248), ITVQ(248),
& ITTV1(248), ITTV2(248), IPSQ(INTMX),IPSQ2(INTMX),
& IPSAQ(INTMX),IPSAQ2(INTMX),ITSQ(INTMX),ITSQ2(INTMX),
& ITSAQ(INTMX),ITSAQ2(INTMX),KKPROJ(248),KKTARG(248)
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /NUCC/ IT,ITZ,IP,IPZ,IJPROJ,IBPROJ,IJTARG,IBTARG
COMMON /CMHICO/ CMHIS
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DPAR/ ANAME(210),AAM(210),GA(210),TAU(210),IICH(210),
& IIBAR(210),K1(210),K2(210)
COMMON /DIFPAR/ PXC(902), PYC(902),PZC(902),
& HEC(902), AMC(902),ICHC(902),
& IBARC(902),ANC(902),NRC(902)
*----------------- S. Roesler 07/07/93
C COMMON /COUNTEV/NCDIFF,NCSDIF
*---------- S. Roesler 5-11-93
COMMON /IFRAGM/IFRAG
COMMON/XXLMDD/IJLMDD,KDLMDD
COMMON /NUCCMS/GAMV,BGLV,DUMMY(7)
*
DATA NCIREJ /0/
C DATA NCDIFF /0/
DATA SIGDIF,SIGDIH /6.788790702D0,3.631283998D0/
*
IJLMDD= 0
IREJ = 0
KTARG = 0
PPROX = 0.0D0
PPROY = 0.0D0
PPROL = PPROJ
EPRO = EPROJ
AMPRO = AAM(KPROJ)
IF(IPRI.GE.1)WRITE(6,'(A,2E20.8)')' SDIFF:EPROJ,PPROJ ',
* EPROJ,PPROJ
C WRITE(6,'(A,2E20.8)')' SDIFF:EPROJ,PPROJ ',
C * EPROJ,PPROJ
*
DO 10 I=1,IT
IHKK = I+IP
IF (ISTHKK(IHKK).EQ.12) THEN
KTARG = KKTARG(I)
PTARX = PHKK(1,IHKK)
PTARY = PHKK(2,IHKK)
PTARL = PHKK(3,IHKK)
ETAR = PHKK(4,IHKK)
AMTAR = PHKK(5,IHKK)
PTOTX = PPROX + PTARX
PTOTY = PPROY + PTARY
PTOTL = PPROL + PTARL
ETOT = EPRO + ETAR
PTOT = SQRT(PTOTX**2+PTOTY**2+PTOTL**2)
AMTOT = SQRT(ABS(ETOT-PTOT)*(ETOT+PTOT))
GAM = ETOT /(AMTOT)
BGX = PTOTX/(AMTOT)
BGY = PTOTY/(AMTOT)
BGL = PTOTL/(AMTOT)
IF (IPEV.GE.6) THEN
WRITE(LOUT,1000) PPROX,PPROY,PPROL,EPRO,AMPRO,KPROJ
WRITE(LOUT,1001) PTARX,PTARY,PTARL,ETAR,AMTAR,KTARG
WRITE(LOUT,1011) PTOTX,PTOTY,PTOTL,ETOT,AMTOT,KTARG
WRITE(LOUT,1002) AMTOT,GAM,BGX,BGY,BGL
WRITE(LOUT,1702) GAMV,BGLV
1000 FORMAT('SDIFF: PPROX,PPROY,PPROL,EPRO,AMPRO,KPROJ',
& 2E15.5,2E15.5,E15.6,I2)
1001 FORMAT('SDIFF: PTARX,PTARY,PTARL,ETAR,AMTAR,KTARG',
& 5E15.6,I2)
1011 FORMAT('SDIFF: PTOTX,PTOTY,PTOTL,ETOT,AMTOT,KTARG',
& 5E15.6,I2)
1002 FORMAT('SDIFF: AMTOT,GAM,BGX,BGY,BGL',5E15.6)
1702 FORMAT('SDIFF: GAMV,BGLV',2E15.6)
ENDIF
C This is the hadron-hadron cms mot the overall cms
C (due to Fermi momenta)
CALL DALTRA(GAM,-BGX,-BGY,-BGL,PPROX,PPROY,PPROL,EPRO,
& PPCM,PPCMX,PPCMY,PPCML,EPCM)
CALL DALTRA(GAM,-BGX,-BGY,-BGL,PTARX,PTARY,PTARL,ETAR,
& PTCM,PTCMX,PTCMY,PTCML,ETCM)
C Back to lab frame
CALL DALTRA(GAM,BGX,BGY,BGL,PPCMX,PPCMY,PPCML,EPCM,
& PPLA,PPLAX,PPLAY,PPLAL,EPLA)
CALL DALTRA(GAM,BGX,BGY,BGL,PTCMX,PTCMY,PTCML,ETCM,
& PTLA,PTLAX,PTLAY,PTLAL,ETLA)
C And now into the real cms frame
EPCMS=GAMV*EPLA-BGLV*PPLAL
PPLCMS=GAMV*PPLAL-BGLV*EPLA
ETCMS=GAMV*ETLA-BGLV*PTLAL
PTLCMS=GAMV*PTLAL-BGLV*ETLA
IF (IPEV.GE.6) THEN
WRITE(LOUT,1003) PPCM,PPCMX,PPCMY,PPCML,EPCM
WRITE(LOUT,1004) PTCM,PTCMX,PTCMY,PTCML,ETCM
1003 FORMAT('SDIFF: PPCM,PPCMX,PPCMY,PPCML,EPCM',5E15.5)
1004 FORMAT('SDIFF: PTCM,PTCMX,PTCMY,PTCML,ETCM',5E15.5)
WRITE(LOUT,1703) PPLA,PPLAX,PPLAY,PPLAL,EPLA
WRITE(LOUT,1704) PTLA,PTLAX,PTLAY,PTLAL,ETLA
1703 FORMAT('SDIFF: PPLA,PPLAX,PPLAY,PPLAL,EPLA',5E15.5)
1704 FORMAT('SDIFF: PTLA,PTLAX,PTLAY,PTLAL,ETLA',5E15.5)
WRITE(LOUT,1803) PPCM,PPCMX,PPCMY,PPLCMS,EPCMS
WRITE(LOUT,1804) PTCM,PTCMX,PTCMY,PTLCMS,ETCMS
1803 FORMAT('SDIFF: PPCM,PPCMX,PPCMY,PPLCMS,EPCMS',5E15.5)
1804 FORMAT('SDIFF: PTCM,PTCMX,PTCMY,PTLCMS,ETCMS',5E15.5)
ENDIF
COD = PPCML/PPCM
COD2 = COD**2
IF (COD2.GT.0.999999999999D0) COD2 = 0.999999999999D0
SID = SQRT((1.0D0-COD)*(1.0D0+COD))
COF = 1.0D0
SIF = 0.0D0
IF (PPCM*SID.GT.1.0D-9) THEN
COF = PPCMX/(SID*PPCM)
SIF = PPCMY/(SID*PPCM)
ANORF = SQRT(COF**2+SIF**2)
COF = COF/ANORF
SIF = SIF/ANORF
ENDIF
IF (IPEV.GE.6) THEN
WRITE(LOUT,1005) COD,SID,COF,SIF
1005 FORMAT('SDIFF: COD,SID,COF,SIF',4E15.5)
ENDIF
C This is the hadron-hadron cms mot the overall cms
C (due to Fermi momenta)
ECM = EPCM + ETCM
IF (IPEV.GE.6) THEN
WRITE(LOUT,1705)ECM,EPCM,ETCM
1705 FORMAT('SDIFF:ECM,EPCM,ETCM',3E15.5)
ENDIF
C------------------------------------------------------------------
C
C Test J.R.2/94
C
C------------------------------------------------------------------
CALL SIHNDI(ECM,KPROJ,KTARG,SIGDIF,SIGDIH)
C------------------------------------------------------------------
C
C Test J.R.2/94
C
C------------------------------------------------------------------
FAKK=1.9
C ------------------------------------------------------------------
C
C further modification j.r.6.1.95
C
C--------------------------------------------------------------------
IF(ECM.LE.10.D0)THEN
FAKK=1.D0
ELSEIF(ECM.GE.30.D0)THEN
FAKK=1.9D0
ELSE
FAK=(ECM-10.D0)/20.D0
FAKK=1.D0+FAK*0.9D0
ENDIF
AITT=IT
IF((ISINGD.LE.2).AND.(KPROJ.EQ.1.OR.KPROJ.EQ.8))THEN
AADIFF=FAKK*AITT**0.17D0
SIGDIF=AADIFF*SIGDIF
ELSEIF((ISINGD.LE.2).AND.
* ((KPROJ.EQ.13).OR.(KPROJ.EQ.14).OR.(KPROJ.EQ.23)))THEN
AADIFF=FAKK*AITT**0.15D0
SIGDIF=AADIFF*SIGDIF
ELSEIF((ISINGD.LE.2).AND.
* ((KPROJ.EQ.15).OR.(KPROJ.EQ.16).OR.
* (KPROJ.EQ.24).OR.(KPROJ.EQ.25)))THEN
AADIFF=FAKk*AITT**0.13D0
SIGDIF=AADIFF*SIGDIF
ENDIF
C------------------------------------------------------------------
C
SIGIN = DSHNTO(KPROJ,KTARG,ECM)-DSHNEL(KPROJ,KTARG,ECM)
IF (IPEV.GE.6) THEN
WRITE(LOUT,1060)KPROJ,KTARG,ECM,SIGDIF/SIGIN
WRITE(LOUT,1006)SIGDIF,SIGDIF-SIGDIH,SIGDIH,SIGIN
1006 FORMAT('SDIFF: SIGDIF,SIGDIL,SIGDIH,SIGIN',4F10.5)
1060 FORMAT('SDIFF: KPROJ,KTARG,ECM,SIGDIF/SIGIN',2I3,2F10.5)
ENDIF
IFLAGD = 0
R = RNDM(V)
IF ((R.LE.(SIGDIF/SIGIN)).OR.(ISINGD.GE.2)) THEN
C NCDIFF = NCDIFF+1
2000 CONTINUE
C IFLAGD = 1
C j.r.11/98 drop the following two lines
C GAMV=GAM
C BGLV=BGL
R = RNDM(V)
*---------------------- S.Roesler 5/26/93
IF (((R.LT.(SIGDIH/SIGDIF)).OR.(ISINGD.EQ.5).OR.
& (ISINGD.EQ.6)).AND.(ISINGD.LE.6)) THEN
*
*--------------------- call high mass single diffractive event
*
IF(ISINGD.GE.1)THEN
CALL VAHMSD(IHKK,ECM,KPROJ,KTARG,IREJ)
IFLAGD=1
ENDIF
*
ELSE IF((R.GE.(SIGDIH/SIGDIF)).OR.(ISINGD.EQ.7).OR.
& (ISINGD.EQ.8)) THEN
*
*
*--------------------- call low mass single diffractive event
*
C----------------------------------------------------------------
C
C j.r. test 2/94
C
C----------------------------------------------------------------
RRRR=RNDM(VV)
IF(ISINGD.GE.3.AND.ISINGD.LE.6)RRRR=1.D0
IF((RRRR.LE.0.33D0).AND.
* ((KPROJ.EQ.15).OR.(KPROJ.EQ.16).OR.
* (KPROJ.EQ.1).OR.(KPROJ.EQ.8).OR.
* (KPROJ.EQ.13).OR.(KPROJ.EQ.14).OR.(KPROJ.EQ.23).OR.
* (KPROJ.EQ.24).OR.(KPROJ.EQ.25)))THEN
CALL VALMDD(IHKK,ECM,KPROJ,KTARG,IREJ)
IFLAGD=1
ELSE
C----------------------------------------------------------------
IF(ISINGD.GE.1)THEN
CALL VALMSD(IHKK,ECM,KPROJ,KTARG,IREJ)
IFLAGD=1
ENDIF
ENDIF
*
ENDIF
IF (IREJ.GT.0) THEN
NCIREJ = NCIREJ + 1
IF (MOD(NCIREJ,1000).EQ.0) THEN
WRITE(LOUT,1007) NCIREJ
1007 FORMAT('SDIFF: REJECTION, NCIREJ = ',I8)
ENDIF
GOTO 2000
ENDIF
*
IF(IFLAGD.EQ.1)THEN
CALL HADRDI(NAUX,KPROJ,KTARG,NHKKH1)
*
IIHKK = NHKK -NAUX
DO 11 J=1,NAUX
CALL DTRANS(PXC(J),PYC(J),PZC(J),
& COD,SID,COF,SIF,PXX,PYY,PLL)
IIHKK = IIHKK + 1
IF (IPEV.GE.6) THEN
WRITE(LOUT,1008) IIHKK,PXX,PYY,PLL
1008 FORMAT('SDIFF: NHKK,PXX,PYY,PLL',I4,3F10.5)
ENDIF
PHKK(1,IIHKK) = PXX
PHKK(2,IIHKK) = PYY
PHKK(3,IIHKK) = PLL
C IF (CMHIS.EQ.0.0D0) THEN
C CALL DALTRA(GAM,BGX,BGY,BGL,PXX,PYY,PLL,HEC(J),
C & PLAB,PHKK(1,IIHKK),PHKK(2,IIHKK),
C & PHKK(3,IIHKK),PHKK(4,IIHKK))
C Test j.r. 11/98
C---------------------------------------------------------------
C Back to lab frame
C DO 1277 III=NHKKH1,NHKK
III=IIHKK
IF(ISTHKK(III).EQ.1)THEN
CALL DALTRA(GAM,BGX,BGY,BGL,PHKK(1,III),PHKK(2,III),
& PHKK(3,III),PHKK(4,III),
& PPLA,PPLAX,PPLAY,PPLAL,EPLA)
C And now into the real cms frame
EPCMS=GAMV*EPLA-BGLV*PPLAL
PPLCMS=GAMV*PPLAL-BGLV*EPLA
PHKK(1,III)=PPLAX
PHKK(2,III)=PPLAY
PHKK(3,III)=PPLCMS
PHKK(4,III)=EPCMS
IF (IPEV.GE.6) THEN
WRITE(LOUT,1903) PPLCMS,EPCMS
1903 FORMAT('SDIFF TEST cms: PPLCMS,EPCMS',2E15.5)
ENDIF
ENDIF
C1277 CONTINUE
C---------------------------------------------------------------
IF (IPEV.GE.6) THEN
WRITE(LOUT,1009) IIHKK,
& PHKK(1,IIHKK),PHKK(2,IIHKK),PHKK(3,IIHKK),
& PHKK(4,IIHKK)
1009 FORMAT('SDIFF: NHKK,PHKK(1..4)',I4,4E15.5)
ENDIF
C ENDIF
11 CONTINUE
ENDIF
ENDIF
ENDIF
10 CONTINUE
IF (KTARG.EQ.0) WRITE(LOUT,*)'SDIFF: NO INTERACTION'
9999 CONTINUE
RETURN
END
*
*===vahmsd===============================================================*
*
SUBROUTINE VAHMSD(ITAPOI,ECM,KPROJ,KTARG,IREJ)
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine selects x-values, flavors and 4-momenta of partons *
* in high-mass single diffractive chains. *
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998)
CHARACTER*8 ANAME
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /ABRDIF/ XDQ1,XDQ2,XDDQ1,XDDQ2,
& IKVQ1,IKVQ2,IKD1Q1,IKD2Q1,IKD1Q2,IKD2Q2,
& IDIFFP,IDIFAP,
& AMDCH1,AMDCH2,AMDCH3,GAMDC1,GAMDC2,GAMDC3,
& PGXVC1,PGYVC1,PGZVC1,PGXVC2,PGYVC2,PGZVC2,
& PGXVC3,PGYVC3,PGZVC3,NDCH1,NDCH2,NDCH3,
& IKDCH1,IKDCH2,IKDCH3,
& PDQ1(4),PDQ2(4),PDD1(4),PDD2(4),PDFQ1(4)
COMMON /DPAR/ ANAME(210),AM(210),GA(210),TAU(210),ICH(210),
& IBAR(210),K1(210),K2(210)
COMMON /TRAFOP/ GAMP,BGAMP,BETP
COMMON /ENERIN/ EPROJ,ETARG
COMMON /SDFLAG/ ISD
COMMON /XDIDID/XDIDI
*
DIMENSION MQUARK(3,30),IHKKQ(-6:6),IHKKQQ(-3:3,-3:3),
& IDX(-4:4)
DATA IDX /-4,-3,-1,-2,0,2,1,3,4/
DATA IHKKQ /-6,-5,-4,-3,-1,-2,0,2,1,3,4,5,6/
DATA IHKKQQ/-3301,-3103,-3203,0, 0,0,0,
& -3103,-1103,-2103,0, 0, 0, 0,
& -3203,-2103,-2203,0, 0, 0, 0,
& 0, 0, 0,0, 0, 0, 0,
& 0, 0, 0,0,2203,2103,3202,
& 0, 0, 0,0,2103,1103,3103,
& 0, 0, 0,0,3203,3103,3303/
*
*----------------------------------- quark content of hadrons:
* 1, 2, 3, 4 - u, d, s, c
* -1,-2,-3,-4 - au,ad,as,ac
*
DATA MQUARK/
& 1,1,2, -1,-1,-2, 0,0,0, 0,0,0, 0,0,0,
& 0,0,0, 0,0,0, 1,2,2, -1,-2,-2, 0,0,0,
& 0,0,0, 0,0,0, 1,-2,0, 2,-1,0, 1,-3,0,
& 3,-1,0, 1,2,3, -1,-2,-3, 0,0,0, 2,2,3,
& 1,1,3, 1,2,3, 1,-1,0, 2,-3,0, 3,-2,0,
& 2,-2,0, 3,-3,0, 0,0,0, 0,0,0, 0,0,0/
DATA UNON/2.0/
DATA NCREJ, NCXDI, NCXP, NCXT /0, 0, 0, 0/
*
ISD = 1
IREJ = 0
IIREJ = 0
EPROJ = (AM(KPROJ)**2-AM(KTARG)**2+ECM**2)/(2.0D0*ECM)
ETARG = (AM(KTARG)**2-AM(KPROJ)**2+ECM**2)/(2.0D0*ECM)
IF(IPEV.GE.2) WRITE(LOUT,1001) EPROJ,ETARG
1001 FORMAT('VAHMSD: EPROJ,ETARG ',2F10.5)
IBPROJ = IBAR(KPROJ)
IBTARG = IBAR(KTARG)
IF (IBTARG.LE.0) THEN
WRITE(LOUT,1002) IBTARG
1002 FORMAT('VAHMSD: NO HMSD FOR TARGET WITH BARYON-CHARGE',I4)
IIREJ=1
GOTO 9999
ENDIF
IQP1 = MQUARK(1,KPROJ)
IQP2 = MQUARK(2,KPROJ)
IQP3 = MQUARK(3,KPROJ)
IQT1 = MQUARK(1,KTARG)
IQT2 = MQUARK(2,KTARG)
IQT3 = MQUARK(3,KTARG)
IF(IPEV.GE.2) WRITE(LOUT,1003)
& IBPROJ,IBTARG,IQP1,IQP2,IQP3,IQT1,IQT2,IQT3
1003 FORMAT('VAHMSD: IBPROJ,IBTARG,IQP1,IQP2,IQP3,IQT1,IQT2,IQT3 ',8I4)
*
IF (IBPROJ.NE.0) THEN
*
*-------------------- q-qq (aq-aqaq) - flavors of projectile (baryon)
*
ISAM = 1.0D0+2.999D0*RNDM(V)
GOTO (10,11,12) ISAM
10 CONTINUE
IQP = IQP1
IDIQP1 = IQP2
IDIQP2 = IQP3
GOTO 13
11 CONTINUE
IQP = IQP2
IDIQP1 = IQP1
IDIQP2 = IQP3
GOTO 13
12 CONTINUE
IQP = IQP3
IDIQP1 = IQP1
IDIQP2 = IQP2
13 CONTINUE
*
ELSE IF (IBPROJ.EQ.0) THEN
*
*-------------------- q-aq - flavors of projectile (meson)
*
ISAM = 1.0D0+1.999D0*RNDM(V)
GOTO (14,15) ISAM
14 CONTINUE
IQP = IQP1
IDIQP1 = IQP2
GOTO 16
15 CONTINUE
IQP = IQP2
IDIQP1 = IQP1
16 CONTINUE
IDIQP2 = 0
*
ENDIF
*
*-------------------- q-qq - flavors of target (baryon)
*
ISAM = 1.0D0+2.999D0*RNDM(V)
GOTO (17,18,19) ISAM
17 CONTINUE
IQT = IQT1
IDIQT1 = IQT2
IDIQT2 = IQT3
GOTO 20
18 CONTINUE
IQT = IQT2
IDIQT1 = IQT1
IDIQT2 = IQT3
GOTO 20
19 CONTINUE
IQT = IQT3
IDIQT1 = IQT1
IDIQT2 = IQT2
20 CONTINUE
*
IKVQ1 = IQP
IKD1Q1 = IDIQP1
IKD2Q1 = IDIQP2
*
IKVQ2 = IQT
IKD1Q2 = IDIQT1
IKD2Q2 = IDIQT2
*
IF (IPEV.GE.2) WRITE(LOUT,1004)
& IKVQ1,IKD1Q1,IKD2Q1,IKVQ2,IKD1Q2,IKD2Q2
1004 FORMAT('VAHMSD: IKVQ1,IKD1Q1,IKD2Q1,IKVQ2,IKD1Q2,IKD2Q2 ',6I4)
*
*-------------------- q-aq - flavors of diffractive parton
*
IDIFFP = 1.0D0+2.3D0*RNDM(V)
IDIFAP = -IDIFFP
IF (IPEV.GE.2) WRITE(LOUT,1005) IDIFFP,IDIFAP
1005 FORMAT('VAHMSD: IDIFFP,IDIFAP ',2I4)
*
*-------------------- IDIFTP = 1 target (backward) hadron excited
* IDIFTP = 2 projectile (forward) hadron excited
*
IDIFTP = 1.0D0+1.999D0*RNDM(V)
*----------------------- S.Roesler 5/26/93
IF ((ISINGD.EQ.3).OR.(ISINGD.EQ.5)) IDIFTP = 1
IF ((ISINGD.EQ.4).OR.(ISINGD.EQ.6)) IDIFTP = 2
*
IF (IPEV.GE.2) WRITE(LOUT,1006) IDIFTP
1006 FORMAT('VAHMSD: IDIFTP ',I4)
IF ((IDIFTP.NE.1).AND.(IDIFTP.NE.2)) THEN
IF (IPEV.GE.2) WRITE(LOUT,'(A19)') 'VAHMSD-ERROR: IDIFTP'
GOTO 9999
ENDIF
*
*-------------------- momentum fractions of quarks and diquarks
*
XXMAX = 0.8D0
30 CONTINUE
XP = DBETAR(0.5D0,UNON)
IF (XP.GE.XXMAX) THEN
NCXP = NCXP+1
IF(MOD(NCXP,500).EQ.0) WRITE(LOUT,1007) NCXP
1007 FORMAT('VAHMSD: INEFFICIENT XP-SELECTION, NCXP=',I8)
GOTO 30
ENDIF
XXP = 1.0D0-XP
31 CONTINUE
XT = DBETAR(0.5D0,UNON)
IF (XT.GE.XXMAX) THEN
NCXT = NCXT+1
IF(MOD(NCXT,2500).EQ.0) WRITE(LOUT,1008) NCXT
1008 FORMAT('VAHMSD: INEFFICIENT XT-SELECTION, NCXT=',I8)
GOTO 31
ENDIF
XXT = 1.0D0-XT
IF (IPEV.GE.2) WRITE(LOUT,1010) XP,XXP,XT,XXT
1010 FORMAT('VAHMSD: XP,XXP,XT,XXT ',4D10.5)
*-------------------- x - values of diffractive partons
*
NCXDI = 0
32 CONTINUE
R = RNDM(V)
IF (IDIFTP.EQ.1) THEN
XDIMIN = (3.0D0+400.0D0*(R**2))/(4.0D0*(ETARG**2)*XXT)
IF (ECM.LE.300.0D0) THEN
RR = (1.0D0-EXP(-((ECM/140.0D0)**4)))
XDIMIN = (3.0D0+400.0D0*(R**2)*RR)/(4.0D0*(ETARG**2)*XXT)
ENDIF
ELSE IF (IDIFTP.EQ.2) THEN
XDIMIN = (3.0D0+400.0D0*(R**2))/(4.0D0*(EPROJ**2)*XXP)
IF (ECM.LE.300.0D0) THEN
RR = (1.0D0-EXP(-((ECM/140.0D0)**4)))
XDIMIN = (3.0D0+400.0D0*(R**2)*RR)/(4.0D0*(EPROJ**2)*XXP)
ENDIF
ENDIF
C-----------------------------------------------------------------
C original version
C-----------------------------------------------------------------
C XDIMAX = 0.05D0
C IF (ECM.LE.1000.0D0) THEN
C XDIMAX = 0.05D0*(1.0D0+EXP(-((ECM/420.0D0)**2)))
C IF (IBPROJ.EQ.0) XDIMAX = 0.05D0*
CC---------------- change mass-cuts
CC & (1.0D0+4.0D0*EXP(-((ECM/420.0D0)**2)))
C & (1.0D0+2.0D0*EXP(-((ECM/420.0D0)**2)))
C ENDIF
C-----------------------------------------------------------------
C-----------------------------------------------------------------
C version j.r.28.1.94
C extend diffraction beyond limits of single diffractive experiments
C-----------------------------------------------------------------
XDIMAA = 0.15D0
XDIMAX = XDIMAA
IF (ECM.LE.10000.0D0) THEN
XDIMAX = XDIMAA*(1.0D0+EXP(-((ECM/420.0D0)**2)))
IF (IBPROJ.EQ.0) XDIMAX = XDIMAA*
C----------------- change mass-cuts
C & (1.0D0+4.0D0*EXP(-((ECM/420.0D0)**2)))
& (1.0D0+2.0D0*EXP(-((ECM/420.0D0)**2)))
ENDIF
C-----------------------------------------------------------------
40 CONTINUE
IF (XDIMIN.GE.XDIMAX) THEN
NCXDI = NCXDI+1
IF (NCXDI.EQ.200) GOTO 9999
GOTO 32
ENDIF
XDITOT = SAMPEY(XDIMIN,XDIMAX)
R = RNDM(V)**6
DX = XDITOT-XDIMIN
XDI = DX*R
C IF (XDI.LT.XMINQ1) THEN
C NCXDI = NCXDI+1
C IF (MOD(NCXDI,2000).EQ.0) WRITE(LOUT,1011) NCXDI
C1011 FORMAT('VAHMSD: INEFFICIENT XDI-SELECTION, NCXDI=',I8)
C GOTO 40
C ENDIF
XXDI = XDIMIN+(1.0D0-R)*DX
IF (IDIFTP.EQ.1) THEN
XXP = XXP-XDI-XXDI
IF (XXP.LT.8.0D-2) GOTO 9999
ELSE IF (IDIFTP.EQ.2) THEN
XXT = XXT-XDI-XXDI
IF (XXT.LT.8.0D-2) GOTO 9999
ENDIF
IF (IPEV.GE.2) WRITE(LOUT,1012) XP,XXP,XT,XXT,XDI,XXDI
1012 FORMAT('VAHMSD: XP,XXP,XT,XXT,XDI,XXDI ',6F10.5)
XDIDI=XDI+XXDI
AMDIDI=SQRT(XDIDI*ECM**2)
IF(IPEV.GE.2)WRITE(LOUT,*)'HM AMDIDI,XDIDI ',AMDIDI,XDIDI
*
*-------------------- kinematical parameters of three chains in CMS
*
IF ((IBPROJ.EQ.-1).AND.(IDIFTP.EQ.1)) THEN
*
*-------------------- target: baryon, projectile: antibaryon
* (excited)
*
XDIFAP = XDI
XDIFFP = XXDI
CALL DIFFCH (XDIFAP, IDIFAP, XT, IKVQ2, 99,
& XDIFFP, IDIFFP, XXT, XXP, ETARG,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, EPROJ, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFFP, IDIFFP, XXT, IKD1Q2, IKD2Q2,
& DUM, IDUM, DUM, XXP, ETARG,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, EPROJ, NUNO, IIREJ, 2)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH ( XP, IKVQ1, XXP, IKD1Q1, IKD2Q1,
& DUM, IDUM, DUM, DUM, EPROJ,
& AMDCH3, ECH3, PCH3, GAMDC3, PGVC3,
& NDCH3, IDUM, DUM, NUNO, IIREJ, 3)
IF (IIREJ.EQ.1) GOTO 9999
*
*
ELSE IF ((IBPROJ.EQ.-1).AND.(IDIFTP.EQ.2)) THEN
*
*-------------------- target: baryon, projectile: antibaryon
* (excited)
*
XDIFAP = XXDI
XDIFFP = XDI
CALL DIFFCH (XDIFFP, IDIFFP, XP, IKVQ1, 99,
& XDIFAP, IDIFAP, XXP, XXT, EPROJ,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, ETARG, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFAP, IDIFAP, XXP, IKD1Q1, IKD2Q1,
& DUM, IDUM, DUM, XXT, EPROJ,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, ETARG, NUNO, IIREJ, 2)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH ( XT, IKVQ2, XXT, IKD1Q2, IKD2Q2,
& DUM, IDUM, DUM, DUM, ETARG,
& AMDCH3, ECH3, PCH3, GAMDC3, PGVC3,
& NDCH3, IDUM, DUM, NUNO, IIREJ, 3)
IF (IIREJ.EQ.1) GOTO 9999
*
*
ELSE IF ((IBPROJ.EQ.0).AND.(IDIFTP.EQ.1)) THEN
*
*-------------------- target: baryon, projectile: meson
* (excited)
*
XDIFAP = XDI
XDIFFP = XXDI
CALL DIFFCH (XDIFAP, IDIFAP, XT, IKVQ2, 99,
& XDIFFP, IDIFFP, XXT, XXP, ETARG,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, EPROJ, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFFP, IDIFFP, XXT, IKD1Q2, IKD2Q2,
& DUM, IDUM, DUM, XXP, ETARG,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, EPROJ, NUNO, IIREJ, 2)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH ( XP, IKVQ1, XXP, IKD1Q1, 99,
& DUM, IDUM, DUM, DUM, EPROJ,
& AMDCH3, ECH3, PCH3, GAMDC3, PGVC3,
& NDCH3, IDUM, DUM, NUNO, IIREJ, 3)
IF (IIREJ.EQ.1) GOTO 9999
*
*
ELSEIF ((IBPROJ.EQ.0).AND.(IDIFTP.EQ.2)) THEN
*
*-------------------- target: baryon, projectile: meson
* (excited)
*
IF (IKD1Q1.LT.0) THEN
XDIFAP = XDI
XDIFFP = XXDI
CALL DIFFCH (XDIFAP, IDIFAP, XP, IKVQ1, 99,
& XDIFFP, IDIFFP, XXP, XXT, EPROJ,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, ETARG, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFFP, IDIFFP, XXP, IKD1Q1, 99,
& XDIFAP, IDIFAP, XP, XXT, EPROJ,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, ETARG, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
ELSE
XDIFAP = XXDI
XDIFFP = XDI
CALL DIFFCH (XDIFFP, IDIFFP, XP, IKVQ1, 99,
& XDIFAP, IDIFAP, XXP, XXT, EPROJ,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, ETARG, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFAP, IDIFAP, XXP, IKD1Q1, 99,
& XDIFFP, IDIFFP, XP, XXT, EPROJ,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, ETARG, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
ENDIF
CALL DIFFCH ( XT, IKVQ2, XXT, IKD1Q2, IKD2Q2,
& DUM, IDUM, DUM, DUM, ETARG,
& AMDCH3, ECH3, PCH3, GAMDC3, PGVC3,
& NDCH3, IDUM, DUM, NUNO, IIREJ, 3)
IF (IIREJ.EQ.1) GOTO 9999
*
*
ELSEIF ((IBPROJ.EQ.1).AND.(IDIFTP.EQ.1)) THEN
*
*-------------------- target: baryon, projectile: baryon
* (excited)
*
XDIFAP = XDI
XDIFFP = XXDI
CALL DIFFCH (XDIFAP, IDIFAP, XT, IKVQ2, 99,
& XDIFFP, IDIFFP, XXT, XXP, ETARG,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, EPROJ, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFFP, IDIFFP, XXT, IKD1Q2, IKD2Q2,
& DUM, IDUM, DUM, XXP, ETARG,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, EPROJ, NUNO, IIREJ, 2)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH ( XP, IKVQ1, XXP, IKD1Q1, IKD2Q1,
& DUM, IDUM, DUM, DUM, EPROJ,
& AMDCH3, ECH3, PCH3, GAMDC3, PGVC3,
& NDCH3, IDUM, DUM, NUNO, IIREJ, 3)
IF (IIREJ.EQ.1) GOTO 9999
*
*
ELSE IF ((IBPROJ.EQ.1).AND.(IDIFTP.EQ.2)) THEN
*
*-------------------- target: baryon, projectile: baryon
* (excited)
*
XDIFAP = XDI
XDIFFP = XXDI
CALL DIFFCH (XDIFAP, IDIFAP, XP, IKVQ1, 99,
& XDIFFP, IDIFFP, XXP, XXT, EPROJ,
& AMDCH1, ECH1, PCH1, GAMDC1, PGVC1,
& NDCH1, IKDCH1, ETARG, NUNO, IIREJ, 1)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH (XDIFFP, IDIFFP, XXP, IKD1Q1, IKD2Q1,
& DUM, IDUM, DUM, XXT, EPROJ,
& AMDCH2, ECH2, PCH2, GAMDC2, PGVC2,
& NDCH2, IKDCH2, ETARG, NUNO, IIREJ, 2)
IF (IIREJ.EQ.1) GOTO 9999
CALL DIFFCH ( XT, IKVQ2, XXT, IKD1Q2, IKD2Q2,
& DUM, IDUM, DUM, DUM, ETARG,
& AMDCH3, ECH3, PCH3, GAMDC3, PGVC3,
& NDCH3, IDUM, DUM, NUNO, IIREJ, 3)
IF (IIREJ.EQ.1) GOTO 9999
*
ENDIF
*
*-------------------- store results in common block /ABRDIF/
*
XDQ1 = XP
XDQ2 = XT
XDDQ1 = XXP
XDDQ2 = XXT
*
IF (IPEV.GE.2) THEN
WRITE(LOUT,1013) AMDCH1,ECH1,PCH1,GAMDC1,PGVC1,IKDCH1,NDCH1
1013 FORMAT('VAHMSD: AMDCH1,ECH1,PCH1,GAMDC1,PGVC1,IKDCH1,NDCH1 ',
& 5F10.5,2I4)
WRITE(LOUT,1014) AMDCH2,ECH2,PCH2,GAMDC2,PGVC2,IKDCH2,NDCH2
1014 FORMAT('VAHMSD: AMDCH2,ECH2,PCH2,GAMDC2,PGVC2,IKDCH2,NDCH2 ',
& 5F10.5,2I4)
WRITE(LOUT,1015) AMDCH3,ECH3,PCH3,GAMDC3,PGVC3,NDCH3
1015 FORMAT('VAHMSD: AMDCH3,ECH3,PCH3,GAMDC3,PGVC3,NDCH3 ',
& 5F10.5,I4)
ENDIF
*
*-------------------- select transverse momenta
*
IF (IDIFTP.EQ.1) THEN
CALL DIFFPT( ECH1, PCH1, XDIFAP, XT,
& ECH2, PCH2, XDIFFP, XXT,
& ECH3, PCH3, EPROJ, KPROJ,
& ETARG, EPROJ, IIREJ)
ELSE IF (IDIFTP.EQ.2) THEN
IF ((IBPROJ.LT.0).OR.(IKVQ1.LT.0)) THEN
CALL DIFFPT( ECH1, PCH1, XDIFFP, XP,
& ECH2, PCH2, XDIFAP, XXP,
& ECH3, PCH3, ETARG, KTARG,
& EPROJ, ETARG, IIREJ)
ELSE
CALL DIFFPT( ECH1, PCH1, XDIFAP, XP,
& ECH2, PCH2, XDIFFP, XXP,
& ECH3, PCH3, ETARG, KTARG,
& EPROJ, ETARG, IIREJ)
ENDIF
ENDIF
IF (IIREJ.EQ.1) GOTO 9999
*
*-------------------- store results in common-block /HKKEVT/
*
* partonen of projectile
*
NHKK = NHKK+1
ISTHKK(NHKK) = 21
IDHKK (NHKK) = IHKKQ(IDX(IKVQ1))
JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = 0.0D0
PHKK (2,NHKK) = 0.0D0
PHKK (3,NHKK) = XDQ1
PHKK (4,NHKK) = XDQ1
PHKK (5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,1)
VHKK (2,NHKK) = VHKK(2,1)
VHKK (3,NHKK) = VHKK(3,1)
VHKK (4,NHKK) = VHKK(4,1)
*
NHKK = NHKK+1
ISTHKK(NHKK) = 21
IDHKK (NHKK) = IHKKQQ(IDX(IKD1Q1),IDX(IKD2Q1))
JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = 0.0D0
PHKK (2,NHKK) = 0.0D0
PHKK (3,NHKK) = XDDQ1
PHKK (4,NHKK) = XDDQ1
PHKK (5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,1)
VHKK (2,NHKK) = VHKK(2,1)
VHKK (3,NHKK) = VHKK(3,1)
VHKK (4,NHKK) = VHKK(4,1)
*
* partonen of target
*
NHKK = NHKK+1
ISTHKK(NHKK) = 22
IDHKK (NHKK) = IHKKQ(IDX(IKVQ2))
JMOHKK(1,NHKK) = ITAPOI
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = 0.0D0
PHKK (2,NHKK) = 0.0D0
PHKK (3,NHKK) = XDQ2
PHKK (4,NHKK) = XDQ2
PHKK (5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,ITAPOI)
VHKK (2,NHKK) = VHKK(2,ITAPOI)
VHKK (3,NHKK) = VHKK(3,ITAPOI)
VHKK (4,NHKK) = VHKK(4,ITAPOI)
*
NHKK = NHKK+1
ISTHKK(NHKK) = 22
IDHKK (NHKK) = IHKKQQ(IDX(IKD1Q2),IDX(IKD2Q2))
JMOHKK(1,NHKK) = ITAPOI
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = 0.0D0
PHKK (2,NHKK) = 0.0D0
PHKK (3,NHKK) = XDDQ2
PHKK (4,NHKK) = XDDQ2
PHKK (5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,ITAPOI)
VHKK (2,NHKK) = VHKK(2,ITAPOI)
VHKK (3,NHKK) = VHKK(3,ITAPOI)
VHKK (4,NHKK) = VHKK(4,ITAPOI)
*
* sea q-aq pair
*
NHKK = NHKK+1
ISTHKK(NHKK) = 30+IDIFTP
IDHKK (NHKK) = IHKKQ(IDX(IDIFFP))
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = 1
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = ITAPOI
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = 0.0D0
PHKK (2,NHKK) = 0.0D0
PHKK (3,NHKK) = XXDI
PHKK (4,NHKK) = XXDI
PHKK (5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
NHKK = NHKK+1
ISTHKK(NHKK) = 30+IDIFTP
IDHKK (NHKK) = IHKKQ(IDX(IDIFAP))
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = 1
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = ITAPOI
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = 0.0D0
PHKK (2,NHKK) = 0.0D0
PHKK (3,NHKK) = XDI
PHKK (4,NHKK) = XDI
PHKK (5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
* ends of chain 1
*
NHKK = NHKK+1
ISTHKK(NHKK) = 123-IDIFTP
IND = NHKK-2-2*IDIFTP
IDHKK (NHKK) = IDHKK(IND)
JMOHKK(1,NHKK) = IND
JMOHKK(2,NHKK) = JMOHKK(1,IND)
JDAHKK(1,NHKK) = NHKK+2
JDAHKK(2,NHKK) = NHKK+2
PHKK (1,NHKK) = PDQ1(1)
PHKK (2,NHKK) = PDQ1(2)
PHKK (3,NHKK) = PDQ1(3)
PHKK (4,NHKK) = PDQ1(4)
PHKK (5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,IND)+XXPP
VHKK (2,NHKK) = VHKK(2,IND)+YYPP
VHKK (3,NHKK) = VHKK(3,IND)
VHKK (4,NHKK) = VHKK(4,IND)
*
NHKK = NHKK+1
ISTHKK(NHKK) = 130+IDIFTP
IF (IDHKK(NHKK-1).GT.0) JMOHKK(1,NHKK) = NHKK-2
IF (IDHKK(NHKK-1).LE.0) JMOHKK(1,NHKK) = NHKK-3
JMOHKK(2,NHKK) = JMOHKK(1,NHKK-3)
JDAHKK(1,NHKK) = NHKK+1
JDAHKK(2,NHKK) = NHKK+1
IDHKK (NHKK) = IDHKK(JMOHKK(1,NHKK))
PHKK (1,NHKK) = PDD2(1)
PHKK (2,NHKK) = PDD2(2)
PHKK (3,NHKK) = PDD2(3)
PHKK (4,NHKK) = PDD2(4)
PHKK (5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))+XXPP
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))+YYPP
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
* chain 1
*
NHKK = NHKK+1
ISTHKK(NHKK) = 199
IDHKK (NHKK) = 88888
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = NHKK-1
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (5,NHKK) = AMDCH1
VHKK (1,NHKK) = VHKK(1,NHKK-1)
VHKK (2,NHKK) = VHKK(2,NHKK-1)
VHKK (3,NHKK) = VHKK(3,NHKK-1)
IF ((BETP.NE.0.0D0).AND.(BGAMP.NE.0.0D0))
&VHKK (4,NHKK) = VHKK(3,NHKK)/BETP-VHKK(3,NHKK-2)/BGAMP
*
* ends of chain 2
*
NHKK = NHKK+1
ISTHKK(NHKK) = 123-IDIFTP
IND = NHKK-4-2*IDIFTP
IDHKK (NHKK) = IDHKK(IND)
JMOHKK(1,NHKK) = IND
JMOHKK(2,NHKK) = JMOHKK(1,IND)
JDAHKK(1,NHKK) = NHKK+2
JDAHKK(2,NHKK) = NHKK+2
PHKK (1,NHKK) = PDD1(1)
PHKK (2,NHKK) = PDD1(2)
PHKK (3,NHKK) = PDD1(3)
PHKK (4,NHKK) = PDD1(4)
PHKK (5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,IND)+XXPP
VHKK (2,NHKK) = VHKK(2,IND)+YYPP
VHKK (3,NHKK) = VHKK(3,IND)
VHKK (4,NHKK) = VHKK(4,IND)
*
NHKK = NHKK+1
ISTHKK(NHKK) = 130+IDIFTP
JMOHKK(1,NHKK) = 2*NHKK-11-JMOHKK(1,NHKK-3)
JMOHKK(2,NHKK) = JMOHKK(1,NHKK-6)
JDAHKK(1,NHKK) = NHKK+1
JDAHKK(2,NHKK) = NHKK+1
IDHKK (NHKK) = IDHKK(JMOHKK(1,NHKK))
PHKK (1,NHKK) = PDQ2(1)
PHKK (2,NHKK) = PDQ2(2)
PHKK (3,NHKK) = PDQ2(3)
PHKK (4,NHKK) = PDQ2(4)
PHKK (5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK-6))+XXPP
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK-6))+YYPP
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK-6))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK-6))
*
* chain 2
*
NHKK = NHKK+1
ISTHKK(NHKK) = 199
IDHKK (NHKK) = 88888
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = NHKK-1
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (5,NHKK) = AMDCH2
VHKK (1,NHKK) = VHKK(1,NHKK-1)
VHKK (2,NHKK) = VHKK(2,NHKK-1)
VHKK (3,NHKK) = VHKK(3,NHKK-1)
IF ((BETP.NE.0.0D0).AND.(BGAMP.NE.0.0D0))
&VHKK (4,NHKK) = VHKK(3,NHKK)/BETP-VHKK(3,NHKK-2)/BGAMP
*
* diffractive nucleon
*
NHKK = NHKK+1
ISTHKK(NHKK) = 199
IDHKK (NHKK) = 88888
JMOHKK(1,NHKK) = NHKK-14+2*IDIFTP
JMOHKK(2,NHKK) = NHKK-13+2*IDIFTP
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK (1,NHKK) = PDFQ1(1)
PHKK (2,NHKK) = PDFQ1(2)
PHKK (3,NHKK) = PDFQ1(3)
PHKK (4,NHKK) = PDFQ1(4)
PHKK (5,NHKK) = AMDCH3
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
C WRITE(6,*)' Diffr. Nucleon'
C *,PHKK(3,NHKK),PHKK(4,NHKK),PHKK(5,NHKK)
*
*---------- S. Roesler 21-10-93
* check energy-momentum conservation
IF (IPEV.GE.2) THEN
PX = PDQ1(1)+PDQ2(1)+PDD1(1)+PDD2(1)+PDFQ1(1)
PY = PDQ1(2)+PDQ2(2)+PDD1(2)+PDD2(2)+PDFQ1(2)
PZ = PDQ1(3)+PDQ2(3)+PDD1(3)+PDD2(3)+PDFQ1(3)
EE = ECM-(PDQ1(4)+PDQ2(4)+PDD1(4)+PDD2(4)+PDFQ1(4))
WRITE(LOUT,*)'VAHMSD: ENERGY-MOMENTUM-CHECK (PX,PY,PZ,E)'
WRITE(LOUT,'(5F12.6)')PX,PY,PZ,EE,ECM
ENDIF
*
RETURN
*
9999 CONTINUE
NCREJ = NCREJ+1
IF (MOD(NCREJ,2500).EQ.0) WRITE(LOUT,9900) NCREJ
9900 FORMAT('REJECTION IN VAHMSD ',I10)
IIREJ = 0
IREJ = 1
RETURN
END
*
*===diffpt===============================================================*
*
SUBROUTINE DIFFPT( ECH1, PCH1, XDICH1, XCH1,
& ECH2, PCH2, XDICH2, XCH2,
& ECH3, PCH3, ECH3I, KCH3I,
& EE, EES, IIREJ)
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine is called by VAHMSD (HMSD), selects the transverse *
* momenta of the chains and the diffractive nucleon. *
* The results are stored in the common-block ABRDIF. *
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998)
CHARACTER*8 ANAME
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /ABRDIF/ XDQ1,XDQ2,XDDQ1,XDDQ2,
& IKVQ1,IKVQ2,IKD1Q1,IKD2Q1,IKD1Q2,IKD2Q2,
& IDIFFP,IDIFAP,
& AMDCH1,AMDCH2,AMDCH3,GAMDC1,GAMDC2,GAMDC3,
& PGXVC1,PGYVC1,PGZVC1,PGXVC2,PGYVC2,PGZVC2,
& PGXVC3,PGYVC3,PGZVC3,NDCH1,NDCH2,NDCH3,
& IKDCH1,IKDCH2,IKDCH3,
& PDQ1(4),PDQ2(4),PDD1(4),PDD2(4),PDFQ1(4)
COMMON /DPAR/ ANAME(210),AM(210),GA(210),TAU(210),ICH(210),
& IBAR(210),K1(210),K2(210)
DATA NCPT /0/
*
PCH3I = SIGN(SQRT((ECH3I-AM(KCH3I))*(ECH3I+AM(KCH3I))),PCH3)
*
*-------------------- select transverse momenta - diffractive particle
*
TTTMIN = (ECH3-ECH3I)**2-(PCH3-PCH3I)**2
10 CONTINUE
*
XDIFF = XDICH1+XDICH2
BTP0 = 3.7D0
ALPH = 0.24D0
SLOPE = BTP0-2.0D0*ALPH*LOG(XDIFF)
Y = RNDM(V)
TTT = -LOG(1.0D0-Y)/SLOPE
IF (IPEV.GE.2) THEN
WRITE(LOUT,1009) SLOPE,TTT
1009 FORMAT('VAHMSD/DIFFPT: SLOPE,TTT ',2E10.5)
ENDIF
*
IF (TTT.LE.ABS(TTTMIN)) GOTO 10
TTT = -ABS(TTT)
IF (IPEV.GE.2) WRITE(LOUT,1000) PCH3I,TTTMIN,TTT
1000 FORMAT('VAHMSD/DIFFPT: PCH3I,TTTMIN,TTT ',3F10.5)
PCH3F = ABS(TTT-(ECH3-ECH3I)**2+PCH3**2+PCH3I**2)/(2*PCH3I)
IF ((PCH3**2).LE.(PCH3F**2)) THEN
NCPT = NCPT+1
IF(MOD(NCPT,5000).EQ.0) WRITE(LOUT,1001) NCPT
1001 FORMAT('VAHMSD/DIFFPT: INEFFICIENT PT-SELECTION 1, NCPT=',I8)
GOTO 10
ENDIF
P3XYF = SQRT(PCH3**2-PCH3F**2)
CALL DSFECF(SFE,CFE)
PXCH3F = P3XYF*CFE
PYCH3F = P3XYF*SFE
*
*-------------------- select transverse momenta for partons of chain 1
*
IF (NDCH1.EQ.-99) THEN
EAQ2 = 0.0D0
PTXVA2 = 0.0D0
PTYVA2 = 0.0D0
PLAQ2 = 0.0D0
EQ1 = 0.0D0
PTXDQ1 = 0.0D0
PTYDQ1 = 0.0D0
PLQ1 = 0.0D0
PXCH1F = 0.0D0
PYCH1F = 0.0D0
PLCH1F = 0.0D0
GOTO 11
ENDIF
PYCH1F = -ABS(PCH1/PCH3)*PYCH3F
PXCH1F = -ABS(PYCH1F/PYCH3F)*PXCH3F
TEMP = PXCH1F**2+PYCH1F**2
IF ((PCH1**2).LT.TEMP) THEN
NCPT = NCPT+1
IF(MOD(NCPT,5000).EQ.0) WRITE(LOUT,1002) NCPT
1002 FORMAT('VAHMSD/DIFFPT: INEFFICIENT PT-SELECTION 2, NCPT=',I8)
GOTO 10
ENDIF
PLCH1F = SIGN(SQRT(PCH1**2-TEMP),PCH1)
EAQ2 = EES*XDICH1
TEMP = ABS(EAQ2/PCH1)
PTXVA2 = -PXCH1F*TEMP
PTYVA2 = -PYCH1F*TEMP
PLAQ2 = -PLCH1F*TEMP
EQ1 = EE*XCH1
TEMP = ABS(EQ1/PCH1)
PTXDQ1 = PXCH1F*TEMP
PTYDQ1 = PYCH1F*TEMP
PLQ1 = PLCH1F*TEMP
*
*-------------------- select transverse momenta for partons of chain 2
*
11 CONTINUE
IF (NDCH2.EQ.-99) THEN
EQ2 = 0.0D0
PTXDQ2 = 0.0D0
PTYDQ2 = 0.0D0
PLQ2 = 0.0D0
EAQ1 = 0.0D0
PTXVA1 = 0.0D0
PTYVA1 = 0.0D0
PLAQ1 = 0.0D0
PXCH2F = 0.0D0
PYCH2F = 0.0D0
PLCH2F = 0.0D0
GOTO 12
ENDIF
PYCH2F = -ABS(PCH2/PCH3)*PYCH3F
PXCH2F = -ABS(PYCH2F/PYCH3F)*PXCH3F
TEMP = PXCH2F**2+PYCH2F**2
IF ((PCH2**2).LT.TEMP) THEN
NCPT = NCPT+1
IF(MOD(NCPT,5000).EQ.0) WRITE(LOUT,1003) NCPT
1003 FORMAT('VAHMSD/DIFFPT: INEFFICIENT PT-SELECTION 3, NCPT=',I8)
GOTO 10
ENDIF
PLCH2F = SIGN(SQRT(PCH2**2-TEMP),PCH2)
EQ2 = EES*XDICH2
TEMP = ABS(EQ2/PCH2)
PTXDQ2 = -PXCH2F*TEMP
PTYDQ2 = -PYCH2F*TEMP
PLQ2 = -PLCH2F*TEMP
EAQ1 = EE*XCH2
TEMP = ABS(EAQ1/PCH2)
PTXVA1 = PXCH2F*TEMP
PTYVA1 = PYCH2F*TEMP
PLAQ1 = PLCH2F*TEMP
*
12 CONTINUE
PTXCH3 = PXCH3F
PTYCH3 = PYCH3F
PCH3 = PCH3F
*---------- S. Roesler 11/4/93
* calculate diffractive x-value
IF (IPEV.GE.2) THEN
TEMPX = PTXVA2+PTXDQ1+PTXDQ2+PTXVA1
TEMPY = PTYVA2+PTYDQ1+PTYDQ2+PTYVA1
TEMPZ = PLAQ2+PLQ1+PLQ2+PLAQ1
TEMPE = EAQ1+EAQ2+EQ1+EQ2
TEMPM = SQRT(TEMPE**2-TEMPX**2-TEMPY**2-TEMPZ**2)
TEMPP = TEMPM**2/((EES+EE)**2)
WRITE(*,*)'diffractive x-value before energy/momentum corr.',
& TEMPP
ENDIF
*
*---------- S. Roesler 10/26/93
*
* introduce off-shell partons in order to ensure
* energy-momentum conservation
*
DIFFX = PXCH3F+PTXVA2+PTXDQ1+PTXDQ2+PTXVA1
DIFFY = PYCH3F+PTYVA2+PTYDQ1+PTYDQ2+PTYVA1
DIFFZ = PCH3F+PLAQ2+PLQ1+PLQ2+PLAQ1
IF (IPEV.GE.2) THEN
WRITE(LOUT,1011) DIFFX,DIFFY,DIFFZ
1011 FORMAT('VAHMSD/DIFFPT: DIFFX,DIFFY,DIFFZ ',3E15.5)
ENDIF
*
IF ((NDCH1.EQ.-99).OR.(NDCH1.EQ.1).OR.(NDCH1.EQ.-1)) THEN
*
PTXDQ2 = PTXDQ2-DIFFX/2.0D0
PTXVA1 = PTXVA1-DIFFX/2.0D0
*
PTYDQ2 = PTYDQ2-DIFFY/2.0D0
PTYVA1 = PTYVA1-DIFFY/2.0D0
*
PLQ2 = PLQ2 -DIFFZ/2.0D0
PLAQ1 = PLAQ1 -DIFFZ/2.0D0
*
ELSEIF ((NDCH2.EQ.-99).OR.(NDCH2.EQ.1).OR.(NDCH2.EQ.-1)) THEN
*
PTXVA2 = PTXVA2-DIFFX/2.0D0
PTXDQ1 = PTXDQ1-DIFFX/2.0D0
*
PTYVA2 = PTYVA2-DIFFY/2.0D0
PTYDQ1 = PTYDQ1-DIFFY/2.0D0
*
PLAQ2 = PLAQ2 -DIFFZ/2.0D0
PLQ1 = PLQ1 -DIFFZ/2.0D0
*
ELSE
*
PTXVA2 = PTXVA2-DIFFX/4.0D0
PTXDQ1 = PTXDQ1-DIFFX/4.0D0
PTXDQ2 = PTXDQ2-DIFFX/4.0D0
PTXVA1 = PTXVA1-DIFFX/4.0D0
*
PTYVA2 = PTYVA2-DIFFY/4.0D0
PTYDQ1 = PTYDQ1-DIFFY/4.0D0
PTYDQ2 = PTYDQ2-DIFFY/4.0D0
PTYVA1 = PTYVA1-DIFFY/4.0D0
*
PLAQ2 = PLAQ2 -DIFFZ/4.0D0
PLQ1 = PLQ1 -DIFFZ/4.0D0
PLQ2 = PLQ2 -DIFFZ/4.0D0
PLAQ1 = PLAQ1 -DIFFZ/4.0D0
*
ENDIF
*---------- S. Roesler 11/4/93
* calculate diffractive x-value
IF (IPEV.GE.2) THEN
TEMPX = PTXVA2+PTXDQ1+PTXDQ2+PTXVA1
TEMPY = PTYVA2+PTYDQ1+PTYDQ2+PTYVA1
TEMPZ = PLAQ2+PLQ1+PLQ2+PLAQ1
TEMPE = EAQ1+EAQ2+EQ1+EQ2
TEMPM = SQRT(TEMPE**2-TEMPX**2-TEMPY**2-TEMPZ**2)
TEMPP = TEMPM**2/((EES+EE)**2)
WRITE(*,*)'diffractive x-value after energy/momentum corr.',
& TEMPP
ENDIF
*
* recalculate chain masses...
*
AMDCH1 = SQRT(ABS((EAQ2+EQ1)**2-(PTXVA2+PTXDQ1)**2
& -(PTYVA2+PTYDQ1)**2-(PLAQ2+PLQ1)**2)+1.0D-8)
AMDCH2 = SQRT(ABS((EQ2+EAQ1)**2-(PTXDQ2+PTXVA1)**2
& -(PTYDQ2+PTYVA1)**2-(PLQ2+PLAQ1)**2)+1.0D-8)
*
IF (IPEV.GE.2) THEN
WRITE(LOUT,1012) AMDCH1,AMDCH2
1012 FORMAT('VAHMSD/DIFFPT: AMDCH1,AMDCH2 ',2E10.5)
ENDIF
*
* ...and the Lorentz-parameter gamma
*
GAMDC1 = (EAQ2+EQ1)/AMDCH1
GAMDC2 = (EQ2+EAQ1)/AMDCH2
IF (IPEV.GE.2) THEN
WRITE(LOUT,1013) GAMDC1,GAMDC2
1013 FORMAT('VAHMSD/DIFFPT: GAMDC1,GAMDC2 ',2E10.5)
ENDIF
*
*-------------------- store results in common block /ABRDIF/
*
PDQ1(1) = PTXDQ1
PDQ1(2) = PTYDQ1
PDQ1(3) = PLQ1
PDQ1(4) = EQ1
PDD1(1) = PTXVA1
PDD1(2) = PTYVA1
PDD1(3) = PLAQ1
PDD1(4) = EAQ1
PDFQ1(1) = PTXCH3
PDFQ1(2) = PTYCH3
PDFQ1(3) = PCH3
PDFQ1(4) = ECH3
PDQ2(1) = PTXDQ2
PDQ2(2) = PTYDQ2
PDQ2(3) = PLQ2
PDQ2(4) = EQ2
PDD2(1) = PTXVA2
PDD2(2) = PTYVA2
PDD2(3) = PLAQ2
PDD2(4) = EAQ2
IF (IPEV.GE.2) THEN
WRITE(LOUT,1004)
1004 FORMAT('VAHMSD/DIFFPT: PDQ1,PDD1,PDQ2,PDD2,PDFQ1 ')
WRITE(LOUT,1005)
& (PDQ1(J),PDD1(J),PDQ2(J),PDD2(J),PDFQ1(J),J=1,4)
1005 FORMAT(12X,5F10.5)
ENDIF
PGXVC1 = (PTXDQ1+PTXVA2)/AMDCH1
PGYVC1 = (PTYDQ1+PTYVA2)/AMDCH1
PGZVC1 = (PLQ1+PLAQ2)/AMDCH1
PGXVC2 = (PTXVA1+PTXDQ2)/AMDCH2
PGYVC2 = (PTYVA1+PTYDQ2)/AMDCH2
PGZVC2 = (PLAQ1+PLQ2)/AMDCH2
PGXVC3 = PTXCH3/AMDCH3
PGYVC3 = PTYCH3/AMDCH3
PGZVC3 = PCH3/AMDCH3
*
PXCH1F = PTXDQ1+PTXVA2
PYCH1F = PTYDQ1+PTYVA2
PLCH1F = PLQ1+PLAQ2
PXCH2F = PTXVA1+PTXDQ2
PYCH2F = PTYVA1+PTYDQ2
PLCH2F = PLAQ1+PLQ2
*
IF (IPEV.GE.2) THEN
WRITE(LOUT,1006) PGXVC1,PGYVC1,PGZVC1
1006 FORMAT('VAHMSD/DIFFPT: PGXVC1,PGYVC1,PGZVC1 ',3F10.5)
WRITE(LOUT,1007) PGXVC2,PGYVC2,PGZVC2
1007 FORMAT('VAHMSD/DIFFPT: PGXVC2,PGYVC2,PGZVC2 ',3F10.5)
WRITE(LOUT,1008) PGXVC3,PGYVC3,PGZVC3
1008 FORMAT('VAHMSD/DIFFPT: PGXVC3,PGYVC3,PGZVC3 ',3F10.5)
ENDIF
IF ((NDCH1.EQ.-99).AND.(NDCH2.EQ.-99)) THEN
WRITE(LOUT,*) 'REJECT IN DIFFPT: NO CHAINS CREATED'
IIREJ = 1
RETURN
ENDIF
*
*-------------------- store results in common block /HKKEVT/
*
PHKK(1,NHKK+9) = PXCH1F
PHKK(2,NHKK+9) = PYCH1F
PHKK(3,NHKK+9) = PLCH1F
PHKK(4,NHKK+9) = ECH1
*
PHKK(1,NHKK+12) = PXCH2F
PHKK(2,NHKK+12) = PYCH2F
PHKK(3,NHKK+12) = PLCH2F
PHKK(4,NHKK+12) = ECH2
*
RETURN
END
*
*===diffch================================================================
*
SUBROUTINE DIFFCH ( XSEA, IFSEA, XPAR, IFPARA, IFPARB,
& XSEA2, IFSEA2, XPAR12, XPAR22, EE,
& RM, ECH, PCH, GAMMA, BETA,
& NDCH, ICH, EES, NUNO, IIREJ, IOPT)
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine is called by VAHMSD (HMSD) and calculates the kine- *
* matical parameters of chain IOPT from sampled x-values and flavors *
* in CMS. *
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
CHARACTER*8 ANAME
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /DPAR/ ANAME(210),AM(210),GA(210),TAU(210),IICH(210),
& IBAR(210),K1(210),K2(210)
COMMON/DINPDA/IMPS(6,6),IMVE(6,6),IB08(6,21),IB10(6,21),IA08(6,21)
&,IA10(6,21),A1,B1,B2,B3,LT,LE,BET,AS,B8,AME,DIQ,ISU
DATA NCNOTH,NCWD /0,0/
*
GOTO (1,2,3) IOPT
*
*-------------------- kinematical parameters of a q-aq (in any order) chain
* XSEA - XPAR, IFSEA - IFPAR
*
1 CONTINUE
IIREJ = 0
IFQ = IFPARA
IFAQ = IABS(IFSEA)
IF (IFQ.LT.0) THEN
IFQ = IFSEA
IFAQ = IABS(IFPARA)
ENDIF
IPS = IMPS(IFAQ,IFQ)
IV = IMVE(IFAQ,IFQ)
RMPS = AM(IPS)
RMV = AM(IV)
RMBB = RMV+3.0D-1
NDCH = 0
*
IF ((XSEA.LE.0.0D0).OR.(XPAR.LE.0.0D0)) THEN
WRITE(LOUT,*) 'REJECTION IN DIFFCH: 1, XSEA,XPAR ',XSEA,XPAR
IIREJ=1
RETURN
ENDIF
RM = 2.0D0*SQRT(EES*XSEA*EE*XPAR)
IF (IPEV.GE.2) THEN
WRITE(LOUT,1000) 'XSEA, XSEA2, XPAR, XPAR12, RM, EE, EES'
WRITE(LOUT,1001) XSEA, XSEA2, XPAR, XPAR12, RM, EE, EES
ENDIF
*
IF (RM.LT.RMPS) THEN
* produce nothing
NDCH = -99
XSEA2 = XSEA2 +XSEA
XPAR12 = XPAR12+XPAR
IFSEA2 = IFPARA
XSEA = 0.0D0
XPAR = 0.0D0
RM = 1.0D-4
ECH = 0.0D0
PCH = 0.0D0
GAMMA = 1.0D0
BETA = 0.0D0
NCNOTH = NCNOTH+1
IF (MOD(NCNOTH,5000).EQ.0) WRITE(LOUT,1002) NCNOTH
1002 FORMAT('VAHMSD/DIFFCH: PRODUCE NOTHING 1, NCNOTH=',I8)
RETURN
*
ELSE IF (RM.LT.RMV) THEN
* produce RMPS
RM = RMPS
NDCH = -1
ICH = IPS
XSQ = RM/(2.0D0*SQRT(EE*EES))
XSEAOL = XSEA
XSEA = XSQ**2/XPAR
XPAR22 = XPAR22+XSEAOL-XSEA
*
ELSE IF (RM.LT.RMBB) THEN
* produce RMV
RM = RMV
NDCH = 1
ICH = IV
XSQ = RM/(2.0D0*SQRT(EE*EES))
XSEAOL = XSEA
XSEA = XSQ**2/XPAR
XPAR22 = XPAR22+XSEAOL-XSEA
ENDIF
*
IF (IDIFTP.EQ.1) THEN
PCH = EES*XSEA-EE*XPAR
IF (PCH.GE.0.0D0) THEN
NCWD = NCWD+1
IF (MOD(NCWD,500).EQ.0) WRITE(LOUT,1003) NCWD
1003 FORMAT('VAHMSD/DIFFCH: WRONG SIGN OF PCH (1), NCWD=',I8)
IIREJ = 1
ENDIF
ELSE IF (IDIFTP.EQ.2) THEN
PCH = EE*XPAR-EES*XSEA
IF (PCH.LE.0.0D0) THEN
NCWD = NCWD+1
IF (MOD(NCWD,500).EQ.0) WRITE(LOUT,1004) NCWD
1004 FORMAT('VAHMSD/DIFFCH: WRONG SIGN OF PCH (2), NCWD=',I8)
IIREJ = 1
ENDIF
ELSE
WRITE(LOUT,*) 'ERROR IN VAHMSD/DIFFCH, IDIFTP=', IDIFTP
ENDIF
IF (IPEV.GE.2) THEN
WRITE(LOUT,1000) 'EES,XSEA,EE,XPAR'
WRITE(LOUT,1001) EES,XSEA,EE,XPAR
ENDIF
ECH = EES*XSEA+EE*XPAR
GAMMA = ECH/RM
BETA = PCH/RM
IF (IPEV.GE.2) THEN
WRITE(LOUT,1000) 'RM,ECH,PCH,NDCH'
WRITE(LOUT,1001) RM,ECH,PCH
WRITE(LOUT,'(I4)') NDCH
ENDIF
1000 FORMAT('VAHMSD/DIFFCH-CHAIN Q-AQ',A34)
1001 FORMAT(10F10.5)
RETURN
*
*-------------------- kinematical parameters of a q-qq or aq-aqaq (in any
* order) chain
* XSEA - XPAR, IFSEA - IFPARA/IFPARB
*
2 CONTINUE
IIREJ = 0
CALL DBKLAS(IFSEA, IFPARA, IFPARB, I8, I10)
RM8 = AM( I8)
RM10 = AM(I10)
RMBB = RM10+3.0D-1
NDCH = 0
*
IF ((XSEA.LE.0.0D0).OR.(XPAR.LE.0.0D0)) THEN
IIREJ=1
WRITE(LOUT,*) 'REJECTION IN DIFFCH: 3, XSEA,XPAR ',XSEA,XPAR
RETURN
ENDIF
RM = 2.0D0*SQRT(EES*XSEA*EE*XPAR)
IF (IPEV.GE.2) THEN
WRITE(LOUT,2000) 'XSEA, XSEA2, XPAR, XPAR12, RM, EE, EES'
WRITE(LOUT,2001) XSEA, XSEA2, XPAR, XPAR12, RM, EE, EES
ENDIF
*
IF (RM.LT.RM10) THEN
* reject
IIREJ = 1
NCNOTH = NCNOTH+1
IF (MOD(NCNOTH,20).EQ.0) WRITE(LOUT,2002) NCNOTH
2002 FORMAT('VAHMSD/DIFFCH: PRODUCE NOTHING 2, NCNOTH=',I8)
RETURN
ELSE IF (RM.LT.RMBB) THEN
* produce RM10
NDCH = 1
RM = RM10
ICH = I10
XSQ = RM/(2.0D0*SQRT(EE*EES))
XSEAOL = XSEA
XSEA = XSQ**2/XPAR
XPAR22 = XPAR22+XSEAOL-XSEA
ENDIF
*
IF (IDIFTP.EQ.1) THEN
PCH = EES*XSEA-EE*XPAR
IF (PCH.GE.0.0D0) THEN
NCWD = NCWD+1
IF (MOD(NCWD,500).EQ.0) WRITE(LOUT,2003) NCWD
2003 FORMAT('VAHMSD/DIFFCH: WRONG SIGN OF PCH (3), NCWD=',I8)
IIREJ = 1
ENDIF
ELSE IF (IDIFTP.EQ.2) THEN
PCH = EE*XPAR-EES*XSEA
IF (PCH.LE.0.0D0) THEN
NCWD = NCWD+1
IF (MOD(NCWD,500).EQ.0) WRITE(LOUT,2004) NCWD
2004 FORMAT('VAHMSD/DIFFCH: WRONG SIGN OF PCH (4), NCWD=',I8)
IIREJ = 1
ENDIF
ELSE
WRITE(LOUT,*) 'ERROR IN VAHMSD/DIFFCH, IDIFTP=', IDIFTP
ENDIF
ECH = EES*XSEA+EE*XPAR
GAMMA = ECH/RM
BETA = PCH/RM
IF (IPEV.GE.2) THEN
WRITE(LOUT,2000) 'RM,ECH,PCH,NDCH'
WRITE(LOUT,2001) RM,ECH,PCH
WRITE(LOUT,'(I4)') NDCH
ENDIF
2000 FORMAT('VAHMSD/DIFFCH-CHAIN Q-QQ',A34)
2001 FORMAT(10F10.5)
RETURN
*
*-------------------- kinematical parameters of a baryon/meson
*
3 CONTINUE
IIREJ = 0
IF (IFPARB.EQ.99) THEN
IF (IFSEA.LT.0) THEN
IFAQ = IABS(IFSEA)
IFQ = IFPARA
ELSE
IFAQ = IABS(IFPARA)
IFQ = IFSEA
ENDIF
IM = IMPS(IFAQ,IFQ)
ELSE
CALL DBKLAS(IFSEA, IFPARA, IFPARB, IM, IDUM)
ENDIF
RM = AM(IM)
NDCH = -1
IF ((XSEA.LE.0.0D0).OR.(XPAR.LE.0.0D0)) THEN
IIREJ=1
WRITE(LOUT,*) 'REJECTION IN DIFFCH: 5, XSEA,XPAR ',XSEA,XPAR
RETURN
ENDIF
IF (IPEV.GE.2) THEN
WRITE(LOUT,3000) 'XSEA, XPAR, RM'
WRITE(LOUT,3001) XSEA, XPAR, RM
ENDIF
ECH = EE*(XSEA+XPAR)
IF (IDIFTP.EQ.1) THEN
PCH = SQRT((ECH-RM)*(ECH+RM))
ELSE IF (IDIFTP.EQ.2) THEN
PCH = -SQRT((ECH-RM)*(ECH+RM))
ELSE
WRITE(LOUT,*) 'ERROR IN VAHMSD/DIFFCH, IDIFTP=', IDIFTP
ENDIF
GAMMA = ECH/RM
BETA = PCH/RM
IF (IPEV.GE.2) THEN
WRITE(LOUT,3000) 'ECH, PCH, GAMMA, BETA'
WRITE(LOUT,3001) ECH, PCH, GAMMA, BETA
ENDIF
3000 FORMAT('VAHMSD/DIFFCH-BARYON/MESON ',A27)
3001 FORMAT(10F10.5)
RETURN
END
*
*===valmsd===============================================================*
*
SUBROUTINE VALMSD(ITAPOI,ECM,KPROJ,KTARG,IREJ)
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine selects flavors and 4-momenta of partons in low-mass *
* single diffractive chains. *
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998)
CHARACTER*8 ANAME
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /ABRDIF/ XDQ1,XDQ2,XDDQ1,XDDQ2,
& IKVQ1,IKVQ2,IKD1Q1,IKD2Q1,IKD1Q2,IKD2Q2,
& IDIFFP,IDIFAP,
& AMDCH1,AMDCH2,AMDCH3,GAMDC1,GAMDC2,GAMDC3,
& PGXVC1,PGYVC1,PGZVC1,PGXVC2,PGYVC2,PGZVC2,
& PGXVC3,PGYVC3,PGZVC3,NDCH1,NDCH2,NDCH3,
& IKDCH1,IKDCH2,IKDCH3,
& PDQ1(4),PDQ2(4),PDD1(4),PDD2(4),PDFQ1(4)
COMMON /DPAR/ ANAME(210),AM(210),GA(210),TAU(210),ICH(210),
& IBAR(210),K1(210),K2(210)
COMMON/DINPDA/IMPS(6,6),IMVE(6,6),IB08(6,21),IB10(6,21),IA08(6,21)
&,IA10(6,21),A1,B1,B2,B3,LT,LE,BET,AS,B8,AME,DIQ,ISU
COMMON /TRAFOP/ GAMP,BGAMP,BETP
COMMON /ENERIN/ EPROJ,ETARG
COMMON /SDFLAG/ ISD
COMMON /OUTLEV/IOUTPO,IOUTPA,IOUXEV,IOUCOL
COMMON /XDIDID/XDIDI
*
DIMENSION MQUARK(3,30),IHKKQ(-6:6),IHKKQQ(-3:3,-3:3),
& IDX(-4:4)
DATA IDX /-4,-3,-1,-2,0,2,1,3,4/
DATA IHKKQ /-6,-5,-4,-3,-1,-2,0,2,1,3,4,5,6/
DATA IHKKQQ/-3301,-3103,-3203,0, 0,0,0,
& -3103,-1103,-2103,0, 0, 0, 0,
& -3203,-2103,-2203,0, 0, 0, 0,
& 0, 0, 0,0, 0, 0, 0,
& 0, 0, 0,0,2203,2103,3202,
& 0, 0, 0,0,2103,1103,3103,
& 0, 0, 0,0,3203,3103,3303/
*
*----------------------------------- quark content of hadrons:
* 1, 2, 3, 4 - u, d, s, c
* -1,-2,-3,-4 - au,ad,as,ac
*
DATA MQUARK/
& 1,1,2, -1,-1,-2, 0,0,0, 0,0,0, 0,0,0,
& 0,0,0, 0,0,0, 1,2,2, -1,-2,-2, 0,0,0,
& 0,0,0, 0,0,0, 1,-2,0, 2,-1,0, 1,-3,0,
& 3,-1,0, 1,2,3, -1,-2,-3, 0,0,0, 2,2,3,
& 1,1,3, 1,2,3, 1,-1,0, 2,-3,0, 3,-2,0,
& 2,-2,0, 3,-3,0, 0,0,0, 0,0,0, 0,0,0/
DATA UNON/2.0/
DATA NCREJ, NCPT /0, 0/
*
ISD = 2
IREJ = 0
IIREJ = 0
IBPROJ = IBAR(KPROJ)
IBTARG = IBAR(KTARG)
EPROJ = (AM(KPROJ)**2-AM(KTARG)**2+ECM**2)/(2.0D0*ECM)
ETARG = (AM(KTARG)**2-AM(KPROJ)**2+ECM**2)/(2.0D0*ECM)
IF(IPEV.GE.2) WRITE(LOUT,1014)EPROJ,ETARG
1014 FORMAT('VALMSD: EPROJ,ETARG',2F10.5)
IF (IBTARG.LE.0) THEN
WRITE(LOUT,1001) IBTARG
1001 FORMAT('VALMSD: NO LMSD FOR TARGET WITH BARYON-CHARGE',I4)
IIREJ = 1
GOTO 9999
ENDIF
IQP1 = MQUARK(1,KPROJ)
IQP2 = MQUARK(2,KPROJ)
IQP3 = MQUARK(3,KPROJ)
IQT1 = MQUARK(1,KTARG)
IQT2 = MQUARK(2,KTARG)
IQT3 = MQUARK(3,KTARG)
IF(IPEV.GE.2) WRITE(LOUT,1002)
& IBPROJ,IBTARG,IQP1,IQP2,IQP3,IQT1,IQT2,IQT3
1002 FORMAT('VALMSD: IBPROJ,IBTARG,IQP1,IQP2,IQP3,IQT1,IQT2,IQT3 ',8I4)
*
IF (IBPROJ.NE.0) THEN
*
*-------------------- q-qq (aq-aqaq) - flavors of projectile (baryon)
*
ISAM = 1.0D0+2.999D0*RNDM(V)
GOTO (10,11,12) ISAM
10 CONTINUE
IQP = IQP1
IDIQP1 = IQP2
IDIQP2 = IQP3
GOTO 13
11 CONTINUE
IQP = IQP2
IDIQP1 = IQP1
IDIQP2 = IQP3
GOTO 13
12 CONTINUE
IQP = IQP3
IDIQP1 = IQP1
IDIQP2 = IQP2
13 CONTINUE
*
ELSE IF (IBPROJ.EQ.0) THEN
*
*-------------------- q-aq - flavors of projectile (meson)
*
ISAM = 1.0D0+1.999D0*RNDM(V)
GOTO (14,15) ISAM
14 CONTINUE
IQP = IQP1
IDIQP1 = IQP2
GOTO 16
15 CONTINUE
IQP = IQP2
IDIQP1 = IQP1
16 CONTINUE
IDIQP2 = 0
*
ENDIF
*
*-------------------- q-qq - flavors of target (baryon)
*
ISAM = 1.0D0+2.999D0*RNDM(V)
GOTO (17,18,19) ISAM
17 CONTINUE
IQT = IQT1
IDIQT1 = IQT2
IDIQT2 = IQT3
GOTO 20
18 CONTINUE
IQT = IQT2
IDIQT1 = IQT1
IDIQT2 = IQT3
GOTO 20
19 CONTINUE
IQT = IQT3
IDIQT1 = IQT1
IDIQT2 = IQT2
20 CONTINUE
*
IKVQ1 = IQP
IKD1Q1 = IDIQP1
IKD2Q1 = IDIQP2
*
IKVQ2 = IQT
IKD1Q2 = IDIQT1
IKD2Q2 = IDIQT2
*
IF (IPEV.GE.2) WRITE(LOUT,1003)
& IKVQ1,IKD1Q1,IKD2Q1,IKVQ2,IKD1Q2,IKD2Q2
1003 FORMAT('VALMSD: IKVQ1,IKD1Q1,IKD2Q1,IKVQ2,IKD1Q2,IKD2Q2 ',6I4)
*
*-------------------- IDIFTP = 1 target (backward) hadron excited
* IDIFTP = 2 projectile (forward) hadron excited
*
IDIFTP = 1.0D0+1.999D0*RNDM(V)
*-------------------- S.Roesler 5/26/93
IF ((ISINGD.EQ.3).OR.(ISINGD.EQ.7)) IDIFTP = 1
IF ((ISINGD.EQ.4).OR.(ISINGD.EQ.8)) IDIFTP = 2
*
IF (IPEV.GE.2) WRITE(LOUT,1004) IDIFTP
1004 FORMAT('VALMSD: IDIFTP ',I4)
IF ((IDIFTP.NE.1).AND.(IDIFTP.NE.2)) THEN
IF (IPEV.GE.2) WRITE(LOUT,'(A19)') 'VALMSD-ERROR: IDIFTP'
GOTO 9999
ENDIF
*
*-------------------- diffractive mass
*
31 CONTINUE
AMO = 1.5D0
R = RNDM(V)
IF ((IBPROJ.EQ.0).AND.(IDIFTP.EQ.1))
& AMO = 1.5D0*R+2.83D0*(1.0D0-R)
IF ((IBPROJ.EQ.0).AND.(IDIFTP.EQ.2)) AMO = 1.0D0
SAM = 1.0D0
IF (ECM.LE.300.0D0) SAM = 1.0D0-EXP(-((ECM/200.0D0)**4))
R = RNDM(V)*SAM
AMAX= (1.0D0-SAM)*SQRT(0.1D0*ECM**2)+SAM*SQRT(400.0D0)
AMU = R*SQRT(100.0D0)+(1.0D0-R)*AMAX
IF (IBPROJ.EQ.0) THEN
C----------------- change mass-cuts
C AMAX= (1.0D0-SAM)*SQRT(0.25D0*ECM**2)+SAM*SQRT(400.0D0)
AMAX= (1.0D0-SAM)*SQRT(0.15D0*ECM**2)+SAM*SQRT(400.0D0)
AMU = R*SQRT(100.0D0)+(1.0D0-R)*AMAX
ENDIF
C---------------------------------------------------------------
C
C j.r. test 2/94
C
C---------------------------------------------------------------
AMU=2.D0*AMU
C---------------------------------------------------------------
R = RNDM(V)
IF (ECM.LE.50.0D0) THEN
AMDIFF = AMO*(AMU/AMO)**R
ELSE
A = 0.7D0
IF (ECM.LE.300.0D0) A = 0.7D0*(1.0D0-EXP(-((ECM/100.0D0)**2)))
AMDIFF = 1.0D0/((R/(AMU**A)+(1.0D0-R)/(AMO**A))
& **(1.0D0/A))
ENDIF
IF(AMDIFF.GT.0.5D0*ECM)GO TO 31
IF (IOUXEV.GE.2) WRITE(LOUT,1005) AMDIFF
1005 FORMAT('VALMSD: AMDIFF',E10.5)
XDIDI=AMDIFF**2/ECM**2
IF (IOUXEV.GE.2) WRITE(LOUT,*)'LM AMDIFF,XDIDI ',AMDIFF,XDIDI
*
*-------------------- kinematical parameters of
* diffractive projectile (IDIFTP = 1)
* or diffractive target (IDIFTP = 2)
*
IF (IDIFTP.EQ.1) THEN
AMDCH3 = AM(KPROJ)
ELSE IF (IDIFTP.EQ.2) THEN
AMDCH3 = AM(KTARG)
ENDIF
ECH3 = (ECM**2+AMDCH3**2-AMDIFF**2)/(2.0D0*ECM)
IF (ECH3.LE.AMDCH3) THEN
NCMERR = NCMERR+1
IF (MOD(NCMERR,2200).EQ.0)
& WRITE(LOUT,*) 'LMSD: INEFFICIENT SELECTION OF AMDIFF(1),
& NCMERR = ',NCMERR
GOTO 31
ENDIF
*
PCH3 = SQRT(ABS(ECH3-AMDCH3))*SQRT(ECH3+AMDCH3)
IF (IDIFTP.EQ.2) PCH3 = -PCH3
NDCH3 = -1
GAMDC3 = ECH3/AMDCH3
PGVC3 = PCH3/AMDCH3
IF (IOUXEV.GE.2) WRITE(LOUT,1006) AMDCH3,ECH3,PCH3,GAMDC3,PGVC3
1006 FORMAT('VALMSD: AMDCH3,ECH3,PCH3,GAMDC3,PGVC3',5E15.5)
*
30 CONTINUE
B33 = 8.0D0
ES = -2.0D0/(B33**2)*LOG(RNDM(V)*RNDM(V))
HPS = SQRT(ES*ES+2.0D0*ES*0.94D0)
CALL DSFECF(SFE,CFE)
PXCH3 = HPS*CFE
PYCH3 = HPS*SFE
PTCH3 = SQRT(PXCH3**2+PYCH3**2)
IF (PTCH3.GT.ABS(PCH3)) THEN
NCPT = NCPT+1
IF (MOD(NCPT,500).EQ.0) WRITE(LOUT,1007) NCPT
1007 FORMAT('VALMSD: INEFFICIENT PT-SELECTION 1, NCPT=',I8)
GOTO 30
ENDIF
PLCH3 = SIGN(SQRT(ABS(PCH3-PTCH3))*SQRT(ABS(PCH3+PTCH3)),PCH3)
IF (IOUXEV.GE.2) WRITE(LOUT,1008) ES,HPS,PXCH3,PYCH3,PLCH3
1008 FORMAT('VALMSD: ES,HPS,PXCH3,PYCH3,PLCH3',5E15.5)
*
*-------------------- no chain 1
*
NDCH1 = -99
AMDCH1 = 0.0D0
ECH1 = 0.0D0
PCH1 = 0.0D0
GAMDC1 = 1.0D0
PGVC1 = 0.0D0
PGXVC1 = 0.0D0
PGYVC1 = 0.0D0
PGZVC1 = 0.0D0
DO 40 I=1,4
PDD2(I) = 0.0D0
PDQ1(I) = 0.0D0
40 CONTINUE
*
*-------------------- kinematical parameters of
* excited target (IDIFTP = 1)
* or excited projectile (IDIFTP = 2)
*
AMDCH2 = AMDIFF
ECH2 = (ECM**2+AMDCH2**2-AMDCH3**2)/(2.0D0*ECM)
PCH2 = -SIGN(SQRT(ABS(ECH2-AMDCH2))*SQRT(ECH2+AMDCH2),PCH3)
NDCH2 = 0
GAMDC2 = ECH2/AMDCH2
PGVC2 = PCH2/AMDCH2
*
*-------------------- (IDIFFP,IDIFAP in analogy to HMSD in VAHMSD)
* IDIFTP = 1 : IKD1Q2/IKD2Q2 - IDIFFP = IKVQ2
* IDIFTP = 2 : projectile - baryon
* IKD1Q1/IKD2Q1 - IDIFFP = IKVQ1
* projectile - antibaryon
* IKD1Q1/IKD2Q1 - IDIFAP = IKVQ1
* projectile - meson
* IKD1Q1 > 0 - IDIFAP = IKVQ1
* IKD1Q1 < 0 - IDIFFP = IKVQ1
*
IF (IDIFTP.EQ.1) IDIFFP = IKVQ2
IF (IDIFTP.EQ.2) THEN
IF (IBPROJ.GT.0) IDIFFP = IKVQ1
IF (IBPROJ.LT.0) IDIFAP = IKVQ1
IF ((IBPROJ.EQ.0).AND.(IKD1Q1.GT.0)) IDIFAP = IKVQ1
IF ((IBPROJ.EQ.0).AND.(IKD1Q1.LT.0)) IDIFFP = IKVQ1
ENDIF
IF (IOUXEV.GE.2) WRITE(LOUT,1009) AMDCH2,ECH2,PCH2,GAMDC2,PGVC2,
& IDIFFP,IDIFAP
1009 FORMAT('VALMSD: AMDCH2,ECH2,PCH2,GAMDC2,PGVC2,IDIFFP,IDIFAP',
& 5E15.5,2I4)
PXCH2 = -PXCH3
PYCH2 = -PYCH3
PTCH2 = SQRT(PXCH2**2+PYCH2**2)
IF (PTCH2.GT.ABS(PCH2)) THEN
NCPT = NCPT+1
IF (MOD(NCPT,500).EQ.0) WRITE(LOUT,1010) NCPT
1010 FORMAT('VALMSD: INEFFICIENT PT-SELECTION 2, NCPT=',I8)
GOTO 30
ENDIF
PLCH2 = SIGN(SQRT(ABS(PCH2-PTCH2))*SQRT(ABS(PCH2+PTCH2)),PCH2)
IF (IOUXEV.GE.2) WRITE(LOUT,1011) PXCH2,PYCH2,PLCH2
1011 FORMAT('VALMSD: PXCH2,PYCH2,PLCH2',3E15.5)
CC = AMDCH2/(2.0D0*ECH2)
*--------------------------- S.R. 11/12/92
IF (CC.GE.0.5D0) THEN
NCMERR = NCMERR+1
IF (MOD(NCMERR,200).EQ.0)
& WRITE(LOUT,*) 'LMSD: INEFFICIENT SELECTION OF AMDIFF(2),
& NCMERR = ',NCMERR
GOTO 31
ENDIF
*
XDIQ = 0.5D0+SQRT(ABS((0.5D0-CC)*(0.5D0+CC)))
XQ = 1.0D0-XDIQ
EDIQ = ECH2*XDIQ
EQ = ECH2*XQ
TEMP = ABS(EDIQ/PCH2)
PXDIQ = PXCH2*TEMP
PYDIQ = PYCH2*TEMP
PLDIQ = PLCH2*TEMP
TEMP = ABS(EQ/PCH2)
PXQ = -PXCH2*TEMP
PYQ = -PYCH2*TEMP
PLQ = -PLCH2*TEMP
*
*-------------------- store results in COMMON-block /ABRDIF/
*
PDQ2(1) = PXQ
PDQ2(2) = PYQ
PDQ2(3) = PLQ
PDQ2(4) = EQ
PDD1(1) = PXDIQ
PDD1(2) = PYDIQ
PDD1(3) = PLDIQ
PDD1(4) = EDIQ
PDFQ1(1) = PXCH3
PDFQ1(2) = PYCH3
PDFQ1(3) = PLCH3
PDFQ1(4) = ECH3
PGXVC2 = PXCH2/AMDCH2
PGYVC2 = PYCH2/AMDCH2
PGZVC2 = PLCH2/AMDCH2
PGXVC3 = PXCH3/AMDCH3
PGYVC3 = PYCH3/AMDCH3
PGZVC3 = PLCH3/AMDCH3
*
IF (IPEV.GE.2) THEN
WRITE(LOUT,*) 'VALMSD: PDQ1, PDD2, PDD1, PDQ2, PDFQ1'
WRITE(LOUT,1012)
& (PDQ1(I),PDD2(I),PDD1(I),PDQ2(I),PDFQ1(I),I=1,4)
1012 FORMAT(5E15.5)
WRITE(LOUT,1013) 'PGXVC1,PGYVC1,PGZVC1,GAMDC1',
& PGXVC1,PGYVC1,PGZVC1,GAMDC1
WRITE(LOUT,1013) 'PGXVC2,PGYVC2,PGZVC2,GAMDC2',
& PGXVC2,PGYVC2,PGZVC2,GAMDC2
WRITE(LOUT,1013) 'PGXVC3,PGYVC3,PGZVC3,GAMDC3',
& PGXVC3,PGYVC3,PGZVC3,GAMDC3
1013 FORMAT(A27,4E15.5)
ENDIF
*
*------------------- store results in common block /HKKEVT/
*
* partonen of projectile/target
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 23-IDIFTP
IF (IDIFTP.EQ.1) IDHKK(NHKK) = IHKKQ(IDX(IKVQ2))
IF (IDIFTP.EQ.2) IDHKK(NHKK) = IHKKQ(IDX(IKVQ1))
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = ITAPOI
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = 0.0D0
PHKK(2,NHKK) = 0.0D0
PHKK(3,NHKK) = XQ
PHKK(4,NHKK) = XQ
PHKK(5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 23-IDIFTP
IF (IDIFTP.EQ.1) IDHKK(NHKK) = IHKKQQ(IDX(IKD1Q2),IDX(IKD2Q2))
IF (IDIFTP.EQ.2) IDHKK(NHKK) = IHKKQQ(IDX(IKD1Q1),IDX(IKD2Q1))
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = ITAPOI
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = 0.0D0
PHKK(2,NHKK) = 0.0D0
PHKK(3,NHKK) = XDIQ
PHKK(4,NHKK) = XDIQ
PHKK(5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
* ends of chain 2
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 100+ISTHKK(NHKK-2)
IDHKK(NHKK) = IDHKK(NHKK-2)
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = JMOHKK(1,NHKK-2)
JDAHKK(1,NHKK) = NHKK+2
JDAHKK(2,NHKK) = NHKK+2
PHKK(1,NHKK) = PDQ2(1)
PHKK(2,NHKK) = PDQ2(2)
PHKK(3,NHKK) = PDQ2(3)
PHKK(4,NHKK) = PDQ2(4)
PHKK(5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))+XXPP
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))+YYPP
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 100+ISTHKK(NHKK-2)
IDHKK(NHKK) = IDHKK(NHKK-2)
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = JMOHKK(1,NHKK-2)
JDAHKK(1,NHKK) = NHKK+1
JDAHKK(2,NHKK) = NHKK+1
PHKK(1,NHKK) = PDD1(1)
PHKK(2,NHKK) = PDD1(2)
PHKK(3,NHKK) = PDD1(3)
PHKK(4,NHKK) = PDD1(4)
PHKK(5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))+XXPP
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))+YYPP
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
* chain 2
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 177
IDHKK(NHKK) = 88888
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = NHKK-1
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = PXCH2
PHKK(2,NHKK) = PYCH2
PHKK(3,NHKK) = PLCH2
PHKK(4,NHKK) = ECH2
PHKK(5,NHKK) = AMDCH2
VHKK (1,NHKK) = VHKK(1,NHKK-1)
VHKK (2,NHKK) = VHKK(2,NHKK-1)
VHKK (3,NHKK) = VHKK(3,NHKK-1)
IF ((BETP.NE.0.0D0).AND.(BGAMP.NE.0.0D0))
&VHKK (4,NHKK) = VHKK(3,NHKK)/BETP-VHKK(3,NHKK-2)/BGAMP
*
* diffractive nucleon
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 177
IDHKK(NHKK) = 88888
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = ITAPOI
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = PDFQ1(1)
PHKK(2,NHKK) = PDFQ1(2)
PHKK(3,NHKK) = PDFQ1(3)
PHKK(4,NHKK) = PDFQ1(4)
C WRITE(6,*)' Diffr. Nucleon'
C *,PHKK(3,NHKK),PHKK(4,NHKK),PHKK(5,NHKK)
PHKK(5,NHKK) = AMDCH3
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
*
*---------- S. Roesler 21-10-93
* check energy-momentum conservation
IF (IPEV.GE.2) THEN
PX = PDQ1(1)+PDQ2(1)+PDD1(1)+PDD2(1)+PDFQ1(1)
PY = PDQ1(2)+PDQ2(2)+PDD1(2)+PDD2(2)+PDFQ1(2)
PZ = PDQ1(3)+PDQ2(3)+PDD1(3)+PDD2(3)+PDFQ1(3)
EE = ECM-(PDQ1(4)+PDQ2(4)+PDD1(4)+PDD2(4)+PDFQ1(4))
WRITE(LOUT,*)'VALMSD: ENERGY-MOMENTUM-CHECK (PX,PY,PZ,E)'
WRITE(LOUT,'(5F12.6)')PX,PY,PZ,EE,ECM
ENDIF
*
RETURN
9999 CONTINUE
NCREJ = NCREJ+1
IF (MOD(NCREJ,500).EQ.0) WRITE(LOUT,9900) NCREJ
9900 FORMAT('REJECTION IN VALMSD ',I10)
IIREJ = 0
IREJ = 1
RETURN
END
*
*===valmdd===============================================================*
*
SUBROUTINE VALMDD(ITAPOI,ECM,KPROJ,KTARG,IREJ)
C Low mass double diffraction J.R. Feb/Mar 94
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine selects flavors and 4-momenta of partons in low-mass *
* single diffractive chains. *
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998)
CHARACTER*8 ANAME
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /ABRDIF/ XDQ1,XDQ2,XDDQ1,XDDQ2,
& IKVQ1,IKVQ2,IKD1Q1,IKD2Q1,IKD1Q2,IKD2Q2,
& IDIFFP,IDIFAP,
& AMDCH1,AMDCH2,AMDCH3,GAMDC1,GAMDC2,GAMDC3,
& PGXVC1,PGYVC1,PGZVC1,PGXVC2,PGYVC2,PGZVC2,
& PGXVC3,PGYVC3,PGZVC3,NDCH1,NDCH2,NDCH3,
& IKDCH1,IKDCH2,IKDCH3,
& PDQ1(4),PDQ2(4),PDD1(4),PDD2(4),PDFQ1(4)
COMMON /DPAR/ ANAME(210),AM(210),GA(210),TAU(210),ICH(210),
& IBAR(210),K1(210),K2(210)
COMMON/DINPDA/IMPS(6,6),IMVE(6,6),IB08(6,21),IB10(6,21),IA08(6,21)
&,IA10(6,21),A1,B1,B2,B3,LT,LE,BET,AS,B8,AME,DIQ,ISU
COMMON /TRAFOP/ GAMP,BGAMP,BETP
COMMON /ENERIN/ EPROJ,ETARG
COMMON /SDFLAG/ ISD
COMMON/XXLMDD/IJLMDD,KDLMDD
COMMON /OUTLEV/IOUTPO,IOUTPA,IOUXEV,IOUCOL
*
DIMENSION MQUARK(3,30),IHKKQ(-6:6),IHKKQQ(-3:3,-3:3),
& IDX(-4:4)
DATA IDX /-4,-3,-1,-2,0,2,1,3,4/
DATA IHKKQ /-6,-5,-4,-3,-1,-2,0,2,1,3,4,5,6/
DATA IHKKQQ/-3301,-3103,-3203,0, 0,0,0,
& -3103,-1103,-2103,0, 0, 0, 0,
& -3203,-2103,-2203,0, 0, 0, 0,
& 0, 0, 0,0, 0, 0, 0,
& 0, 0, 0,0,2203,2103,3202,
& 0, 0, 0,0,2103,1103,3103,
& 0, 0, 0,0,3203,3103,3303/
*
*----------------------------------- quark content of hadrons:
* 1, 2, 3, 4 - u, d, s, c
* -1,-2,-3,-4 - au,ad,as,ac
*
DATA MQUARK/
& 1,1,2, -1,-1,-2, 0,0,0, 0,0,0, 0,0,0,
& 0,0,0, 0,0,0, 1,2,2, -1,-2,-2, 0,0,0,
& 0,0,0, 0,0,0, 1,-2,0, 2,-1,0, 1,-3,0,
& 3,-1,0, 1,2,3, -1,-2,-3, 0,0,0, 2,2,3,
& 1,1,3, 1,2,3, 1,-1,0, 2,-3,0, 3,-2,0,
& 2,-2,0, 3,-3,0, 0,0,0, 0,0,0, 0,0,0/
DATA UNON/2.0/
DATA NCREJ, NCPT /0, 0/
*
IJLMDD= 1
ISD = 2
IREJ = 0
IIREJ = 0
IBPROJ = IBAR(KPROJ)
IBTARG = IBAR(KTARG)
EPROJ = (AM(KPROJ)**2-AM(KTARG)**2+ECM**2)/(2.0D0*ECM)
ETARG = (AM(KTARG)**2-AM(KPROJ)**2+ECM**2)/(2.0D0*ECM)
IF(IPEV.GE.2) WRITE(LOUT,1014)EPROJ,ETARG
1014 FORMAT('VALMSD: EPROJ,ETARG',2F10.5)
IF (IBTARG.LE.0) THEN
WRITE(LOUT,1001) IBTARG
1001 FORMAT('VALMSD: NO HMSD FOR TARGET WITH BARYON-CHARGE',I4)
IIREJ = 1
GOTO 9999
ENDIF
IQP1 = MQUARK(1,KPROJ)
IQP2 = MQUARK(2,KPROJ)
IQP3 = MQUARK(3,KPROJ)
IQT1 = MQUARK(1,KTARG)
IQT2 = MQUARK(2,KTARG)
IQT3 = MQUARK(3,KTARG)
IF(IPEV.GE.2) WRITE(LOUT,1002)
& IBPROJ,IBTARG,IQP1,IQP2,IQP3,IQT1,IQT2,IQT3
1002 FORMAT('VALMSD: IBPROJ,IBTARG,IQP1,IQP2,IQP3,IQT1,IQT2,IQT3 ',8I4)
*
IF (IBPROJ.NE.0) THEN
*
*-------------------- q-qq (aq-aqaq) - flavors of projectile (baryon)
*
ISAM = 1.0D0+2.999D0*RNDM(V)
GOTO (10,11,12) ISAM
10 CONTINUE
IQP = IQP1
IDIQP1 = IQP2
IDIQP2 = IQP3
GOTO 13
11 CONTINUE
IQP = IQP2
IDIQP1 = IQP1
IDIQP2 = IQP3
GOTO 13
12 CONTINUE
IQP = IQP3
IDIQP1 = IQP1
IDIQP2 = IQP2
13 CONTINUE
*
ELSE IF (IBPROJ.EQ.0) THEN
*
*-------------------- q-aq - flavors of projectile (meson)
*
ISAM = 1.0D0+1.999D0*RNDM(V)
GOTO (14,15) ISAM
14 CONTINUE
IQP = IQP1
IDIQP1 = IQP2
GOTO 16
15 CONTINUE
IQP = IQP2
IDIQP1 = IQP1
16 CONTINUE
IDIQP2 = 0
*
ENDIF
*
*-------------------- q-qq - flavors of target (baryon)
*
ISAM = 1.0D0+2.999D0*RNDM(V)
GOTO (17,18,19) ISAM
17 CONTINUE
IQT = IQT1
IDIQT1 = IQT2
IDIQT2 = IQT3
GOTO 20
18 CONTINUE
IQT = IQT2
IDIQT1 = IQT1
IDIQT2 = IQT3
GOTO 20
19 CONTINUE
IQT = IQT3
IDIQT1 = IQT1
IDIQT2 = IQT2
20 CONTINUE
*
IKVQ1 = IQP
IKD1Q1 = IDIQP1
IKD2Q1 = IDIQP2
*
IKVQ2 = IQT
IKD1Q2 = IDIQT1
IKD2Q2 = IDIQT2
*
IF (IPEV.GE.2) WRITE(LOUT,1003)
& IKVQ1,IKD1Q1,IKD2Q1,IKVQ2,IKD1Q2,IKD2Q2
1003 FORMAT('VALMSD: IKVQ1,IKD1Q1,IKD2Q1,IKVQ2,IKD1Q2,IKD2Q2 ',6I4)
*
*-------------------- IDIFTP = 1 target (backward) hadron excited
* IDIFTP = 2 projectile (forward) hadron excited
*
IDIFTP = 1.0D0+1.999D0*RNDM(V)
*-------------------- S.Roesler 5/26/93
IF ((ISINGD.EQ.3).OR.(ISINGD.EQ.7)) IDIFTP = 1
IF ((ISINGD.EQ.4).OR.(ISINGD.EQ.8)) IDIFTP = 2
*
IF (IPEV.GE.2) WRITE(LOUT,1004) IDIFTP
1004 FORMAT('VALMSD: IDIFTP ',I4)
IF ((IDIFTP.NE.1).AND.(IDIFTP.NE.2)) THEN
IF (IPEV.GE.2) WRITE(LOUT,'(A19)') 'VALMSD-ERROR: IDIFTP'
GOTO 9999
ENDIF
*
*-------------------- diffractive mass
*
31 CONTINUE
AMO = 1.5D0
C------------------------------------------------------------
C
C first simple test j.r. 2/94
C
C-----------------------------------------------------------
C AMO = 4.0D0
C-----------------------------------------------------------
R = RNDM(V)
IF ((IBPROJ.EQ.0).AND.(IDIFTP.EQ.1))
& AMO = 1.5D0*R+2.83D0*(1.0D0-R)
IF ((IBPROJ.EQ.0).AND.(IDIFTP.EQ.2)) AMO = 1.0D0
SAM = 1.0D0
IF (ECM.LE.300.0D0) SAM = 1.0D0-EXP(-((ECM/200.0D0)**4))
R = RNDM(V)*SAM
AMAX= (1.0D0-SAM)*SQRT(0.1D0*ECM**2)+SAM*SQRT(400.0D0)
AMU = R*SQRT(100.0D0)+(1.0D0-R)*AMAX
IF (IBPROJ.EQ.0) THEN
C----------------- change mass-cuts
C AMAX= (1.0D0-SAM)*SQRT(0.25D0*ECM**2)+SAM*SQRT(400.0D0)
AMAX= (1.0D0-SAM)*SQRT(0.15D0*ECM**2)+SAM*SQRT(400.0D0)
AMU = R*SQRT(100.0D0)+(1.0D0-R)*AMAX
ENDIF
C---------------------------------------------------------------
C
C j.r. test 2/94
C
C---------------------------------------------------------------
AMU=2.D0*AMU
C---------------------------------------------------------------
R = RNDM(V)
IF (ECM.LE.50.0D0) THEN
AMDIFF = AMO*(AMU/AMO)**R
ELSE
A = 0.7D0
IF (ECM.LE.300.0D0) A = 0.7D0*(1.0D0-EXP(-((ECM/100.0D0)**2)))
AMDIFF = 1.0D0/((R/(AMU**A)+(1.0D0-R)/(AMO**A))
& **(1.0D0/A))
ENDIF
IF(AMDIFF.GT.0.5D0*ECM)GO TO 31
IF (IOUXEV.GE.2) WRITE(LOUT,1005) AMDIFF
1005 FORMAT('VALMSD: AMDIFF',E10.5)
*
*-------------------- kinematical parameters of
* diffractive projectile (IDIFTP = 1)
* or diffractive target (IDIFTP = 2)
*
IF (IDIFTP.EQ.1) THEN
AMDCH3 = AM(KPROJ)
IF(KPROJ.EQ.1)THEN
KDLMDD = 61
AMDCH3 = AM(61)
C 19.4.99
KDLMDD = 54
AMDCH3 = AM(54)
ELSEIF(KPROJ.EQ.2)THEN
C 19.4.99
KDLMDD = 68
AMDCH3 = AM(68)
ELSEIF(KPROJ.EQ.8)THEN
AMDCH3 = AM(62)
KDLMDD = 62
C 19.4.99
AMDCH3 = AM(55)
KDLMDD = 55
ELSEIF(KPROJ.EQ.13)THEN
AMDCH3 = AM(186)
KDLMDD = 186
ELSEIF(KPROJ.EQ.14)THEN
AMDCH3 = AM(188)
KDLMDD = 188
ELSEIF(KPROJ.EQ.15)THEN
AMDCH3 = AM(190)
KDLMDD = 190
ELSEIF(KPROJ.EQ.16)THEN
AMDCH3 = AM(191)
KDLMDD = 191
ELSEIF(KPROJ.EQ.23)THEN
AMDCH3 = AM(187)
KDLMDD = 187
ELSEIF(KPROJ.EQ.24)THEN
AMDCH3 = AM(192)
KDLMDD = 192
ELSEIF(KPROJ.EQ.25)THEN
AMDCH3 = AM(193)
KDLMDD = 193
ENDIF
ELSE IF (IDIFTP.EQ.2) THEN
AMDCH3 = AM(KTARG)
IF(KTARG.EQ.1)THEN
KDLMDD = 61
AMDCH3 = AM(61)
C 19.4.99
KDLMDD = 54
AMDCH3 = AM(54)
ELSEIF(KTARG.EQ.2)THEN
C 19.4.99
KDLMDD = 68
AMDCH3 = AM(68)
ELSEIF(KTARG.EQ.8)THEN
AMDCH3 = AM(62)
KDLMDD = 62
C 19.4.99
AMDCH3 = AM(55)
KDLMDD = 55
ELSEIF(KTARG.EQ.13)THEN
AMDCH3 = AM(186)
KDLMDD = 186
ELSEIF(KTARG.EQ.14)THEN
AMDCH3 = AM(188)
KDLMDD = 188
ELSEIF(KTARG.EQ.15)THEN
AMDCH3 = AM(190)
KDLMDD = 190
ELSEIF(KTARG.EQ.16)THEN
AMDCH3 = AM(191)
KDLMDD = 191
ELSEIF(KTARG.EQ.23)THEN
AMDCH3 = AM(187)
KDLMDD = 187
ELSEIF(KTARG.EQ.24)THEN
AMDCH3 = AM(192)
KDLMDD = 192
ELSEIF(KTARG.EQ.25)THEN
AMDCH3 = AM(193)
KDLMDD = 193
ENDIF
ENDIF
ECH3 = (ECM**2+AMDCH3**2-AMDIFF**2)/(2.0D0*ECM)
IF (ECH3.LE.AMDCH3) THEN
NCMERR = NCMERR+1
IF (MOD(NCMERR,2200).EQ.0)
& WRITE(LOUT,*) 'LMSD: INEFFICIENT SELECTION OF AMDIFF(1),
& NCMERR = ',NCMERR
GOTO 31
ENDIF
*
PCH3 = SQRT(ABS(ECH3-AMDCH3))*SQRT(ECH3+AMDCH3)
IF (IDIFTP.EQ.2) PCH3 = -PCH3
NDCH3 = -1
GAMDC3 = ECH3/AMDCH3
PGVC3 = PCH3/AMDCH3
IF (IOUXEV.GE.2) WRITE(LOUT,1006) AMDCH3,ECH3,PCH3,GAMDC3,PGVC3
1006 FORMAT('VALMSD: AMDCH3,ECH3,PCH3,GAMDC3,PGVC3',5E10.5)
*
30 CONTINUE
B33 = 8.0D0
ES = -2.0D0/(B33**2)*LOG(RNDM(V)*RNDM(V))
HPS = SQRT(ES*ES+2.0D0*ES*0.94D0)
CALL DSFECF(SFE,CFE)
PXCH3 = HPS*CFE
PYCH3 = HPS*SFE
PTCH3 = SQRT(PXCH3**2+PYCH3**2)
IF (PTCH3.GT.ABS(PCH3)) THEN
NCPT = NCPT+1
IF (MOD(NCPT,500).EQ.0) WRITE(LOUT,1007) NCPT
1007 FORMAT('VALMSD: INEFFICIENT PT-SELECTION 1, NCPT=',I8)
GOTO 30
ENDIF
PLCH3 = SIGN(SQRT(ABS(PCH3-PTCH3))*SQRT(ABS(PCH3+PTCH3)),PCH3)
IF (IOUXEV.GE.2) WRITE(LOUT,1008) ES,HPS,PXCH3,PYCH3,PLCH3
1008 FORMAT('VALMSD: ES,HPS,PXCH3,PYCH3,PLCH3',5E10.5)
*
*-------------------- no chain 1
*
NDCH1 = -99
AMDCH1 = 0.0D0
ECH1 = 0.0D0
PCH1 = 0.0D0
GAMDC1 = 1.0D0
PGVC1 = 0.0D0
PGXVC1 = 0.0D0
PGYVC1 = 0.0D0
PGZVC1 = 0.0D0
DO 40 I=1,4
PDD2(I) = 0.0D0
PDQ1(I) = 0.0D0
40 CONTINUE
*
*-------------------- kinematical parameters of
* excited target (IDIFTP = 1)
* or excited projectile (IDIFTP = 2)
*
AMDCH2 = AMDIFF
ECH2 = (ECM**2+AMDCH2**2-AMDCH3**2)/(2.0D0*ECM)
PCH2 = -SIGN(SQRT(ABS(ECH2-AMDCH2))*SQRT(ECH2+AMDCH2),PCH3)
NDCH2 = 0
GAMDC2 = ECH2/AMDCH2
PGVC2 = PCH2/AMDCH2
*
*-------------------- (IDIFFP,IDIFAP in analogy to HMSD in VAHMSD)
* IDIFTP = 1 : IKD1Q2/IKD2Q2 - IDIFFP = IKVQ2
* IDIFTP = 2 : projectile - baryon
* IKD1Q1/IKD2Q1 - IDIFFP = IKVQ1
* projectile - antibaryon
* IKD1Q1/IKD2Q1 - IDIFAP = IKVQ1
* projectile - meson
* IKD1Q1 > 0 - IDIFAP = IKVQ1
* IKD1Q1 < 0 - IDIFFP = IKVQ1
*
IF (IDIFTP.EQ.1) IDIFFP = IKVQ2
IF (IDIFTP.EQ.2) THEN
IF (IBPROJ.GT.0) IDIFFP = IKVQ1
IF (IBPROJ.LT.0) IDIFAP = IKVQ1
IF ((IBPROJ.EQ.0).AND.(IKD1Q1.GT.0)) IDIFAP = IKVQ1
IF ((IBPROJ.EQ.0).AND.(IKD1Q1.LT.0)) IDIFFP = IKVQ1
ENDIF
IF (IOUXEV.GE.2) WRITE(LOUT,1009) AMDCH2,ECH2,PCH2,GAMDC2,PGVC2,
& IDIFFP,IDIFAP
1009 FORMAT('VALMSD: AMDCH2,ECH2,PCH2,GAMDC2,PGVC2,IDIFFP,IDIFAP',
& 5E10.5,2I4)
PXCH2 = -PXCH3
PYCH2 = -PYCH3
PTCH2 = SQRT(PXCH2**2+PYCH2**2)
IF (PTCH2.GT.ABS(PCH2)) THEN
NCPT = NCPT+1
IF (MOD(NCPT,500).EQ.0) WRITE(LOUT,1010) NCPT
1010 FORMAT('VALMSD: INEFFICIENT PT-SELECTION 2, NCPT=',I8)
GOTO 30
ENDIF
PLCH2 = SIGN(SQRT(ABS(PCH2-PTCH2))*SQRT(ABS(PCH2+PTCH2)),PCH2)
IF (IOUXEV.GE.2) WRITE(LOUT,1011) PXCH2,PYCH2,PLCH2
1011 FORMAT('VALMSD: PXCH2,PYCH2,PLCH2',3E10.5)
CC = AMDCH2/(2.0D0*ECH2)
*--------------------------- S.R. 11/12/92
IF (CC.GE.0.5D0) THEN
NCMERR = NCMERR+1
IF (MOD(NCMERR,200).EQ.0)
& WRITE(LOUT,*) 'LMSD: INEFFICIENT SELECTION OF AMDIFF(2),
& NCMERR = ',NCMERR
GOTO 31
ENDIF
*
XDIQ = 0.5D0+SQRT(ABS((0.5D0-CC)*(0.5D0+CC)))
XQ = 1.0D0-XDIQ
EDIQ = ECH2*XDIQ
EQ = ECH2*XQ
TEMP = ABS(EDIQ/PCH2)
PXDIQ = PXCH2*TEMP
PYDIQ = PYCH2*TEMP
PLDIQ = PLCH2*TEMP
TEMP = ABS(EQ/PCH2)
PXQ = -PXCH2*TEMP
PYQ = -PYCH2*TEMP
PLQ = -PLCH2*TEMP
*
*-------------------- store results in COMMON-block /ABRDIF/
*
PDQ2(1) = PXQ
PDQ2(2) = PYQ
PDQ2(3) = PLQ
PDQ2(4) = EQ
PDD1(1) = PXDIQ
PDD1(2) = PYDIQ
PDD1(3) = PLDIQ
PDD1(4) = EDIQ
PDFQ1(1) = PXCH3
PDFQ1(2) = PYCH3
PDFQ1(3) = PLCH3
PDFQ1(4) = ECH3
PGXVC2 = PXCH2/AMDCH2
PGYVC2 = PYCH2/AMDCH2
PGZVC2 = PLCH2/AMDCH2
PGXVC3 = PXCH3/AMDCH3
PGYVC3 = PYCH3/AMDCH3
PGZVC3 = PLCH3/AMDCH3
*
IF (IPEV.GE.2) THEN
WRITE(LOUT,*) 'VALMSD: PDQ1, PDD2, PDD1, PDQ2, PDFQ1'
WRITE(LOUT,1012)
& (PDQ1(I),PDD2(I),PDD1(I),PDQ2(I),PDFQ1(I),I=1,4)
1012 FORMAT(5F10.5)
WRITE(LOUT,1013) 'PGXVC1,PGYVC1,PGZVC1,GAMDC1',
& PGXVC1,PGYVC1,PGZVC1,GAMDC1
WRITE(LOUT,1013) 'PGXVC2,PGYVC2,PGZVC2,GAMDC2',
& PGXVC2,PGYVC2,PGZVC2,GAMDC2
WRITE(LOUT,1013) 'PGXVC3,PGYVC3,PGZVC3,GAMDC3',
& PGXVC3,PGYVC3,PGZVC3,GAMDC3
1013 FORMAT(A27,4F10.5)
ENDIF
*
*------------------- store results in common block /HKKEVT/
*
* partonen of projectile/target
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 23-IDIFTP
IF (IDIFTP.EQ.1) IDHKK(NHKK) = IHKKQ(IDX(IKVQ2))
IF (IDIFTP.EQ.2) IDHKK(NHKK) = IHKKQ(IDX(IKVQ1))
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = ITAPOI
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = 0.0D0
PHKK(2,NHKK) = 0.0D0
PHKK(3,NHKK) = XQ
PHKK(4,NHKK) = XQ
PHKK(5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 23-IDIFTP
IF (IDIFTP.EQ.1) IDHKK(NHKK) = IHKKQQ(IDX(IKD1Q2),IDX(IKD2Q2))
IF (IDIFTP.EQ.2) IDHKK(NHKK) = IHKKQQ(IDX(IKD1Q1),IDX(IKD2Q1))
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = ITAPOI
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = 0.0D0
PHKK(2,NHKK) = 0.0D0
PHKK(3,NHKK) = XDIQ
PHKK(4,NHKK) = XDIQ
PHKK(5,NHKK) = 0.0D0
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
* ends of chain 2
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 100+ISTHKK(NHKK-2)
IDHKK(NHKK) = IDHKK(NHKK-2)
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = JMOHKK(1,NHKK-2)
JDAHKK(1,NHKK) = NHKK+2
JDAHKK(2,NHKK) = NHKK+2
PHKK(1,NHKK) = PDQ2(1)
PHKK(2,NHKK) = PDQ2(2)
PHKK(3,NHKK) = PDQ2(3)
PHKK(4,NHKK) = PDQ2(4)
PHKK(5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))+XXPP
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))+YYPP
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 100+ISTHKK(NHKK-2)
IDHKK(NHKK) = IDHKK(NHKK-2)
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = JMOHKK(1,NHKK-2)
JDAHKK(1,NHKK) = NHKK+1
JDAHKK(2,NHKK) = NHKK+1
PHKK(1,NHKK) = PDD1(1)
PHKK(2,NHKK) = PDD1(2)
PHKK(3,NHKK) = PDD1(3)
PHKK(4,NHKK) = PDD1(4)
PHKK(5,NHKK) = 0.0D0
C Add position of parton in hadron
CALL QINNUC(XXPP,YYPP)
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))+XXPP
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))+YYPP
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
* chain 2
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 188
IDHKK(NHKK) = 88888
JMOHKK(1,NHKK) = NHKK-2
JMOHKK(2,NHKK) = NHKK-1
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = PXCH2
PHKK(2,NHKK) = PYCH2
PHKK(3,NHKK) = PLCH2
PHKK(4,NHKK) = ECH2
PHKK(5,NHKK) = AMDCH2
VHKK (1,NHKK) = VHKK(1,NHKK-1)
VHKK (2,NHKK) = VHKK(2,NHKK-1)
VHKK (3,NHKK) = VHKK(3,NHKK-1)
IF ((BETP.NE.0.0D0).AND.(BGAMP.NE.0.0D0))
&VHKK (4,NHKK) = VHKK(3,NHKK)/BETP-VHKK(3,NHKK-2)/BGAMP
*
* diffractive nucleon
*
NHKK = NHKK + 1
ISTHKK(NHKK) = 188
IDHKK(NHKK) = 88888
IF (IDIFTP.EQ.2) JMOHKK(1,NHKK) = ITAPOI
IF (IDIFTP.EQ.1) JMOHKK(1,NHKK) = 1
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = PDFQ1(1)
PHKK(2,NHKK) = PDFQ1(2)
PHKK(3,NHKK) = PDFQ1(3)
PHKK(4,NHKK) = PDFQ1(4)
PHKK(5,NHKK) = AMDCH3
VHKK (1,NHKK) = VHKK(1,JMOHKK(1,NHKK))
VHKK (2,NHKK) = VHKK(2,JMOHKK(1,NHKK))
VHKK (3,NHKK) = VHKK(3,JMOHKK(1,NHKK))
VHKK (4,NHKK) = VHKK(4,JMOHKK(1,NHKK))
*
*
*---------- S. Roesler 21-10-93
* check energy-momentum conservation
IF (IPEV.GE.2) THEN
PX = PDQ1(1)+PDQ2(1)+PDD1(1)+PDD2(1)+PDFQ1(1)
PY = PDQ1(2)+PDQ2(2)+PDD1(2)+PDD2(2)+PDFQ1(2)
PZ = PDQ1(3)+PDQ2(3)+PDD1(3)+PDD2(3)+PDFQ1(3)
EE = ECM-(PDQ1(4)+PDQ2(4)+PDD1(4)+PDD2(4)+PDFQ1(4))
WRITE(LOUT,*)'VALMSD: ENERGY-MOMENTUM-CHECK (PX,PY,PZ,E)'
WRITE(LOUT,'(5F12.6)')PX,PY,PZ,EE,ECM
ENDIF
*
RETURN
9999 CONTINUE
NCREJ = NCREJ+1
IF (MOD(NCREJ,500).EQ.0) WRITE(LOUT,9900) NCREJ
9900 FORMAT('REJECTION IN VALMSD ',I10)
IIREJ = 0
IREJ = 1
RETURN
END
*
*===hadrdi===============================================================*
*
SUBROUTINE HADRDI(NAUX,IJPROJ,IJTAR,NHKKH1)
**************************************************************************
* Version November 1993 by Stefan Roesler *
* University of Leipzig *
* This subroutine prepares the hadronisation of diffractive chains *
* (single-diffractive component), calls HADJET and stores the results *
* in common block /HKKEVT/. *
**************************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998,INTMX=2488,NAUMAX=897,NFIMAX=249)
CHARACTER*8 ANAME,ANC,ANF
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DPAR/ ANAME(210),AAM(210),GA(210),TAU(210),IICH(210),
& IIBAR(210),K1(210),K2(210)
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /DIFPAR/ PXC(902), PYC(902),PZC(902),
& HEC(902), AMC(902),ICHC(902),
& IBARC(902),ANC(902),NRC(902)
COMMON /DFINPA/ ANF(NFIMAX),PXF(NFIMAX),PYF(NFIMAX),
& PZF(NFIMAX),HEF(NFIMAX),AMF(NFIMAX),
& ICHF(NFIMAX),IBARF(NFIMAX),NREF(NFIMAX)
COMMON /DFINPZ/IORMO(NFIMAX),IDAUG1(NFIMAX),IDAUG2(NFIMAX),
* ISTATH(NFIMAX)
COMMON /ABRDIF/ XDQ1,XDQ2,XDDQ1,XDDQ2,
& IKVQ1,IKVQ2,IKD1Q1,IKD2Q1,IKD1Q2,IKD2Q2,
& IDIFFP,IDIFAP,
& AMDCH1,AMDCH2,AMDCH3,GAMDC1,GAMDC2,GAMDC3,
& PGXVC1,PGYVC1,PGZVC1,PGXVC2,PGYVC2,PGZVC2,
& PGXVC3,PGYVC3,PGZVC3,NDCH1,NDCH2,NDCH3,
& IKDCH1,IKDCH2,IKDCH3,
& PDQ1(4),PDQ2(4),PDD1(4),PDD2(4),PDFQ1(4)
COMMON /DINPDA/ IMPS(6,6),IMVE(6,6),IB08(6,21),IB10(6,21),
& IA08(6,21),IA10(6,21),
& A1,B1,B2,B3,LT,LE,BET,AS,B8,AME,DIQ,ISU
COMMON /ENERIN/ EPROJ,ETARG
COMMON /DIFOUT/ AMCHDI,TTT,NNAUX,KPROJ,KTARG
COMMON /SDFLAG/ ISD
COMMON/XXLMDD/IJLMDD,KDLMDD
C modified DPMJET
COMMON /BUFUEH/ ANNVV,ANNSS,ANNSV,ANNVS,ANNCC,
* ANNDV,ANNVD,ANNDS,ANNSD,
* ANNHH,ANNZZ,
* PTVV,PTSS,PTSV,PTVS,PTCC,PTDV,PTVD,PTDS,PTSD,
* PTHH,PTZZ,
* EEVV,EESS,EESV,EEVS,EECC,EEDV,EEVD,EEDS,EESD,
* EEHH,EEZZ
* ,ANNDI,PTDI,EEDI
* ,ANNZD,ANNDZ,PTZD,PTDZ,EEZD,EEDZ
C---------------------
*
DIMENSION POJ1(4),PAT1(4),POJ2(4),PAT2(4)
*
NHKKH1 = NHKK
NAUX = 0
NHAD = 0
PXDI = 0.0D0
PYDI = 0.0D0
PLDI = 0.0D0
EDI = 0.0D0
IMOH2 = NHKK-1
IMOH3 = NHKK
IF (ISD.EQ.1) IMOH1 = NHKK-4
IBPROJ = IIBAR(IJPROJ)
IBTAR = IIBAR(IJTAR)
KPROJ = IJPROJ
KTARG = IJTAR
*
IF (IPEV.GE.2) WRITE(LOUT,1100) ISD
1100 FORMAT('HADRDI: ISD ',I3)
*
NUNUC1 = 3
NUNUC2 = 3
IF ((IBPROJ.NE.0).AND.(IDIFTP.EQ.2)) NUNUC2 = 6
IF ((IBTAR .NE.0).AND.(IDIFTP.EQ.1)) NUNUC2 = 4
IF (IDIFTP.EQ.2) THEN
DO 10 J=1,4
POJ1(J) = PDQ1(J)
PAT1(J) = PDD2(J)
POJ2(J) = PDD1(J)
PAT2(J) = PDQ2(J)
10 CONTINUE
ELSE
DO 11 J=1,4
POJ1(J) = PDD2(J)
PAT1(J) = PDQ1(J)
POJ2(J) = PDQ2(J)
PAT2(J) = PDD1(J)
11 CONTINUE
ENDIF
IF (IDIFTP.EQ.1) THEN
IFB11 = IDIFAP
IFB12 = IKVQ2
IFB21 = IDIFFP
IFB22 = IKD1Q2
IFB23 = IKD2Q2
ELSE IF ((IDIFTP.EQ.2).AND.(IKVQ1.GT.0)) THEN
IFB11 = IKVQ1
IFB12 = IDIFAP
IFB21 = IKD1Q1
IFB22 = IKD2Q1
IFB23 = IDIFFP
ELSE IF ((IDIFTP.EQ.2).AND.(IKVQ1.LE.0)) THEN
IFB11 = IKVQ1
IFB12 = IDIFFP
IFB21 = IKD1Q1
IFB22 = IKD2Q1
IFB23 = IDIFAP
ENDIF
IF ((IFB22.EQ.0).AND.(IFB23.NE.0)) THEN
IFB22 = IFB23
IFB23 = 0
ENDIF
IF (IFB11.LT.0) IFB11 = IABS(IFB11)+6
IF (IFB12.LT.0) IFB12 = IABS(IFB12)+6
IF (IFB21.LT.0) IFB21 = IABS(IFB21)+6
IF (IFB22.LT.0) IFB22 = IABS(IFB22)+6
IF (IFB23.LT.0) IFB23 = IABS(IFB23)+6
*
*-------------------------- chain 1
*
C WRITE(LOUT,1001) (POJ1(I),I=1,4)
C WRITE(LOUT,1002) (PAT1(I),I=1,4)
IF (IPEV.GE.2) THEN
WRITE(LOUT,1000) NHAD,IKDCH1,NUNUC1,NDCH1,IFB11,IFB12,
& IFB13,IFB14
WRITE(LOUT,1001) (POJ1(I),I=1,4)
WRITE(LOUT,1002) (PAT1(I),I=1,4)
WRITE(LOUT,1003) GAMDC1,PGXVC1,PGYVC1,PGZVC1,AMDCH1
1000 FORMAT('HADRDI: NHAD,IKDCH1,NUNUC1,NDCH1,IFB11,IFB12',
& ', IFB13,IFB14 ',8I4)
1001 FORMAT('HADRDI: POJ1 ',4E15.5)
1002 FORMAT('HADRDI: PAT1 ',4E15.5)
1003 FORMAT('HADRDI: GAMDC1,PGXVC1,PGYVC1,PGZVC1,AMDCH1',5F10.5)
ENDIF
CALL HADJET(NHAD,AMDCH1,POJ1,PAT1,GAMDC1,PGXVC1,
& PGYVC1,PGZVC1,IFB11,IFB12,IFB13,IFB14,
& IKDCH1,IKDCH1,NUNUC1,NDCH1,7)
*
NHKKBE = NHKK+1
IF (NHAD.EQ.0) GOTO 13
DO 12 J=1,NHAD
IF (NHKK.EQ.NMXHKK) THEN
WRITE(LOUT,1004) NHKK
1004 FORMAT('HADRDI: NHKK.EQ.NMXHKK',I10)
GOTO 9999
ENDIF
NHKK = NHKK+1
NAUX = NAUX+1
IF(IBARF(J).EQ.500)GO TO 776
ECHECK = SQRT(PXF(J)**2+PYF(J)**2+PZF(J)**2+AMF(J)**2)
IF (ABS(ECHECK-HEF(J)).GT.0.5D-2) THEN
WRITE(LOUT,1005) NHKK,ECHECK,HEF(J),AMF(J)
1005 FORMAT('HADRDI: CHAIN 1 CORRECT INCONSISTENT ENERGY',
& I10,3F10.5)
HEF(J) = ECHECK
ENDIF
776 CONTINUE
ANNDI=ANNDI+1
EEDI=EEDI+HEF(J)
PTDI=PTDI+SQRT(PXF(J)**2+PYF(J)**2)
PXC (NAUX) = PXF (J)
PYC (NAUX) = PYF (J)
PZC (NAUX) = PZF (J)
HEC (NAUX) = HEF (J)
AMC (NAUX) = AMF (J)
ICHC (NAUX) = ICHF (J)
IBARC(NAUX) = IBARF(J)
ANC (NAUX) = ANF (J)
NRC (NAUX) = NREF (J)
PXDI = PXDI+PXF(J)
PYDI = PYDI+PYF(J)
PLDI = PLDI+PZF(J)
EDI = EDI +HEF(J)
EDIFF = EDIFF+HEF(J)
PTDIFF = PTDIFF+SQRT(PXF(J)**2+PYF(J)**2)
ISTHKK(NHKK) = 1
IF(IBARF(J).EQ.500)ISTHKK(NHKK)=2
IDHKK (NHKK) = MPDGHA(NREF(J))
IF(IORMO(J).EQ.999)THEN
JMOHKK(1,NHKK) = IMOH1
ELSE
JMOHKK(1,NHKK)=NHKKBE+IORMO(J)-1
ENDIF
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = PXF(J)
PHKK(2,NHKK) = PYF(J)
PHKK(3,NHKK) = PZF(J)
PHKK(4,NHKK) = HEF(J)
PHKK(5,NHKK) = AMF(J)
IMOHKK = JMOHKK(1,NHKK)
VHKK(1,NHKK) = VHKK(1,IMOHKK)
VHKK(2,NHKK) = VHKK(2,IMOHKK)
VHKK(3,NHKK) = VHKK(3,IMOHKK)
VHKK(4,NHKK) = VHKK(4,IMOHKK)
IF (IPHKK.GE.1) THEN
WRITE(LOUT,1006) NHKK,ISTHKK(NHKK),IDHKK(NHKK),
& JMOHKK(1,NHKK),JMOHKK(2,NHKK),
& JDAHKK(1,NHKK),JDAHKK(2,NHKK)
WRITE(LOUT,1007) (PHKK(K,NHKK),K=1,5)
1006 FORMAT('HADRDI: NHKK,ISTHKK,IDHKK,JMOHKK,JDAHKK',7I6)
1007 FORMAT('HADRDI: PHKK ',5F10.5)
ENDIF
12 CONTINUE
13 CONTINUE
IF ((NHAD.GT.0).AND.(ISD.EQ.1)) THEN
JDAHKK(1,IMOH1) = NHKKBE
JDAHKK(2,IMOH1) = NHKK
ENDIF
*
*------------------------ chain 2
*
NHAD = 0
C WRITE(LOUT,1009) (POJ2(I),I=1,4)
C WRITE(LOUT,1010) (PAT2(I),I=1,4)
IF (IPEV.GE.2) THEN
WRITE(LOUT,1008) NHAD,IKDCH2,NUNUC2,NDCH2,IFB21,IFB22,
& IFB23,IFB24
WRITE(LOUT,1009) (POJ2(I),I=1,4)
WRITE(LOUT,1010) (PAT2(I),I=1,4)
WRITE(LOUT,1011) GAMDC2,PGXVC2,PGYVC2,PGZVC2,AMDCH2
1008 FORMAT('HADRDI: NHAD,IKDCH2,NUNUC2,NDCH2,IFB21,IFB22,
& IFB23,IFB24 ',8I4)
1009 FORMAT('HADRDI: POJ2 ',4E15.5)
1010 FORMAT('HADRDI: PAT2 ',4E15.5)
1011 FORMAT('HADRDI: GAMDC2,PGXVC2,PGYVC2,PGZVC2,AMDCH2',5F10.5)
ENDIF
CALL HADJET(NHAD,AMDCH2,POJ2,PAT2,GAMDC2,PGXVC2,
& PGYVC2,PGZVC2,IFB21,IFB22,IFB23,IFB24,
& IKDCH2,IKDCH2,NUNUC2,NDCH2,8)
*
NHKKBE = NHKK+1
IF (NHAD.EQ.0) GOTO 15
DO 14 J=1,NHAD
IF (NHKK.EQ.NMXHKK) THEN
WRITE(LOUT,1012) NHKK
1012 FORMAT('HADRDI: NHKK.EQ.NMXHKK',I10)
GOTO 9999
ENDIF
NHKK = NHKK+1
NAUX = NAUX+1
IF(IBARF(J).EQ.500)GO TO 775
ECHECK = SQRT(PXF(J)**2+PYF(J)**2+PZF(J)**2+AMF(J)**2)
IF (ABS(ECHECK-HEF(J)).GT.0.5D-2) THEN
WRITE(LOUT,1013) NHKK,ECHECK,HEF(J),AMF(J)
1013 FORMAT('HADRDI: CHAIN 2 CORRECT INCONSISTENT ENERGY',
& I10,3F10.5)
HEF(J) = ECHECK
ENDIF
775 CONTINUE
ANNDI=ANNDI+1
EEDI=EEDI+HEF(J)
PTDI=PTDI+SQRT(PXF(J)**2+PYF(J)**2)
PXC (NAUX) = PXF (J)
PYC (NAUX) = PYF (J)
PZC (NAUX) = PZF (J)
HEC (NAUX) = HEF (J)
AMC (NAUX) = AMF (J)
ICHC (NAUX) = ICHF (J)
IBARC(NAUX) = IBARF(J)
ANC (NAUX) = ANF (J)
NRC (NAUX) = NREF (J)
PXDI = PXDI+PXF(J)
PYDI = PYDI+PYF(J)
PLDI = PLDI+PZF(J)
EDI = EDI +HEF(J)
EDIFF = EDIFF+HEF(J)
PTDIFF = PTDIFF+SQRT(PXF(J)**2+PYF(J)**2)
ISTHKK(NHKK) = 1
IF(IBARF(J).EQ.500)ISTHKK(NHKK)=2
IDHKK (NHKK) = MPDGHA(NREF(J))
IF(IORMO(J).EQ.999)THEN
JMOHKK(1,NHKK) = IMOH2
ELSE
JMOHKK(1,NHKK)=NHKKBE+IORMO(J)-1
ENDIF
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
JDAHKK(2,NHKK) = 0
PHKK(1,NHKK) = PXF(J)
PHKK(2,NHKK) = PYF(J)
PHKK(3,NHKK) = PZF(J)
PHKK(4,NHKK) = HEF(J)
PHKK(5,NHKK) = AMF(J)
IMOHKK = JMOHKK(1,NHKK)
VHKK(1,NHKK) = VHKK(1,IMOHKK)
VHKK(2,NHKK) = VHKK(2,IMOHKK)
VHKK(3,NHKK) = VHKK(3,IMOHKK)
VHKK(4,NHKK) = VHKK(4,IMOHKK)
IF (IPHKK.GE.2) THEN
WRITE(LOUT,1014) NHKK,ISTHKK(NHKK),IDHKK(NHKK),
& JMOHKK(1,NHKK),JMOHKK(2,NHKK),
& JDAHKK(1,NHKK),JDAHKK(2,NHKK)
WRITE(LOUT,1015) (PHKK(K,NHKK),K=1,5)
1014 FORMAT('HADRDI: NHKK,ISTHKK,IDHKK,JMOHKK,JDAHKK',7I6)
1015 FORMAT('HADRDI: PHKK ',5F10.5)
ENDIF
14 CONTINUE
15 CONTINUE
IF (NHAD.GT.0) THEN
JDAHKK(1,IMOH2) = NHKKBE
JDAHKK(2,IMOH2) = NHKK
ENDIF
*
*----------------------------- diffractive nucleon/antinucleon
*
NAUX = NAUX+1
IF (IDIFTP.EQ.1) THEN
IF(IJLMDD.EQ.1)THEN
AMC (NAUX) = AAM (KDLMDD)
ICHC (NAUX) = IICH (KDLMDD)
IBARC(NAUX) = IIBAR(KDLMDD)
ANC (NAUX) = ANAME(KDLMDD)
NRC (NAUX) =KDLMDD
ELSEIF(IJLMDD.EQ.0)THEN
AMC (NAUX) = AAM (IJPROJ)
ICHC (NAUX) = IICH (IJPROJ)
IBARC(NAUX) = IIBAR(IJPROJ)
ANC (NAUX) = ANAME(IJPROJ)
NRC (NAUX) = IJPROJ
ENDIF
ELSEIF (IDIFTP.EQ.2) THEN
IF(IJLMDD.EQ.1)THEN
AMC (NAUX) = AAM (KDLMDD)
ICHC (NAUX) = IICH (KDLMDD)
IBARC(NAUX) = IIBAR(KDLMDD)
ANC (NAUX) = ANAME(KDLMDD)
NRC (NAUX) =KDLMDD
ELSEIF(IJLMDD.EQ.0)THEN
AMC (NAUX) = AAM (IJTAR)
ICHC (NAUX) = IICH (IJTAR)
IBARC(NAUX) = IIBAR(IJTAR)
ANC (NAUX) = ANAME(IJTAR)
NRC (NAUX) = IJTAR
ENDIF
ENDIF
PXC(NAUX) = PDFQ1(1)
PYC(NAUX) = PDFQ1(2)
PZC(NAUX) = PDFQ1(3)
HEC(NAUX) = PDFQ1(4)
ANNDI=ANNDI+1
EEDI=EEDI+HEC(NAUX)
PTDI=PTDI+SQRT(PXC(NAUX)**2+PYC(NAUX)**2)
NHKK = NHKK+1
ISTHKK(NHKK) = 1
C IF(IBARF(J).EQ.500)ISTHKK(NHKK)=2
IDHKK (NHKK) = MPDGHA(NRC(NAUX))
IF(IORMO(J).EQ.999)THEN
JMOHKK(1,NHKK) = IMOH3
ELSE
JMOHKK(1,NHKK)=NHKKBE+IORMO(J)-1
ENDIF
JMOHKK(2,NHKK) = 0
JDAHKK(1,NHKK) = 0
*---------- S. Roesler 5-11-93
* the following line is just to get the leading particle
* detected
JDAHKK(2,NHKK) = 1000
*
PHKK(1,NHKK) = PXC(NAUX)
PHKK(2,NHKK) = PYC(NAUX)
PHKK(3,NHKK) = PZC(NAUX)
PHKK(4,NHKK) = HEC(NAUX)
PHKK(5,NHKK) = AMC(NAUX)
JDAHKK(1,IMOH3)= NHKK
IMOHKK = JMOHKK(1,NHKK)
VHKK(1,NHKK) = VHKK(1,IMOHKK)
VHKK(2,NHKK) = VHKK(2,IMOHKK)
VHKK(3,NHKK) = VHKK(3,IMOHKK)
VHKK(4,NHKK) = VHKK(4,IMOHKK)
IF (IPHKK.GE.2) THEN
WRITE(LOUT,1016) NHKK,ISTHKK(NHKK),IDHKK(NHKK),
& JMOHKK(1,NHKK),JMOHKK(2,NHKK),
& JDAHKK(1,NHKK),JDAHKK(2,NHKK)
WRITE(LOUT,1017) (PHKK(K,NHKK),K=1,5)
1016 FORMAT('HADRDI: NHKK,ISTHKK,IDHKK,JMOHKK,JDAHKK',7I6)
1017 FORMAT('HADRDI: PHKK ',5F10.5)
ENDIF
IF (IPEV.GE.2) THEN
DO 16 I=1,NAUX
WRITE(LOUT,*) 'HADRDI: DIFFRACTIVE JET-HADRONS'
WRITE(LOUT,1018)I,PXC(I),PYC(I),PZC(I),HEC(I),AMC(I),
& ICHC(I),IBARC(I),NRC(I),ANC(I)
1018 FORMAT(I5,5F12.4,3I5,A10)
16 CONTINUE
ENDIF
*
NNAUX = NAUX
AMCHDI = SQRT(EDI**2-PXDI**2-PYDI**2-PLDI**2)
IF (IDIFTP.EQ.1) TTT=2*AAM(IJPROJ)**2-2.*(EPROJ*HEC(NAUX)
& -SQRT(EPROJ**2-AAM(IJPROJ)**2)*PZC(NAUX))
IF (IDIFTP.EQ.2) TTT=2*AAM(IJTAR)**2-2.*(ETARG*HEC(NAUX)
& +SQRT(ETARG**2-AAM(IJTAR)**2)*PZC(NAUX))
IF (IPEV.GE.2) THEN
WRITE(LOUT,1019) AMCHDI,TTT
1019 FORMAT('HADRDI: AMCHDI,TTT ',2F10.5)
ENDIF
9999 CONTINUE
RETURN
END
*
*===diadif===============================================================*
*
SUBROUTINE DIADIF(IOP,NHKKH1)
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
PARAMETER (LOUT=6,LLOOK=9)
PARAMETER (NMXHKK= 89998)
CHARACTER*8 ANAME,ANC
COMMON /HKKEVT/ NHKK,NEVHKK, ISTHKK(NMXHKK), IDHKK(NMXHKK),
& JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),PHKK(5,NMXHKK),
& VHKK(4,NMXHKK), WHKK(4,NMXHKK)
COMMON /DPRIN/ IPRI,IPEV,IPPA,IPCO,INIT,IPHKK,ITOPD,IPAUPR
COMMON /DPAR/ ANAME(210),AAM(210),GA(210),TAU(210),IICH(210),
& IIBAR(210),K1(210),K2(210)
COMMON /DIFPAR/ PXC(902), PYC(902),PZC(902),
& HEC(902), AMC(902),ICHC(902),
& IBARC(902),ANC(902),NRC(902)
COMMON /ENERIN/ EPROJ,ETARG
COMMON /NNCMS/ DGAMCM,DBGCM,ECM,DPCM,DEPROJ,DPPROJ
COMMON /DHISTO/ XYL(51,10),YYL(51,10),YYLPS(51,10),XXFL(51,10),
& YXFL(51,10),TDTDM(40,24),DSDTDM(40,24),
& AMDM(24,40),DSDM(24,40),AVE(30),AVMULT(30),
& YXFLCH(51),YXFLPI(51)
COMMON /DIFOUT/ AMCH,TT,NHAD,KPROJ,KTARG
COMMON /DIFFRA/ ISINGD,IDIFTP,IOUDIF,IFLAGD
COMMON /NUCC/ IT,ITZ,IP,IPZ,IJPROJ,IBPROJ,IJTARG,IBTARG
COMMON /EVFLAG/ NUMEV
DIMENSION INDX(28),PX(902),PY(902),PZ(902),HE(902),AM(902),
& ICH(902),NR(902)
C DATA INDX /1,8,10,10,10,10,7,2,7,10,10,7,3,4,5,6,
C & 11,12,7,13,14,15,16,17,18,7,7,7/
DATA INDX/ 1,8,10,10,10, 10,7,2,7,10,
& 10,7,3,4,5, 6,7,7,7,7,
& 7,7,7,7,7, 7,7,7/
*
GOTO (1,2,3) IOP
*
1 CONTINUE
NCEV = 0
DXFL = 0.04D0
DT = 0.1D0
DDM = 10.0D0
DY = 0.499999D0
NEVT = 0
NCH = 0
NPI = 0
NHAD = 0
C KPROJ= 0
C KTARG= 0
AMCH = 0.0D0
TT = 0.0D0
*
DO 10 J=1,51
YXFLCH(J) = 0.0D0
YXFLPI(J) = 0.0D0
DO 11 I=1,10
XXFL(J,I) = J*DXFL-1.0D0
YXFL(J,I) = 1.0D-18
XYL(J,I) = (J-24)*DY-DY/2.0D0
YYL(J,I) = 1.0D-18
YYLPS(J,I)= 1.0D-18
11 CONTINUE
10 CONTINUE
DO 12 I=1,40
DO 13 J=1,24
TDTDM(I,J) = I*DT
DSDTDM(I,J)= 1.0D-8
AMDM(J,I) = (J*DDM-DDM/2.0D0)**2
DSDM(J,I) = 1.0D-8
AMDM(J,I) = LOG10(AMDM(J,I))
13 CONTINUE
12 CONTINUE
DO 14 I=1,30
AVE(I) = 1.0D-18
AVMULT(I) = 1.0D-18
14 CONTINUE
RETURN
*
2 CONTINUE
NCEV = NCEV+1
IF (MOD(NCEV,2000).EQ.0) WRITE(LOUT,*) NCEV
J = 0
C IF (IFLAGD.EQ.1) RETURN
DO 21 I=NHKKH1+1,NHKK
IF ((ISTHKK(I).EQ.1).AND.(JMOHKK(2,I).NE.100).AND.
& (JDAHKK(1,I).EQ.0)) THEN
J = J+1
PX(J) = PHKK(1,I)
PY(J) = PHKK(2,I)
PZ(J) = PHKK(3,I)
HE(J) = PHKK(4,I)
AM(J) = PHKK(5,I)
NR(J) = MCIHAD(IDHKK(I))
ICH(J)= IICH(NR(J))
ENDIF
21 CONTINUE
IHAD = J
IF (IPEV.GE.2) THEN
WRITE(LOUT,*) 'DIADIF: PX,PY,PZ,HE,AM,NR,ICH'
DO 22 I=1,IHAD
WRITE(LOUT,*) PX(I),PY(I),PZ(I),HE(I),AM(I),NR(I),ICH(I)
1000 FORMAT(5F12.5,2I4)
22 CONTINUE
ENDIF
C IF (IDIFTP.EQ.1) THEN
C P0 = SQRT(ETARG**2-AAM(KTARG)**2)
C ELSE IF (IDIFTP.EQ.2) THEN
C P0 = SQRT(EPROJ**2-AAM(KPROJ)**2)
C ENDIF
EPCM = (AAM(IJPROJ)**2-AAM(1)**2+ECM**2)/(2.0D0*ECM)
P0 = SQRT((EPCM-AAM(IJPROJ))*(EPCM+AAM(IJPROJ)))
NEVT = NEVT+1
AVMULT(30) = AVMULT(30)+IHAD
DO 20 I=1,IHAD
NRE = NR(I)
IF (NRE.GT.25) NRE = 28
IF (NRE.LT. 1) NRE = 28
NI = INDX(NRE)
IF (NRE.EQ.28) NI = 8
AVE(NRE) = AVE(NRE)+HE(I)
AVE(30) = AVE(30) +HE(I)
IF (NI.NE.6) AVE(29) = AVE(29)+HE(I)
AVMULT(NRE) = AVMULT(NRE)+1.0D0
IF (NI.NE.6) AVMULT(29) = AVMULT(29)+1.0D0
IF (ICH(I).NE.0) AVE(27) = AVE(27)+HE(I)
IF (ICH(I).NE.0) AVMULT(27) = AVMULT(27)+1.0D0
C XFL = PZ(I)/PO
XFL = PZ(I)/P0
XFLE = HE(I)/P0
C IF ((ICH(I).NE.0).AND.(XFL.GT.-0.84D0).AND.(XFL.LT.-0.44D0))
C & WRITE(LOUT,*)'WRONG EVENT',NUMEV
IXFL = XFL/DXFL+26
C IF (XFL.LT.0.0D0) WRITE(LLOOK,'(2F15.5,I3)')XFL,PZ(I),IXFL
IF (IXFL.LT.1 ) IXFL=1
IF (IXFL.GT.50) IXFL=50
XXXFL = ABS(XFL)
IF (NRE.EQ.14) THEN
NPI = NPI+1
YXFLPI(IXFL) = YXFLPI(IXFL)+XFLE
ENDIF
IF ((ICH(I).GT.0).AND.(NRE.NE.1)) THEN
NCH = NCH+1
YXFLCH(IXFL) = YXFLCH(IXFL)+XFLE
ENDIF
IF (ICH(I).NE.0) YXFL(IXFL,9) = YXFL(IXFL,9)+XXXFL
YXFL(IXFL,NI) = YXFL(IXFL,NI)+XXXFL
YXFL(IXFL,10) = YXFL(IXFL,10)+XXXFL
PTT = PX(I)**2+PY(I)**2
AMT = SQRT(PTT+AM(I)**2)
YL = 0.5D0*LOG(ABS((HE(I)+PZ(I)+1.D-10)
& /(HE(I)-PZ(I)+1.D-10)))
YLPS = LOG(ABS((PZ(I)+SQRT(PZ(I)**2+PTT))
& /SQRT(PTT+1.D-6)+1.D-18))
IYLPS = (YLPS+25.0D0*DY)/DY
IF (IYLPS.LT.1) IYLPS = 1
IF (IYLPS.GT.51) IYLPS = 51
YYLPS(IYLPS,NI) = YYLPS(IYLPS,NI)+1.0D0
YYLPS(IYLPS,10) = YYLPS(IYLPS,10)+1.0D0
IF (ICH(I).NE.0) YYLPS(IYLPS,9) = YYLPS(IYLPS,9)+1.0D0
IYL = (YL+25.0D0*DY)/DY
IF (IYL.LT.1) IYL = 1
IF (IYL.GT.51) IYL = 51
IF (ICH(I).NE.0) YYL(IYL,9) = YYL(IYL,9)+1.0D0
YYL(IYL,NI) = YYL(IYL,NI)+1.0D0
YYL(IYL,10) = YYL(IYL,10)+1.0D0
20 CONTINUE
KPL = (AMCH+DDM+DDM/2.0D0)/DDM
IF (KPL.GT.24) KPL=24
IF (KPL.LT.1) KPL=1
ITT = 10.0D0*ABS(TT)+1
IF (ITT.GT.40) ITT = 40
C DSDTDM(ITT,KPL) = DSDTDM(ITT,KPL)+1.0D0/AMCH
RETURN
*
3 CONTINUE
DO 30 J=1,51
IF(NCH.NE.0) YXFLCH(J) = YXFLCH(J)/(NCH*DXFL)
IF(NPI.NE.0) YXFLPI(J) = YXFLPI(J)/(NPI*DXFL)
DO 31 I=1,10
YXFL(J,I) = LOG10(ABS(YXFL(J,I) /(NEVT*DXFL))+1.0D-8)
YYL(J,I) = YYL(J,I) /(NEVT*DY)
YYLPS(J,I)= YYLPS(J,I)/(NEVT*DY)
31 CONTINUE
30 CONTINUE
DO 32 I=1,30
AVMULT(I) = AVMULT(I)/NEVT
AVE( I) = AVE(I) /NEVT
32 CONTINUE
DO 33 I=1,40
DO 34 J=1,24
DSDTDM(I,J) = DSDTDM(I,J)/NEVT
DSDTDM(I,J) = LOG10(DSDTDM(I,J))
DSDM(J,I) = DSDTDM(I,J)
34 CONTINUE
33 CONTINUE
WRITE(LOUT,*)'NAME,AVE,AVMULT'
DO 105 I=1,30
WRITE(LOUT,210) ANAME(I),AVE(I),AVMULT(I)
210 FORMAT(' ',A8,2F15.5)
105 CONTINUE
WRITE(LOUT,100)
100 FORMAT('1 RAPIDITY DISTRIBUTION')
DO 110 J=1,50
WRITE(LOUT,200) XYL(J,1),(YYL(J,I),I=1,10)
c WRITE(LOUT,200) XYL(J,1),(YYL(J,I),I=11,20)
200 FORMAT (F10.2,10E11.3)
110 CONTINUE
CALL PLOT(XYL,YYL,510,10,51,-25.*DY,DY,0.,0.03)
WRITE(LOUT,101)
101 FORMAT('1 PSEUDORAPIDITY DISTRIBUTION')
CALL PLOT(XYL,YYLPS,510,10,51,-25.*DY,DY,0.,0.03)
WRITE(LOUT,102)
102 FORMAT ('1 LONG MOMENTUM (SCALED) DISTRIBUTION (LOG)')
CALL PLOT(XXFL,YXFL,510,10,51,-1.,DXFL,-3.5,0.05)
WRITE(LOUT,103)
103 FORMAT ('1DISTRIBUTION DS/DTDM AS FUNCTION OF T ')
CALL PLOT(TDTDM,DSDTDM,960,24,40,0.,0.04,-5.,0.05)
WRITE(LOUT,104)
104 FORMAT ('1DISTRIBUTION DS/DTDM AS FUNCTION OF M**2 ')
CALL PLOT(AMDM,DSDM,960,40,24,2.,0.1,-5.,0.05)
IF (IJPROJ.EQ.13) SIG = 66.0D0
IF (IJPROJ.EQ.14) SIG = 66.0D0
IF (IJPROJ.EQ.15) SIG = 54.9D0
IF (IJPROJ.EQ.1) SIG = 95.0D0
SIGCH = 84.8
SIGPIM=0.23D0
C OPEN(19,FILE='FEYNDI.OUT')
WRITE(LOUT,*)'FEYNMAN-DISTRIBUTION FOR PION-'
DO 35 I=1,51
WRITE(LOUT,'(2F15.5)')
& DXFL*(I-1)-1,SIG*YXFLPI(I)
WRITE(LOUT,'(2F15.5)')
& DXFL*I-1,SIG*YXFLPI(I)
35 CONTINUE
WRITE(LOUT,*)'FEYNMAN-DISTRIBUTION FOR CHARGED PARTICLES'
DO 36 I=1,51
WRITE(LOUT,'(2F15.5)')
& DXFL*(I-1)-1,SIGCH*YXFLCH(I)
WRITE(LOUT,'(2F15.5)')
& DXFL*I-1,SIGCH*YXFLCH(I)
36 CONTINUE
C CLOSE(19)
RETURN
END
*
*===sihndi===============================================================*
*
SUBROUTINE SIHNDI(ECM,KPROJ,KTARG,SIGDIF,SIGDIH)
**********************************************************************
* Single diffractive hadron-nucleon cross sections *
* S.Roesler 14/1/93 *
* *
* The cross sections are calculated from extrapolated single *
* diffractive antiproton-proton cross sections (DTUJET92) using *
* scaling relations between total and single diffractive cross *
* sections. *
**********************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
CHARACTER*8 ANAME
COMMON /DPAR/ ANAME(210),AM(210),GA(210),TAU(210),IICH(210),
& IIBAR(210),K1(210),K2(210)
*
CSD1 = 4.201483727
CSD4 = -0.4763103556E-02
CSD5 = 0.4324148297
*
CHMSD1 = 0.8519297242
CHMSD4 = -0.1443076599E-01
CHMSD5 = 0.4014954567
*
EPN = (ECM**2 - AM(KPROJ)**2 - AM(KTARG)**2)/(2.0D0*AM(KTARG))
PPN = SQRT((EPN-AM(KPROJ))*(EPN+AM(KPROJ)))
*
SDIAPP = CSD1+CSD4*LOG(PPN)**2+CSD5*LOG(PPN)
SHMSD = CHMSD1+CHMSD4*LOG(PPN)**2+CHMSD5*LOG(PPN)
FRAC = SHMSD/SDIAPP
*
GOTO( 10, 20,999,999,999,999,999, 10, 20,999,
& 999, 20, 20, 20, 20, 20, 10, 20, 20, 10,
& 10, 10, 20, 20, 20) KPROJ
*
10 CONTINUE
*---------------------------- p - p , n - p , sigma0+- - p ,
* Lambda - p
CSD1 = 6.004476070
CSD4 = -0.1257784606E-03
CSD5 = 0.2447335720
SIGDIF = CSD1+CSD4*LOG(PPN)**2+CSD5*LOG(PPN)
C Replace SIGDIF with dpmjet result SIPPSD(ECM)
SIGDIF=SIPPSD(ECM)
SIGDIH = FRAC*SIGDIF
RETURN
*
20 CONTINUE
*
KPSCAL = 2
KTSCAL = 1
F = SDIAPP/DSHNTO(KPSCAL,KTSCAL,ECM)
C F = SDIAPP/DSHNEL(KPSCAL,KTSCAL,ECM)
KT = 1
SIGDIF = DSHNTO(KPROJ,KT,ECM)*F
C SIGDIF = DSHNEL(KPROJ,KT,ECM)*F
SIGDIH = FRAC*SIGDIF
RETURN
*
999 CONTINUE
*-------------------------- leptons..
SIGDIF = 1.E-10
SIGDIH = 1.E-10
RETURN
END
*
*===dshnto===============================================================*
*
DOUBLE PRECISION FUNCTION DSHNTO(KPROJ,KTARG,UMO)
**********************************************************************
* Total hadron-nucleon cross sections S.Roesler 12/1/93 *
* *
* Fits from Rev. of Part. Prop.(1992) are used in the momentum *
* ranges given there. Cross sections for momenta below them are *
* calculated as in an earlier version of this function : *
* SIG(el) + SIG(inel) = SIHNEL + SIHNIN . *
* Total antiproton-proton cross sections calculated with DTUJET92 *
* parametrize the cross sections at higher enrgies. *
**********************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
CHARACTER*8 ANAME
COMMON /DPAR/ ANAME(210),AAM(210),GA(210),TAU(210),IICH(210),
& IIBAR(210),K1(210),K2(210)
COMMON /STRUFU/ISTRUM,ISTRUT
DIMENSION SQS(20),SIIV(20),SQS22(40),SIIV22(40)
DATA SQS /20.,50.,100.,200.,500.,1000.,1500.,2000.,3000.,
*4000.,6000.,8000.,10000.,15000.,20000.,30000.,40000.,
*60000.,80000.,100000/
DATA SIIV /41.6,44.6,47.9,52.3,60.,67.2,71.4,75.,79.,82.4,
*87.2,90.4,93.2,97.3,100.7,104.7,107.9,111.7,114.7,117.2/
DATA SQS22 /
*53.,69.,91.,119.,156.,205.,268.,351.,460.,603.,
*790.,1036.,1357.,1778.,2329.,
*3053.,3999.,5239.,6865.,8994.,
*11785.,15441.,20232.,26509.,34733.,
*45509.,59627.,78126.,102365.,134123.,
*175734.,230255.,301690.,395288.,517925.,
*678609.,889144.,1164997.,1526432.,2000000.
*/
DATA SIIV22 /
*44.3,45.3,46.5,47.8,49.3,51.0,53.0,55.3,57.9,60.9,
*64.3,68.0,72.0,76.3,80.8,85.4,90.0,94.7,99.3,103.9,
*108.4,112.8,117.2,121.4,125.6,
*129.8,133.9,138.0,142.0,146.1,
*150.2,154.3,158.5,162.7,166.9,
*171.2,175.6,180.0,184.6,189.1
*/
*
F1 = 1.0D0
CA = 0.0D0
CB = 0.0D0
CC = 0.0D0
CD = 0.0D0
CN = 0.0D0
*
A1 = 0.0D0
A2 = 0.0D0
A3 = 1.0D0
A4 = 0.0D0
A5 = 0.0D0
A6 = 0.0D0
*
PARAM1 = 34.94235992
PARAM4 = 0.2104312854
PARAM5 = -0.4509592056E-01
*
IPIO = 0
SPIO1 = 0.0D0
SPIO2 = 0.0D0
*
UMO2 = UMO**2
EPN = (UMO**2-AAM(KPROJ)**2-AAM(KTARG)**2)/(2.0D0*AAM(KTARG))
PO = SQRT((EPN-AAM(KPROJ))*(EPN+AAM(KPROJ)))
*
1 CONTINUE
*
IF (KTARG.EQ.8) THEN
GOTO( 30, 40,999,999,999,999,999, 10, 20,999,
& 999,140, 70, 60,150,160,100, 20,140, 10,
& 10, 10,110,130,120) KPROJ
ELSE
GOTO( 10, 20,999,999,999,999,999, 30, 40,999,
& 999, 50, 60, 70, 80, 90,100, 20, 50, 10,
& 10, 10,110,120,130) KPROJ
ENDIF
*
10 CONTINUE
*---------------------------- p - p , sigma0+- - p
IF (PO.LE.3.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.3.0D0).AND.(UMO.LE.100.0D0)) THEN
CA = 48.0D0
CC = 0.522D0
CD = -4.51D0
GOTO 600
ELSE
GOTO 700
ENDIF
*
20 CONTINUE
*---------------------------- pbar - p , Lambdabar - p
IF (PO.LE.5.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.5.0D0).AND.(UMO.LE.200.0D0)) THEN
CA = 38.4D0
CB = 77.6
CC = 0.26D0
CD = -1.2D0
CN = -0.64D0
GOTO 600
ELSE
GOTO 700
ENDIF
*
30 CONTINUE
*---------------------------- n - p
IF (PO.LE.3.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.3.0D0).AND.(PO.LE.370.0D0)) THEN
CA = 47.3D0
CC = 0.513D0
CD = -4.27D0
GOTO 600
ELSE IF ((PO.GT.370.0D0).AND.(UMO.LE.110.0D0)) THEN
A1 = 38.5D0
A2 = 0.46D0
A3 = 125.0D0
A4 = 15.0D0
GOTO 800
ELSE
GOTO 700
ENDIF
*
40 CONTINUE
*---------------------------- nbar - p
IF (PO.LE.1.1D0) THEN
GOTO 500
ELSE IF ((PO.GT.1.1D0).AND.(PO.LE.280.0D0)) THEN
CB = 133.6D0
CC = -1.22D0
CD = 13.7D0
CN = -0.7D0
GOTO 600
ELSE IF ((PO.GT.280.0D0).AND.(UMO.LE.110.0D0)) THEN
A1 = 38.5D0
A2 = 0.46D0
A3 = 125.0D0
A4 = 15.0D0
A5 = 77.43D0
A6 = -0.6D0
GOTO 800
ELSE
GOTO 700
ENDIF
*
50 CONTINUE
*---------------------------- Klong - p , Kshort - p
R = RNDM(V)
IF (R.LE.0.5D0) THEN
* K+ - p
GOTO 80
ELSE
* K- - p
GOTO 90
ENDIF
*
60 CONTINUE
*---------------------------- pi+ - p
IF (PO.LE.4.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.4.0D0).AND.(PO.LE.340.0D0)) THEN
CA = 16.4D0
CB = 19.3D0
CC = 0.19D0
CN = -0.42D0
GOTO 600
ELSE IF ((PO.GT.340.0D0).AND.(UMO.LE.47.0D0)) THEN
A1 = 24.0D0
A2 = 0.6D0
A3 = 160.0D0
A5 = -7.9D0
A6 = -0.46D0
GOTO 800
ELSE
F1 = 2.0D0/3.0D0
GOTO 10
ENDIF
*
70 CONTINUE
*---------------------------- pi- - p
IF (PO.LE.2.5D0) THEN
GOTO 500
ELSE IF ((PO.GT.2.5D0).AND.(PO.LE.370.0D0)) THEN
CA = 33.0D0
CB = 14.0D0
CC = 0.456D0
CD = -4.03D0
CN = -1.36D0
GOTO 600
ELSE IF ((PO.GT.370.0D0).AND.(UMO.LE.47.0D0)) THEN
A1 = 24.0D0
A2 = 0.6D0
A3 = 160.0D0
GOTO 800
ELSE
F1 = 2.0D0/3.0D0
GOTO 10
ENDIF
*
80 CONTINUE
*---------------------------- K+ - p
IF (PO.LE.2.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.2.0D0).AND.(PO.LE.310.0D0)) THEN
CA = 18.1D0
CC = 0.26D0
CD = -1.0D0
GOTO 600
ELSE IF ((PO.GT.310.0D0).AND.(UMO.LE.110.0D0)) THEN
A1 = 20.3D0
A2 = 0.59D0
A3 = 140.0D0
A5 = -30.13D0
A6 = -0.58D0
GOTO 800
ELSE
F1 = 2.0D0/3.0D0
GOTO 10
ENDIF
*
90 CONTINUE
*---------------------------- K- - p
IF (PO.LE.3.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.3.0D0).AND.(PO.LE.310.0D0)) THEN
CA = 32.1D0
CC = 0.66D0
CD = -5.6D0
GOTO 600
ELSE IF ((PO.GT.310.0D0).AND.(UMO.LE.110.0D0)) THEN
A1 = 20.3D0
A2 = 0.59D0
A3 = 140.0D0
GOTO 800
ELSE
F1 = 2.0D0/3.0D0
GOTO 10
ENDIF
*
100 CONTINUE
*---------------------------- Lambda - p
IF (PO.LE.0.6D0) THEN
GOTO 500
ELSE IF ((PO.GT.0.6D0).AND.(PO.LE.21.0D0)) THEN
CA = 30.4D0
CD = 1.6D0
GOTO 600
ELSE
GOTO 10
ENDIF
*
110 CONTINUE
*---------------------------- pi0 - p
* 1/2(pi+p + pi-p)
IPIO = 1
KPROJ = 13
GOTO 1
*
120 CONTINUE
*---------------------------- K0 - p
IF (PO.LE.2.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.2.0D0).AND.(PO.LE.310.0D0)) THEN
* K+ - n
CA = 18.7D0
CC = 0.21D0
CD = -0.89D0
GOTO 600
ELSE
GOTO 80
ENDIF
*
130 CONTINUE
*---------------------------- K0bar - p
IF (PO.LE.1.8D0) THEN
GOTO 500
ELSE IF ((PO.GT.1.8D0).AND.(PO.LE.310.0D0)) THEN
* K- - n
CA = 25.2D0
CC = 0.38D0
CD = -2.9D0
GOTO 600
ELSE
GOTO 90
ENDIF
*
140 CONTINUE
*---------------------------- Klong - n , Kshort - n
R = RNDM(V)
IF (R.LE.0.5D0) THEN
* K+ - n
GOTO 150
ELSE
* K- - n
GOTO 160
ENDIF
*
150 CONTINUE
*---------------------------- K+ - n
IF (PO.LE.2.0D0) THEN
GOTO 500
ELSE IF ((PO.GT.2.0D0).AND.(PO.LE.310.0D0)) THEN
CA = 18.7D0
CC = 0.21D0
CD = -0.89D0
GOTO 600
ELSE
GOTO 90
ENDIF
*
160 CONTINUE
*---------------------------- K- - n
IF (PO.LE.1.8D0) THEN
GOTO 500
ELSE IF ((PO.GT.1.8D0).AND.(PO.LE.310.0D0)) THEN
CA = 25.2D0
CC = 0.38D0
CD = -2.9D0
GOTO 600
ELSE
GOTO 80
ENDIF
*
500 CONTINUE
CALL SIHNEL(KPROJ,KTARG,PO,SEL)
CALL SIHNIN(KPROJ,KTARG,PO,SIN)
STOT = SEL + SIN
GOTO 900
*
600 CONTINUE
STOT = F1*(CA+CB*PO**CN+CC*(LOG(PO))**2+CD*LOG(PO))
GOTO 900
*
700 CONTINUE
IF(ISTRUM.EQ.14.AND.ISTRUT.EQ.2)THEN
DO 701 I=1,20
IF(UMO.LE.SQS(I))GO TO 702
701 CONTINUE
I=20
702 CONTINUE
IF ((I.EQ.20).AND.(UMO.GT.SQS(20)))THEN
TEPP=SIIV(20)+(LOG(UMO)-LOG(SQS(20)))*(SIIV(20)-SIIV(19))/
* (LOG(SQS(20))-LOG(SQS(19)))
STOT=F1*TEPP
ELSE
TEPP=SIIV(I-1)+(UMO-SQS(I-1))*(SIIV(I)-SIIV(I-1))/
* (SQS(I)-SQS(I-1))
STOT=F1*TEPP
ENDIF
ELSEIF(ISTRUM.EQ.22.AND.ISTRUT.EQ.2)THEN
DO 711 I=1,40
IF(UMO.LE.SQS22(I))GO TO 712
711 CONTINUE
I=40
712 CONTINUE
IF ((I.EQ.40).AND.(UMO.GT.SQS22(40)))THEN
TEPP=SIIV22(40)+(LOG(UMO)-LOG(SQS22(40)))*
* (SIIV22(40)-SIIV22(39))/
* (LOG(SQS22(40))-LOG(SQS22(39)))
STOT=F1*TEPP
ELSE
TEPP=SIIV22(I-1)+(UMO-SQS22(I-1))*(SIIV22(I)-SIIV22(I-1))/
* (SQS22(I)-SQS22(I-1))
STOT=F1*TEPP
ENDIF
ELSE
STOT = F1*(PARAM1+PARAM4*LOG(PO)**2+PARAM5*LOG(PO))
ENDIF
GOTO 900
*
800 CONTINUE
STOT = F1*(A1+A2*(LOG(UMO2/A3))**2+A4/UMO2+A5*UMO2**A6)
*
900 CONTINUE
IF ((IPIO.EQ.1).AND.(KPROJ.EQ.13)) THEN
SPIO1 = STOT
KPROJ = 14
GOTO 1
ENDIF
IF ((IPIO.EQ.1).AND.(KPROJ.EQ.14)) THEN
SPIO2 = STOT
STOT = 0.5D0*(SPIO1+SPIO2)
ENDIF
DSHNTO = STOT
RETURN
*
999 CONTINUE
*-------------------------- leptons..
DSHNTO = 1.E-10
RETURN
END
*
*===dshnel===============================================================*
*
DOUBLE PRECISION FUNCTION DSHNEL(KPROJ,KTARG,UMO)
**********************************************************************
* Elastic hadron-nucleon cross sections S.Roesler 13/1/93 *
* *
* SIHNEL is called for c.m. energies below 50 GeV. Otherwise *
* a parametrisation of antiproton-proton elastic cross sections *
* obtained from DTUJET92 is used. *
**********************************************************************
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SAVE
CHARACTER*8 ANAME
COMMON /DPAR/ ANAME(210),AAM(210),GA(210),TAU(210),IICH(210),
& IIBAR(210),K1(210),K2(210)
*
F1 = 1.0D0
CA = 0.0D0
CB = 0.0D0
CC = 0.0D0
CD = 0.0D0
CN = 0.0D0
*
IPIO = 0
SPIO1 = 0.0D0
SPIO2 = 0.0D0
*
PARAM1 = 7.789333344
PARAM4 = 0.7488331199E-01
PARAM5 = -0.6963931322
*
UMO2 = UMO**2
EPN = (UMO**2-AAM(KPROJ)**2-AAM(KTARG)**2)/(2.0D0*AAM(KTARG))
PO = SQRT((EPN-AAM(KPROJ))*(EPN+AAM(KPROJ)))
*
1 CONTINUE
*
GOTO( 10, 10,999,999,999,999,999, 10, 10,999,
& 999, 30, 20, 20, 20, 20, 10, 10, 30, 10,
& 10, 10, 40, 20, 20) KPROJ
*
10 CONTINUE
IF (UMO.LE.50.0D0) THEN
CALL SIHNEL(KPROJ,KTARG,PO,SEL)
GOTO 900
ELSE
F1 = 1.0D0
GOTO 500
ENDIF
*
20 CONTINUE
IF (UMO.LE.50.0D0) THEN
CALL SIHNEL(KPROJ,KTARG,PO,SEL)
GOTO 900
ELSE
F1 = 2.0D0/3.0D0
GOTO 500
ENDIF
*
30 CONTINUE
*---------------------------- Klong - p , Kshort - p
R = RNDM(V)
IF (R.LE.0.5D0) THEN
* K+ - p
KPROJ = 15
ELSE
* K- - p
KPROJ = 16
ENDIF
GOTO 1
*
40 CONTINUE
*---------------------------- pi0 - p
* 1/2(pi+p + pi-p)
IPIO = 1
KPROJ = 13
GOTO 1
*
500 CONTINUE
SEL = F1*(PARAM1+PARAM4*LOG(PO)**2+PARAM5*LOG(PO))
*
900 CONTINUE
IF ((IPIO.EQ.1).AND.(KPROJ.EQ.13)) THEN
SPIO1 = SEL
KPROJ = 14
GOTO 1
ENDIF
IF ((IPIO.EQ.1).AND.(KPROJ.EQ.14)) THEN
SPIO2 = SEL
SEL = 0.5D0*(SPIO1+SPIO2)
ENDIF
DSHNEL = SEL
RETURN
*
999 CONTINUE
*-------------------------- leptons..
DSHNEL = 1.E-10
RETURN
END