]>
Commit | Line | Data |
---|---|---|
0795afa3 | 1 | #include "isajet/pilot.h" |
2 | SUBROUTINE ISAEVT(I,OK,DONE) | |
3 | C---------------------------------------------------------------------- | |
4 | C- | |
5 | C- Purpose and Methods : | |
6 | C- | |
7 | C- Normal operation: | |
8 | C- Generate one ISAJET event and return. | |
9 | C- | |
10 | C- "ISALEP" generation: | |
11 | C- Generate a TWOJET or DRELLYAN hard scattering. Then make NEVOLVE | |
12 | C- evolutions and NHADRON fragmentations, rejecting events which | |
13 | C- fail the desired cuts using logical functions | |
14 | C- REJJET() tests the QCD evolution stage, e.g. by requiring | |
15 | C- a heavy quark. | |
16 | C- REJFRG() tests the fragmentation stage, e.g. by requiring | |
17 | C- a high-pt lepton. | |
18 | C- These functions default to .FALSE.; i.e. they do not reject any | |
19 | C- events. Note that one hard scattering can give more than one | |
20 | C- event. You must choose NEVOLVE and NHADRON carefully. | |
21 | C- IEVT = event number. This is incremented NEVOLVE * NHADRON | |
22 | C- times for each hard scattering; i.e. it counts the | |
23 | C- number of potential events. | |
24 | C- IEVGEN = counter for generated events. | |
25 | C- NEVENT = maximum value of hard scatterings. Hence the limit | |
26 | C- for IEVT is NEVENT * NEVOLVE * NHADRON. | |
27 | C- The cross section SIGF contains an extra factor of | |
28 | C- 1 / (NEVOLVE * NHADRON) | |
29 | C- to produce the correct final cross section using the weight | |
30 | C- SIGF / NEVENT | |
31 | C- | |
32 | C- Input: | |
33 | C- I = number used to control printout | |
34 | C- Output: | |
35 | C- OK = logical flag for good event. | |
36 | C- DONE = logical flag for job completion. | |
37 | C- | |
38 | C- Created 3-FEB-1988 Serban D. Protopopescu | |
39 | C- Updated 17-APR-1990 Serban D. Protopopescu (add ISALEP option) | |
40 | C- 22-JUL-1992: Move PRTEVT and GETTOT statements to end so they | |
41 | C- work for TWOJET and DRELLYAN with NOVOLVE. (FEP) | |
42 | C- | |
43 | C---------------------------------------------------------------------- | |
44 | #if defined(CERNLIB_IMPNONE) | |
45 | IMPLICIT NONE | |
46 | #endif | |
47 | #include "isajet/itapes.inc" | |
48 | #include "isajet/idrun.inc" | |
49 | #include "isajet/keys.inc" | |
50 | #include "isajet/nodcay.inc" | |
51 | #include "isajet/primar.inc" | |
52 | #include "isajet/jetpar.inc" | |
53 | #include "isajet/partcl.inc" | |
54 | #include "isajet/jetset.inc" | |
55 | #include "isajet/isloop.inc" | |
56 | C | |
57 | LOGICAL REJJET,REJFRG,OK,DONE | |
58 | INTEGER NPASS,I,NLIMIT | |
59 | C | |
60 | NPASS=0 | |
61 | OK=.TRUE. | |
62 | DONE=.FALSE. | |
63 | NLIMIT=NEVENT*NEVOLV*NFRGMN | |
64 | C | |
65 | C Twojet or Drell-Yan events. The evolution and fragmentation | |
66 | C loops are done with GO TO statements so that we can exit | |
67 | C the loops with a good event and reenter them. | |
68 | C | |
69 | IF(KEYS(1).OR.KEYS(3)) THEN | |
70 | 100 CONTINUE | |
71 | IF(IEVOL.EQ.1.AND.IFRG.EQ.1) THEN | |
72 | NPASS=NPASS+1 | |
73 | IF(NPASS.GT.NTRIES) THEN | |
74 | WRITE(ITLIS,1001) NTRIES | |
75 | 1001 FORMAT(//' IT IS TAKING MORE THAN',I6,' TRIES TO MAKE', | |
76 | $ ' AN EVENT IN ISAEVT.'/ | |
77 | $ ' CHECK YOUR LIMITS OR OR INCREASE NTRIES.'/ | |
78 | $ ' CHECK NEVOLVE, NHADRON, AND YOUR REJJET AND REJFRG', | |
79 | $ ' FUNCTIONS IF ANY.'/ | |
80 | $ ' JOB TERMINATED.') | |
81 | STOP 99 | |
82 | ENDIF | |
83 | CALL RANFMT | |
84 | C Generate appropriate hard scattering | |
85 | IF(KEYS(1)) THEN | |
86 | CALL TWOJET | |
87 | ELSE | |
88 | CALL DRLLYN | |
89 | ENDIF | |
90 | ENDIF | |
91 | C QCD evolution | |
92 | IF(NOEVOL) THEN | |
93 | IEVT=IEVT+NEVOLV*NFRGMN | |
94 | GOTO 9999 | |
95 | ENDIF | |
96 | C Continue if in fragmentation loop | |
97 | IF(IFRG.NE.1) GO TO 120 | |
98 | C Begin multiple evolution loop | |
99 | 110 CONTINUE | |
100 | NJSET=0 | |
101 | IEVT=IEVT+1 | |
102 | CALL EVOLVE | |
103 | IEVT=IEVT-1 | |
104 | IF(NJSET.LT.0) THEN | |
105 | IEVT=IEVT+NFRGMN | |
106 | GO TO 111 | |
107 | ENDIF | |
108 | IF(REJJET()) THEN | |
109 | IEVT=IEVT+NFRGMN | |
110 | GO TO 111 | |
111 | ENDIF | |
112 | IF(NOHADR) THEN | |
113 | IEVT=IEVT+NFRGMN | |
114 | GO TO 9999 | |
115 | ENDIF | |
116 | C Begin multiple fragmentation loop | |
117 | 120 CONTINUE | |
118 | NPTCL=0 | |
119 | CALL FRGMNT | |
120 | IEVT=IEVT+1 | |
121 | IF(REJFRG()) GO TO 121 | |
122 | C Finish good event | |
123 | CALL MBIAS | |
124 | IFRG=IFRG+1 | |
125 | IF(IFRG.GT.NFRGMN) IFRG=1 | |
126 | IF(IFRG.EQ.1) THEN | |
127 | IEVOL=IEVOL+1 | |
128 | IF(IEVOL.GT.NEVOLV) IEVOL=1 | |
129 | ENDIF | |
130 | GOTO 9999 | |
131 | C Fragmentation failed - increment counter and loop | |
132 | 121 IFRG=IFRG+1 | |
133 | IF(IFRG.GT.NFRGMN) THEN | |
134 | IFRG=1 | |
135 | ELSE | |
136 | GO TO 120 | |
137 | ENDIF | |
138 | C End of multiple fragmentation loop | |
139 | C Evolution failed - increment counter and loop | |
140 | 111 IEVOL=IEVOL+1 | |
141 | IF(IEVOL.GT.NEVOLV) THEN | |
142 | IEVOL=1 | |
143 | IFRG=1 | |
144 | GO TO 100 | |
145 | ELSE | |
146 | GO TO 110 | |
147 | ENDIF | |
148 | C | |
149 | C E+E- events | |
150 | C | |
151 | ELSE IF(KEYS(2)) THEN | |
152 | IEVT=IEVT+1 | |
153 | CALL RANFMT | |
154 | CALL ELCTRN | |
155 | IF(.NOT.NOEVOL) THEN | |
156 | CALL EVOLVE | |
157 | IF(.NOT.NOHADR) CALL FRGMNT | |
158 | ENDIF | |
159 | C | |
160 | C MINBIAS events | |
161 | C | |
162 | ELSE IF(KEYS(4)) THEN | |
163 | IEVT=IEVT+1 | |
164 | CALL RANFMT | |
165 | NPTCL=0 | |
166 | IF(.NOT.(NOEVOL.OR.NOHADR)) CALL MBIAS | |
167 | C | |
168 | C SUPERSYM events | |
169 | C | |
170 | ELSE IF(KEYS(5)) THEN | |
171 | IEVT=IEVT+1 | |
172 | CALL RANFMT | |
173 | CALL TWOJET | |
174 | IF(.NOT.NOEVOL) THEN | |
175 | CALL EVOLVE | |
176 | IF(NJSET.LT.0) GO TO 9999 | |
177 | IF(.NOT.NOHADR) THEN | |
178 | CALL FRGMNT | |
179 | CALL MBIAS | |
180 | ENDIF | |
181 | ENDIF | |
182 | C | |
183 | C WPAIR events | |
184 | C | |
185 | ELSE IF(KEYS(6)) THEN | |
186 | IEVT=IEVT+1 | |
187 | CALL RANFMT | |
188 | CALL TWOJET | |
189 | CALL WPAIR | |
190 | C | |
191 | IF(.NOT.NOEVOL) THEN | |
192 | CALL EVOLVE | |
193 | IF(NJSET.LT.0) GO TO 9999 | |
194 | IF(.NOT.NOHADR) THEN | |
195 | CALL FRGMNT | |
196 | CALL MBIAS | |
197 | ENDIF | |
198 | ENDIF | |
199 | C | |
200 | C HIGGS events | |
201 | C | |
202 | ELSE IF(KEYS(7)) THEN | |
203 | IEVT=IEVT+1 | |
204 | CALL RANFMT | |
205 | CALL DRLLYN | |
206 | CALL HIGGS | |
207 | IF(.NOT.NOEVOL) THEN | |
208 | CALL EVOLVE | |
209 | IF(NJSET.LT.0) GOTO 9999 | |
210 | IF(.NOT.NOHADR) THEN | |
211 | CALL FRGMNT | |
212 | CALL MBIAS | |
213 | ENDIF | |
214 | ENDIF | |
215 | C | |
216 | C PHOTON events | |
217 | C | |
218 | ELSEIF(KEYS(8)) THEN | |
219 | IEVT=IEVT+1 | |
220 | CALL RANFMT | |
221 | CALL TWOJET | |
222 | IF(.NOT.NOEVOL) THEN | |
223 | CALL EVOLVE | |
224 | IF(NJSET.LT.0) GOTO 9999 | |
225 | IF(.NOT.NOHADR) THEN | |
226 | CALL FRGMNT | |
227 | CALL MBIAS | |
228 | ENDIF | |
229 | ENDIF | |
230 | C | |
231 | C TCOLOR events, e.g. techni-rho | |
232 | C | |
233 | ELSEIF(KEYS(9)) THEN | |
234 | IEVT=IEVT+1 | |
235 | CALL RANFMT | |
236 | CALL DRLLYN | |
237 | CALL HIGGS | |
238 | IF(.NOT.NOEVOL) THEN | |
239 | CALL EVOLVE | |
240 | IF(NJSET.LT.0) GOTO 9999 | |
241 | IF(.NOT.NOHADR) THEN | |
242 | CALL FRGMNT | |
243 | CALL MBIAS | |
244 | ENDIF | |
245 | ENDIF | |
246 | C | |
247 | C WHIGGS events | |
248 | C | |
249 | ELSE IF(KEYS(10)) THEN | |
250 | IEVT=IEVT+1 | |
251 | CALL RANFMT | |
252 | CALL TWOJET | |
253 | CALL WHIGGS | |
254 | C | |
255 | IF(.NOT.NOEVOL) THEN | |
256 | CALL EVOLVE | |
257 | IF(NJSET.LT.0) GO TO 9999 | |
258 | IF(.NOT.NOHADR) THEN | |
259 | CALL FRGMNT | |
260 | CALL MBIAS | |
261 | ENDIF | |
262 | ENDIF | |
263 | C | |
264 | C EXTRADIM events | |
265 | C | |
266 | ELSE IF(KEYS(11)) THEN | |
267 | IEVT=IEVT+1 | |
268 | CALL RANFMT | |
269 | CALL DRLLYN | |
270 | C | |
271 | IF(.NOT.NOEVOL) THEN | |
272 | CALL EVOLVE | |
273 | IF(NJSET.LT.0) GO TO 9999 | |
274 | IF(.NOT.NOHADR) THEN | |
275 | CALL FRGMNT | |
276 | CALL MBIAS | |
277 | ENDIF | |
278 | ENDIF | |
279 | C | |
280 | C ZJJ events | |
281 | C | |
282 | ELSEIF(KEYS(12)) THEN | |
283 | IEVT=IEVT+1 | |
284 | CALL RANFMT | |
285 | CALL ZJJ | |
286 | C | |
287 | IF(.NOT.NOEVOL) THEN | |
288 | CALL EVOLVE | |
289 | IF(NJSET.LT.0) GO TO 9999 | |
290 | IF(.NOT.NOHADR) THEN | |
291 | CALL FRGMNT | |
292 | CALL MBIAS | |
293 | ENDIF | |
294 | ENDIF | |
295 | ENDIF | |
296 | C | |
297 | C Event complete | |
298 | C | |
299 | 9999 IEVGEN=IEVGEN+1 | |
300 | IF(NJSET.LT.0) OK=.FALSE. | |
301 | IF(IEVT.GT.NLIMIT) THEN | |
302 | OK=.FALSE. | |
303 | DONE=.TRUE. | |
304 | ELSEIF(IEVT.EQ.NLIMIT) THEN | |
305 | DONE=.TRUE. | |
306 | ENDIF | |
307 | IF(OK) THEN | |
308 | CALL PRTEVT(I) | |
309 | CALL GETTOT(.FALSE.) | |
310 | ENDIF | |
311 | RETURN | |
312 | END |