Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / pymaxi_hijing.F
1 * $Id$
2     
3 C*********************************************************************  
4     
5       SUBROUTINE PYMAXI_HIJING 
6     
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"
20       CHARACTER CVAR(4)*4   
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),    
23      &SIGSSM(3) 
24       DATA CVAR/'tau ','tau''','y*  ','cth '/   
25     
26 C...Select subprocess to study: skip cases not applicable.  
27       VINT(143)=1.  
28       VINT(144)=1.  
29       XSEC(0,1)=0.  
30       DO 350 ISUB=1,200 
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    
34         GOTO 340    
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   
41       ELSE  
42         IF(MSUB(ISUB).NE.1) GOTO 350    
43       ENDIF 
44       MINT(1)=ISUB  
45       ISTSB=ISET(ISUB)  
46       IF(ISUB.EQ.96) ISTSB=2    
47       IF(MSTP(122).GE.2) WRITE(MSTU(11),1000) ISUB  
48     
49 C...Find resonances (explicit or implicit in cross-section).    
50       MINT(72)=0    
51       KFR1=0    
52       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3) THEN 
53         KFR1=KFPR(ISUB,1)   
54       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN    
55         KFR1=25 
56       ENDIF 
57       IF(KFR1.NE.0) THEN    
58         TAUR1=PMAS(KFR1,1)**2/VINT(2)   
59         GAMR1=PMAS(KFR1,1)*PMAS(KFR1,2)/VINT(2) 
60         MINT(72)=1  
61         MINT(73)=KFR1   
62         VINT(73)=TAUR1  
63         VINT(74)=GAMR1  
64       ENDIF 
65       IF(ISUB.EQ.141) THEN  
66         KFR2=23 
67         TAUR2=PMAS(KFR2,1)**2/VINT(2)   
68         GAMR2=PMAS(KFR2,1)*PMAS(KFR2,2)/VINT(2) 
69         MINT(72)=2  
70         MINT(74)=KFR2   
71         VINT(75)=TAUR2  
72         VINT(76)=GAMR2  
73       ENDIF 
74     
75 C...Find product masses and minimum pT of process.  
76       SQM3=0.   
77       SQM4=0.   
78       MINT(71)=0    
79       VINT(71)=CKIN(3)  
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) 
87       ENDIF 
88       VINT(63)=SQM3 
89       VINT(64)=SQM4 
90     
91 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).  
92       NPTS(1)=2+2*MINT(72)  
93       IF(MINT(43).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) NPTS(1)=1    
94       NPTS(2)=1 
95       IF(MINT(43).GE.2.AND.(ISTSB.EQ.3.OR.ISTSB.EQ.4)) NPTS(2)=2    
96       NPTS(3)=1 
97       IF(MINT(43).EQ.4) NPTS(3)=3   
98       NPTS(4)=1 
99       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5    
100       NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)  
101     
102 C...Reset coefficients of cross-section weighting.  
103       DO 100 J=1,20 
104   100 COEF(ISUB,J)=0.   
105       COEF(ISUB,1)=1.   
106       COEF(ISUB,7)=0.5  
107       COEF(ISUB,8)=0.5  
108       COEF(ISUB,10)=1.  
109       COEF(ISUB,15)=1.  
110       MCTH=0    
111       MTAUP=0   
112       CTH=0.    
113       TAUP=0.   
114       SIGSAM=0. 
115     
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)    
119       NACC=0    
120       DO 120 ITRY=1,NTRY    
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) 
125       ENDIF 
126       IF((ISTSB.EQ.3.OR.ISTSB.EQ.4).AND.MOD(ITRY-1,NPTS(3)*NPTS(4)).    
127      &EQ.0) THEN    
128         MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2)) 
129         CALL PYKMAP_HIJING(4,MTAUP,0.5)    
130       ENDIF 
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)  
136       ENDIF 
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) 
140       ENDIF 
141       IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2) 
142     
143 C...Calculate and store cross-section.  
144       MINT(51)=0    
145       CALL PYKLIM_HIJING(0)    
146       IF(MINT(51).EQ.1) GOTO 120    
147       NACC=NACC+1   
148       MVARPT(NACC,1)=MTAU   
149       MVARPT(NACC,2)=MTAUP  
150       MVARPT(NACC,3)=MYST   
151       MVARPT(NACC,4)=MCTH   
152       DO 110 J=1,30 
153   110 VINTPT(NACC,J)=VINT(10+J) 
154       CALL PYSIGH_HIJING(NCHN,SIGS)    
155       SIGSPT(NACC)=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  
159   120 CONTINUE  
160       IF(SIGSAM.EQ.0.) THEN 
161         WRITE(MSTU(11),1200) ISUB   
162         STOP    
163       ENDIF 
164     
165 C...Calculate integrals in tau and y* over maximal phase space limits.  
166       TAUMIN=VINT(11)   
167       TAUMAX=VINT(31)   
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))/  
173      &  GAMR1   
174       ENDIF 
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))/  
178      &  GAMR2   
179       ENDIF 
180       YSTMIN=0.5*LOG(TAUMIN)    
181       YSTMAX=-YSTMIN    
182       AYST0=YSTMAX-YSTMIN   
183       AYST1=0.5*(YSTMAX-YSTMIN)**2  
184       AYST3=2.*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))    
185     
186 C...Reset. Sum up cross-sections in points calculated.  
187       DO 230 IVAR=1,4   
188       IF(NPTS(IVAR).EQ.1) GOTO 230  
189       IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 230 
190       NBIN=NPTS(IVAR)   
191       DO 130 J1=1,NBIN  
192       NAREL(J1)=0   
193       WTREL(J1)=0.  
194       COEFU(J1)=0.  
195       DO 130 J2=1,NBIN  
196   130 WTMAT(J1,J2)=0.   
197       DO 140 IACC=1,NACC    
198       IBIN=MVARPT(IACC,IVAR)    
199       NAREL(IBIN)=NAREL(IBIN)+1 
200       WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)  
201     
202 C...Sum up tau cross-section pieces in points used. 
203       IF(IVAR.EQ.1) THEN    
204         TAU=VINTPT(IACC,11) 
205         WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.  
206         WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU   
207         IF(NBIN.GE.3) THEN  
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) 
211         ENDIF   
212         IF(NBIN.GE.5) THEN  
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) 
216         ENDIF   
217     
218 C...Sum up tau' cross-section pieces in points used.    
219       ELSEIF(IVAR.EQ.2) THEN    
220         TAU=VINTPT(IACC,11) 
221         TAUP=VINTPT(IACC,16)    
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/   
228      &  TAUP    
229     
230 C...Sum up y* and cos(theta-hat) cross-section pieces in points used.   
231       ELSEIF(IVAR.EQ.3) THEN    
232         YST=VINTPT(IACC,12) 
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) 
236       ELSE  
237         RM34=2.*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2  
238         RSQM=1.+RM34    
239         CTHMAX=SQRT(1.-4.*VINT(71)**2/(TAUMAX*VINT(2))) 
240         CTHMIN=-CTHMAX  
241         IF(CTHMAX.GT.0.9999) RM34=MAX(RM34,2.*VINT(71)**2/  
242      &  (TAUMAX*VINT(2)))   
243         ACTH1=CTHMAX-CTHMIN 
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) 
248         CTH=VINTPT(IACC,13) 
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 
254       ENDIF 
255   140 CONTINUE  
256     
257 C...Check that equation system solvable; else trivial way out.  
258       IF(MSTP(122).GE.2) WRITE(MSTU(11),1300) CVAR(IVAR)    
259       MSOLV=1   
260       DO 150 IBIN=1,NBIN    
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  
264       IF(MSOLV.EQ.0) THEN   
265         DO 160 IBIN=1,NBIN  
266   160   COEFU(IBIN)=1.  
267     
268 C...Solve to find relative importance of cross-section pieces.  
269       ELSE  
270         DO 170 IRED=1,NBIN-1    
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)    
280       ENDIF 
281     
282 C...Normalize coefficients, with piece shared democratically.   
283       COEFSU=0. 
284       DO 200 IBIN=1,NBIN    
285       COEFU(IBIN)=MAX(0.,COEFU(IBIN))   
286   200 COEFSU=COEFSU+COEFU(IBIN) 
287       IF(IVAR.EQ.1) IOFF=0  
288       IF(IVAR.EQ.2) IOFF=14 
289       IF(IVAR.EQ.3) IOFF=6  
290       IF(IVAR.EQ.4) IOFF=9  
291       IF(COEFSU.GT.0.) THEN 
292         DO 210 IBIN=1,NBIN  
293   210   COEF(ISUB,IOFF+IBIN)=PARP(121)/NBIN+(1.-PARP(121))*COEFU(IBIN)/ 
294      &  COEFSU  
295       ELSE  
296         DO 220 IBIN=1,NBIN  
297   220   COEF(ISUB,IOFF+IBIN)=1./NBIN    
298       ENDIF 
299       IF(MSTP(122).GE.2) WRITE(MSTU(11),1500) CVAR(IVAR),   
300      &(COEF(ISUB,IOFF+IBIN),IBIN=1,NBIN)    
301   230 CONTINUE  
302     
303 C...Find two most promising maxima among points previously determined.  
304       DO 240 J=1,4  
305       IACCMX(J)=0   
306   240 SIGSMX(J)=0.  
307       NMAX=0    
308       DO 290 IACC=1,NACC    
309       DO 250 J=1,30 
310   250 VINT(10+J)=VINTPT(IACC,J) 
311       CALL PYSIGH_HIJING(NCHN,SIGS)    
312       IEQ=0 
313       DO 260 IMV=1,NMAX 
314   260 IF(ABS(SIGS-SIGSMX(IMV)).LT.1E-4*(SIGS+SIGSMX(IMV))) IEQ=IMV  
315       IF(IEQ.EQ.0) THEN 
316         DO 270 IMV=NMAX,1,-1    
317         IIN=IMV+1   
318         IF(SIGS.LE.SIGSMX(IMV)) GOTO 280    
319         IACCMX(IMV+1)=IACCMX(IMV)   
320   270   SIGSMX(IMV+1)=SIGSMX(IMV)   
321         IIN=1   
322   280   IACCMX(IIN)=IACC    
323         SIGSMX(IIN)=SIGS    
324         IF(NMAX.LE.1) NMAX=NMAX+1   
325       ENDIF 
326   290 CONTINUE  
327     
328 C...Read out starting position for search.  
329       IF(MSTP(122).GE.2) WRITE(MSTU(11),1600)   
330       SIGSAM=SIGSMX(1)  
331       DO 330 IMAX=1,NMAX    
332       IACC=IACCMX(IMAX) 
333       MTAU=MVARPT(IACC,1)   
334       MTAUP=MVARPT(IACC,2)  
335       MYST=MVARPT(IACC,3)   
336       MCTH=MVARPT(IACC,4)   
337       VTAU=0.5  
338       VYST=0.5  
339       VCTH=0.5  
340       VTAUP=0.5 
341     
342 C...Starting point and step size in parameter space.    
343       DO 320 IRPT=1,2   
344       DO 310 IVAR=1,4   
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  
358       IMOV0=1   
359       IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0   
360       DO 300 IMOV=IMOV0,8   
361     
362 C...Define new point in parameter space.    
363       IF(IMOV.EQ.0) THEN    
364         INEW=2  
365         VNEW=VVAR   
366       ELSEIF(IMOV.EQ.1) THEN    
367         INEW=3  
368         VNEW=VVAR+VDEL  
369       ELSEIF(IMOV.EQ.2) THEN    
370         INEW=1  
371         VNEW=VVAR-VDEL  
372       ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND. 
373      &VVAR+2.*VDEL.LT.1.-VMAR) THEN 
374         VVAR=VVAR+VDEL  
375         SIGSSM(1)=SIGSSM(2) 
376         SIGSSM(2)=SIGSSM(3) 
377         INEW=3  
378         VNEW=VVAR+VDEL  
379       ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND. 
380      &VVAR-2.*VDEL.GT.VMAR) THEN    
381         VVAR=VVAR-VDEL  
382         SIGSSM(3)=SIGSSM(2) 
383         SIGSSM(2)=SIGSSM(1) 
384         INEW=1  
385         VNEW=VVAR-VDEL  
386       ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN   
387         VDEL=0.5*VDEL   
388         VVAR=VVAR+VDEL  
389         SIGSSM(1)=SIGSSM(2) 
390         INEW=2  
391         VNEW=VVAR   
392       ELSE  
393         VDEL=0.5*VDEL   
394         VVAR=VVAR-VDEL  
395         SIGSSM(3)=SIGSSM(2) 
396         INEW=2  
397         VNEW=VVAR   
398       ENDIF 
399     
400 C...Convert to relevant variables and find derived new limits.  
401       IF(IVAR.EQ.1) THEN    
402         VTAU=VNEW   
403         CALL PYKMAP_HIJING(1,MTAU,VTAU)    
404         IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) CALL PYKLIM_HIJING(4) 
405       ENDIF 
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)  
409       ENDIF 
410       IF(IVAR.LE.2) CALL PYKLIM_HIJING(2)  
411       IF(IVAR.LE.3) THEN    
412         IF(IVAR.EQ.3) VYST=VNEW 
413         CALL PYKMAP_HIJING(2,MYST,VYST)    
414         CALL PYKLIM_HIJING(3)  
415       ENDIF 
416       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN 
417         IF(IVAR.EQ.4) VCTH=VNEW 
418         CALL PYKMAP_HIJING(3,MCTH,VCTH)    
419       ENDIF 
420       IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2) 
421     
422 C...Evaluate cross-section. Save new maximum. Final maximum.    
423       CALL PYSIGH_HIJING(NCHN,SIGS)    
424       SIGSSM(INEW)=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 
428   300 CONTINUE  
429   310 CONTINUE  
430   320 CONTINUE  
431       IF(IMAX.EQ.1) SIGS11=SIGSAM   
432   330 CONTINUE  
433       XSEC(ISUB,1)=1.05*SIGSAM  
434   340 IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)   
435   350 CONTINUE  
436     
437 C...Print summary table.    
438       IF(MSTP(122).GE.1) THEN   
439         WRITE(MSTU(11),1800)    
440         WRITE(MSTU(11),1900)    
441         DO 360 ISUB=1,200   
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)   
448   360   CONTINUE    
449         WRITE(MSTU(11),2100)    
450       ENDIF 
451     
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('='))   
472     
473       RETURN    
474       END