Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:21:12

0001  
0002 C*********************************************************************
0003  
0004 C...PYMAXI
0005 C...Finds optimal set of coefficients for kinematical variable selection
0006 C...and the maximum of the part of the differential cross-section used
0007 C...in the event weighting.
0008  
0009       SUBROUTINE PYMAXI
0010  
0011 C...Double precision and integer declarations.
0012       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0013       IMPLICIT INTEGER(I-N)
0014       INTEGER PYK,PYCHGE,PYCOMP
0015 C...Parameter statement to help give large particle numbers.
0016       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
0017      &KEXCIT=4000000,KDIMEN=5000000)
0018  
0019 C...User process initialization commonblock.
0020       INTEGER MAXPUP
0021       PARAMETER (MAXPUP=100)
0022       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
0023       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
0024       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
0025      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
0026      &LPRUP(MAXPUP)
0027       SAVE /HEPRUP/
0028  
0029 C...Commonblocks.
0030       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0031       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0032       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
0033       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
0034       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0035       COMMON/PYINT1/MINT(400),VINT(400)
0036       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
0037       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
0038       COMMON/PYINT4/MWID(500),WIDS(500,5)
0039       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
0040       COMMON/PYINT6/PROC(0:500)
0041       CHARACTER PROC*28
0042       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
0043       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
0044      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/
0045 C...Local arrays, character variables and data.
0046       CHARACTER CVAR(4)*4
0047       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
0048      &NAREL(7),WTREL(7),WTMAT(7,7),WTRELN(7),COEFU(7),COEFO(7),
0049      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2)
0050       DATA CVAR/'tau ','tau''','y*  ','cth '/
0051       DATA SIGSSM/3*0D0/
0052  
0053 C...Initial values and loop over subprocesses.
0054       NPOSI=0
0055       VINT(143)=1D0
0056       VINT(144)=1D0
0057       XSEC(0,1)=0D0
0058       DO 460 ISUB=1,500
0059         MINT(1)=ISUB
0060         MINT(51)=0
0061  
0062 C...Find maximum weight factors for photon flux.
0063         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
0064           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
0065         ENDIF
0066  
0067 C...Select subprocess to study: skip cases not applicable.
0068         IF(ISET(ISUB).EQ.11) THEN
0069           IF(MSUB(ISUB).NE.1) GOTO 460
0070 C...User process intialization: cross section model dependent.
0071           IF(IABS(IDWTUP).EQ.1) THEN
0072             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
0073      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
0074             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
0075           ELSE
0076             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
0077      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
0078      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
0079             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
0080      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
0081             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
0082           ENDIF
0083           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
0084      &    WTGAGA*XSEC(ISUB,1)
0085           NPOSI=NPOSI+1
0086           GOTO 450
0087         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
0088           CALL PYSIGH(NCHN,SIGS)
0089           XSEC(ISUB,1)=SIGS
0090           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
0091      &    WTGAGA*XSEC(ISUB,1)
0092           IF(MSUB(ISUB).NE.1) GOTO 460
0093           NPOSI=NPOSI+1
0094           GOTO 450
0095         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
0096           CALL PYSIGH(NCHN,SIGS)
0097           XSEC(ISUB,1)=SIGS
0098           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
0099      &    WTGAGA*XSEC(ISUB,1)
0100           IF(XSEC(ISUB,1).EQ.0D0) THEN
0101             MSUB(ISUB)=0
0102           ELSE
0103             NPOSI=NPOSI+1
0104           ENDIF
0105           GOTO 450
0106         ELSEIF(ISUB.EQ.96) THEN
0107           IF(MINT(50).EQ.0) GOTO 460
0108           IF(MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0.AND.MSTP(131).LE.0)
0109      &    GOTO 460
0110           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
0111         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
0112      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
0113           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
0114         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
0115           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
0116         ELSE
0117           IF(MSUB(ISUB).NE.1) GOTO 460
0118         ENDIF
0119         ISTSB=ISET(ISUB)
0120         IF(ISUB.EQ.96) ISTSB=2
0121         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
0122         MWTXS=0
0123         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
0124      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
0125  
0126 C...Find resonances (explicit or implicit in cross-section).
0127         MINT(72)=0
0128         KFR1=0
0129         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
0130           KFR1=KFPR(ISUB,1)
0131         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
0132      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
0133           KFR1=23
0134         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
0135      &    .OR.ISUB.EQ.177) THEN
0136           KFR1=24
0137         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
0138           KFR1=25
0139           IF(MSTP(46).EQ.5) THEN
0140             KFR1=89
0141             PMAS(89,1)=PARP(45)
0142             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
0143           ENDIF
0144         ELSEIF(ISUB.EQ.194) THEN
0145           KFR1=KTECHN+113
0146         ELSEIF(ISUB.EQ.195) THEN
0147           KFR1=KTECHN+213
0148         ELSEIF(ISUB.GE.361.AND.ISUB.LE.368) THEN
0149           KFR1=KTECHN+113
0150         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
0151           KFR1=KTECHN+213
0152         ENDIF
0153         CKMX=CKIN(2)
0154         IF(CKMX.LE.0D0) CKMX=VINT(1)
0155         KCR1=PYCOMP(KFR1)
0156         IF(KFR1.NE.0) THEN
0157           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
0158      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
0159         ENDIF
0160         IF(KFR1.NE.0) THEN
0161           TAUR1=PMAS(KCR1,1)**2/VINT(2)
0162           IF(KFR1.EQ.KTECHN+113) THEN
0163             CALL PYTECM(S1,S2)
0164             TAUR1=S1/VINT(2)
0165           ENDIF
0166           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
0167           MINT(72)=1
0168           MINT(73)=KFR1
0169           VINT(73)=TAUR1
0170           VINT(74)=GAMR1
0171         ENDIF
0172         KFR2=0
0173         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.(ISUB.GE.364.AND.ISUB.LE.368))
0174      $  THEN
0175           KFR2=23
0176           IF(ISUB.EQ.194) THEN
0177             KFR2=KTECHN+223
0178           ELSEIF(ISUB.GE.364.AND.ISUB.LE.368) THEN
0179             KFR2=KTECHN+223
0180           ENDIF
0181           KCR2=PYCOMP(KFR2)
0182           TAUR2=PMAS(KCR2,1)**2/VINT(2)
0183           IF(KFR2.EQ.KTECHN+223) THEN
0184             CALL PYTECM(S1,S2)
0185             TAUR2=S2/VINT(2)
0186           ENDIF
0187           GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
0188           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
0189      &    CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) KFR2=0
0190           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
0191             MINT(72)=2
0192             MINT(74)=KFR2
0193             VINT(75)=TAUR2
0194             VINT(76)=GAMR2
0195           ELSEIF(KFR2.NE.0) THEN
0196             KFR1=KFR2
0197             TAUR1=TAUR2
0198             GAMR1=GAMR2
0199             MINT(72)=1
0200             MINT(73)=KFR1
0201             VINT(73)=TAUR1
0202             VINT(74)=GAMR1
0203             KFR2=0
0204           ENDIF
0205         ENDIF
0206  
0207 C...Find product masses and minimum pT of process.
0208         SQM3=0D0
0209         SQM4=0D0
0210         MINT(71)=0
0211         VINT(71)=CKIN(3)
0212         VINT(80)=1D0
0213         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
0214           NBW=0
0215           DO 110 I=1,2
0216             PMMN(I)=0D0
0217             IF(KFPR(ISUB,I).EQ.0) THEN
0218             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
0219      &        PARP(41)) THEN
0220               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
0221               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
0222             ELSE
0223               NBW=NBW+1
0224 C...This prevents SUSY/t particles from becoming too light.
0225               KFLW=KFPR(ISUB,I)
0226               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
0227                 KCW=PYCOMP(KFLW)
0228                 PMMN(I)=PMAS(KCW,1)
0229                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
0230                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
0231                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
0232      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
0233                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
0234      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
0235                     PMMN(I)=MIN(PMMN(I),PMSUM)
0236                   ENDIF
0237   100           CONTINUE
0238               ELSEIF(KFLW.EQ.6) THEN
0239                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
0240               ENDIF
0241             ENDIF
0242   110     CONTINUE
0243           IF(NBW.GE.1) THEN
0244             CKIN41=CKIN(41)
0245             CKIN43=CKIN(43)
0246             CKIN(41)=MAX(PMMN(1),CKIN(41))
0247             CKIN(43)=MAX(PMMN(2),CKIN(43))
0248             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
0249             CKIN(41)=CKIN41
0250             CKIN(43)=CKIN43
0251             IF(MINT(51).EQ.1) THEN
0252               WRITE(MSTU(11),5100) ISUB
0253               MSUB(ISUB)=0
0254               GOTO 460
0255             ENDIF
0256             SQM3=PQM3**2
0257             SQM4=PQM4**2
0258           ENDIF
0259           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
0260           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
0261           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
0262             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
0263           ELSEIF(ISUB.EQ.96) THEN
0264             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
0265           ENDIF
0266         ENDIF
0267         VINT(63)=SQM3
0268         VINT(64)=SQM4
0269  
0270 C...Prepare for additional variable choices in 2 -> 3.
0271         IF(ISTSB.EQ.5) THEN
0272           VINT(201)=0D0
0273           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
0274           VINT(206)=VINT(201)
0275           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
0276           VINT(204)=PMAS(23,1)
0277           IF(ISUB.EQ.124.OR.ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351)
0278      &    VINT(204)=PMAS(24,1) 
0279           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
0280           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
0281      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
0282      &         VINT(204)=VINT(201)
0283           VINT(209)=VINT(204)
0284           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
0285         ENDIF
0286  
0287 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
0288         NPTS(1)=2+2*MINT(72)
0289         IF(MINT(47).EQ.1) THEN
0290           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
0291         ELSEIF(MINT(47).GE.5) THEN
0292           IF(ISTSB.LE.2.OR.ISTSB.GT.5) NPTS(1)=NPTS(1)+1
0293         ENDIF
0294         NPTS(2)=1
0295         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
0296           IF(MINT(47).GE.2) NPTS(2)=2
0297           IF(MINT(47).GE.5) NPTS(2)=3
0298         ENDIF
0299         NPTS(3)=1
0300         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
0301           NPTS(3)=3
0302           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
0303           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
0304         ENDIF
0305         NPTS(4)=1
0306         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
0307         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
0308  
0309 C...Reset coefficients of cross-section weighting.
0310         DO 120 J=1,20
0311           COEF(ISUB,J)=0D0
0312   120   CONTINUE
0313         COEF(ISUB,1)=1D0
0314         COEF(ISUB,8)=0.5D0
0315         COEF(ISUB,9)=0.5D0
0316         COEF(ISUB,13)=1D0
0317         COEF(ISUB,18)=1D0
0318         MCTH=0
0319         MTAUP=0
0320         METAUP=0
0321         VINT(23)=0D0
0322         VINT(26)=0D0
0323         SIGSAM=0D0
0324  
0325 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
0326 C...in grid of phase space points.
0327         CALL PYKLIM(1)
0328         METAU=MINT(51)
0329         NACC=0
0330         DO 150 ITRY=1,NTRY
0331           MINT(51)=0
0332           IF(METAU.EQ.1) GOTO 150
0333           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
0334             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
0335             IF(MTAU.GT.2+2*MINT(72)) MTAU=7
0336             RTAU=0.5D0
0337 C...Special case when both resonances have same mass,
0338 C...as is often the case in process 194.
0339             IF(MINT(72).EQ.2) THEN
0340               IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
0341      &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
0342                 IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
0343                   RTAU=0.4D0
0344                 ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
0345                   RTAU=0.6D0
0346                 ENDIF
0347               ENDIF
0348             ENDIF
0349             CALL PYKMAP(1,MTAU,RTAU)
0350             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
0351             METAUP=MINT(51)
0352           ENDIF
0353           IF(METAUP.EQ.1) GOTO 150
0354           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
0355      &    .EQ.0) THEN
0356             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
0357             CALL PYKMAP(4,MTAUP,0.5D0)
0358           ENDIF
0359           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
0360             CALL PYKLIM(2)
0361             MEYST=MINT(51)
0362           ENDIF
0363           IF(MEYST.EQ.1) GOTO 150
0364           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
0365             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
0366             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
0367             CALL PYKMAP(2,MYST,0.5D0)
0368             CALL PYKLIM(3)
0369             MECTH=MINT(51)
0370           ENDIF
0371           IF(MECTH.EQ.1) GOTO 150
0372           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
0373             MCTH=1+MOD(ITRY-1,NPTS(4))
0374             CALL PYKMAP(3,MCTH,0.5D0)
0375           ENDIF
0376           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
0377  
0378 C...Store position and limits.
0379           MINT(51)=0
0380           CALL PYKLIM(0)
0381           IF(MINT(51).EQ.1) GOTO 150
0382           NACC=NACC+1
0383           MVARPT(NACC,1)=MTAU
0384           MVARPT(NACC,2)=MTAUP
0385           MVARPT(NACC,3)=MYST
0386           MVARPT(NACC,4)=MCTH
0387           DO 130 J=1,30
0388             VINTPT(NACC,J)=VINT(10+J)
0389   130     CONTINUE
0390  
0391 C...Normal case: calculate cross-section.
0392           IF(ISTSB.NE.5) THEN
0393             CALL PYSIGH(NCHN,SIGS)
0394             IF(MWTXS.EQ.1) THEN
0395               CALL PYEVWT(WTXS)
0396               SIGS=WTXS*SIGS
0397             ENDIF
0398  
0399 C..2 -> 3: find highest value out of a number of tries.
0400           ELSE
0401             SIGS=0D0
0402             DO 140 IKIN3=1,MSTP(129)
0403               CALL PYKMAP(5,0,0D0)
0404               IF(MINT(51).EQ.1) GOTO 140
0405               CALL PYSIGH(NCHN,SIGTMP)
0406               IF(MWTXS.EQ.1) THEN
0407                 CALL PYEVWT(WTXS)
0408                 SIGTMP=WTXS*SIGTMP
0409               ENDIF
0410               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
0411   140       CONTINUE
0412           ENDIF
0413  
0414 C...Store cross-section.
0415           SIGSPT(NACC)=SIGS
0416           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
0417           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
0418      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
0419   150   CONTINUE
0420         IF(NACC.EQ.0) THEN
0421           WRITE(MSTU(11),5100) ISUB
0422           MSUB(ISUB)=0
0423           GOTO 460
0424         ELSEIF(SIGSAM.EQ.0D0) THEN
0425           WRITE(MSTU(11),5300) ISUB
0426           MSUB(ISUB)=0
0427           GOTO 460
0428         ENDIF
0429         IF(ISUB.NE.96) NPOSI=NPOSI+1
0430  
0431 C...Calculate integrals in tau over maximal phase space limits.
0432         TAUMIN=VINT(11)
0433         TAUMAX=VINT(31)
0434         ATAU1=LOG(TAUMAX/TAUMIN)
0435         IF(NPTS(1).GE.2) THEN
0436           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
0437         ENDIF
0438         IF(NPTS(1).GE.4) THEN
0439           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
0440           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
0441      &    GAMR1
0442         ENDIF
0443         IF(NPTS(1).GE.6) THEN
0444           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
0445           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
0446      &    GAMR2
0447         ENDIF
0448         IF(NPTS(1).GT.2+2*MINT(72)) THEN
0449           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
0450         ENDIF
0451  
0452 C...Reset. Sum up cross-sections in points calculated.
0453         DO 320 IVAR=1,4
0454           IF(NPTS(IVAR).EQ.1) GOTO 320
0455           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
0456           NBIN=NPTS(IVAR)
0457           DO 170 J1=1,NBIN
0458             NAREL(J1)=0
0459             WTREL(J1)=0D0
0460             COEFU(J1)=0D0
0461             DO 160 J2=1,NBIN
0462               WTMAT(J1,J2)=0D0
0463   160       CONTINUE
0464   170     CONTINUE
0465           DO 180 IACC=1,NACC
0466             IBIN=MVARPT(IACC,IVAR)
0467             IF(IVAR.EQ.1.AND.IBIN.EQ.7) IBIN=3+2*MINT(72)
0468             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
0469             NAREL(IBIN)=NAREL(IBIN)+1
0470             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
0471  
0472 C...Sum up tau cross-section pieces in points used.
0473             IF(IVAR.EQ.1) THEN
0474               TAU=VINTPT(IACC,11)
0475               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
0476               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
0477               IF(NBIN.GE.4) THEN
0478                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
0479                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
0480      &          ((TAU-TAUR1)**2+GAMR1**2)
0481               ENDIF
0482               IF(NBIN.GE.6) THEN
0483                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
0484                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
0485      &          ((TAU-TAUR2)**2+GAMR2**2)
0486               ENDIF
0487               IF(NBIN.GT.2+2*MINT(72)) THEN
0488                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(ATAU1/ATAU7)*
0489      &          TAU/MAX(2D-10,1D0-TAU)
0490               ENDIF
0491  
0492 C...Sum up tau' cross-section pieces in points used.
0493             ELSEIF(IVAR.EQ.2) THEN
0494               TAU=VINTPT(IACC,11)
0495               TAUP=VINTPT(IACC,16)
0496               TAUPMN=VINTPT(IACC,6)
0497               TAUPMX=VINTPT(IACC,26)
0498               ATAUP1=LOG(TAUPMX/TAUPMN)
0499               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
0500               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
0501               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
0502      &        (1D0-TAU/TAUP)**3/TAUP
0503               IF(NBIN.GE.3) THEN
0504                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
0505                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
0506      &          TAUP/MAX(2D-10,1D0-TAUP)
0507               ENDIF
0508  
0509 C...Sum up y* cross-section pieces in points used.
0510             ELSEIF(IVAR.EQ.3) THEN
0511               YST=VINTPT(IACC,12)
0512               YSTMIN=VINTPT(IACC,2)
0513               YSTMAX=VINTPT(IACC,22)
0514               AYST0=YSTMAX-YSTMIN
0515               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
0516               AYST2=AYST1
0517               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
0518               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
0519               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
0520               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
0521               IF(MINT(45).EQ.3) THEN
0522                 TAUE=VINTPT(IACC,11)
0523                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
0524                 YST0=-0.5D0*LOG(TAUE)
0525                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
0526      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
0527                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
0528      &          MAX(1D-10,1D0-EXP(YST-YST0))
0529               ENDIF
0530               IF(MINT(46).EQ.3) THEN
0531                 TAUE=VINTPT(IACC,11)
0532                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
0533                 YST0=-0.5D0*LOG(TAUE)
0534                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
0535      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
0536                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
0537      &          MAX(1D-10,1D0-EXP(-YST-YST0))
0538               ENDIF
0539  
0540 C...Sum up cos(theta-hat) cross-section pieces in points used.
0541             ELSE
0542               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
0543               RSQM=1D0+RM34
0544               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
0545               CTHMIN=-CTHMAX
0546               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
0547      &        (TAUMAX*VINT(2)))
0548               ACTH1=CTHMAX-CTHMIN
0549               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
0550               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
0551               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
0552               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
0553               CTH=VINTPT(IACC,13)
0554               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
0555               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
0556      &        MAX(RM34,RSQM-CTH)
0557               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
0558      &        MAX(RM34,RSQM+CTH)
0559               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
0560      &        MAX(RM34,RSQM-CTH)**2
0561               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
0562      &        MAX(RM34,RSQM+CTH)**2
0563             ENDIF
0564   180     CONTINUE
0565  
0566 C...Check that equation system solvable.
0567           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
0568           MSOLV=1
0569           WTRELS=0D0
0570           DO 190 IBIN=1,NBIN
0571             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
0572      &      IRED=1,NBIN),WTREL(IBIN)
0573             IF(NAREL(IBIN).EQ.0) MSOLV=0
0574             WTRELS=WTRELS+WTREL(IBIN)
0575   190     CONTINUE
0576           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
0577  
0578 C...Solve to find relative importance of cross-section pieces.
0579           IF(MSOLV.EQ.1) THEN
0580             DO 200 IBIN=1,NBIN
0581               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
0582   200       CONTINUE
0583             DO 230 IRED=1,NBIN-1
0584               DO 220 IBIN=IRED+1,NBIN
0585                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
0586                   MSOLV=0
0587                   GOTO 260
0588                 ENDIF
0589                 RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
0590                 WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
0591                 DO 210 ICOE=IRED,NBIN
0592                   WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
0593   210           CONTINUE
0594   220         CONTINUE
0595   230       CONTINUE
0596             DO 250 IRED=NBIN,1,-1
0597               DO 240 ICOE=IRED+1,NBIN
0598                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
0599   240         CONTINUE
0600               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
0601   250       CONTINUE
0602           ENDIF
0603  
0604 C...Share evenly if failure.
0605   260     IF(MSOLV.EQ.0) THEN
0606             DO 270 IBIN=1,NBIN
0607               COEFU(IBIN)=1D0
0608               WTRELN(IBIN)=0.1D0
0609               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
0610      &        WTREL(IBIN)/WTRELS)
0611   270       CONTINUE
0612           ENDIF
0613  
0614 C...Normalize coefficients, with piece shared democratically.
0615           COEFSU=0D0
0616           WTRELS=0D0
0617           DO 280 IBIN=1,NBIN
0618             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
0619             COEFSU=COEFSU+COEFU(IBIN)
0620             WTRELS=WTRELS+WTRELN(IBIN)
0621   280     CONTINUE
0622           IF(COEFSU.GT.0D0) THEN
0623             DO 290 IBIN=1,NBIN
0624               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
0625      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
0626   290       CONTINUE
0627           ELSE
0628             DO 300 IBIN=1,NBIN
0629               COEFO(IBIN)=1D0/NBIN
0630   300       CONTINUE
0631           ENDIF
0632           IF(IVAR.EQ.1) IOFF=0
0633           IF(IVAR.EQ.2) IOFF=17
0634           IF(IVAR.EQ.3) IOFF=7
0635           IF(IVAR.EQ.4) IOFF=12
0636           DO 310 IBIN=1,NBIN
0637             ICOF=IOFF+IBIN
0638             IF(IVAR.EQ.1.AND.IBIN.GT.2+2*MINT(72)) ICOF=7
0639             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
0640             COEF(ISUB,ICOF)=COEFO(IBIN)
0641   310     CONTINUE
0642           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
0643      &    (COEFO(IBIN),IBIN=1,NBIN)
0644   320   CONTINUE
0645  
0646 C...Find two most promising maxima among points previously determined.
0647         DO 330 J=1,4
0648           IACCMX(J)=0
0649           SIGSMX(J)=0D0
0650   330   CONTINUE
0651         NMAX=0
0652         DO 390 IACC=1,NACC
0653           DO 340 J=1,30
0654             VINT(10+J)=VINTPT(IACC,J)
0655   340     CONTINUE
0656           IF(ISTSB.NE.5) THEN
0657             CALL PYSIGH(NCHN,SIGS)
0658             IF(MWTXS.EQ.1) THEN
0659               CALL PYEVWT(WTXS)
0660               SIGS=WTXS*SIGS
0661             ENDIF
0662           ELSE
0663             SIGS=0D0
0664             DO 350 IKIN3=1,MSTP(129)
0665               CALL PYKMAP(5,0,0D0)
0666               IF(MINT(51).EQ.1) GOTO 350
0667               CALL PYSIGH(NCHN,SIGTMP)
0668               IF(MWTXS.EQ.1) THEN
0669                 CALL PYEVWT(WTXS)
0670                 SIGTMP=WTXS*SIGTMP
0671               ENDIF
0672               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
0673   350       CONTINUE
0674           ENDIF
0675           IEQ=0
0676           DO 360 IMV=1,NMAX
0677             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
0678   360     CONTINUE
0679           IF(IEQ.EQ.0) THEN
0680             DO 370 IMV=NMAX,1,-1
0681               IIN=IMV+1
0682               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
0683               IACCMX(IMV+1)=IACCMX(IMV)
0684               SIGSMX(IMV+1)=SIGSMX(IMV)
0685   370       CONTINUE
0686             IIN=1
0687   380       IACCMX(IIN)=IACC
0688             SIGSMX(IIN)=SIGS
0689             IF(NMAX.LE.1) NMAX=NMAX+1
0690           ENDIF
0691   390   CONTINUE
0692  
0693 C...Read out starting position for search.
0694         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
0695         SIGSAM=SIGSMX(1)
0696         DO 440 IMAX=1,NMAX
0697           IACC=IACCMX(IMAX)
0698           MTAU=MVARPT(IACC,1)
0699           MTAUP=MVARPT(IACC,2)
0700           MYST=MVARPT(IACC,3)
0701           MCTH=MVARPT(IACC,4)
0702           VTAU=0.5D0
0703           VYST=0.5D0
0704           VCTH=0.5D0
0705           VTAUP=0.5D0
0706  
0707 C...Starting point and step size in parameter space.
0708           DO 430 IRPT=1,2
0709             DO 420 IVAR=1,4
0710               IF(NPTS(IVAR).EQ.1) GOTO 420
0711               IF(IVAR.EQ.1) VVAR=VTAU
0712               IF(IVAR.EQ.2) VVAR=VTAUP
0713               IF(IVAR.EQ.3) VVAR=VYST
0714               IF(IVAR.EQ.4) VVAR=VCTH
0715               IF(IVAR.EQ.1) MVAR=MTAU
0716               IF(IVAR.EQ.2) MVAR=MTAUP
0717               IF(IVAR.EQ.3) MVAR=MYST
0718               IF(IVAR.EQ.4) MVAR=MCTH
0719               IF(IRPT.EQ.1) VDEL=0.1D0
0720               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
0721      &        0.98D0-VVAR))
0722               IF(IRPT.EQ.1) VMAR=0.02D0
0723               IF(IRPT.EQ.2) VMAR=0.002D0
0724               IMOV0=1
0725               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
0726               DO 410 IMOV=IMOV0,8
0727  
0728 C...Define new point in parameter space.
0729                 IF(IMOV.EQ.0) THEN
0730                   INEW=2
0731                   VNEW=VVAR
0732                 ELSEIF(IMOV.EQ.1) THEN
0733                   INEW=3
0734                   VNEW=VVAR+VDEL
0735                 ELSEIF(IMOV.EQ.2) THEN
0736                   INEW=1
0737                   VNEW=VVAR-VDEL
0738                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
0739      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
0740                   VVAR=VVAR+VDEL
0741                   SIGSSM(1)=SIGSSM(2)
0742                   SIGSSM(2)=SIGSSM(3)
0743                   INEW=3
0744                   VNEW=VVAR+VDEL
0745                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
0746      &            VVAR-2D0*VDEL.GT.VMAR) THEN
0747                   VVAR=VVAR-VDEL
0748                   SIGSSM(3)=SIGSSM(2)
0749                   SIGSSM(2)=SIGSSM(1)
0750                   INEW=1
0751                   VNEW=VVAR-VDEL
0752                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
0753                   VDEL=0.5D0*VDEL
0754                   VVAR=VVAR+VDEL
0755                   SIGSSM(1)=SIGSSM(2)
0756                   INEW=2
0757                   VNEW=VVAR
0758                 ELSE
0759                   VDEL=0.5D0*VDEL
0760                   VVAR=VVAR-VDEL
0761                   SIGSSM(3)=SIGSSM(2)
0762                   INEW=2
0763                   VNEW=VVAR
0764                 ENDIF
0765  
0766 C...Convert to relevant variables and find derived new limits.
0767                 ILERR=0
0768                 IF(IVAR.EQ.1) THEN
0769                   VTAU=VNEW
0770                   CALL PYKMAP(1,MTAU,VTAU)
0771                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
0772                     CALL PYKLIM(4)
0773                     IF(MINT(51).EQ.1) ILERR=1
0774                   ENDIF
0775                 ENDIF
0776                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
0777      &          ILERR.EQ.0) THEN
0778                   IF(IVAR.EQ.2) VTAUP=VNEW
0779                   CALL PYKMAP(4,MTAUP,VTAUP)
0780                 ENDIF
0781                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
0782                   CALL PYKLIM(2)
0783                   IF(MINT(51).EQ.1) ILERR=1
0784                 ENDIF
0785                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
0786                   IF(IVAR.EQ.3) VYST=VNEW
0787                   CALL PYKMAP(2,MYST,VYST)
0788                   CALL PYKLIM(3)
0789                   IF(MINT(51).EQ.1) ILERR=1
0790                 ENDIF
0791                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
0792      &          ILERR.EQ.0) THEN
0793                   IF(IVAR.EQ.4) VCTH=VNEW
0794                   CALL PYKMAP(3,MCTH,VCTH)
0795                 ENDIF
0796                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
0797  
0798 C...Evaluate cross-section. Save new maximum. Final maximum.
0799                 IF(ILERR.NE.0) THEN
0800                    SIGS=0.
0801                 ELSEIF(ISTSB.NE.5) THEN
0802                   CALL PYSIGH(NCHN,SIGS)
0803                   IF(MWTXS.EQ.1) THEN
0804                     CALL PYEVWT(WTXS)
0805                     SIGS=WTXS*SIGS
0806                   ENDIF
0807                 ELSE
0808                   SIGS=0D0
0809                   DO 400 IKIN3=1,MSTP(129)
0810                     CALL PYKMAP(5,0,0D0)
0811                     IF(MINT(51).EQ.1) GOTO 400
0812                     CALL PYSIGH(NCHN,SIGTMP)
0813                     IF(MWTXS.EQ.1) THEN
0814                         CALL PYEVWT(WTXS)
0815                         SIGTMP=WTXS*SIGTMP
0816                     ENDIF
0817                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
0818   400             CONTINUE
0819                 ENDIF
0820                 SIGSSM(INEW)=SIGS
0821                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
0822                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
0823      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
0824   410         CONTINUE
0825   420       CONTINUE
0826   430     CONTINUE
0827   440   CONTINUE
0828         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
0829         XSEC(ISUB,1)=1.05D0*SIGSAM
0830         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
0831      &  WTGAGA*XSEC(ISUB,1)
0832   450   CONTINUE
0833         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
0834      &  PARP(174)*XSEC(ISUB,1)
0835         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
0836   460 CONTINUE
0837       MINT(51)=0
0838  
0839 C...Print summary table.
0840       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
0841         IF(MSTP(127).NE.1) THEN
0842           WRITE(MSTU(11),5900)
0843           CALL PYSTOP(1)
0844         ELSE
0845           WRITE(MSTU(11),6400)
0846           MSTI(53)=1
0847         ENDIF
0848       ENDIF
0849       IF(MSTP(122).GE.1) THEN
0850         WRITE(MSTU(11),6000)
0851         WRITE(MSTU(11),6100)
0852         DO 470 ISUB=1,500
0853           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
0854           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
0855           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0)
0856      &    GOTO 470
0857           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
0858           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
0859      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
0860           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
0861           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
0862   470   CONTINUE
0863         WRITE(MSTU(11),6300)
0864       ENDIF
0865  
0866 C...Format statements for maximization results.
0867  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
0868      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
0869      &'cth',9X,'tau''',7X,'sigma')
0870  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
0871      &'phase space.'/1X,'Process switched off!')
0872  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
0873  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
0874      &'cross-section.'/1X,'Process switched off!')
0875  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
0876  5500 FORMAT(1X,1P,8D11.3)
0877  5600 FORMAT(1X,'Result for ',A4,':',7F9.4)
0878  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
0879      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
0880  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
0881  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
0882      &'cross-section.'/1X,'Execution stopped!')
0883  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
0884      &'cross-section maximum search',1X,8('*'))
0885  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
0886      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
0887      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
0888  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
0889  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
0890  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
0891      &'cross-section.'/
0892      &1X,'Execution will stop if you try to generate events.')
0893  
0894       RETURN
0895       END