3 C*********************************************************************
5 SUBROUTINE PYMAXI_HIJING
7 C...Finds optimal set of coefficients for kinematical variable selection
8 C...and the maximum of the part of the differential cross-section used
9 C...in the event weighting.
10 #include "ludat1_hijing.inc"
11 #include "ludat2_hijing.inc"
12 #include "pysubs_hijing.inc"
13 #include "pypars_hijing.inc"
14 #include "pyint1_hijing.inc"
15 #include "pyint2_hijing.inc"
16 #include "pyint3_hijing.inc"
17 #include "pyint4_hijing.inc"
18 #include "pyint5_hijing.inc"
19 #include "pyint6_hijing.inc"
21 DIMENSION NPTS(4),MVARPT(200,4),VINTPT(200,30),SIGSPT(200),
22 &NAREL(6),WTREL(6),WTMAT(6,6),COEFU(6),IACCMX(4),SIGSMX(4),
24 DATA CVAR/'tau ','tau''','y* ','cth '/
26 C...Select subprocess to study: skip cases not applicable.
31 IF(ISUB.GE.91.AND.ISUB.LE.95) THEN
32 XSEC(ISUB,1)=VINT(ISUB+11)
33 IF(MSUB(ISUB).NE.1) GOTO 350
35 ELSEIF(ISUB.EQ.96) THEN
36 IF(MINT(43).NE.4) GOTO 350
37 IF(MSUB(95).NE.1.AND.MSTP(81).LE.0.AND.MSTP(131).LE.0) GOTO 350
38 ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
39 &ISUB.EQ.53.OR.ISUB.EQ.68) THEN
40 IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 350
42 IF(MSUB(ISUB).NE.1) GOTO 350
46 IF(ISUB.EQ.96) ISTSB=2
47 IF(MSTP(122).GE.2) WRITE(MSTU(11),1000) ISUB
49 C...Find resonances (explicit or implicit in cross-section).
52 IF(ISTSB.EQ.1.OR.ISTSB.EQ.3) THEN
54 ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
58 TAUR1=PMAS(KFR1,1)**2/VINT(2)
59 GAMR1=PMAS(KFR1,1)*PMAS(KFR1,2)/VINT(2)
67 TAUR2=PMAS(KFR2,1)**2/VINT(2)
68 GAMR2=PMAS(KFR2,1)*PMAS(KFR2,2)/VINT(2)
75 C...Find product masses and minimum pT of process.
80 IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
81 IF(KFPR(ISUB,1).NE.0) SQM3=PMAS(KFPR(ISUB,1),1)**2
82 IF(KFPR(ISUB,2).NE.0) SQM4=PMAS(KFPR(ISUB,2),1)**2
83 IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
84 IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
85 IF(ISUB.EQ.96.AND.MSTP(82).LE.1) VINT(71)=PARP(81)
86 IF(ISUB.EQ.96.AND.MSTP(82).GE.2) VINT(71)=0.08*PARP(82)
91 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
93 IF(MINT(43).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) NPTS(1)=1
95 IF(MINT(43).GE.2.AND.(ISTSB.EQ.3.OR.ISTSB.EQ.4)) NPTS(2)=2
97 IF(MINT(43).EQ.4) NPTS(3)=3
99 IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
100 NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
102 C...Reset coefficients of cross-section weighting.
116 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
117 C...in grid of phase space points.
118 CALL PYKLIM_HIJING(1)
121 IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
122 MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
123 CALL PYKMAP_HIJING(1,MTAU,0.5)
124 IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) CALL PYKLIM_HIJING(4)
126 IF((ISTSB.EQ.3.OR.ISTSB.EQ.4).AND.MOD(ITRY-1,NPTS(3)*NPTS(4)).
128 MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
129 CALL PYKMAP_HIJING(4,MTAUP,0.5)
131 IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) CALL PYKLIM_HIJING(2)
132 IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
133 MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
134 CALL PYKMAP_HIJING(2,MYST,0.5)
135 CALL PYKLIM_HIJING(3)
137 IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
138 MCTH=1+MOD(ITRY-1,NPTS(4))
139 CALL PYKMAP_HIJING(3,MCTH,0.5)
141 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
143 C...Calculate and store cross-section.
145 CALL PYKLIM_HIJING(0)
146 IF(MINT(51).EQ.1) GOTO 120
153 110 VINTPT(NACC,J)=VINT(10+J)
154 CALL PYSIGH_HIJING(NCHN,SIGS)
156 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
157 IF(MSTP(122).GE.2) WRITE(MSTU(11),1100) MTAU,MTAUP,MYST,MCTH,
158 &VINT(21),VINT(22),VINT(23),VINT(26),SIGS
160 IF(SIGSAM.EQ.0.) THEN
161 WRITE(MSTU(11),1200) ISUB
165 C...Calculate integrals in tau and y* over maximal phase space limits.
168 ATAU1=LOG(TAUMAX/TAUMIN)
169 ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
170 IF(NPTS(1).GE.3) THEN
171 ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
172 ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
175 IF(NPTS(1).GE.5) THEN
176 ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
177 ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
180 YSTMIN=0.5*LOG(TAUMIN)
183 AYST1=0.5*(YSTMAX-YSTMIN)**2
184 AYST3=2.*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
186 C...Reset. Sum up cross-sections in points calculated.
188 IF(NPTS(IVAR).EQ.1) GOTO 230
189 IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 230
198 IBIN=MVARPT(IACC,IVAR)
199 NAREL(IBIN)=NAREL(IBIN)+1
200 WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
202 C...Sum up tau cross-section pieces in points used.
205 WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.
206 WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
208 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
209 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
210 & ((TAU-TAUR1)**2+GAMR1**2)
213 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
214 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
215 & ((TAU-TAUR2)**2+GAMR2**2)
218 C...Sum up tau' cross-section pieces in points used.
219 ELSEIF(IVAR.EQ.2) THEN
222 TAUPMN=VINTPT(IACC,6)
223 TAUPMX=VINTPT(IACC,26)
224 ATAUP1=LOG(TAUPMX/TAUPMN)
225 ATAUP2=((1.-TAU/TAUPMX)**4-(1.-TAU/TAUPMN)**4)/(4.*TAU)
226 WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.
227 WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*(1.-TAU/TAUP)**3/
230 C...Sum up y* and cos(theta-hat) cross-section pieces in points used.
231 ELSEIF(IVAR.EQ.3) THEN
233 WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
234 WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST1)*(YSTMAX-YST)
235 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
237 RM34=2.*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2
239 CTHMAX=SQRT(1.-4.*VINT(71)**2/(TAUMAX*VINT(2)))
241 IF(CTHMAX.GT.0.9999) RM34=MAX(RM34,2.*VINT(71)**2/
244 ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
245 ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
246 ACTH4=1./MAX(RM34,RSQM-CTHMAX)-1./MAX(RM34,RSQM-CTHMIN)
247 ACTH5=1./MAX(RM34,RSQM+CTHMIN)-1./MAX(RM34,RSQM+CTHMAX)
249 WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.
250 WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/MAX(RM34,RSQM-CTH)
251 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/MAX(RM34,RSQM+CTH)
252 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/MAX(RM34,RSQM-CTH)**2
253 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/MAX(RM34,RSQM+CTH)**2
257 C...Check that equation system solvable; else trivial way out.
258 IF(MSTP(122).GE.2) WRITE(MSTU(11),1300) CVAR(IVAR)
261 IF(MSTP(122).GE.2) WRITE(MSTU(11),1400) (WTMAT(IBIN,IRED),
262 &IRED=1,NBIN),WTREL(IBIN)
263 150 IF(NAREL(IBIN).EQ.0) MSOLV=0
268 C...Solve to find relative importance of cross-section pieces.
271 DO 170 IBIN=IRED+1,NBIN
272 RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
273 WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
274 DO 170 ICOE=IRED,NBIN
275 170 WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
276 DO 190 IRED=NBIN,1,-1
277 DO 180 ICOE=IRED+1,NBIN
278 180 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
279 190 COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
282 C...Normalize coefficients, with piece shared democratically.
285 COEFU(IBIN)=MAX(0.,COEFU(IBIN))
286 200 COEFSU=COEFSU+COEFU(IBIN)
288 IF(IVAR.EQ.2) IOFF=14
291 IF(COEFSU.GT.0.) THEN
293 210 COEF(ISUB,IOFF+IBIN)=PARP(121)/NBIN+(1.-PARP(121))*COEFU(IBIN)/
297 220 COEF(ISUB,IOFF+IBIN)=1./NBIN
299 IF(MSTP(122).GE.2) WRITE(MSTU(11),1500) CVAR(IVAR),
300 &(COEF(ISUB,IOFF+IBIN),IBIN=1,NBIN)
303 C...Find two most promising maxima among points previously determined.
310 250 VINT(10+J)=VINTPT(IACC,J)
311 CALL PYSIGH_HIJING(NCHN,SIGS)
314 260 IF(ABS(SIGS-SIGSMX(IMV)).LT.1E-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
318 IF(SIGS.LE.SIGSMX(IMV)) GOTO 280
319 IACCMX(IMV+1)=IACCMX(IMV)
320 270 SIGSMX(IMV+1)=SIGSMX(IMV)
324 IF(NMAX.LE.1) NMAX=NMAX+1
328 C...Read out starting position for search.
329 IF(MSTP(122).GE.2) WRITE(MSTU(11),1600)
342 C...Starting point and step size in parameter space.
345 IF(NPTS(IVAR).EQ.1) GOTO 310
346 IF(IVAR.EQ.1) VVAR=VTAU
347 IF(IVAR.EQ.2) VVAR=VTAUP
348 IF(IVAR.EQ.3) VVAR=VYST
349 IF(IVAR.EQ.4) VVAR=VCTH
350 IF(IVAR.EQ.1) MVAR=MTAU
351 IF(IVAR.EQ.2) MVAR=MTAUP
352 IF(IVAR.EQ.3) MVAR=MYST
353 IF(IVAR.EQ.4) MVAR=MCTH
354 IF(IRPT.EQ.1) VDEL=0.1
355 IF(IRPT.EQ.2) VDEL=MAX(0.01,MIN(0.05,VVAR-0.02,0.98-VVAR))
356 IF(IRPT.EQ.1) VMAR=0.02
357 IF(IRPT.EQ.2) VMAR=0.002
359 IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
362 C...Define new point in parameter space.
366 ELSEIF(IMOV.EQ.1) THEN
369 ELSEIF(IMOV.EQ.2) THEN
372 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
373 &VVAR+2.*VDEL.LT.1.-VMAR) THEN
379 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
380 &VVAR-2.*VDEL.GT.VMAR) THEN
386 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
400 C...Convert to relevant variables and find derived new limits.
403 CALL PYKMAP_HIJING(1,MTAU,VTAU)
404 IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) CALL PYKLIM_HIJING(4)
406 IF(IVAR.LE.2.AND.(ISTSB.EQ.3.OR.ISTSB.EQ.4)) THEN
407 IF(IVAR.EQ.2) VTAUP=VNEW
408 CALL PYKMAP_HIJING(4,MTAUP,VTAUP)
410 IF(IVAR.LE.2) CALL PYKLIM_HIJING(2)
412 IF(IVAR.EQ.3) VYST=VNEW
413 CALL PYKMAP_HIJING(2,MYST,VYST)
414 CALL PYKLIM_HIJING(3)
416 IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
417 IF(IVAR.EQ.4) VCTH=VNEW
418 CALL PYKMAP_HIJING(3,MCTH,VCTH)
420 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
422 C...Evaluate cross-section. Save new maximum. Final maximum.
423 CALL PYSIGH_HIJING(NCHN,SIGS)
425 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
426 IF(MSTP(122).GE.2) WRITE(MSTU(11),1700) IMAX,IVAR,MVAR,IMOV,
427 &VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
431 IF(IMAX.EQ.1) SIGS11=SIGSAM
433 XSEC(ISUB,1)=1.05*SIGSAM
434 340 IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
437 C...Print summary table.
438 IF(MSTP(122).GE.1) THEN
442 IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 360
443 IF(ISUB.EQ.96.AND.MINT(43).NE.4) GOTO 360
444 IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MSTP(81).LE.0) GOTO 360
445 IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.
446 & ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 360
447 WRITE(MSTU(11),2000) ISUB,PROC(ISUB),XSEC(ISUB,1)
452 C...Format statements for maximization results.
453 1000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
454 &'subprocess no',I4/1X,'Coefficient modes tau',10X,'y*',9X,
455 &'cth',9X,'tau''',7X,'sigma')
456 1100 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,E12.4)
457 1200 FORMAT(1X,'Error: requested subprocess ',I3,' has vanishing ',
458 &'cross-section.'/1X,'Execution stopped!')
459 1300 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
460 1400 FORMAT(1X,1P,7E11.3)
461 1500 FORMAT(1X,'Result for ',A4,':',6F9.4)
462 1600 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
463 &'MOD MOV VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
464 1700 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,E12.4)
465 1800 FORMAT(/1X,8('*'),1X,'PYMAXI_HIJING: summary of differential ',
466 &'cross-section maximum search',1X,8('*'))
467 1900 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I ISUB ',
468 &'Subprocess name',15X,'I Maximum value I'/11X,'I',38X,'I',
469 &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
470 2000 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,E12.4,3X,'I')
471 2100 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))