1 #include "isajet/pilot.h"
3 C-----------------------------------------------------------------------
5 C Initialize MadGraph/Helas to generate Z + 2 jets.
6 C Cross section routines from MadGraph:
7 C ZJJ1: q1 q1b -> Z q2 q2b, q1 != q2
8 C ZJJ2: g g -> Z q2 q2b
9 C ZJJ3: q1 q1b -> Z g g
10 C ZJJ4: q1 q1b -> Z q1 q1b
11 C ZJJ5: q1 q2 -> Z q1 q2
12 C ZJJ6: q1 q1 -> Z q1 q1
15 C Note: The Z is always jet1, but the other two jets are
16 C symmetrized so a symmetry factor of 1/2 is needed for every
17 C subprocess. This is included by MadGraph for identical
20 C-----------------------------------------------------------------------
21 #if defined(CERNLIB_IMPNONE)
24 #include "isajet/const.inc"
25 #include "isajet/q1q2.inc"
26 #include "isajet/itapes.inc"
27 #include "isajet/jetlim.inc"
28 #include "isajet/primar.inc"
29 #include "isajet/sstype.inc"
30 #include "isajet/mgkin.inc"
31 #include "isajet/mgcoms.inc"
32 #include "isajet/mgsigs.inc"
35 INTEGER IQ1,IQ2,IQ4,IQ5,IFL1,IFL2,IM1,IM2,I,NEV,KK,II,J
36 REAL*8 P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3)
37 EQUIVALENCE (P1(0),PJETS8(0,1))
38 EQUIVALENCE (P2(0),PJETS8(0,2))
39 EQUIVALENCE (P3(0),PJETS8(0,3))
40 EQUIVALENCE (P4(0),PJETS8(0,4))
41 EQUIVALENCE (P5(0),PJETS8(0,5))
42 REAL*8 WT,TERM,FJAC,SZJJ1,SZJJ2,SZJJ3,SZJJ4,SUM
43 REAL*8 SZJJ5,SZJJ6,SZJJ7
44 REAL X1,X2,XX,QQ,TMP(MXSIG8),QFCN,STRUC,ALQCD
45 INTEGER IQ,IH,NPT,NNN,ISUM
47 C Map Jettype/2 to MadGraph
48 DATA IMAD/3,4,8,7,12,11/
50 C Parton distributions
51 QFCN(XX,IQ,IH)=STRUC(XX,QQ,IQ,IDIN(IH))/XX
56 WRITE(ITLIS,1000) NTRIES,NPT
57 1000 FORMAT(//' INITIALIZING CROSS SECTIONS WITH',I6,
58 $' TRIES FOR',I6,' POINTS EACH:')
63 C Cases 1,4: q1 q1b -> z q2 q2b
79 C Subcase 1a: 3=z, 4=q, 5=qb
81 IF(GOQ(IQ4,2).AND.GOQ(IQ5,3)) THEN
82 IF(NSIG8+2.GT.MXSIG8) GO TO 999
87 IDENT8(1,NSIG8+I)=(3-2*I)*IFL1
88 IDENT8(2,NSIG8+I)=-(3-2*I)*IFL1
90 IDENT8(4,NSIG8+I)=IFL2
91 IDENT8(5,NSIG8+I)=-IFL2
99 IF(NNN.GT.NPT) GO TO 120
101 NWT8(NSIG8+I)=NWT8(NSIG8+I)+1
107 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
108 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
110 IF(IFL2.EQ.IFL1) THEN
111 TERM=SZJJ4(P1,P2,P3,P4,P5,IM1)
113 TERM=SZJJ1(P1,P2,P3,P4,P5,IM1,IM2)
115 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
116 TERM=TERM*WT*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
118 IF(IFL2.EQ.IFL1) THEN
119 TERM=SZJJ4(P2,P1,P3,P4,P5,IM1)
121 TERM=SZJJ1(P2,P1,P3,P4,P5,IM1,IM2)
123 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
124 TERM=TERM*WT*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
128 WTSUM8(NSIG8+I)=WTSUM8(NSIG8+I)+TERM
129 WTMAX8(NSIG8+I)=MAX(WTMAX8(NSIG8+I),TERM)
132 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
133 $ (IDENT8(KK,NSIG8+I),KK=1,5)
138 C Subcase 1b: 3=z, 4=qb, 5=q
140 IF(GOQ(IQ5,2).AND.GOQ(IQ4,3)) THEN
141 IF(NSIG8+2.GT.MXSIG8) GO TO 999
146 IDENT8(1,NSIG8+I)=(3-2*I)*IFL1
147 IDENT8(2,NSIG8+I)=-(3-2*I)*IFL1
148 IDENT8(3,NSIG8+I)=IDZ
149 IDENT8(4,NSIG8+I)=-IFL2
150 IDENT8(5,NSIG8+I)=IFL2
151 IF(IFL1.EQ.IFL2) THEN
158 IF(NNN.GT.NPT) GO TO 130
160 NWT8(NSIG8+I)=NWT8(NSIG8+I)+1
166 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
167 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
169 IF(IFL1.EQ.IFL2) THEN
170 TERM=SZJJ4(P1,P2,P3,P5,P4,IM1)
172 TERM=SZJJ1(P1,P2,P3,P5,P4,IM1,IM2)
174 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
175 TERM=TERM*WT*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
177 IF(IFL1.EQ.IFL2) THEN
178 TERM=SZJJ4(P2,P1,P3,P5,P4,IM1)
180 TERM=SZJJ1(P2,P1,P3,P5,P4,IM1,IM2)
182 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
183 TERM=TERM*WT*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
187 WTSUM8(NSIG8+I)=WTSUM8(NSIG8+I)+TERM
188 WTMAX8(NSIG8+I)=MAX(WTMAX8(NSIG8+I),TERM)
191 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
192 $ (IDENT8(KK,NSIG8+I),KK=1,5)
199 C Case 2: g g -> z q2 q2b
212 C Subcase 2a: 3=z, 4=q, 5=qb
214 IF(GOQ(IQ4,2).AND.GOQ(IQ5,3)) THEN
215 IF(NSIG8+1.GT.MXSIG8) GO TO 999
219 IDENT8(1,NSIG8+1)=IDGL
220 IDENT8(2,NSIG8+1)=IDGL
221 IDENT8(3,NSIG8+1)=IDZ
222 IDENT8(4,NSIG8+1)=IFL2
223 IDENT8(5,NSIG8+1)=-IFL2
227 IF(NNN.GT.NPT) GO TO 220
229 NWT8(NSIG8+1)=NWT8(NSIG8+1)+1
235 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
236 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
237 TERM=SZJJ2(P1,P2,P3,P4,P5,IM2)
238 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
239 TERM=TERM*WT*FJAC*QFCN(X1,1,1)*QFCN(X2,1,2)
242 WTSUM8(NSIG8+1)=WTSUM8(NSIG8+1)+TERM
243 WTMAX8(NSIG8+1)=MAX(WTMAX8(NSIG8+1),TERM)
246 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
247 $ (IDENT8(KK,NSIG8+1),KK=1,5)
252 C Subcase 2b: 3=z, 4=qb, 5=q
254 IF(GOQ(IQ5,2).AND.GOQ(IQ4,3)) THEN
255 IF(NSIG8+1.GT.MXSIG8) GO TO 999
259 IDENT8(1,NSIG8+1)=IDGL
260 IDENT8(2,NSIG8+1)=IDGL
261 IDENT8(3,NSIG8+1)=IDZ
262 IDENT8(4,NSIG8+1)=-IFL2
263 IDENT8(5,NSIG8+1)=IFL2
267 IF(NNN.GT.NPT) GO TO 230
269 NWT8(NSIG8+1)=NWT8(NSIG8+1)+1
275 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
276 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
277 TERM=SZJJ2(P1,P2,P3,P5,P4,IM2)
278 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
279 TERM=TERM*WT*FJAC*QFCN(X1,1,1)*QFCN(X2,1,2)
282 WTSUM8(NSIG8+1)=WTSUM8(NSIG8+1)+TERM
283 WTMAX8(NSIG8+1)=MAX(WTMAX8(NSIG8+1),TERM)
286 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
287 $ (IDENT8(KK,NSIG8+1),KK=1,5)
293 C Case 3: q1 q1b -> z g g
305 IF(GOQ(1,2).AND.GOQ(1,3)) THEN
306 IF(NSIG8+2.GT.MXSIG8) GO TO 999
311 IDENT8(1,NSIG8+I)=(3-2*I)*IFL1
312 IDENT8(2,NSIG8+I)=-(3-2*I)*IFL1
313 IDENT8(3,NSIG8+I)=IDZ
314 IDENT8(4,NSIG8+I)=IDGL
315 IDENT8(5,NSIG8+I)=IDGL
319 IF(NNN.GT.NPT) GO TO 320
321 NWT8(NSIG8+I)=NWT8(NSIG8+I)+1
327 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
328 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
330 TERM=SZJJ3(P1,P2,P3,P4,P5,IM1)
331 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
332 TERM=TERM*WT*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
334 TERM=SZJJ3(P2,P1,P3,P4,P5,IM1)
335 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
336 TERM=TERM*WT*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
339 WTSUM8(NSIG8+I)=WTSUM8(NSIG8+I)+TERM
340 WTMAX8(NSIG8+I)=MAX(WTMAX8(NSIG8+I),TERM)
343 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
344 $ (IDENT8(KK,NSIG8+I),KK=1,5)
350 C Cases 5,6: q1 q2 -> Z q1 q2, q1 != q2
351 C Since we integrate over the Z decay, we can use the same
352 C cross sections for quarks (I=1) and antiquarks (I=2).
366 IF(GOQ(IQ1,1).AND.GOQ(IQ2,2)) THEN
370 IDENT8(1,NSIG8+1)=(3-2*I)*IFL1
371 IDENT8(2,NSIG8+1)=(3-2*I)*IFL2
372 IDENT8(3,NSIG8+1)=IDZ
373 IDENT8(4,NSIG8+1)=(3-2*I)*IFL1
374 IDENT8(5,NSIG8+1)=(3-2*I)*IFL2
375 IF(IFL1.EQ.IFL2) THEN
387 NWT8(NSIG8+1)=NWT8(NSIG8+1)+1
393 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
394 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
395 IF(IFL1.EQ.IFL2) THEN
396 TERM=SZJJ6(P1,P2,P3,P4,P5,IM1)
397 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
398 TERM=TERM*WT*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
400 TERM=SZJJ5(P2,P1,P3,P4,P5,IM1,IM2)
401 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
402 TERM=TERM*WT*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
406 WTSUM8(NSIG8+1)=WTSUM8(NSIG8+1)+TERM
407 WTMAX8(NSIG8+1)=MAX(WTMAX8(NSIG8+1),TERM)
410 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
411 $ (IDENT8(KK,NSIG8+1),KK=1,5)
418 C Case 7: g q -> z g q
419 C Since we integrate over the Z decay, we can use the same
420 C cross sections for quarks (I=1) and antiquarks (I=2).
427 C Subcase 7a: 3=z, 4=g, 5=q (J=1,2 for initial states)
429 IF(GOQ(1,2).AND.GOQ(IQ5,3)) THEN
430 IF(NSIG8+2.GT.MXSIG8) GO TO 999
439 IDENT8(1,NSIG8+J)=IDGL
440 IDENT8(2,NSIG8+J)=(3-2*I)*IFL2
446 IDENT8(2,NSIG8+J)=IDGL
447 IDENT8(1,NSIG8+J)=(3-2*I)*IFL2
453 IDENT8(3,NSIG8+J)=IDZ
454 IDENT8(4,NSIG8+J)=IDGL
455 IDENT8(5,NSIG8+J)=(3-2*I)*IFL2
459 IF(NNN.GT.NPT) GO TO 520
461 NWT8(NSIG8+J)=NWT8(NSIG8+J)+1
467 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
468 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
470 TERM=SZJJ7(P1,P2,P3,P4,P5,IM2)
472 TERM=SZJJ7(P2,P1,P3,P4,P5,IM2)
474 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
475 TERM=TERM*WT*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
478 WTSUM8(NSIG8+J)=WTSUM8(NSIG8+J)+TERM
479 WTMAX8(NSIG8+J)=MAX(WTMAX8(NSIG8+J),TERM)
482 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
483 $ (IDENT8(KK,NSIG8+1),KK=1,5)
488 C Subcase 7b: 3=z, 4=q, 5=g
490 IF(GOQ(IQ5,2).AND.GOQ(1,3)) THEN
491 IF(NSIG8+2.GT.MXSIG8) GO TO 999
500 IDENT8(1,NSIG8+J)=IDGL
501 IDENT8(2,NSIG8+J)=(3-2*I)*IFL2
507 IDENT8(2,NSIG8+J)=IDGL
508 IDENT8(1,NSIG8+J)=(3-2*I)*IFL2
514 IDENT8(3,NSIG8+J)=IDZ
515 IDENT8(4,NSIG8+J)=(3-2*I)*IFL2
516 IDENT8(5,NSIG8+J)=IDGL
520 IF(NNN.GT.NPT) GO TO 530
522 NWT8(NSIG8+J)=NWT8(NSIG8+J)+1
528 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
529 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
531 TERM=SZJJ2(P1,P2,P3,P5,P4,IM2)
533 TERM=SZJJ2(P2,P1,P3,P5,P4,IM2)
535 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
536 TERM=TERM*WT*FJAC*QFCN(X1,1,1)*QFCN(X2,1,2)
539 WTSUM8(NSIG8+J)=WTSUM8(NSIG8+J)+TERM
540 WTMAX8(NSIG8+J)=MAX(WTMAX8(NSIG8+J),TERM)
543 WRITE(ITLIS,*) ' ZJJ0 WARNING: INSUFFICIENT TRIES FOR ',
544 $ (IDENT8(KK,NSIG8+1),KK=1,5)
551 C Sort using initial cross sections
557 TMP(I)=WTSUM8(I)/NWT8(I)
561 IF(NSIG8.GT.1) CALL SORTTF(TMP,ISORT8,NSIG8)
564 9001 FORMAT(6X,'INITIAL MULTIJET CROSS SECTIONS'/
565 $6X,'PROCESS',18X,'SIGMA',10X,'MAX(SIGMA)')
568 WRITE(ITLIS,9002) (IDENT8(KK,II),KK=1,5),TMP(II),WTMAX8(II)
569 9002 FORMAT(2X,5I5,2E15.5)
575 999 WRITE(ITLIS,*) 'ERROR IN ZJJ0, NSIG8 = ',NSIG8