]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/nogood.F
Bug in V0A fixed (Guillermo)
[u/mrichter/AliRoot.git] / ISAJET / code / nogood.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 LOGICAL FUNCTION NOGOOD(KK)
3C
4C Insure proper distribution and check kinematics.
5C Select jet types.
6C
7#if defined(CERNLIB_IMPNONE)
8 IMPLICIT NONE
9#endif
10#include "isajet/itapes.inc"
11#include "isajet/keys.inc"
12#include "isajet/wcon.inc"
13#include "isajet/const.inc"
14#include "isajet/wsig.inc"
15#include "isajet/wgen.inc"
16#include "isajet/dylim.inc"
17#include "isajet/jetlim.inc"
18#include "isajet/jetpar.inc"
19#include "isajet/jetsig.inc"
20#include "isajet/ptpar.inc"
21#include "isajet/hcon.inc"
22#include "isajet/xmssm.inc"
23C
24 REAL RANF,SIGINV,SUM,TRY,BRANCH
25 INTEGER KK,I,II,K,IFL
26C
27 NOGOOD=.TRUE.
28 GO TO (1,2,3,4,5,6),KK
29C
30C TWOJET, SUPERSYM, WPAIR or PHOTON events
31C
321 CONTINUE
33 IF(KEYS(1)) THEN
34 CALL SIGQCD
35 ELSEIF(KEYS(5)) THEN
36 CALL SIGSSY
37 ELSEIF(KEYS(6)) THEN
38 CALL SIGWW
39 ELSEIF(KEYS(8)) THEN
40 CALL SIGGAM
41 ELSEIF(KEYS(10)) THEN
42 CALL SIGWH
43 ENDIF
44 IF(SIGMA.LE.0) RETURN
45 IF(SIGMAX*RANF().GT.SIGMA) RETURN
46 NOGOOD=.FALSE.
47 SIGINV=1./SIGMA
48 SUM=0.
49 TRY=RANF()
50 DO 100 I=1,NSIGS
51 SUM=SUM+SIGS(I)*SIGINV
52 IF(SUM.LT.TRY) GO TO 100
53C Find reaction
54 ISIGS=I
55 SIGEVT=SIGS(ISIGS)
56 II=INOUT(I)
57 DO 110 K=1,2
58 INITYP(K)=MOD(II,IOPAK)
59110 II=II/IOPAK
60 DO 120 K=1,2
61 JETTYP(K)=MOD(II,IOPAK)
62120 II=II/IOPAK
63 RETURN
64100 CONTINUE
65 RETURN
66C
67C DRELLYAN events--test of SIGDY
68C
692 CONTINUE
70 IF(KEYS(3)) THEN
71 CALL SIGDY
72 ELSEIF(KEYS(7).AND..NOT.GOMSSM) THEN
73 CALL SIGH
74 ELSEIF(KEYS(7).AND.GOMSSM) THEN
75 CALL SIGHSS
76 ELSEIF(KEYS(9)) THEN
77 CALL SIGTC
78 ELSEIF(KEYS(11)) THEN
79 CALL SIGKKG
80 ENDIF
81 IF(SIGMA.LE.0.) RETURN
82 IF(SIGSL(KSEL)*RANF().GT.SIGMA) RETURN
83 NOGOOD=.FALSE.
84 SIGINV=1./SIGMA
85 SUM=0.
86 TRY=RANF()
87C Find reaction.
88 DO 200 I=1,NSIGS
89 SUM=SUM+SIGS(I)*SIGINV
90 IF(SUM.LT.TRY) GO TO 200
91 ISIGS=I
92 SIGEVT=SIGS(ISIGS)
93 GO TO 210
94200 CONTINUE
95C Unpack INOUT to find JETTYP and INITYP
96210 IF(KEYS(3).OR.KEYS(11)) THEN
97 II=INOUT(I)
98 DO 220 K=1,2
99 INITYP(K)=MOD(II,IOPAK)
100220 II=II/IOPAK
101 JWTYP=MOD(II,IOPAK)
102 II=II/IOPAK
103 JETTYP(3)=MOD(II,IOPAK)
104 ELSEIF(KEYS(7).OR.KEYS(9)) THEN
105 II=INOUT(ISIGS)
106 DO 230 I=1,2
107 INITYP(I)=MOD(II,IOPAK)
108230 II=II/IOPAK
109 DO 240 I=1,2
110 JETTYP(I)=MOD(II,IOPAK)
111240 II=II/IOPAK
112 ENDIF
113 RETURN
114C
115C DRELLYAN events--test of SIGDY2
116C
1173 CONTINUE
118 IF(KEYS(3)) THEN
119 CALL SIGDY2
120 IFL=JETTYP(1)/2
121 BRANCH=(AQ(IFL,JWTYP)**2+BQ(IFL,JWTYP)**2)/COUT(JWTYP)
122 ELSEIF(KEYS(7).AND..NOT.GOMSSM) THEN
123 CALL SIGH2
124 BRANCH=1.
125 ELSEIF(KEYS(7).AND.GOMSSM) THEN
126 SIGLLQ=SIGMA/(4*PI)
127 NOGOOD=.FALSE.
128 RETURN
129 ELSEIF(KEYS(9)) THEN
130 CALL SIGTC2
131 BRANCH=1.
132 ENDIF
133 IF(SIGLLQ.GT.SIGS(ISIGS)*BRANCH*3.*RANF()/(4.*PI))
134 1NOGOOD=.FALSE.
135 RETURN
136C
137C DRELLYAN events--test of kinematics
138C
1394 CONTINUE
140 DO 400 I=1,2
141 IF(P(I).LT.PMIN(I).OR.P(I).GT.PMAX(I)) GO TO 410
142 IF(PT(I).LT.PTMIN(I).OR.PT(I).GT.PTMAX(I)) GO TO 410
143 IF(YJ(I).LT.YJMIN(I).OR.YJ(I).GT.YJMAX(I)) GO TO 410
144 IF(PHI(I).LT.PHIMIN(I).OR.PHI(I).GT.PHIMAX(I)) GO TO 410
145400 CONTINUE
146 NOGOOD=.FALSE.
147410 RETURN
148C
1495 CONTINUE
1506 CONTINUE
151 RETURN
152C
153 END