1 C Collects all of the Les Houches interface routines, plus utilities
4 C----------------------------------------------------------------------
6 C----------------------------------------------------------------------
7 C Reads MC@NLO input files and fills Les Houches event common HEPEUP
8 C----------------------------------------------------------------------
10 C---Les Houches Event Common Block
12 PARAMETER (MAXNUP=500)
13 INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
14 DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP,
15 & XMP2,XMA2,XMB2,BETA,VA,VB,SIGMA,DELTA,S2,XKA,XKB,PTF,E,PL
16 COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
17 & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP),
18 & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP),
20 DOUBLE PRECISION PCM(5),PTR,XMTR,HWULDO
21 INTEGER I,J,IC,JPR,IHVY,MQQ,NQQ,IUNIT,ISCALE,I1HPRO,IBOS,
22 & ID,IA,IB,ICOL4(4,4),ICOL5(5,18)
26 C---Colour flows for heavy quark pair production
28 & 10,02,10,02,01,20,20,01,12,23,10,03,12,31,30,02/
30 & 10,02,13,30,02, 10,02,32,10,03,
31 & 10,21,30,20,03, 10,23,20,10,03,
32 & 01,20,23,30,01, 01,20,31,20,03,
33 & 01,23,03,20,01, 01,12,03,30,02,
34 & 12,20,30,10,03, 12,30,10,30,02,
35 & 12,03,02,10,03, 12,01,03,30,02,
36 & 12,23,14,40,03, 12,34,32,10,04,
37 & 12,23,43,10,04, 12,31,34,40,02,
38 & 12,34,14,30,02, 12,31,42,30,04/
39 IF (IERROR.NE.0) RETURN
41 ! PRINT*,'NQQ= ',NQQ,' MQQ=',MQQ
42 IF(NQQ.GE.MQQ)CALL HWWARN('UPEVNT',201,*999)
45 C---CHECK PROCESS CODE
46 JPR=MOD(IDPRUP,10000)/100
47 BOPRO=JPR.EQ.13.OR.JPR.EQ.14.OR.JPR.EQ.16.OR.JPR.EQ.36
49 C----------------------------------------------------------------------
50 C SINGLE GAUGE OR HIGGS BOSON PRODUCTION
51 C B = Z/gamma, W or H (SM or any MSSM neutral Higgs)
52 C-----------------------------------------------------------------------
53 C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS:
58 C 404 qbar g -> qbar B
60 C 406 g qbar -> qbar B
62 C-----------------------------------------------------------------------
64 READ(IUNIT,901) I1HPRO,(IDUP(I),I=1,3)
68 ELSEIF (JPR.EQ.17) THEN
69 C----------------------------------------------------------------------
70 C HEAVY Q QBAR PRODUCTION
71 C IPROC=-1705,-1706 for Q=b,t
72 C-----------------------------------------------------------------------
73 C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS:
75 C 401 q qbar -> g Q Qbar
77 C 403 qbar q -> g Q Qbar
78 C 404 qbar g -> qbar Q Qbar
80 C 406 g qbar -> qbar Q Qbar
82 C-----------------------------------------------------------------------
83 C IC SPECIFIES THE COLOUR CONNECTION (NOW IN INPUT FILE)
84 C-----------------------------------------------------------------------
85 READ(IUNIT,901) I1HPRO,(IDUP(I),I=1,3),IC
86 C---SET IHPRO AS FOR DIRECT PHOTON (IPROC=1800)
89 IF(ABS(IPROC).EQ.1705.OR.ABS(IPROC).EQ.11705)ISCALE=5
90 ELSEIF (JPR.EQ.28) THEN
91 C----------------------------------------------------------------------
92 C GAUGE BOSON PAIR PRODUCTION
93 C VV=WW,ZZ,ZW+,ZW- FOR IPROC=-2850,-2860,-2870,-2880
94 C-----------------------------------------------------------------------
95 C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS:
100 C 404 qbar g -> qbar V V
102 C 406 g qbar -> qbar V V
103 C-----------------------------------------------------------------------
104 READ(IUNIT,901) I1HPRO,(IDUP(I),I=1,3)
108 CALL HWWARN('UPEVNT',202,*999)
110 READ(IUNIT,902) XWGTUP
111 C---Les Houches expects mean weight to be the cross section in pb
113 READ(IUNIT,903) ((PUP(J,I),J=1,4),I=1,2)
114 READ(IUNIT,904) ((PUP(J,I),J=1,4),I=3,NUP)
116 CALL HWUMAS(PUP(1,I))
118 CALL HWVSUM(4,PUP(1,1),PUP(1,2),PCM)
122 C---REMIT MEANS A REAL PARTON EMISSION OCCURRED
123 REMIT=PUP(4,3).NE.ZERO
125 IF (ISCALE.EQ.0) THEN
126 PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2)
128 ELSEIF(ISCALE.EQ.1)THEN
130 ELSEIF (ISCALE.EQ.2) THEN
131 SCALUP=SQRT(PUP(1,3)**2+PUP(2,3)**2)
132 ELSEIF (ISCALE.EQ.3.OR.ISCALE.EQ.4.OR.ISCALE.EQ.5) THEN
133 PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2)
139 S2=XMA2+XMB2+2*HWULDO(PUP(1,IA),PUP(1,IB))
142 BETA=SQRT(1-2*SIGMA/S2+(DELTA/S2)**2)
145 XKA=HWULDO(PUP(1,3),PUP(1,IA))
146 XKB=HWULDO(PUP(1,3),PUP(1,IB))
148 PL=-2.0/((VA+VB)*BETA*SQRT(S2))*(VA*XKA-VB*XKB)
152 SCALUP=PCM(5)-2.*MIN(PTR,PTF)
153 ELSEIF(ISCALE.EQ.4)THEN
156 SCALUP=(MIN(PTR,PTF))**2+(XMA2+XMB2)/2.D0
159 IF (SCALUP.LE.ZERO) CALL HWWARN('UPEVNT',100,*999)
160 ELSEIF (ISCALE.EQ.6) THEN
161 XMTR=SQRT(PUP(5,4)**2+PUP(1,4)**2+PUP(2,4)**2)
162 PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2)
163 SCALUP=PCM(5)-PTR-XMTR
164 IF (SCALUP.LE.ZERO) CALL HWWARN('UPEVNT',100,*999)
165 ELSEIF (ISCALE.EQ.7) THEN
166 SCALUP=SQRT(PUP(5,4)**2+PUP(1,4)**2+PUP(2,4)**2)
168 CALL HWWARN('UPEVNT',501,*999)
188 C---SET COLOUR CONNECTIONS
196 ELSEIF (IHPRO.EQ.2) THEN
200 ELSEIF (IHPRO.EQ.3) THEN
203 ELSEIF (IHPRO.EQ.4) THEN
207 ELSEIF (IHPRO.EQ.5) THEN
211 ELSEIF (IHPRO.EQ.6) THEN
215 ELSEIF (IHPRO.EQ.7) THEN
220 CALL HWWARN('UPEVT',101,*999)
223 CALL HWVEQU(5,PUP(1,4),PUP(1,3))
224 C---SET COLOUR CONNECTIONS
229 IF (IDUP(1).GT.0) THEN
232 IF (IDUP(1).GT.0) THEN
248 ELSEIF (JPR.EQ.16) THEN
250 ELSEIF (JPR.EQ.36) THEN
254 ELSEIF (IBOS.EQ.20) THEN
256 ELSEIF (IBOS.EQ.30) THEN
259 CALL HWWARN('UPEVNT',502,*999)
261 ELSEIF (JPR.EQ.14) THEN
267 ELSEIF (ID.GT.0) THEN
274 IF (REMIT) IBOS=IBOS-2*IC
275 IF (ABS(IBOS).NE.3) CALL HWWARN('UPEVNT',503,*999)
278 ELSEIF (JPR.EQ.17) THEN
281 C---3-BODY FINAL STATE
282 C---SET COLOUR CONNECTIONS
285 CALL UPCODE(ICOL5(I,IC),ICOLUP(1,I))
288 CALL HWWARN('UPEVNT',105,*999)
291 C---2-BODY FINAL STATE
292 CALL HWVEQU(5,PUP(1,4),PUP(1,3))
293 CALL HWVEQU(5,PUP(1,5),PUP(1,4))
294 C---SET COLOUR CONNECTIONS
297 CALL UPCODE(ICOL4(I,IC),ICOLUP(1,I))
300 CALL HWWARN('UPEVNT',104,*999)
309 C---ADD DIBOSON TO EVENT RECORD (TO FIX ITS MASS)
311 CALL HWVEQU(5,PUP(1,5),PUP(1,6))
312 CALL HWVEQU(5,PUP(1,4),PUP(1,5))
313 CALL HWVSUM(4,PUP(1,5),PUP(1,6),PUP(1,4))
314 CALL HWUMAS(PUP(1,4))
328 C---SET COLOUR CONNECTIONS
336 ELSEIF (IHPRO.EQ.2) THEN
340 ELSEIF (IHPRO.EQ.3) THEN
343 ELSEIF (IHPRO.EQ.4) THEN
347 ELSEIF (IHPRO.EQ.5) THEN
351 ELSEIF (IHPRO.EQ.6) THEN
356 CALL HWWARN('UPEVT',101,*999)
363 CALL HWVEQU(5,PUP(1,4),PUP(1,3))
364 CALL HWVEQU(5,PUP(1,5),PUP(1,4))
365 C---SET COLOUR CONNECTIONS
370 IF (IDUP(1).GT.0) THEN
385 ELSEIF (IBOS.EQ.60) THEN
388 ELSEIF (IBOS.EQ.70) THEN
391 ELSEIF (IBOS.EQ.80) THEN
395 CALL HWWARN('UPEVNT',505,*999)
398 901 FORMAT(1X,I3,4(1X,I2))
400 903 FORMAT(8(1X,D14.8))
401 904 FORMAT(12(1X,D14.8))
403 C----------------------------------------------------------------------
404 SUBROUTINE UPCODE(ICODE,ICOL)
405 C--DECODES COLOUR CONNECTIONS
406 C----------------------------------------------------------------------
408 INTEGER ICODE,ICOL(2)
410 IF (ICOL(1).NE.0) ICOL(1)=ICOL(1)+500
411 ICOL(2)=MOD(ICODE,10)
412 IF (ICOL(2).NE.0) ICOL(2)=ICOL(2)+500
414 C----------------------------------------------------------------------
415 SUBROUTINE UPINIT_GUP
416 C----------------------------------------------------------------------
417 C Reads MC@NLO input headers for heavy quark and gauge boson pair
418 C production and fills Les Houches run common HEPRUP
419 C----------------------------------------------------------------------
420 INCLUDE 'HERWIG65.INC'
421 C--Les Houches Common Blocks
423 PARAMETER(MAXPUP=100)
424 INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
425 DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
426 COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
427 & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),
428 & XMAXUP(MAXPUP),LPRUP(MAXPUP)
430 PARAMETER (MAXNUP=500)
431 INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
432 DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
433 COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
434 & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP),
435 & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP),
437 DOUBLE PRECISION XCKECM,XTMP1,XTMP2,XTMP3,XTMP4,XMT,XMW,XMZ,
438 & XMH,XMV,XM1,XM2,XM3,XM4,XM5,XM21,XLAM,GAH,TINY
439 INTEGER IVVCODE,IFAIL,MQQ,NQQ,IHW,I,NDNS,JPR,JPR0,IH
441 CHARACTER*4 STRP1,STRP2
447 COMMON/NQQCOM/MQQ,NQQ
452 IF (IERROR.NE.0) RETURN
453 C--SET UP INPUT FILES
454 OPEN(UNIT=61,FILE=QQIN,STATUS='UNKNOWN')
456 PRINT*,'OPENED ',QQIN
458 C--READ HEADERS OF EVENT FILE
459 READ(61,801)XCKECM,XTMP1,XTMP2,XTMP3,XTMP4,TMPSTR
463 READ(61,802)IVVCODE,TMPSTR
464 IVVCODE=MOD(IVVCODE,10000)
465 C---CHECK PROCESS CODE
466 JPR0=MOD(ABS(IPROC),10000)
468 IF (JPR.NE.IVVCODE/100) CALL HWWARN('UPINIT',500,*999)
469 IF ((JPR.EQ.17.OR.JPR.EQ.28.OR.JPR.EQ.36).AND.
470 & IVVCODE.NE.MOD(ABS(IPROC),10000)) CALL HWWARN('UPINIT',501,*999)
471 IF (JPR.EQ.13.OR.JPR.EQ.14) THEN
473 READ(61,808)EMMIN,EMMAX,TMPSTR
475 READ(61,809)XMV,GAH,GAMMAX,TMPSTR
477 C-- CHECK VECTOR BOSON MASS
478 IF( (IVVCODE.EQ.1397.AND.ABS(XMV-RMASS(200)).GT.TINY) .OR.
479 # (IVVCODE.EQ.1497.AND.ABS(XMV-RMASS(198)).GT.TINY) .OR.
480 # (IVVCODE.EQ.1498.AND.ABS(XMV-RMASS(199)).GT.TINY) )
481 # CALL HWWARN('UPINIT',502,*999)
482 ELSEIF (JPR.EQ.28) THEN
483 READ(61,808)XMW,XMZ,TMPSTR
484 C-- CHECK VECTOR BOSON MASSES
485 IF(ABS(XMW-RMASS(198)).GT.TINY .OR.
486 # ABS(XMZ-RMASS(200)).GT.TINY) CALL HWWARN('UPINIT',502,*999)
487 ELSEIF (JPR.EQ.16.OR.JPR.EQ.36) THEN
488 READ(61,809)XMH,GAH,XMT,TMPSTR
489 C-- CHECK HIGGS AND TOP MASSES
491 IF (JPR.EQ.36) IH=IVVCODE/10-158
492 IF(ABS(XMH-RMASS(IH)).GT.TINY) CALL HWWARN('UPINIT',503,*999)
493 IF(ABS(XMT-RMASS(6)) .GT.TINY) CALL HWWARN('UPINIT',504,*999)
494 ELSEIF (JPR.EQ.17) THEN
495 READ(61,803)XMT,TMPSTR
496 C-- CHECK HEAVY QUARK MASS
497 IF( (IVVCODE.EQ.1706.AND.ABS(XMT-RMASS(6)).GT.TINY) .OR.
498 # (IVVCODE.EQ.1705.AND.ABS(XMT-RMASS(5)).GT.TINY) .OR.
499 # (IVVCODE.EQ.1704.AND.ABS(XMT-RMASS(4)).GT.TINY) ) then
501 print*,' RMASS(5)', RMASS(5)
502 CALL HWWARN('UPINIT',505,*999)
505 CALL HWWARN('UPINIT',506,*999)
507 READ(61,804)XM1,XM2,XM3,XM4,XM5,XM21,TMPSTR
508 READ(61,805)STRP1,STRP2,TMPSTR
509 READ(61,806)STRGRP,NDNS,TMPSTR
510 READ(61,807)XLAM,STRSCH,TMPSTR
511 C--CHECK THAT EVENT FILE HAS BEEN GENERATED CONSISTENTLY WITH
512 C--HERWIG PARAMETERS ADOPTED HERE
515 IF( ABS(XCKECM-PBEAM1-PBEAM2).GT.TINY .OR.
516 C-- QUARK AND GLUON MASSES
517 # ABS(XM1-RMASS(1)).GT.TINY .OR.
518 # ABS(XM2-RMASS(2)).GT.TINY .OR.
519 # ABS(XM3-RMASS(3)).GT.TINY .OR.
520 # ABS(XM4-RMASS(4)).GT.TINY .OR.
521 # ABS(XM5-RMASS(5)).GT.TINY .OR.
522 # ABS(XM21-RMASS(13)).GT.TINY .OR.
523 C-- LAMBDA_QCD: NOW REMOVED TO ALLOW MORE FLEXIBILITY (NNLO EFFECT ANYHOW)
524 C # ABS(XLAM-QCDLAM).GT.TINY .OR.
525 C-- REPLACE THE FOLLOWING WITH A CONDITION ON STRSCH, IF CONSISTENT
526 C-- INFORMATION ON PDF SCHEME WILL BE AVAILABLE FROM PDF LIBRARIES AND HERWIG
527 C-- COLLIDING PARTICLE TYPE
528 # FK88STRNOEQ(STRP1,PART1) .OR.
529 # FK88STRNOEQ(STRP2,PART2) )IFAIL=1
530 C--IF PDF LIBRARY IS USED, CHECK PDF CONSISTENCY
531 IF( IFAIL.EQ.0 .AND. MODPDF(1).NE.-1)THEN
533 # FK88STRNOEQ(STRGRP,AUTPDF(1)) .OR.
534 # FK88STRNOEQ(STRGRP,AUTPDF(2)) .OR.
535 # ABS(NDNS-MODPDF(1)).GT.TINY .OR.
536 # ABS(NDNS-MODPDF(2)).GT.TINY )IFAIL=1
538 IF(IFAIL.EQ.1) CALL HWWARN('UPINIT',507,*999)
539 CALL HWUIDT(3,IDBMUP(1),IHW,PART1)
540 CALL HWUIDT(3,IDBMUP(2),IHW,PART2)
559 PRINT*,'END OF UPINIT'
561 PRINT*,'PDFGUP(1)=',PDFGUP(1)
562 PRINT*,'PDFGUP(2)=',PDFGUP(2)
565 801 FORMAT(5(1X,D10.4),1X,A)
566 802 FORMAT(1X,I6,1X,A)
567 803 FORMAT(1X,D10.4,1X,A)
568 804 FORMAT(6(1X,D10.4),1X,A)
569 805 FORMAT(2(1X,A4),1X,A)
570 806 FORMAT(1X,A8,1X,I4,1X,A)
571 807 FORMAT(1X,D10.4,1X,A2,1X,A)
572 808 FORMAT(2(1X,D10.4),1X,A)
573 809 FORMAT(3(1X,D10.4),1X,A)