]>
Commit | Line | Data |
---|---|---|
0795afa3 | 1 | #include "isajet/pilot.h" |
2 | SUBROUTINE JETGEN(J) | |
3 | C | |
4 | C FRAGMENT JET J IN /JETSET/ INTO PRIMARY HADRONS USING THE | |
5 | C ALGORITHM OF FIELD AND FEYNMAN WITH | |
6 | C F(X)=1-XGEN(1)+XGEN(1)*(XGEN(2)+1)*(1-X)**XGEN(2) | |
7 | C FOR LIGHT QUARKS AND THE PETERSON F(X) WITH | |
8 | C EPSILON=XGEN(I)*AMASS(I)**2 | |
9 | C FOR HEAVY QUARKS. | |
10 | C INCLUDE BARYONS USING DIQUARKS WITH PROBABILITY PBARY. | |
11 | C PROBABILITY PSPIN1 FOR SPIN 1 DEPENDS ON HEAVIEST FLAVOR. | |
12 | C FRAGMENT A GLUON LIKE A RANDOM QUARK. | |
13 | C | |
14 | C Ver 7.30: Use delta function fragmentation for top quark. | |
15 | C | |
16 | C | |
17 | #include "isajet/itapes.inc" | |
18 | #include "isajet/jetset.inc" | |
19 | #include "isajet/partcl.inc" | |
20 | #include "isajet/frgpar.inc" | |
21 | #include "isajet/const.inc" | |
22 | #include "isajet/mbpar.inc" | |
23 | C | |
24 | LOGICAL HEAVY | |
25 | NBEGIN=NPTCL+1 | |
26 | PSUM=0. | |
27 | IFLBEG=JTYPE(J) | |
28 | HEAVY=.FALSE. | |
29 | IF(IABS(IFLBEG).GT.3.AND.IFLBEG.NE.9) HEAVY=.TRUE. | |
30 | PBEG=SQRT(PJSET(1,J)**2+PJSET(2,J)**2+PJSET(3,J)**2) | |
31 | C TOP QUARK... | |
32 | IF(IABS(IFLBEG).GE.6.AND.IABS(IFLBEG).LE.8) THEN | |
33 | NPTCL=NPTCL+1 | |
34 | PPTCL(1,NPTCL)=0 | |
35 | PPTCL(2,NPTCL)=0 | |
36 | PPTCL(3,NPTCL)=PBEG | |
37 | PPTCL(4,NPTCL)=PJSET(4,J) | |
38 | PPTCL(5,NPTCL)=PJSET(5,J) | |
39 | IORIG(NPTCL)=-J | |
40 | IDCAY(NPTCL)=0 | |
41 | IDENT(NPTCL)=JTYPE(J) | |
42 | RETURN | |
43 | ENDIF | |
44 | C EQUIVALENT QUARK FOR GLUON | |
45 | IF(IFLBEG.NE.9) GO TO 200 | |
46 | IFLBEG=INT(RANF()/PUD)+1 | |
47 | IF(RANF().GT..5) IFLBEG=-IFLBEG | |
48 | C CONSTRUCT FIRST QUARK | |
49 | 200 LOOP=0 | |
50 | IFL1=IFLBEG | |
51 | CALL GETPT(PT1,SIGQT) | |
52 | PHI1=2.*PI*RANF() | |
53 | PX1=PT1*COS(PHI1) | |
54 | PY1=PT1*SIN(PHI1) | |
55 | PPLUS=PBEG+PJSET(4,J) | |
56 | PTRUE=PPLUS | |
57 | 935 CONTINUE | |
58 | C CONSTRUCT NEXT QUARK | |
59 | 300 LOOP=LOOP+1 | |
60 | IF(PPLUS.LT.PEND.OR.LOOP.GT.10000) RETURN | |
61 | C IFL2 CAN BE DIQUARK ONLY IF IFL1 IS NOT | |
62 | IF(MOD(IFL1,100).EQ.0) GO TO 305 | |
63 | IF(RANF().LT.PBARY) GO TO 310 | |
64 | IFL2=ISIGN(INT(RANF()/PUD)+1,-IFL1) | |
65 | GO TO 320 | |
66 | 305 IFL2=ISIGN(INT(RANF()/PUD)+1,+IFL1) | |
67 | GO TO 320 | |
68 | 310 IQ1=INT(RANF()/PUD)+1 | |
69 | IQ2=INT(RANF()/PUD)+1 | |
70 | IF(IQ1.LE.IQ2) GO TO 315 | |
71 | ISWAP=IQ1 | |
72 | IQ1=IQ2 | |
73 | IQ2=ISWAP | |
74 | 315 IFL2=ISIGN(1000*IQ1+100*IQ2,IFL1) | |
75 | 320 CONTINUE | |
76 | CALL GETPT(PT2,SIGQT) | |
77 | PHI2=2.*PI*RANF() | |
78 | PX2=PT2*COS(PHI2) | |
79 | PY2=PT2*SIN(PHI2) | |
80 | C CONSTRUCT MESON WITH FLAVOR MIXING | |
81 | C SPECIAL CASE - SUPERSYM | |
82 | IFLABS=IABS(IFL1) | |
83 | IF(IFLABS.GT.20.AND.IFLABS.LT.30) THEN | |
84 | IDHAD=IFL1 | |
85 | GOTO 470 | |
86 | ENDIF | |
87 | IF(MOD(IFL1,100).EQ.0) GO TO 420 | |
88 | IF(MOD(IFL2,100).EQ.0) GO TO 425 | |
89 | IHIGH=MAX0(IABS(IFL1),IABS(IFL2)) | |
90 | JSPIN=INT(RANF()+PSPIN1(IHIGH)) | |
91 | ID1=IFL1 | |
92 | ID2=IFL2 | |
93 | IF(ID1+ID2.NE.0) GO TO 400 | |
94 | RND=RANF() | |
95 | ID1=IABS(ID1) | |
96 | ID1=INT(PMIX1(ID1,JSPIN+1)+RND)+INT(PMIX2(ID1,JSPIN+1)+RND)+1 | |
97 | ID2=-ID1 | |
98 | 400 IF(IABS(ID1).LE.IABS(ID2)) GO TO 410 | |
99 | ISAVE=ID1 | |
100 | ID1=ID2 | |
101 | ID2=ISAVE | |
102 | 410 IDHAD=ISIGN(100*IABS(ID1)+10*IABS(ID2)+JSPIN,ID1) | |
103 | GO TO 470 | |
104 | C CONSTRUCT BARYON IDENT. | |
105 | 420 ID3=MOD(IFL1/100,10) | |
106 | ID2=IFL1/1000 | |
107 | ID1=IFL2 | |
108 | GO TO 430 | |
109 | 425 ID3=MOD(IFL2/100,10) | |
110 | ID2=IFL2/1000 | |
111 | ID1=IFL1 | |
112 | 430 IF(IABS(ID1).LE.IABS(ID2)) GO TO 431 | |
113 | ISWAP=ID1 | |
114 | ID1=ID2 | |
115 | ID2=ISWAP | |
116 | 431 IF(IABS(ID2).LE.IABS(ID3)) GO TO 432 | |
117 | ISWAP=ID2 | |
118 | ID2=ID3 | |
119 | ID3=ISWAP | |
120 | 432 IF(IABS(ID1).LE.IABS(ID2)) GO TO 440 | |
121 | ISWAP=ID1 | |
122 | ID1=ID2 | |
123 | ID2=ISWAP | |
124 | 440 JSPIN=1 | |
125 | IF(ID1.EQ.ID2.AND.ID2.EQ.ID3) GO TO 450 | |
126 | IHIGH=IABS(ID3) | |
127 | JSPIN=INT(RANF()+PSPIN1(IHIGH)) | |
128 | 450 IF(JSPIN.EQ.1.OR.ID1.EQ.ID2.OR.ID2.EQ.ID3) GO TO 460 | |
129 | IF(RANF().GT.PISPN) GO TO 460 | |
130 | ISWAP=ID1 | |
131 | ID1=ID2 | |
132 | ID2=ISWAP | |
133 | 460 IDHAD=1000*IABS(ID1)+100*IABS(ID2)+10*IABS(ID3)+JSPIN | |
134 | IDHAD=ISIGN(IDHAD,IFL1) | |
135 | 470 CONTINUE | |
136 | AM=AMASS(IDHAD) | |
137 | PX=PX1+PX2 | |
138 | PY=PY1+PY2 | |
139 | AMT2=PX**2+PY**2+AM**2 | |
140 | C IF LEADING PARTICLE, FIND MINIMUM X | |
141 | XMIN=0. | |
142 | IF(LOOP.EQ.1) XMIN=AMIN1(SQRT(AMT2)/PPLUS,1.) | |
143 | C SELECT X | |
144 | C USE FIELD-FEYNMAN FUNCTION FOR LIGHT QUARKS. | |
145 | C USE PETERSON FRAGMENTATION FOR HEAVY QUARKS. | |
146 | C USE DISTRIBUTION FOR HEAVIER QUARK FOR DIQUARKS. | |
147 | II1=IABS(IFL1) | |
148 | IF(MOD(II1,100).EQ.0) II1=MOD(II1/100,10) | |
149 | IF(II1.LE.3) THEN | |
150 | X=RANF() | |
151 | IF(RANF().LT.XGEN(1)) X=1.-X**(1./(XGEN(2)+1.)) | |
152 | ELSEIF(II1.LE.9) THEN | |
153 | CALL HEAVYX(X,XGEN(II1)/AM**2) | |
154 | ELSEIF(II1.GT.20.AND.II1.LT.30) THEN | |
155 | CALL HEAVYX(X,XGENSS(II1-20)/AM**2) | |
156 | ENDIF | |
157 | X=XMIN+(1.-XMIN)*X | |
158 | QPLUS=X*PPLUS | |
159 | QPLUS=AMAX1(QPLUS,1.E-6) | |
160 | QMINUS=AMT2/QPLUS | |
161 | P0=.5*(QPLUS+QMINUS) | |
162 | PZ=.5*(QPLUS-QMINUS) | |
163 | C DISCARD PARTICLE IF PZ<0 | |
164 | IF(PZ.LT.0..AND..NOT.(HEAVY.AND.LOOP.EQ.1)) GO TO 500 | |
165 | C ADD PARTICLE TO /PARTCL/ | |
166 | IF(NPTCL.GE.MXPTCL) GO TO 9999 | |
167 | NPTCL=NPTCL+1 | |
168 | PPTCL(1,NPTCL)=PX | |
169 | PPTCL(2,NPTCL)=PY | |
170 | PPTCL(3,NPTCL)=PZ | |
171 | PPTCL(4,NPTCL)=P0 | |
172 | PPTCL(5,NPTCL)=AM | |
173 | IORIG(NPTCL)=-J | |
174 | IDCAY(NPTCL)=0 | |
175 | IDENT(NPTCL)=IDHAD | |
176 | PSUM=PSUM+QPLUS | |
177 | C SWAP QUARKS AND CONTINUE IF SUFFICIENT PPLUS | |
178 | 500 CONTINUE | |
179 | PX1=-PX2 | |
180 | PY1=-PY2 | |
181 | IFL1=-IFL2 | |
182 | PPLUS=(1.-X)*PPLUS | |
183 | GO TO 300 | |
184 | C | |
185 | 9999 CALL PRTEVT(0) | |
186 | WRITE(ITLIS,10) NPTCL | |
187 | 10 FORMAT(//5X,'ERROR IN JETGEN...NPTCL >',I5) | |
188 | RETURN | |
189 | END |