]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/isaevt.F
Added the magnetic field as a static member of the AliL3Transform class,
[u/mrichter/AliRoot.git] / ISAJET / code / isaevt.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE ISAEVT(I,OK,DONE)
3C----------------------------------------------------------------------
4C-
5C- Purpose and Methods :
6C-
7C- Normal operation:
8C- Generate one ISAJET event and return.
9C-
10C- "ISALEP" generation:
11C- Generate a TWOJET or DRELLYAN hard scattering. Then make NEVOLVE
12C- evolutions and NHADRON fragmentations, rejecting events which
13C- fail the desired cuts using logical functions
14C- REJJET() tests the QCD evolution stage, e.g. by requiring
15C- a heavy quark.
16C- REJFRG() tests the fragmentation stage, e.g. by requiring
17C- a high-pt lepton.
18C- These functions default to .FALSE.; i.e. they do not reject any
19C- events. Note that one hard scattering can give more than one
20C- event. You must choose NEVOLVE and NHADRON carefully.
21C- IEVT = event number. This is incremented NEVOLVE * NHADRON
22C- times for each hard scattering; i.e. it counts the
23C- number of potential events.
24C- IEVGEN = counter for generated events.
25C- NEVENT = maximum value of hard scatterings. Hence the limit
26C- for IEVT is NEVENT * NEVOLVE * NHADRON.
27C- The cross section SIGF contains an extra factor of
28C- 1 / (NEVOLVE * NHADRON)
29C- to produce the correct final cross section using the weight
30C- SIGF / NEVENT
31C-
32C- Input:
33C- I = number used to control printout
34C- Output:
35C- OK = logical flag for good event.
36C- DONE = logical flag for job completion.
37C-
38C- Created 3-FEB-1988 Serban D. Protopopescu
39C- Updated 17-APR-1990 Serban D. Protopopescu (add ISALEP option)
40C- 22-JUL-1992: Move PRTEVT and GETTOT statements to end so they
41C- work for TWOJET and DRELLYAN with NOVOLVE. (FEP)
42C-
43C----------------------------------------------------------------------
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"
56C
57 LOGICAL REJJET,REJFRG,OK,DONE
58 INTEGER NPASS,I,NLIMIT
59C
60 NPASS=0
61 OK=.TRUE.
62 DONE=.FALSE.
63 NLIMIT=NEVENT*NEVOLV*NFRGMN
64C
65C Twojet or Drell-Yan events. The evolution and fragmentation
66C loops are done with GO TO statements so that we can exit
67C the loops with a good event and reenter them.
68C
69 IF(KEYS(1).OR.KEYS(3)) THEN
70100 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
751001 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
84C Generate appropriate hard scattering
85 IF(KEYS(1)) THEN
86 CALL TWOJET
87 ELSE
88 CALL DRLLYN
89 ENDIF
90 ENDIF
91C QCD evolution
92 IF(NOEVOL) THEN
93 IEVT=IEVT+NEVOLV*NFRGMN
94 GOTO 9999
95 ENDIF
96C Continue if in fragmentation loop
97 IF(IFRG.NE.1) GO TO 120
98C Begin multiple evolution loop
99110 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
116C Begin multiple fragmentation loop
117120 CONTINUE
118 NPTCL=0
119 CALL FRGMNT
120 IEVT=IEVT+1
121 IF(REJFRG()) GO TO 121
122C 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
131C Fragmentation failed - increment counter and loop
132121 IFRG=IFRG+1
133 IF(IFRG.GT.NFRGMN) THEN
134 IFRG=1
135 ELSE
136 GO TO 120
137 ENDIF
138C End of multiple fragmentation loop
139C Evolution failed - increment counter and loop
140111 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
148C
149C E+E- events
150C
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
159C
160C MINBIAS events
161C
162 ELSE IF(KEYS(4)) THEN
163 IEVT=IEVT+1
164 CALL RANFMT
165 NPTCL=0
166 IF(.NOT.(NOEVOL.OR.NOHADR)) CALL MBIAS
167C
168C SUPERSYM events
169C
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
182C
183C WPAIR events
184C
185 ELSE IF(KEYS(6)) THEN
186 IEVT=IEVT+1
187 CALL RANFMT
188 CALL TWOJET
189 CALL WPAIR
190C
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
199C
200C HIGGS events
201C
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
215C
216C PHOTON events
217C
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
230C
231C TCOLOR events, e.g. techni-rho
232C
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
246C
247C WHIGGS events
248C
249 ELSE IF(KEYS(10)) THEN
250 IEVT=IEVT+1
251 CALL RANFMT
252 CALL TWOJET
253 CALL WHIGGS
254C
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
263C
264C EXTRADIM events
265C
266 ELSE IF(KEYS(11)) THEN
267 IEVT=IEVT+1
268 CALL RANFMT
269 CALL DRLLYN
270C
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
279C
280C ZJJ events
281C
282 ELSEIF(KEYS(12)) THEN
283 IEVT=IEVT+1
284 CALL RANFMT
285 CALL ZJJ
286C
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
296C
297C Event complete
298C
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