1
C----------------------------------------------------------------------
3
C----------------------------------------------------------------------
4
C Reads MC@NLO input files and fills Les Houches event common HEPEUP
5
C Event file is written by MadFKS
6
C----------------------------------------------------------------------
8
C---Les Houches Event Common Block
10
PARAMETER (MAXNUP=500)
11
INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
12
DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
13
COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
14
& IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP),
15
& ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP),
17
INTEGER ISORH_LHE,IFKS_LHE,JFKS_LHE,FKSFATHER_LHE,IPARTNER_LHE
18
DOUBLE PRECISION SCALE1_LHE,SCALE2_LHE
28
DOUBLE PRECISION PCM(5),PTR,XSCALE
32
IF (IERROR.NE.0) RETURN
35
read(iunit,'(a)')string
36
if(INDEX(STRING,'<event>').eq.0)then
37
CALL HWWARN('UPEVNT',500)
39
read(iunit,503)NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
40
C---Les Houches expects mean weight to be the cross section in pb
43
read(iunit,504)IDUP(I),ISTUP(I),MOTHUP(1,I),MOTHUP(2,I),
44
# ICOLUP(1,I),ICOLUP(2,I),
45
# PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I),PUP(5,I),
49
if(buff(1:1).eq.'#')then
50
read(buff,*)ch1,iSorH_lhe,ifks_lhe,jfks_lhe,
51
# fksfather_lhe,ipartner_lhe,
52
# scale1_lhe,scale2_lhe
53
read(iunit,'(a)')string
55
string=buff(1:len_trim(buff))
57
if(INDEX(STRING,'</event>').eq.0)then
58
CALL HWWARN('UPEVNT',501)
60
c Do as done for ttbar in standard MC@NLO
62
CALL HWVSUM(4,PUP(1,1),PUP(1,2),PCM)
66
c if shape is used, uncomment the following
67
c$$$ IF (XSCALE.GT.0D0.AND.XSCALE.LT.PCM(5)) SCALUP=XSCALE
70
c Extra parton is #5 here, not #3 as in standalone MC@NLO
72
PTR=SQRT(PUP(1,5)**2+PUP(2,5)**2)
75
CALL HWWARN('UPEVNT',501)
78
c Modify what follows to set scale of H or S events in a different way
79
c$$$ IF(ISORH_LHE.EQ.2)THEN
81
c$$$ IF(SCALE2_LHE.GT.0.D0)SCALUP=SCALE2_LHE
83
503 format(1x,i2,1x,i6,4(1x,d14.8))
84
504 format(1x,i8,1x,i2,4(1x,i4),5(1x,d14.8),2(1x,d10.4))
88
C----------------------------------------------------------------------
90
C----------------------------------------------------------------------
91
C Reads MC@NLO input headers and fills Les Houches run common HEPRUP
92
C Event file is written by MadFKS
93
C----------------------------------------------------------------------
94
INCLUDE 'HERWIG65.INC'
95
C--Les Houches Common Blocks
98
INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
99
DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
100
COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
101
& IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),
102
& XMAXUP(MAXPUP),LPRUP(MAXPUP)
104
PARAMETER (MAXNUP=500)
105
INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
106
DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
107
COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
108
& IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP),
109
& ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP),
111
c Hard event file (to be entered in Herwig driver)
119
IF (IERROR.NE.0) RETURN
120
C--SET UP INPUT FILES
121
OPEN(UNIT=61,FILE=QQIN,STATUS='UNKNOWN')
122
C--Read (non compulsory) headers here if need be
127
if(index(string,'<header>').ne.0) then
130
HEADERS=INDEX(STRING,'<init>').eq.0
132
if(MQQ.eq.-1) call HWWARN('UPINIT',501)
133
C--Read up to </init> in the event file
134
read(61,501)IDBMUP(1),IDBMUP(2),EBMUP(1),EBMUP(2),
135
# PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),
137
read(61,502)XSECUP(1),XERRUP(1),XMAXUP(1),LPRUP(1)
139
if(INDEX(STRING,'</init>').eq.0)then
140
CALL HWWARN('UPINIT',500)
143
501 format(2(1x,i6),2(1x,d14.8),2(1x,i2),2(1x,i6),1x,i2,1x,i3)
144
502 format(3(1x,d14.8),1x,i6)
149
C----------------------------------------------------------------------
150
SUBROUTINE HWURSC(NP,PP)
151
C RESCALES A SET OF NP (<21) 3-MOMENTA PP(1-3,*) IN
152
C THEIR CMF TO PUT PP ON MASS-SHELL AT MASSES PP(5,*)
153
C----------------------------------------------------------------------
156
DOUBLE PRECISION PP(5,*),P(5,20),P2(20),M2(20),SP(5),
157
& TINY,FAC,ECM,DCM,EP,STEP,FRT,HWUSQR
158
DATA TINY,NT/1D-9,20/
159
IF (NP.GT.20) CALL HWWARN('HWURSC',300+NP)
160
C--COMPUTE CM MOMENTUM
163
CALL HWVSUM(4,PP(1,IP),SP,SP)
168
CALL HWULOF(SP,PP(1,IP),P(1,IP))
169
P2(IP)=P(1,IP)**2+P(2,IP)**2+P(3,IP)**2
172
C--ITERATE RESCALING OF 3-MOMENTA
178
EP=HWUSQR(M2(IP)+FAC*P2(IP))
184
IF (DCM.EQ.0D0) CALL HWWARN('HWURSC',390)
185
STEP=2D0*(ECM-SP(5))/DCM
187
IF (ABS(STEP).LT.TINY) GOTO 100
189
C--FAILED TO CONVERGE
190
CALL HWWARN('HWURSC',1)
191
C--CONVERGED: RESCALE 3-MOMENTA AND BOOST BACK
192
100 IF (FAC.LT.0D0) CALL HWWARN('HWURSC',391)
195
CALL HWVSCA(3,FRT,P(1,IP),P(1,IP))
196
P(4,IP)=SQRT(M2(IP)+FAC*P2(IP))
197
CALL HWULOB(SP,P(1,IP),PP(1,IP))