]>
Commit | Line | Data |
---|---|---|
0795afa3 | 1 | #include "isajet/pilot.h" |
2 | SUBROUTINE QCDINZ(J0) | |
3 | C | |
4 | C AUXILIARY ROUTINE FOR QCDINI. GENERATE A Z AND TWO DAUGHTER | |
5 | C PARTONS FOR SPACELIKE PARTON J0. | |
6 | C | |
7 | #include "isajet/itapes.inc" | |
8 | #include "isajet/jetset.inc" | |
9 | #include "isajet/jwork.inc" | |
10 | #include "isajet/jwork2.inc" | |
11 | #include "isajet/qcdpar.inc" | |
12 | #include "isajet/primar.inc" | |
13 | C | |
14 | DATA CA/3./,CF/1.333333333/ | |
15 | C FUNCTIONS. | |
16 | PQQ(Z)=CF*(1.+Z**2)/(1.-Z) | |
17 | PQG(Z)=CF*(1.+(1.-Z)**2)/Z | |
18 | PGQ(Z)=.5*(Z**2+(1.-Z)**2) | |
19 | PGG(Z)=2.*CA*(1.-Z*(1.-Z))**2/(Z*(1.-Z)) | |
20 | C | |
21 | C INITIALIZE | |
22 | IDABS=IABS(JTYPE(J0)) | |
23 | AM0=ABS(PJSET(5,J0)) | |
24 | T0=AM0**2 | |
25 | JIN0=JIN(J0) | |
26 | X0=(PJSET(4,J0)+SGN*PJSET(3,J0))/ECM | |
27 | ZGOOD=.FALSE. | |
28 | IF(ZMIN.GE.ZMAX) RETURN | |
29 | C | |
30 | C SELECT BRANCHING AND GENERATE Z ACCORDING TO ALTARELLI-PARISI | |
31 | C FUNCTIONS. THEN CHECK WITH STRUCTURE FUNCTIONS | |
32 | C | |
33 | C GLUON | |
34 | C | |
35 | IF(IDABS.EQ.9) THEN | |
36 | C | |
37 | C GL->GL+GL | |
38 | IF(JIN0.EQ.1) THEN | |
39 | 110 ZGEN=DZMAX/ZMAX*(ZMAX*(1.-ZMIN)/(ZMIN*DZMAX))**RANF() | |
40 | Z=1./(1.+ZGEN) | |
41 | DZ=ZGEN/(1.+ZGEN) | |
42 | GZ=2.*CA/(Z*DZ) | |
43 | PGGZ=2.*CA*(1.-Z*(1.-Z))**2/(Z*DZ) | |
44 | IF(PGGZ.LT.GZ*RANF()) GO TO 110 | |
45 | JTYPE(NJSET+1)=9 | |
46 | JTYPE(NJSET+2)=9 | |
47 | ZZC(J0)=Z | |
48 | C | |
49 | X1=X0/Z | |
50 | FX1=STRUC(X1,T0,1,IDIN(JET-10)) | |
51 | FX0=FXTEST(J0) | |
52 | IF(FX1/FX0.GT.RANF()) ZGOOD=.TRUE. | |
53 | C | |
54 | C QK->GL+QK | |
55 | ELSE | |
56 | 120 RZMAX=SQRT(ZMAX) | |
57 | RZMIN=SQRT(ZMIN) | |
58 | ZGEN=1./RZMAX-RANF()*(1./RZMAX-1./RZMIN) | |
59 | Z=1./ZGEN**2 | |
60 | RZ=SQRT(Z) | |
61 | GZ=2.*CF/RZ**3 | |
62 | IF(PQG(Z)/RZ.LT.GZ*RANF()) GO TO 120 | |
63 | IFL=JIN0/2 | |
64 | IF(JIN0.NE.2*IFL) IFL=-IFL | |
65 | JTYPE(NJSET+1)=IFL | |
66 | JTYPE(NJSET+2)=IFL | |
67 | ZZC(J0)=Z | |
68 | C | |
69 | X1=X0/Z | |
70 | FX1=STRUC(X1,T0,JIN0,IDIN(JET-10)) | |
71 | FX0=FXTEST(J0) | |
72 | IF(RZ*FX1/FX0.GT.RANF()) ZGOOD=.TRUE. | |
73 | ENDIF | |
74 | C | |
75 | C QUARK | |
76 | C | |
77 | ELSE | |
78 | C | |
79 | C GL->QK+QB | |
80 | IF(JIN0.EQ.1) THEN | |
81 | 130 Z=ZMIN+(ZMAX-ZMIN)*RANF() | |
82 | IF(PGQ(Z).LT..5*RANF()) GO TO 130 | |
83 | JTYPE(NJSET+1)=9 | |
84 | JTYPE(NJSET+2)=-JTYPE(J0) | |
85 | ZZC(J0)=Z | |
86 | C | |
87 | X1=X0/Z | |
88 | FX1=STRUC(X1,T0,1,IDIN(JET-10)) | |
89 | FX0=FXTEST(J0) | |
90 | IF(FX1/FX0.GT.RANF().OR.GLFORC(JET-10)) ZGOOD=.TRUE. | |
91 | C | |
92 | C QK->QK+GL | |
93 | ELSE | |
94 | 140 DZ=DZMAX*((1.-ZMIN)/DZMAX)**RANF() | |
95 | Z=1.-DZ | |
96 | GZ=2.*CF/DZ | |
97 | RZ=1. | |
98 | IF(IDABS.LE.3) RZ=SQRT(Z) | |
99 | PQQZ=CF*(1.+Z**2)/DZ | |
100 | IF(PQQZ/RZ.LT.GZ*RANF()) GO TO 140 | |
101 | JTYPE(NJSET+1)=JTYPE(J0) | |
102 | JTYPE(NJSET+2)=9 | |
103 | ZZC(J0)=Z | |
104 | C | |
105 | X1=X0/Z | |
106 | FX1=STRUC(X1,T0,JIN0,IDIN(JET-10)) | |
107 | FX0=FXTEST(J0) | |
108 | IF(RZ*FX1/FX0.GT.RANF()) ZGOOD=.TRUE. | |
109 | ENDIF | |
110 | ENDIF | |
111 | JMATCH(NJSET+1)=0 | |
112 | JMATCH(NJSET+2)=0 | |
113 | RETURN | |
114 | END |