]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/nogood.F
First commit.
[u/mrichter/AliRoot.git] / ISAJET / code / nogood.F
1 #include "isajet/pilot.h"
2       LOGICAL FUNCTION NOGOOD(KK)
3 C
4 C          Insure proper distribution and check kinematics.
5 C          Select jet types.
6 C
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"
23 C
24       REAL RANF,SIGINV,SUM,TRY,BRANCH
25       INTEGER KK,I,II,K,IFL
26 C
27       NOGOOD=.TRUE.
28       GO TO (1,2,3,4,5,6),KK
29 C
30 C          TWOJET, SUPERSYM, WPAIR or PHOTON events
31 C
32 1     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
53 C          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)
59 110     II=II/IOPAK
60         DO 120 K=1,2
61         JETTYP(K)=MOD(II,IOPAK)
62 120     II=II/IOPAK
63         RETURN
64 100   CONTINUE
65       RETURN
66 C
67 C          DRELLYAN events--test of SIGDY
68 C
69 2     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()
87 C          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
94 200   CONTINUE
95 C          Unpack INOUT to find JETTYP and INITYP
96 210   IF(KEYS(3).OR.KEYS(11)) THEN
97         II=INOUT(I)
98         DO 220 K=1,2
99         INITYP(K)=MOD(II,IOPAK)
100 220     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)
108 230     II=II/IOPAK
109         DO 240 I=1,2
110         JETTYP(I)=MOD(II,IOPAK)
111 240     II=II/IOPAK
112       ENDIF
113       RETURN
114 C
115 C          DRELLYAN events--test of SIGDY2
116 C
117 3     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
136 C
137 C          DRELLYAN events--test of kinematics
138 C
139 4     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
145 400   CONTINUE
146       NOGOOD=.FALSE.
147 410   RETURN
148 C
149 5     CONTINUE
150 6     CONTINUE
151       RETURN
152 C
153       END