File indexing completed on 2024-04-06 12:13:38
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 SUBROUTINE HARDCOL
0017 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0018 IMPLICIT INTEGER(I-N)
0019
0020
0021 INTEGER PYK,PYCHGE,PYCOMP
0022
0023
0024 EXTERNAL PYDATA
0025
0026
0027 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0028
0029
0030 PARAMETER (MAXNUP=500)
0031 COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
0032 &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
0033 &VTIMUP(MAXNUP),SPINUP(MAXNUP)
0034 SAVE /HEPEUP/
0035
0036 PARAMETER (MAXPUP=100)
0037 INTEGER PDFGUP,PDFSUP,LPRUP
0038 COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
0039 &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
0040 &LPRUP(MAXPUP)
0041 SAVE /HEPRUP/
0042
0043
0044 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0045 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0046 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0047 COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
0048 COMMON/PYDATR/MRPY(6),RRPY(100)
0049 COMMON/HCLPAR/ECM,NEV
0050
0051
0052
0053 MSTP(161)=21
0054 OPEN(21,FILE='HARDCOL.init',STATUS='unknown')
0055 MSTP(162)=22
0056 OPEN(22,FILE='HARDCOL.evnt',STATUS='unknown')
0057
0058
0059 MSTP(163)=23
0060 OPEN(23,FILE='HARDCOL.lhe',STATUS='unknown')
0061
0062
0063
0064
0065 CALL SETPARAMETERS
0066 CALL read_hcs_file
0067
0068
0069 CALL EVNTINIT
0070
0071
0072
0073
0074
0075
0076
0077 DO 200 IEV=1,NEV
0078 CALL PYUPEV
0079 IF(IEV.LE.2) THEN
0080 CALL PYLIST(2)
0081 CALL PYLIST(7)
0082 ENDIF
0083 200 CONTINUE
0084
0085
0086 CALL PYSTAT(1)
0087 CALL PYUPIN
0088
0089
0090 CALL PYLHEF
0091
0092 END
0093
0094
0095
0096
0097
0098
0099 SUBROUTINE PYLHEF
0100
0101
0102 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0103 IMPLICIT INTEGER(I-N)
0104
0105
0106 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0107 SAVE /PYPARS/
0108
0109
0110 INTEGER MAXPUP
0111 PARAMETER (MAXPUP=100)
0112 INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
0113 DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
0114 COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
0115 &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
0116 &LPRUP(MAXPUP)
0117 SAVE /HEPRUP/
0118
0119
0120 INTEGER MAXNUP
0121 PARAMETER (MAXNUP=500)
0122 INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
0123 DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
0124 COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
0125 &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
0126 &VTIMUP(MAXNUP),SPINUP(MAXNUP)
0127 SAVE /HEPEUP/
0128
0129
0130 PARAMETER (MAXLEN=200)
0131 CHARACTER*(MAXLEN) STRING
0132
0133
0134 CHARACTER*6 STRFMT
0135 STRFMT='(A000)'
0136 WRITE(STRFMT(3:5),'(I3)') MAXLEN
0137
0138
0139 REWIND MSTP(161)
0140 REWIND MSTP(162)
0141
0142
0143 WRITE(MSTP(163),'(A)') '<LesHouchesEvents version="1.0">'
0144 WRITE(MSTP(163),'(A)') '<!--'
0145 WRITE(MSTP(163),'(A,I1,A1,I3)') 'File generated with PYTHIA ',
0146 &MSTP(181),'.',MSTP(182)
0147 WRITE(MSTP(163),'(A)') '-->'
0148
0149
0150 READ(MSTP(161),'(A)',END=300,ERR=300) STRING
0151 READ(STRING,*,ERR=300) IDBMUP(1),IDBMUP(2),EBMUP(1),
0152 &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
0153
0154
0155
0156 WRITE(MSTP(163),'(A)') '<init>'
0157 DO 120 IPR=0,NPRUP
0158 IF(IPR.GT.0) READ(MSTP(161),'(A)',END=300,ERR=300) STRING
0159 LEN=MAXLEN+1
0160 110 LEN=LEN-1
0161 IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 110
0162 WRITE(MSTP(163),'(A)',ERR=300) STRING(1:LEN)
0163 120 CONTINUE
0164 WRITE(MSTP(163),'(A)') '</init>'
0165
0166
0167 200 CONTINUE
0168
0169
0170 READ(MSTP(162),'(A)',END=280,ERR=300) STRING
0171 READ(STRING,*,ERR=300) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
0172
0173
0174
0175 WRITE(MSTP(163),'(A)') '<event>'
0176 DO 220 I=0,NUP
0177 IF(I.GT.0) READ(MSTP(162),'(A)',END=300,ERR=300) STRING
0178 LEN=MAXLEN+1
0179 210 LEN=LEN-1
0180 IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 210
0181 WRITE(MSTP(163),'(A)',ERR=300) STRING(1:LEN)
0182 220 CONTINUE
0183 WRITE(MSTP(163),'(A)') '</event>'
0184
0185
0186 GOTO 200
0187
0188
0189
0190 280 WRITE(MSTP(163),'(A)') '</LesHouchesEvents>'
0191 IF(MSTP(164).EQ.1) RETURN
0192 CLOSE(MSTP(161),ERR=300,STATUS='DELETE')
0193 CLOSE(MSTP(162),ERR=300,STATUS='DELETE')
0194 RETURN
0195
0196
0197 300 WRITE(*,*) ' PYLHEF file joining failed!'
0198
0199 RETURN
0200 END