1 #include "isajet/pilot.h"
5 C STARTING FROM USER DATA FIND OUT WHICH PARAMETERS SHOULD
6 C BE FIXED AND WHICH LIMITS SHOULD BE SET
8 #include "isajet/itapes.inc"
9 #include "isajet/jetlim.inc"
10 #include "isajet/primar.inc"
11 #include "isajet/jetpar.inc"
12 #include "isajet/const.inc"
13 #include "isajet/dylim.inc"
14 #include "isajet/keys.inc"
15 #include "isajet/q1q2.inc"
21 LOGICAL LOGP,LOGPT,LOGYTH,LOGX,LOGPHI
22 LOGICAL LOGQM,LOGQT,LOGYW,LOGTHW,LOGPHW,LOGXW
23 LOGICAL LOGMIJ,LOGMGM,LOGMGY
25 DATA ZERO/.00001/,ONE/.99999/
27 C INVERSE HYPERBOLIC COSINE FUNCTION
28 ACOSH(X)=ALOG(X+SQRT(X**2-1.0))
29 C INVERSE HYPERBOLIC SINE FUNCTION
30 ASINH(X)=ALOG(X+SQRT(X**2+1.0))
32 C INITIALIZE CONSTANTS
39 IF(BLIMS(I).GT.UNDEF) SETLMJ(I)=.FALSE.
43 IF(BLIM1(I).GT.UNDEF) SETLMQ(I)=.FALSE.
46 C SET STANDARD DRELL-YAN IF FIXED QTW=0.
48 IF(QTMIN.EQ.0..AND.QTMAX.LT.UNDEF) THEN
53 ELSEIF(KEYS(7).OR.KEYS(9)) THEN
79 C CHECK THAT PARAMETER RANGES MAKE SENSE
82 IF(.NOT.LOGP(IERR)) IFATAL=IFATAL+1
84 IF(.NOT.LOGPT(IERR)) IFATAL=IFATAL+1
85 C DO LOGIC FOR THETA AND YJ(RAPIDITY)
86 IF(.NOT.LOGYTH(IERR)) IFATAL=IFATAL+1
87 C DO LOGIC FOR XJ(FEYNMAN X)
88 C XJ LIMITS DO NOT REDEFINE PT LIMITS
89 IF(.NOT.LOGX(IERR)) IFATAL=IFATAL+1
91 C NOTE THAT PHI INTERVAL IS DEFINED BY PHIMAX-PHIMIN
92 IF(.NOT.LOGPHI(IERR,DELPH)) IFATAL=IFATAL+1
94 C DO LOGIC FOR MADGRAPH IF APPLICABLE
96 IF(.NOT.LOGMGM(IERR)) IFATAL=IFATAL+1
97 IF(.NOT.LOGMGY(IERR)) IFATAL=IFATAL+1
98 IF(.NOT.LOGMIJ(IERR)) IFATAL=IFATAL+1
101 C SET DEFAULT PT LIMITS IF NONE WERE SET
102 IF((KEYS(1).OR.KEYS(5).OR.KEYS(6).OR.KEYS(10)).AND.
103 $(PTMAX(1).GT..99*HALFE).AND.(PTMAX(2).GT..99*HALFE)) THEN
108 CALL LOGERR(0,1,IERR)
111 C CHECK Y LIMITS WITH FINAL PT LIMITS.
112 IF(KEYS(1).OR.KEYS(5).OR.KEYS(6).OR.KEYS(10)) THEN
113 YMXPT=ALOG(ECM/PTMIN(1))
115 YJMAX(I)=AMIN1(YJMAX(I),YMXPT)
116 11 YJMIN(I)=AMAX1(YJMIN(I),-YMXPT)
119 C DO LOGIC FOR DRELL YAN VARIABLES
120 IF(KEYS(3).OR.KEYS(7).OR.KEYS(9).OR.KEYS(11)) THEN
122 IF(.NOT.LOGQM(IERR)) IFATAL=IFATAL+1
124 IF(.NOT.LOGQT(IERR)) IFATAL=IFATAL+1
126 IF(.NOT.LOGYW(IERR)) IFATAL=IFATAL+1
128 IF(.NOT.LOGTHW(IERR)) IFATAL=IFATAL+1
130 C NOTE THAT PHW INTERVAL DEFINED BY PHWMAX-PHWMIN
131 IF(.NOT.LOGPHW(IERR,DELPH)) IFATAL=IFATAL+1
133 IF(.NOT.LOGXW(IERR)) IFATAL=IFATAL+1
137 C CHECK FOR INCONSISTENCIES
141 IF(SMAX.LT.SMIN) SMIN=SMAX
143 IF(PT1.GT.PTMIN(I)) PTMIN(I)=PT1
145 IF(THMAX(I).LT.ONE*HALFPI) SMAX=SIN(ONE*THMAX(I))
146 IF(THMIN(I).GT.ONE*HALFPI) SMAX=SIN(ONE*THMIN(I))
148 IF(PT1.LT.ONE*PTMAX(I)) PTMAX(I)=PT1
149 IF(PTMAX(I).LT.ONE*PTMIN(I)) CALL LOGERR(2,I,IFATAL)
150 IF(PMAX(I).LT.ONE*PMIN(I)) CALL LOGERR(1,I,IFATAL)
151 IF(THMAX(I).LT.ONE*THMIN(I)) CALL LOGERR(3,I,IFATAL)
152 IF(XJMAX(I).LT.ONE*XJMIN(I)) CALL LOGERR(4,I,IFATAL)
153 IF(ABS(XJMAX(I)).GT.1.0+ZERO.OR.ABS(XJMIN(I)).GT.1.0+ZERO)
154 1 CALL LOGERR(4,I,IFATAL)
155 IF(THMIN(I).LT.-ZERO.OR.THMAX(I).GT.PI+ZERO)
156 $CALL LOGERR(6,I,IFATAL)
159 X1=PMAX(I)*COS(THMIN(I))/HALFE
160 X2=PMIN(I)*COS(THMAX(I))/HALFE
161 X3=PMAX(I)*COS(THMIN(I))/HALFE
163 IF(X1.EQ.X2) XJ(I)=X1
164 IF(XJ(I).LT.ONE*X2.OR.XJ(I).GT.X1/ONE) CALL LOGERR(7,I,IFATAL)
169 C CHECK THAT PARAMETERS FOR DRELL YAN ARE CONSISTENT
174 COMB(1)=COMB(1).OR.FIXP(I).OR.FIXPT(I).OR.FIXYJ(I).OR.FIXPHI(I)
177 IF(COMB(1)) CALL LOGERR(114,1,IFATAL)
178 COMB(1)=FIXQT.AND.FIXQM
179 COMB(2)=FIXQT.AND.FIXYW
180 COMB(3)=FIXQM.AND.FIXYW
181 COMB(4)=COMB(1).AND.FIXYW
182 COMB(5)=COMB(1).AND.FIXXW
183 COMB(6)=COMB(2).AND.FIXXW
184 COMB(7)=COMB(3).AND.FIXXW
185 IF(COMB(4).AND.FIXXW) CALL LOGERR(115,1,IFATAL)
186 IF(COMB(4)) FIXXW=.TRUE.
190 XW=SQRT(QTW**2+QMW**2)*SINH(YW)/HALFE
191 IF(XW.LT.XWMIN-ZERO.OR.XW.GT.XWMAX+ZERO)
192 $ CALL LOGERR(101,1,IFATAL)
199 YW=ASINH(HALFE*XW/SQRT(QTW**2+QMW**2))
200 IF(YW.LT.YWMIN-ZERO.OR.YW.GT.YWMAX+ZERO)
201 $CALL LOGERR(102,1,IFATAL)
208 QMW2=((XW*HALFE)/SINH(YW))**2-QTW**2
211 IF(QMW.LT.ONE*QMIN.OR.QMW.GT.QMAX/ONE)
212 $CALL LOGERR(103,1,IFATAL)
214 CALL LOGERR(104,1,IFATAL)
218 IF(COMB(7).AND.(YW.NE.0)) THEN
221 QTW2=((XW*HALFE)/SINH(YW))**2-QMW**2
225 IF(QTW.LT.ONE*QTMIN.OR.QTW.GT.QTMAX/ONE)
226 $CALL LOGERR(105,1,IFATAL)
228 CALL LOGERR(106,1,IFATAL)
231 IF(QTMIN.GT.QTMAX/ONE) CALL LOGERR(107,1,IFATAL)
232 IF(QMIN.GT.QMAX/ONE) CALL LOGERR(108,1,IFATAL)
233 IF(THWMIN.GT.THWMAX/ONE) CALL LOGERR(109,1,IFATAL)
234 IF(PHWMIN.GT.PHWMAX/ONE) CALL LOGERR(110,1,IFATAL)
235 IF(XWMIN.GT.XWMAX/ONE) CALL LOGERR(111,1,IFATAL)
236 IF(YWMIN.GT.YWMAX+ZERO) CALL LOGERR(112,1,IFATAL)
237 IF(ABS(XWMIN).GT.1.0+ZERO.OR.ABS(XWMAX).GT.1.0+ZERO)
238 1 CALL LOGERR(111,1,IFATAL)
239 IF(THWMIN.LT.-ZERO.OR.THWMAX.GT.PI+ZERO)
240 $CALL LOGERR(109,1,IFATAL)
243 C SPECIAL LOGIC FOR E+E- EVENTS
246 THLOW=AMAX1(THMIN(1),PI-THMAX(2))
247 THHIGH=AMAX1(THMAX(1),PI-THMIN(2))
248 IF(THHIGH-THLOW.LT.ZERO.AND..NOT.(FIXYJ(1).OR.FIXYJ(2))) THEN
249 CALL LOGERR(116,1,IFATAL)
252 FIXYJ(I)=FIXYJ(1).OR.FIXYJ(2)
253 FIXXJ(I)=FIXXJ(1).OR.FIXXJ(2)
254 FIXPT(I)=FIXPT(1).OR.FIXPT(2)
257 IF(FIXYJ(I)) THMAX(I)=THMIN(I)
258 XJMIN(I)=COS(THMAX(I))
259 XJMAX(I)=COS(THMIN(I))
260 PTMIN(I)=HALFE*AMIN1(SIN(THMIN(I)),SIN(THMAX(I)))
261 IF(ABS(XJMAX(I)).LT.1.) YJMAX(I)=
262 1 .5*ALOG((1.+XJMAX(I))/(1.-XJMAX(I)))
263 IF(ABS(XJMIN(I)).LT.1.) YJMIN(I)=
264 1 .5*ALOG((1.+XJMIN(I))/(1.-XJMIN(I)))
271 WRITE(ITLIS,1020) IFATAL
272 1020 FORMAT(////10X,I10,' FATAL ERRORS, JOB TERMINATED')