1 #include "isajet/pilot.h"
3 C-----------------------------------------------------------------------
5 C Use MadGraph/Helas to generate Z + 2 jets after setup by
6 C ZJJ0 using 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/jetpar.inc"
29 #include "isajet/jetset.inc"
30 #include "isajet/partcl.inc"
31 #include "isajet/pinits.inc"
32 #include "isajet/pjets.inc"
33 #include "isajet/primar.inc"
34 #include "isajet/sstype.inc"
35 #include "isajet/totals.inc"
36 #include "isajet/mgkin.inc"
37 #include "isajet/mgcoms.inc"
38 #include "isajet/mgsigs.inc"
41 REAL*8 P1(0:3),P2(0:3),P3(0:3),P4(0:3),P5(0:3)
42 EQUIVALENCE (P1(0),PJETS8(0,1))
43 EQUIVALENCE (P2(0),PJETS8(0,2))
44 EQUIVALENCE (P3(0),PJETS8(0,3))
45 EQUIVALENCE (P4(0),PJETS8(0,4))
46 EQUIVALENCE (P5(0),PJETS8(0,5))
47 REAL QFCN,XX,QQ,RND,RANF,SIG,FJAC,STRUC,ALQCD
48 REAL*8 SZJJ1,WT8,TERM,SUM,SZJJ2,SZJJ3,SZJJ4,SIG8,SIGI8
49 REAL*8 SZJJ5,SZJJ6,SZJJ7
50 INTEGER IQ,IH,ISIG8,IFL1,IFL2,IM1,IM2,IQ1,IQ2,NTRY,I,II,K,IWT8
52 C Map Jettype/2 to MadGraph
53 DATA IMAD/3,4,8,7,12,11/
55 C Parton distributions
56 QFCN(XX,IQ,IH)=STRUC(XX,QQ,IQ,IDIN(IH))/XX
70 SIG=SIG+WTSUM8(I)/NWT8(I)
75 SUM=SUM+WTSUM8(II)/NWT8(II)
76 IF(SUM.GE.RND*SIG) THEN
81 WRITE(ITLIS,*) 'ERROR IN ZJJ: NO MODE FOUND'
88 IF(NTRY.GT.NTRIES) THEN
89 WRITE(ITLIS,*) 'ERROR IN ZJJ: NTRY = ',NTRY
90 WRITE(ITLIS,*) 'PROCESS WAS ',(IDENT8(K,ISIG8),K=1,5)
91 SIGI8=WTSUM8(ISIG8)/NWT8(ISIG8)
92 WRITE(ITLIS,*) 'PROCESS SIGMA/MAX = ',SIGI8,WTMAX8(ISIG8)
93 WRITE(ITLIS,*) 'CHECK YOUR LIMITS OR INCREASE NTRIES'
97 C Cases 1,4: q1 q1b -> z q2 q2b
99 IF(IFUNC8(ISIG8).EQ.1.OR.IFUNC8(ISIG8).EQ.4) THEN
101 IFL1=IABS(IDENT8(1,ISIG8))
107 IFL2=IABS(IDENT8(4,ISIG8))
114 IF(WT8.GT.0) GO TO 220
116 WRITE(ITLIS,*) 'ERROR IN ZJJ: NO PHASE SPACE POINT IN ',
119 220 NWTTOT=NWTTOT+IWT8-1
120 NWT8(ISIG8)=NWT8(ISIG8)+IWT8-1
123 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
124 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
128 IF(IDENT8(1,ISIG8).GT.0.AND.IDENT8(4,ISIG8).GT.0) THEN
129 IF(IFUNC8(ISIG8).EQ.1) THEN
130 TERM=SZJJ1(P1,P2,P3,P4,P5,IM1,IM2)
132 TERM=SZJJ4(P1,P2,P3,P4,P5,IM1)
134 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
135 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
136 ELSEIF(IDENT8(1,ISIG8).GT.0.AND.IDENT8(4,ISIG8).LT.0) THEN
137 IF(IFUNC8(ISIG8).EQ.1) THEN
138 TERM=SZJJ1(P1,P2,P3,P5,P4,IM1,IM2)
140 TERM=SZJJ4(P1,P2,P3,P5,P4,IM1)
142 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
143 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
144 ELSEIF(IDENT8(1,ISIG8).LT.0.AND.IDENT8(4,ISIG8).GT.0) THEN
145 IF(IFUNC8(ISIG8).EQ.1) THEN
146 TERM=SZJJ1(P1,P2,P3,P4,P5,IM1,IM2)
148 TERM=SZJJ4(P1,P2,P3,P4,P5,IM1)
150 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
151 TERM=TERM*WT8*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
152 ELSEIF(IDENT8(1,ISIG8).LT.0.AND.IDENT8(4,ISIG8).LT.0) THEN
153 IF(IFUNC8(ISIG8).EQ.1) THEN
154 TERM=SZJJ1(P1,P2,P3,P5,P4,IM1,IM2)
156 TERM=SZJJ4(P1,P2,P3,P5,P4,IM1)
158 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
159 TERM=TERM*WT8*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
161 WRITE(ITLIS,*) 'ERROR IN ZJJ...INVALID FLAVOR FOR ZJJ1'
168 C Case 2: g g -> z q2 q2b
170 IF(IFUNC8(ISIG8).EQ.2) THEN
172 IFL1=IABS(IDENT8(1,ISIG8))
175 IFL2=IABS(IDENT8(4,ISIG8))
182 IF(WT8.GT.0) GO TO 320
184 WRITE(ITLIS,*) 'ERROR IN ZJJ: NO PHASE SPACE POINT IN ',
187 320 NWTTOT=NWTTOT+IWT8-1
188 NWT8(ISIG8)=NWT8(ISIG8)+IWT8-1
191 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
192 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
196 IF(IDENT8(4,ISIG8).GT.0) THEN
197 TERM=SZJJ2(P1,P2,P3,P4,P5,IM2)
198 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
199 TERM=TERM*WT8*FJAC*QFCN(X1,1,1)*QFCN(X2,1,2)
200 ELSEIF(IDENT8(4,ISIG8).LT.0) THEN
201 TERM=SZJJ2(P1,P2,P3,P5,P4,IM2)
202 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
203 TERM=TERM*WT8*FJAC*QFCN(X1,1,1)*QFCN(X2,1,2)
205 WRITE(ITLIS,*) 'ERROR IN ZJJ...INVALID FLAVOR FOR ZJJ2'
212 C Case 3: q1 q1b -> z g g
214 IF(IFUNC8(ISIG8).EQ.3) THEN
216 IFL1=IABS(IDENT8(1,ISIG8))
228 IF(WT8.GT.0) GO TO 420
230 WRITE(ITLIS,*) 'ERROR IN ZJJ: NO PHASE SPACE POINT IN ',
233 420 NWTTOT=NWTTOT+IWT8-1
234 NWT8(ISIG8)=NWT8(ISIG8)+IWT8-1
237 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
238 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
242 IF(IDENT8(1,ISIG8).GT.0) THEN
243 TERM=SZJJ3(P1,P2,P3,P4,P5,IM1)
244 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
245 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
246 ELSEIF(IDENT8(1,ISIG8).LT.0) THEN
247 TERM=SZJJ3(P2,P1,P3,P4,P5,IM1)
248 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
249 TERM=TERM*WT8*FJAC*QFCN(X1,IQ2,1)*QFCN(X2,IQ1,2)
251 WRITE(ITLIS,*) 'ERROR IN ZJJ...INVALID FLAVOR FOR ZJJ3'
258 C Cases 5,6: q1 q2 -> z q1 q2
260 IF(IFUNC8(ISIG8).EQ.5.OR.IFUNC8(ISIG8).EQ.6) THEN
261 IFL1=IABS(IDENT8(1,ISIG8))
263 IFL2=IABS(IDENT8(2,ISIG8))
267 IF(IDENT8(1,ISIG8).LT.0) IQ1=IQ1+1
268 IF(IDENT8(2,ISIG8).LT.0) IQ2=IQ2+1
277 IF(WT8.GT.0) GO TO 520
279 WRITE(ITLIS,*) 'ERROR IN ZJJ: NO PHASE SPACE POINT IN ',
282 520 NWTTOT=NWTTOT+IWT8-1
283 NWT8(ISIG8)=NWT8(ISIG8)+IWT8-1
286 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
287 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
291 IF(IDENT8(1,ISIG8).EQ.IDENT8(4,ISIG8)) THEN
292 IF(IFUNC8(ISIG8).EQ.5) THEN
293 TERM=SZJJ5(P1,P2,P3,P4,P5,IM1,IM2)
295 TERM=SZJJ6(P1,P2,P3,P4,P5,IM1)
297 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
298 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
299 ELSEIF(IDENT8(1,ISIG8).EQ.IDENT8(5,ISIG8)) THEN
300 TERM=SZJJ5(P1,P2,P3,P5,P4,IM1,IM2)
301 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
302 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
304 WRITE(ITLIS,*) 'ERROR IN ZJJ...INVALID FLAVOR FOR ZJJ1'
308 IF(IFL1.NE.IFL2) SIG8=0.5*SIG8
312 C Case 7: g q -> z g q
314 IF(IFUNC8(ISIG8).EQ.7) THEN
315 IF(IDENT8(1,ISIG8).EQ.9) THEN
316 IFL1=IABS(IDENT8(2,ISIG8))
322 IF(IDENT8(2,ISIG8).LT.0) IQ2=IQ2+1
324 IFL1=IABS(IDENT8(1,ISIG8))
330 IF(IDENT8(1,ISIG8).LT.0) IQ1=IQ1+1
333 IF(IDENT8(4,ISIG8).EQ.9) THEN
343 IF(WT8.GT.0) GO TO 620
345 WRITE(ITLIS,*) 'ERROR IN ZJJ: NO PHASE SPACE POINT IN ',
348 620 NWTTOT=NWTTOT+IWT8-1
349 NWT8(ISIG8)=NWT8(ISIG8)+IWT8-1
352 QQ=P3(1)**2+P3(2)**2+P4(1)**2+P4(2)**2+P5(1)**2+
353 $ P5(2)**2+AMJET8(3)**2+AMJET8(4)**2+AMJET8(5)**2
357 IF(IDENT8(1,ISIG8).EQ.9.AND.IDENT8(4,ISIG8).EQ.9) THEN
358 TERM=SZJJ7(P1,P2,P3,P4,P5,IM1)
359 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
360 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
361 ELSEIF(IDENT8(2,ISIG8).EQ.9.AND.IDENT8(4,ISIG8).EQ.9) THEN
362 TERM=SZJJ7(P2,P1,P3,P4,P5,IM1)
363 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
364 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
365 ELSEIF(IDENT8(1,ISIG8).EQ.9.AND.IDENT8(5,ISIG8).EQ.9) THEN
366 TERM=SZJJ7(P1,P2,P3,P5,P4,IM1)
367 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
368 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
369 ELSEIF(IDENT8(2,ISIG8).EQ.9.AND.IDENT8(5,ISIG8).EQ.9) THEN
370 TERM=SZJJ7(P2,P1,P3,P5,P4,IM1)
371 TERM=TERM*(4*PI*ALQCD(REAL(QQ)))**2
372 TERM=TERM*WT8*FJAC*QFCN(X1,IQ1,1)*QFCN(X2,IQ2,2)
374 WRITE(ITLIS,*) 'ERROR IN ZJJ...INVALID FLAVOR FOR ZJJ1'
381 C Increment totals and test
383 900 WTTOT8=WTTOT8+SIG8
385 WTSUM8(ISIG8)=WTSUM8(ISIG8)+SIG8
386 WTMAX8(ISIG8)=MAX(WTMAX8(ISIG8),SIG8)
387 NWT8(ISIG8)=NWT8(ISIG8)+1
388 IF(SIG8.LT.RANF()*WTMAX8(ISIG8)) GO TO 100
394 PJETS(K,I)=PJETS8(K,I+2)
396 PJETS(4,I)=PJETS8(0,I+2)
397 PJETS(5,I)=AMJET8(I+2)
398 IDJETS(I)=IDENT8(I+2,ISIG8)
402 PINITS(K,I)=PJETS8(K,I)
404 PINITS(4,I)=PJETS8(0,I)
405 PINITS(5,I)=AMJET8(I)
406 IDINIT(I)=IDENT8(I,ISIG8)
410 SHAT=(P1(0)+P2(0))**2-(P1(3)+P2(3))**2
411 PBEAM(1)=(1.-X1)*HALFE
412 PBEAM(2)=(1.-X2)*HALFE